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

东莞怎样做网站建设一小时学会网站建设

东莞怎样做网站建设,一小时学会网站建设,南京行业门户网站,qq登录网页版登录入口本文中#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.dnsts.com.cn/news/207486.html

相关文章:

  • 网站建设运营企划案阿里巴巴网站建设教程视频
  • 龙岩市住房与城乡建设部网站超炫酷网站欣赏
  • 北京平台网站建设公司基于php网站开发步骤
  • 免费网站推广网站破解版南阳网站优化公司
  • 怎么样才能找到网站后台网址交换链接适合哪些网站
  • 唐山企业做网站页面设计图
  • 网站设计定位网站建设的财务计划
  • 纪检网站建设计划书标书制作教程视频网站
  • 写一张营销型网站页面多长时间网站建设开发实训报告总结
  • 河南省城市建设网站ftp服务器软件
  • 外包做网站山西建设厅八大员查询网站
  • 7天精通网站建设实录建个微商城网站
  • 万先生网站中英语网站制作方法
  • 做网站如何挑选服务器陕西省建设工程招投标信息网官网
  • 平度市建设局网站漯河网络推广哪家好
  • 个人做网站法律风险不断加强门户网站建设
  • 中国建设电工立网站建设网站的技术性背景
  • 网站开发成本都有哪几项建个企业网站对公司宣传有用吗
  • 有做外贸个人网站深圳app开发公司有哪些
  • 做网站用的图片分辨率网站开发php程序员
  • 怎样做能直接上传微信的视频网站公司名称起名大全
  • 建设企业网站方法网站设计 电子购物网站设计
  • 网站描述模板产品开发流程图模板
  • 网站建设与推广综合实训总结做外贸网站用哪些小语种
  • 免费做婚礼邀请函的网站北京网页设计公司有哪些
  • 如何用c语言做网站国家建筑网官网
  • php网站在线打包源码食品网站建设策划书
  • 网站建设的书籍wep购物网站开发模板
  • 建设部高级职称查询官方网站dedecms的网站如何添加个引导页
  • 视频网站发展好应该怎么做o2o的代表平台有哪些