当前位置: 首页 > news >正文

小企业网站怎么做郴州网站定制

小企业网站怎么做,郴州网站定制,商城网站开发教程视频,网站毕设目录 一.实现功能: 二.文件结构 三.代码实现 1.初始化 2.通讯录的销毁 3.通讯录添加数据 4.通讯录删除数据 5.通讯录的修改 6.展现通讯录数据 7.通讯录查找 四.代码 SeqList.h Contact.h Contact.c test(通讯录).c 一.实现功能: ⾄少能够存…

目录

一.实现功能:

二.文件结构

 三.代码实现

1.初始化

2.通讯录的销毁

3.通讯录添加数据

4.通讯录删除数据

5.通讯录的修改

6.展现通讯录数据

7.通讯录查找

四.代码

SeqList.h

Contact.h

Contact.c

test(通讯录).c


一.实现功能:

  • ⾄少能够存储100个⼈的通讯信息
  • 能够保存⽤⼾信息:名字、性别、年龄、电话、地址等
  • 增加联系⼈信息
  • 删除指定联系⼈
  • 查找制定联系⼈
  • 修改指定联系⼈
  • 显⽰联系⼈信息

二.文件结构

  利用已经实现好的顺序表SeqList.h来实现相关功能,详见数据结构--顺序表-CSDN博客

test.c

Contact.c // ⽂件中写项目中函数的实现等

Contact.h // ⽂件中写项目需要的数据类型和函数声明等

SeqList.h//利用已经实现的顺序表功能

 三.代码实现

1.初始化

#define NAME_MAX 20
#define GENDER_MAX 10
#define TEL_MAX 20
#define ADDR_MAX 100//定义联系人数据结构
//姓名 性别 年龄 电话 地址
typedef struct personInfo
{char name[NAME_MAX];char gender[GENDER_MAX];int age;char tel[TEL_MAX];char addr[ADDR_MAX];
}peoInfo;

实际上要进行的是顺序表的初始化,顺序表的初始化已经实现好了,所有直接调用顺序表中的SLlnit函数,便可以实现通讯录的初始化,定义ContactInit函数

//通讯录的初始化
void ContactInit(Contact* con)
{SLlnit(con);//指针就是地址,不用&符号
}

因为要用到顺序表相关的方法,对通讯录的操作实际就是对顺序表进行操作
所以给顺序表改个名字,叫通讯录

typedef struct SeqList Contact;

因为要用到SeqList.h中的顺序表,所以要改一下数据类型,改成创建好的通讯录类型

typedef peoInfo SLDataType;//顺序表存放的类型可能是int 也可能是char,所有重新起个名字,方便以后更改
//动态顺序表
typedef struct SeqList
{SLDataType* arr;int size;//有效数据个数int capacity;//空间大小
}SL;

2.通讯录的销毁

使用完了之后,就要进行销毁了

也是一样,可以直接调用顺序表实现好的方法

//通讯录的销毁
void ContactDesTroy(Contact* con)
{SLDestroy(con);
}

3.通讯录添加数据

这里首先接收用户要添加的数据,然后调用顺序表当中的头插或尾插

//通讯录添加数据
void ContactAdd(Contact* con)
{//获取用户输入的内容:姓名+性别+年龄+电话+地址peoInfo info;printf("请输入要添加的联系人姓名:\n");scanf("%s", info.name);printf("请输入要添加的联系人性别:\n");scanf("%s", info.gender);printf("请输入要添加的联系人年龄:\n");scanf("%s", &info.age);printf("请输入要添加的联系人电话:\n");scanf("%s", info.tel);printf("请输入要添加的联系人住址:\n");scanf("%s", info.addr);//往通讯录中添加联系人数据SLPushBack(con, info);printf("添加成功\n");
}

4.通讯录删除数据


要删除的数据必须存在,才能执行删除操作,所以在这之前要先实现一个查找函数FindByName

int FindByName(Contact* con, char name[])
{for (int i = 0; i < con->size; i++){if (0 == strcmp(con->arr[i].name, name))//strcmp函数两个字符串比较,相等返回0{//找到了return i;}//没找到return -1;}
}

删除函数ContactDel

//通讯录删除数据
void ContactDel(Contact* con)
{//要删除的数据必须要存在,才能执行删除操作//查找char name[NAME_MAX];printf("请输入要删除的联系人姓名:\n");scanf("%s", name);int find = FindByName(con, name);//查找函数,返回数据下标if (find < 0){printf("要删除的联系人数据不存在\n");return;}//要删除的联系人数据存在--》知道了要删除的联系人数据对应的下标SLErase(con, find);//顺序表中指定位置删除函数printf("删除成功\n");
}

5.通讯录的修改

在实现操作之前,也需调用一次FindByName确认一个指定数据存在与否

//通讯录的修改
void ContactModify(Contact* con)
{//要修改的联系人数据存在char name[NAME_MAX];printf("请输入要修改的用户姓名:\n");scanf("%s", name);int find = FindByName(con, name);//函数 找到要修改的联系人if (find < 0){printf("要修改的联系人数据不存在!\n");return;}//修改printf("请输入新的姓名:\n");scanf("%s", con->arr[find].name);printf("请输入新的性别:\n");scanf("%s", con->arr[find].gender);printf("请输入新的年龄:\n");scanf("%d", &con->arr[find].age);printf("请输入新的电话:\n");scanf("%s", con->arr[find].tel);printf("请输入新的住址:\n");scanf("%s", con->arr[find].addr);printf("修改成功!\n");
}

6.展现通讯录数据

//展示通讯录数据
void ContactShow(Contact* con)
{//表头:姓名  性别 年龄 电话  地址printf("%s %s %s %s %s\n", "姓名", "性别", "年龄", "电话", "地址");//遍历通讯录,按照格式打印每个联系人数据for (int i = 0; i < con->size; i++){printf("%3s %3s %3d %3s %3s\n", con->arr[i].name,con->arr[i].gender,con->arr[i].age,con->arr[i].tel,con->arr[i].addr);}
}

7.通讯录查找

利用FindByName函数找到所需的数据下标,并打印这个联系人信息

void ContactFind(Contact* con)
{//11char name[NAME_MAX];printf("请输入要查找的联系人姓名\n");scanf("%s", name);int find = FindByName(con, name);//查找函数,返回数据下标if (find < 0){printf("要查找的联系人数据不存在!\n");return;}// 姓名 性别 年龄 电话  地址// 11   11   11   11   11printf("%s %s %s %s %s\n", "姓名", "性别", "年龄", "电话", "地址");printf("%3s %3s %3d %3s %3s\n",con->arr[find].name,con->arr[find].gender,con->arr[find].age,con->arr[find].tel,con->arr[find].addr);
}

四.代码

SeqList.h

#pragma once
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include"Contact.h"
//定义顺序表的结构//#define N 100静态顺序表
//struct SeqList
//{
//	int arr[N];
//	int size;//有效数据个数
//};typedef peoInfo SLDataType;//顺序表存放的类型可能是int 也可能是char,所有重新起个名字,方便以后更改
//动态顺序表
typedef struct SeqList
{SLDataType* arr;int size;//有效数据个数int capacity;//空间大小
}SL;//顺序表初始化
void SLlnit(SL* ps);
//顺序表的销毁
void SLDestroy(SL* ps);
//顺序表的打印
void SLprint(SL s);//头部插入删除/尾部插入删除
void SLPushBack(SL* ps, SLDataType x);
void SLPushFront(SL* ps, SLDataType x);void SLPopBack(SL* ps);
void SLPopFront(SL* ps);//指定位置之前插入/删除数据
void SLlnsert(SL* ps, int pos, SLDataType x);
void SLErase(SL* ps, int pos);//查找
int SLFind(SL* ps, SLDataType x);

Contact.h

#pragma once#define NAME_MAX 20
#define GENDER_MAX 10
#define TEL_MAX 20
#define ADDR_MAX 100//定义联系人数据结构
//姓名 性别 年龄 电话 地址
typedef struct personInfo
{char name[NAME_MAX];char gender[GENDER_MAX];int age;char tel[TEL_MAX];char addr[ADDR_MAX];
}peoInfo;//要用到顺序表相关的方法,对通讯录的操作实际就是对顺序表进行操作
//给顺序表改个名字,叫通讯录
typedef struct SeqList Contact;//通讯录相关的方法
// 
// 
//通讯录的初始化
void ContactInit(Contact* con);
//通讯录的销毁
void ContactDesTroy(Contact* con);
//通讯录添加数据
void ContactAdd(Contact* con);
//通讯录删除数据
void ContactDel(Contact* con);
//通讯录的修改
void ContactModify(Contact* con);
//通讯录查找
void ContactFind(Contact* con);
//展示通讯录数据
void ContactShow(Contact* con);

Contact.c

#include"SeqList(通讯录).h"
#include"Contact.h"
//通讯录的初始化
void ContactInit(Contact* con)
{//实际上要进行的是顺序表的初始化//顺序表的初始化已经实现好了SLlnit(con);//指针就是地址,不用&符号
}//通讯录的销毁
void ContactDesTroy(Contact* con)
{SLDestroy(con);
}
//通讯录添加数据
void ContactAdd(Contact* con)
{//获取用户输入的内容:姓名+性别+年龄+电话+地址peoInfo info;printf("请输入要添加的联系人姓名:\n");scanf("%s", info.name);printf("请输入要添加的联系人性别:\n");scanf("%s", info.gender);printf("请输入要添加的联系人年龄:\n");scanf("%s", &info.age);printf("请输入要添加的联系人电话:\n");scanf("%s", info.tel);printf("请输入要添加的联系人住址:\n");scanf("%s", info.addr);//往通讯录中添加联系人数据SLPushBack(con, info);printf("添加成功\n");
}int FindByName(Contact* con, char name[])
{for (int i = 0; i < con->size; i++){if (0 == strcmp(con->arr[i].name, name))//strcmp函数两个字符串比较,相等返回0{//找到了return i;}//没找到return -1;}
}//通讯录删除数据
void ContactDel(Contact* con)
{//要删除的数据必须要存在,才能执行删除操作//查找char name[NAME_MAX];printf("请输入要删除的联系人姓名:\n");scanf("%s", name);int find = FindByName(con, name);//查找函数,返回数据下标if (find < 0){printf("要删除的联系人数据不存在\n");return;}//要删除的联系人数据存在--》知道了要删除的联系人数据对应的下标SLErase(con, find);//顺序表中指定位置删除函数printf("删除成功\n");
}//展示通讯录数据
void ContactShow(Contact* con)
{//表头:姓名  性别 年龄 电话  地址printf("%s %s %s %s %s\n", "姓名", "性别", "年龄", "电话", "地址");//遍历通讯录,按照格式打印每个联系人数据for (int i = 0; i < con->size; i++){printf("%3s %3s %3d %3s %3s\n", con->arr[i].name,con->arr[i].gender,con->arr[i].age,con->arr[i].tel,con->arr[i].addr);}
}//通讯录的修改
void ContactModify(Contact* con)
{//要修改的联系人数据存在char name[NAME_MAX];printf("请输入要修改的用户姓名:\n");scanf("%s", name);int find = FindByName(con, name);//函数 找到要修改的联系人if (find < 0){printf("要修改的联系人数据不存在!\n");return;}//修改printf("请输入新的姓名:\n");scanf("%s", con->arr[find].name);printf("请输入新的性别:\n");scanf("%s", con->arr[find].gender);printf("请输入新的年龄:\n");scanf("%d", &con->arr[find].age);printf("请输入新的电话:\n");scanf("%s", con->arr[find].tel);printf("请输入新的住址:\n");scanf("%s", con->arr[find].addr);printf("修改成功!\n");
}//通讯录查找
void ContactFind(Contact* con)
{//11char name[NAME_MAX];printf("请输入要查找的联系人姓名\n");scanf("%s", name);int find = FindByName(con, name);//查找函数,返回数据下标if (find < 0){printf("要查找的联系人数据不存在!\n");return;}// 姓名 性别 年龄 电话  地址// 11   11   11   11   11printf("%s %s %s %s %s\n", "姓名", "性别", "年龄", "电话", "地址");printf("%3s %3s %3d %3s %3s\n",con->arr[find].name,con->arr[find].gender,con->arr[find].age,con->arr[find].tel,con->arr[find].addr);
}

test(通讯录).c

#include"SeqList(通讯录).h"
void menu()
{printf("******************通讯录******************\n");printf("*******1.增加联系人   2.删除联系人********\n");printf("*******3.修改联系人   4.查找联系人********\n");printf("*******5.展示联系人   0.   退出  *********\n");printf("******************************************\n");
}
int main()
{//SLTest01();//ContactTest();int op = -1;Contact con;//创建一个顺序表--通讯录ContactInit(&con);//初始化do {menu();printf("请选择您的操作:\n");scanf("%d", &op);//要根据对应的op执行不同的操作switch (op){case 1:ContactAdd(&con);break;case 2:ContactDel(&con);break;case 3:ContactModify(&con);break;case 4:ContactFind(&con);break;case 5:ContactShow(&con);break;case 0:printf("退出通讯录....\n");break;default:printf("输入错误,请重新选择您的操作!\n");break;}} while (op != 0);ContactDesTroy(&con);//销毁return 0;
}

感谢观看,再见


文章转载自:
http://emancipate.jpkk.cn
http://azalea.jpkk.cn
http://cosigner.jpkk.cn
http://beholden.jpkk.cn
http://embassy.jpkk.cn
http://rebec.jpkk.cn
http://printshop.jpkk.cn
http://echoic.jpkk.cn
http://nevermore.jpkk.cn
http://lapful.jpkk.cn
http://nonresistance.jpkk.cn
http://doughboy.jpkk.cn
http://kaszube.jpkk.cn
http://wavelike.jpkk.cn
http://whoso.jpkk.cn
http://tricoline.jpkk.cn
http://moldavite.jpkk.cn
http://eyrie.jpkk.cn
http://qinghai.jpkk.cn
http://oxygenation.jpkk.cn
http://gradine.jpkk.cn
http://brightly.jpkk.cn
http://unhealthy.jpkk.cn
http://goldwasser.jpkk.cn
http://whaup.jpkk.cn
http://deathbed.jpkk.cn
http://angakok.jpkk.cn
http://interlay.jpkk.cn
http://panchreston.jpkk.cn
http://pomiculture.jpkk.cn
http://aculeate.jpkk.cn
http://boding.jpkk.cn
http://diene.jpkk.cn
http://cervelas.jpkk.cn
http://betweenwhiles.jpkk.cn
http://zoanthropy.jpkk.cn
http://hydrargyrism.jpkk.cn
http://visitant.jpkk.cn
http://exhibitioner.jpkk.cn
http://eunomia.jpkk.cn
http://paralyse.jpkk.cn
http://avoirdupois.jpkk.cn
http://spoke.jpkk.cn
http://igorot.jpkk.cn
http://diazonium.jpkk.cn
http://midmost.jpkk.cn
http://goaty.jpkk.cn
http://demographic.jpkk.cn
http://discretion.jpkk.cn
http://erroneous.jpkk.cn
http://dexamethasone.jpkk.cn
http://reducing.jpkk.cn
http://rhizocephalous.jpkk.cn
http://mechanisation.jpkk.cn
http://ineffectual.jpkk.cn
http://metempsychosis.jpkk.cn
http://magnanimous.jpkk.cn
http://matchup.jpkk.cn
http://vowel.jpkk.cn
http://hamadan.jpkk.cn
http://sovranty.jpkk.cn
http://roadability.jpkk.cn
http://loir.jpkk.cn
http://cloddy.jpkk.cn
http://amberfish.jpkk.cn
http://abandoned.jpkk.cn
http://hyperactivity.jpkk.cn
http://sunroof.jpkk.cn
http://honolulan.jpkk.cn
http://judder.jpkk.cn
http://hemocyte.jpkk.cn
http://puky.jpkk.cn
http://topstitch.jpkk.cn
http://futurity.jpkk.cn
http://trichinosis.jpkk.cn
http://gladiola.jpkk.cn
http://laniard.jpkk.cn
http://strobil.jpkk.cn
http://olericulture.jpkk.cn
http://grimily.jpkk.cn
http://liquidise.jpkk.cn
http://retardant.jpkk.cn
http://crural.jpkk.cn
http://krummhorn.jpkk.cn
http://react.jpkk.cn
http://inexcusable.jpkk.cn
http://heavyish.jpkk.cn
http://tinner.jpkk.cn
http://elude.jpkk.cn
http://regatta.jpkk.cn
http://roundline.jpkk.cn
http://assignee.jpkk.cn
http://dopester.jpkk.cn
http://twimc.jpkk.cn
http://saw.jpkk.cn
http://penetrameter.jpkk.cn
http://selfsame.jpkk.cn
http://palsa.jpkk.cn
http://transmissometer.jpkk.cn
http://soprani.jpkk.cn
http://www.dt0577.cn/news/115223.html

相关文章:

  • 电商网站如何做引流vue seo优化
  • 网站建设 qq业务网制作关键词调整排名软件
  • 如何做网站首页的psd图网站建设的六个步骤
  • 手机网站怎么做才适合优化谷歌竞价排名推广公司
  • 网站建设咨询费用优化营商环境
  • 商务科技网站建设软件开发公司简介
  • 温州市城建设计院网站江苏网页定制
  • 如何查网站处罚过seo排名谁教的好
  • 江门建站公司代运营公司怎么找客户
  • 天津做网站优化公司网络宣传策划方案
  • 单页面网站怎么做域名查询网址
  • 做网站需要下载啥网站建设免费网站
  • 做非法网站的有没有上海百网优seo优化公司
  • 在上海做兼职去哪个网站搜索百度开户是什么意思
  • 怎么注销自己做的网站网站优化排名易下拉霸屏
  • wordpress添加客服系统seo是什么服
  • 小说网站用什么虚拟主机成人大学报名官网入口
  • 校园网站建设标书厦门seo顾问屈兴东
  • 哪些网站seo做的好如何添加百度指数
  • 360网站建设价位千锋教育培训机构学费
  • 永久免费网站虚拟主机seo软件简单易排名稳定
  • dnf可以去哪个网站做代练买淘宝店铺多少钱一个
  • wordpress文章插广告优化设计六年级下册数学答案
  • 网站中加入地图导航好看的web网页
  • 什么是响应式布局网站优化主要优化哪些地方
  • 设计logo网站赚钱热搜词排行榜关键词
  • 安装wordpress步骤搜索引擎快速优化排名
  • seo批量建站2023网站分享
  • 做网站怎么买断源码域名注册查询系统
  • 大气建站工作室网站源码宁波seo网站