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

网站欣赏网站欣赏知名企业网站搭建

网站欣赏网站欣赏,知名企业网站搭建,销售网站开发业务,成都it公司排名本文中#xff0c;我们将使用顺序表的结构来完成通讯录的实现。 我们都知道#xff0c;顺序表实际上就是一个数组。而使用顺序表来实现通讯录#xff0c;其内核是将顺序表中存放的数据类型改为结构体#xff0c;将联系人的信息存放到结构体中#xff0c;通过对顺序表的操… 本文中我们将使用顺序表的结构来完成通讯录的实现。 我们都知道顺序表实际上就是一个数组。而使用顺序表来实现通讯录其内核是将顺序表中存放的数据类型改为结构体将联系人的信息存放到结构体中通过对顺序表的操作来访问通讯录。 所以我们可以将通讯录理解为套壳的顺序表。 一、功能 1能够保存联系人的姓名、年龄、性别、电话、住址 2添加联系人信息 3删除联系人信息 4修改联系人信息 5查找联系人信息 6查看通讯录中所有联系人信息 7清空通讯录 8每次加载通讯录时自动载入历史通讯录退出通讯录后自动保存通讯录信息 二、代码实现 实现通讯录我们要创建6个文件来实现不同的部分 SeqList.h顺序表定义、头文件引用和顺序表接口函数的声明SeqList.c顺序表接口函数的实现Contact.h信息结构体的定义和通讯录函数的声明Contact.c通讯录函数的实现test.c界面设计和通讯录主函数实现contact.txt在同目录下创建用来保存通讯录数据实现读档存档 1 SeqList.h  在实现通讯录函数的时候我们可以套用顺序表的接口函数减少工作量但是并不是所有顺序表的函数都会用到。下面展示SeqList.h的代码 #pragma once#include stdio.h #include stdlib.h #include string.h #include assert.h #include Windows.h #include Contact.htypedef Info SLDataType; //顺序表元素种类为存放个人信息的结构体typedef struct SeqList {SLDataType* a;size_t size;size_t capicity; } SeqList;// 顺序表初始化 void SeqListInit(SeqList* psl); // 检查空间如果满了进行增容 void CheckCapacity(SeqList* psl); // 顺序表尾插 void SeqListPushBack(SeqList* psl, SLDataType x); // 顺序表删除pos位置的值 void SeqListErase(SeqList* psl, size_t pos); // 顺序表销毁 void SeqListDestory(SeqList* psl); 2 SeqList.c  SeqList.c的代码如下: #include SeqList.hvoid SeqListDestory(SeqList* psl) {assert(psl);free(psl-a);psl-a NULL;psl-capicity 0;psl-size 0; }void SeqListInit(SeqList* psl) {assert(psl);psl-a (SLDataType*)malloc(sizeof(SLDataType) * 4);if (psl-a NULL){perror(malloc fail);return;}psl-size 0;psl-capicity 4; }void CheckCapacity(SeqList* psl) {assert(psl);if (psl-size psl-capicity){SLDataType* tmp (SLDataType*)realloc(psl-a, sizeof(SLDataType) * psl-capicity * 2);if (tmp NULL){perror(realloc fail);return;}psl-a tmp;psl-capicity * 2;} }void SeqListPushBack(SeqList* psl, SLDataType x) {assert(psl);CheckCapacity(psl);psl-a[psl-size] x; }void SeqListErase(SeqList* psl, size_t pos) {assert(psl);assert(0 pos pos psl-size);while (pos psl-size - 1){psl-a[pos] psl-a[pos 1];pos;}psl-size--; }因为二者在前面的顺序表学习中已经写过了所以直接cv即可 3 test.c 在实现通讯录函数之前我们先把通讯录界面和主函数搞定 创建好test.c后先包含一下头文件 #include SeqList.h 再设计一下界面 #include SeqList.hvoid Menu() {printf(****************通讯录******************\n);printf(****** 1.添加联系人 2.删除联系人 ******\n);printf(****** 3.修改联系人 4.查找联系人 ******\n);printf(****** 5.查看通讯录 6.清空通讯录 ******\n);printf(****** 0.退出通讯录 ******\n);printf(****************************************\n); } 主函数如下: int main() {contact con;InitContact(con); //初始化通讯录LoadContact(con); //加载历史通讯录int option -1;do {Menu();printf(请选择:\n);scanf(%d, option);system(cls); //适当的清屏看起来更简洁switch (option){case 1://添加联系人AddContact(con);break;case 2://删除联系人DelContact(con);break;case 3://修改联系人ModifyContact(con);break;case 4://查找联系人FindContact(con);break;case 5://查看通讯录ShowContact(con);break;case 6://清空通讯录ClearContact(con);break;case 0://退出通讯录printf(通讯录退出中...\n);break;default:printf(非法操作请重新输入\n);break;}} while (option);SaveContact(con); //保存通讯录DestoryContact(con); //销毁通讯录return 0; } 4 Contact.h 界面和主函数都搞定后我们开始完成通讯录函数并逐个填空到主函数中 下面是Contact.h的代码 #pragma once#define NAME_MAX 100 #define GENDER_MAX 10 #define TEL_MAX 11 #define ADDR_MAX 100struct SqeList; //因为这里不能声明SeqList.h不然会造成嵌套声明所以就单独声明一下顺序表typedef struct SeqList contact; //要实现的是通讯录所以得把顺序表换个名但换汤不换药typedef struct PersonInfo {char name[NAME_MAX]; //姓名int age; //年龄char gender[GENDER_MAX]; //性别char telephone[TEL_MAX]; //电话char address[ADDR_MAX]; //住址 }Info;void InitContact(contact* pcon);//初始化通讯录void DestoryContact(contact* pcon);//销毁通讯录int FindByName(contact* pcon, char* name);//通过姓名查找联系人void AddContact(contact* pcon);//添加联系人void DelContact(contact* pcon);//删除联系人void ModifyContact(contact* pcon);//修改联系人信息void FindContact(contact* pcon);//查找联系人void ShowContact(contact* pcon);//展示联系人列表void ClearContact(contact* pcon);//清空通讯录void SaveContact(contact* pcon);//保存通讯录void LoadContact(contact* pcon);//载入历史通讯录5 Contact.c 接下来我们展示Contact.c的完整代码 #include SeqList.hvoid InitContact(contact* pcon)//初始化通讯录 {SeqListInit(pcon); }void DestoryContact(contact* pcon)//销毁通讯录 {SeqListDestory(pcon); }int FindByName(contact* pcon, char* name)//通过姓名查找联系人 {for (size_t i 0; i pcon-size; i){if (strcmp(name, pcon-a[i].name) 0){return i;}}return -1; }void AddContact(contact* pcon)//添加联系人 {CheckCapacity(pcon);printf(请输入姓名:\n);scanf(%s, pcon-a[pcon-size].name);printf(请输入年龄:\n);scanf(%d, (pcon-a[pcon-size].age));printf(请输入性别:\n);scanf(%s, pcon-a[pcon-size].gender);printf(请输入电话:\n);scanf(%s, pcon-a[pcon-size].telephone);printf(请输入住址:\n);scanf(%s, pcon-a[pcon-size].address);pcon-size;system(cls);printf(添加成功!\n); }void DelContact(contact* pcon)//删除联系人 {char name[100];printf(请输入要删除的联系人:\n);scanf(%s, name);int index FindByName(pcon, name);if (index -1){printf(要删除的用户不存在!\n);return;}SeqListErase(pcon, index);system(cls);printf(删除成功!\n); }void ModifyContact(contact* pcon)//修改联系人信息 {char name[100];printf(请输入要修改的联系人:\n);scanf(%s, name);int index FindByName(pcon, name);if (index -1){printf(要修改的用户不存在!\n);return;}printf(请输入修改后的姓名:\n);scanf(%s, pcon-a[index].name);printf(请输入修改后的年龄:\n);scanf(%d, (pcon-a[index].age));printf(请输入修改后的性别:\n);scanf(%s, pcon-a[index].gender);printf(请输入修改后的电话:\n);scanf(%s, pcon-a[index].telephone);printf(请输入修改后的住址:\n);scanf(%s, pcon-a[index].address);system(cls);printf(修改成功!\n); }void FindContact(contact* pcon)//查找联系人 {char name[100];printf(请输入要查找的联系人:\n);scanf(%s, name);int index FindByName(pcon, name);if (index -1){printf(要查找的用户不存在!\n);return;}system(cls);printf(查找成功!\n);printf(姓名:%s\n, pcon-a[index].name);printf(年龄:%d\n, pcon-a[index].age);printf(性别:%s\n, pcon-a[index].gender);printf(电话:%s\n, pcon-a[index].telephone);printf(住址:%s\n, pcon-a[index].address); }void ShowContact(contact* pcon)//展示联系人列表 {if (pcon-size 0){printf(通讯录为空!\n);return;}printf(姓名 年龄 性别 电话 地址\n);for (size_t i 0; i pcon-size; i){printf(%s %d %s %s %s\n,pcon-a[i].name,pcon-a[i].age,pcon-a[i].gender,pcon-a[i].telephone,pcon-a[i].address);} }void ClearContact(contact* pcon)//清空通讯录 {pcon-size 0;printf(通讯录清空成功!\n); }void SaveContact(contact* pcon)//保存通讯录 {FILE* pf fopen(contact.txt, wb);if (pf NULL){perror(fopen fail);return;}for (size_t i 0; i pcon-size; i){fwrite(pcon-a i, sizeof(Info), 1, pf);}printf(通讯录数据保存成功!\n);fclose(pf); }void LoadContact(contact* pcon)//载入历史通讯录 {FILE* pf fopen(contact.txt, rb);if (pf NULL){perror(fopen fail);return;}Info info;while (fread(info, sizeof(Info), 1, pf)){SeqListPushBack(pcon, info);}printf(通讯录数据载入成功!\n);fclose(pf); }三、测试 1添加联系人 选择功能 输入联系人信息 我们查看通讯录检查一下是否真的添加成功 按照同样的步骤再添加一个联系人试试 2删除联系人 选择功能 输入要删除的联系人姓名 检查一下 确实删除了 3修改联系人 选择功能 输入要修改的联系人姓名 输入修改后的信息  修改成功我们检查一下 4查找联系人 选择功能输入要查找的联系人姓名 5清空通讯录 我们试着多添加几个联系人 现在通讯录中有5个联系人我们选择清空通讯录 再查看通讯录 6通讯录读档和存档 向通讯录中添加几个联系人 选择退出通讯录 重新打开程序选择查看通讯录发现之前的联系人仍在通讯录中 完.
http://www.w-s-a.com/news/344428/

相关文章:

  • 书店网站建设可行性分析为大型企业设计网络营销方案
  • 北京教育云平台网站建设中国服装设计网站
  • 网络公司专业做网站豌豆荚app下载
  • 网站建设属于什么岗位济宁网站建设_云科网络
  • wordpress网站监测fwa 网站 欣赏
  • 用jsp做的可运行的网站推广网络
  • 电商网站设计论文wordpress子文件夹建站
  • 临沂网站优化如何如何做公司的网站建设
  • 建设部网站 光纤到户沈阳网页设计兼职
  • 企业网站建设作用宁波企业网站推广效果好
  • wordpress课件站模板做网站的公司 贵阳
  • 低价格网站建设网站建设中的板块名称
  • 青岛网站建设华夏h5链接是什么意思
  • 贸易公司如何做网站百度做的网站一般在什么后台
  • 东莞网站设计方案广州做服装电商拿货的网站
  • 部队网站建设设计dede个人网站模板
  • 个人网站怎么自己备案重庆怎样网站推广
  • 做电影网站挣钱吗重庆网站建设技术托管
  • 网站建设用户登录网站商业授权含义
  • 接做室内效果图的网站wordpress制作上传图片
  • 维护一个网站一年多少钱网站微信登录怎么做的
  • 中国建设银行网站E路护航官网如何在招聘网站上选个好公司做销售
  • 网站开发质量管理招聘网站建设方案
  • 有没有那个的网站seo编辑的工作内容
  • 平度那里有做网站的昆明建设招聘信息网站
  • 邯郸城乡建设部网站首页唐山市住房城乡建设部网站主页
  • 慕课联盟网站开发实战六安品牌网站建设电话
  • 制作企业网站首页贵州小程序制作开发
  • 什么是网站后台郑州众志seo
  • 做线上交互的网站分销平台