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

广科网站开发工业设计是什么专业

广科网站开发,工业设计是什么专业,自适用网站的建设,昌平网站建设哪家强通讯录是一个可以很好锻炼我们对结构体的使用#xff0c;加深对结构体的理解#xff0c;在为以后学习数据结构打下结实的基础 这里我们想设计一个有添加联系人#xff0c;删除联系人#xff0c;查找联系人#xff0c;修改联系人#xff0c;展示联系人#xff0c;排序这几… 通讯录是一个可以很好锻炼我们对结构体的使用加深对结构体的理解在为以后学习数据结构打下结实的基础 这里我们想设计一个有添加联系人删除联系人查找联系人修改联系人展示联系人排序这几种功能的通讯录 目录 整体框架菜单创建通讯录初始化实现功能添加联系人删除联系人find的定义 查找联系人修改联系人展示联系人排序free空间 源代码 注意我们按照三个区域划分 上图所示进行区域划分 con.c用来放实现功能的函数con.h用来放头文件的声明test.c用来放整体框架 整体框架 使用do...while循环创建整体框架 整体框架在test.c中这部分我们用来测试代码 int main() {int input 0;InitContact(Con);do{menu();printf(请输入你的选项\n);scanf(%d, input);switch (input){case Add:break;case Del:break;case Search:break;case Modify:break;case Show:break;case Sort:break;case Exit:printf(你已成功退出\n);break;default:printf(输入错误请重新输入\n);break;}} while (input);return 0; }注意 我在使用case语句时没有用数字1,2,3… 而是使用了枚举常量因为枚举常量会更方便程序员查看与操作要与菜单的数字相匹配不然就会弄巧成拙 enum option {Exit,Add,Del,Search,Modify,Show,Sort, };菜单 菜单的设计随心所欲但要与枚举相匹配 void menu() {printf(**************************\n);printf(*** 1.Add 2.Del **\n);printf(*** 3.Search 4.Modify **\n);printf(*** 5.Show 6.Sort **\n);printf(*** 0.Exit **\n);printf(**************************\n);printf(**************************\n); }创建通讯录 此部分我们在Contact.h中创建在另外两个里include就可以 创建通讯录之前要先创建一个联系人的结构体 假设我们的结构体包含了一个人的姓名年龄性别电话住址 那么久可以很好的进行创建 typedef struct PeoInfo {char name[NAME_MAX];int age;char sex[SEX_MAX];char tele[TELE_MAX];char addr[ADDR_MAX]; }PeoInfo;其中的常量用define按需求进行定义避免牵一发而动全身的情况 #define NAME_MAX 20 #define SEX_MAX 5 #define TELE_MAX 12 #define ADDR_MAX 30因为要动态通讯录 故设计通讯录时不能使用PeoInfo创建数组的方式进行 可以创建结构体指针指向动态内存分配的空间 typedef struct Contact {PeoInfo* Data;int sz;int capacity; }Contact; 最后在test.c文件中创建通讯录 Contact Con; 初始化 在con.c中进行设计不要忘记在test.c中调用在con.h中声明 实现功能皆是如此设计将不在赘述 void InitContact(Contact* pc) {assert(pc);pc-sz 0;pc-capacity START;PeoInfo* p (PeoInfo*)malloc(sizeof(PeoInfo) * START);//start为初始化大小define定义为3if (p ! NULL){pc-Data p;}else{perror(InitContact-malloc);} } 实现功能 添加联系人 void AddContact(Contact* pc) {assert(pc);if (pc-sz pc-capacity){PeoInfo* str (PeoInfo*)realloc(pc-Data, sizeof(PeoInfo) * (pc-capacity START_ADD));//START_ADD为define定义为一次扩容数量if (str ! NULL){pc-Data str;pc-capacity pc-capacity START_ADD;printf(增容成功\n);}else{perror(AddContact-realloc);return;}}printf(输入名字\n);scanf(%s, pc-Data[pc-sz].name);printf(输入年龄\n);scanf(%d, pc-Data[pc-sz].age);printf(输入性别\n);scanf(%s, pc-Data[pc-sz].sex);printf(输入电话\n);scanf(%s, pc-Data[pc-sz].tele);printf(输入住址\n);scanf(%s, pc-Data[pc-sz].addr);printf(输入成功\n);pc-sz; } 删除联系人 void DelContact(Contact* pc) {if (pc-sz 0){printf(通讯录为空无需删除\n);return;}char name[NAME_MAX];printf(输入你要删除人的姓名\n);scanf(%s, name);int ret find(pc, name);//我们这里使用了find函数if (ret -1){printf(查无此人\n);return;}for (int i ret; i pc-sz-1; i){pc-Data[i] pc-Data[i 1];}pc-sz--; } 我们在输入查找姓名后要进行查找因此我们设计了一个find函数方便别的函数的使用 find的定义 int find(Contact* pc, char name[]) {for (int i 0; i pc-sz; i){if (strcmp(name, pc-Data[i].name) 0){return i;}}return -1; }查找联系人 void SearchContact(Contact* pc) {if (pc-sz 0){printf(通讯录为空\n);return;}char name[NAME_MAX];printf(输入你要查找人的姓名\n);scanf(%s, name);int ret find(pc, name);if (ret -1){printf(查无此人\n);return;}printf( % -20s % -5s % -5s % -20s % -20s\n, 姓名, 年龄, 性别, 电话, 住址);printf( % -20s % -5d % -5s % -20s % -20s\n,pc-Data[ret].name, pc-Data[ret].age, pc-Data[ret].sex, pc-Data[ret].tele, pc-Data[ret].addr); }修改联系人 void ModifyContact(Contact* pc) {if (pc-sz 0){printf(通讯录为空\n);return;}char name[NAME_MAX];printf(输入你要修改人的姓名\n);scanf(%s, name);int ret find(pc, name);if (ret -1){printf(查无此人\n);return;}printf(输入名字\n);scanf(%s, pc-Data[ret].name);printf(输入年龄\n);scanf(%d, pc-Data[ret].age);printf(输入性别\n);scanf(%s, pc-Data[ret].sex);printf(输入电话\n);scanf(%s, pc-Data[ret].tele);printf(输入住址\n);scanf(%s, pc-Data[ret].addr);printf(输入成功\n); }展示联系人 void ShowContact(Contact* pc) {if (pc-sz 0){printf(通讯录为空无需打印\n);return;}printf( % -20s % -5s % -5s % -20s % -20s\n, 姓名, 年龄, 性别, 电话, 住址);for (int i 0; i pc-sz; i){printf( % -20s % -5d % -5s % -20s % -20s\n,pc-Data[i].name, pc-Data[i].age, pc-Data[i].sex, pc-Data[i].tele, pc-Data[i].addr);} }排序 排序可以按照名字排或是年龄亦或是性别等等 这里我们只进行名字的排序使用方法大同小异快排 int cmp_name(void* e1,void* e2) {return strcmp(((PeoInfo*)e1)-name, ((PeoInfo*)e2)-name); } void SortContact(Contact* pc) {qsort(pc-Data, pc-sz, sizeof(PeoInfo), cmp_name); } free空间 最后一步就是释放空间有始有终 void DestoryContact(Contact* pc) {free(pc); }源代码 con.c #define _CRT_SECURE_NO_WARNINGS 1 #include contact.hint find(Contact* pc, char name[]) {for (int i 0; i pc-sz; i){if (strcmp(name, pc-Data[i].name) 0){return i;}}return -1; }//void InitContact(Contact* pc) //{ // assert(pc); // pc-sz 0; // memset(pc-Data, 0, sizeof(pc-Data)); //} void InitContact(Contact* pc) {assert(pc);pc-sz 0;pc-capacity START;PeoInfo* p (PeoInfo*)malloc(sizeof(PeoInfo) * START);if (p ! NULL){pc-Data p;}else{perror(InitContact-malloc);} }void DestoryContact(Contact* pc) {free(pc); }void AddContact(Contact* pc) {assert(pc);if (pc-sz pc-capacity){PeoInfo* str (PeoInfo*)realloc(pc-Data, sizeof(PeoInfo) * (pc-capacity START_ADD));if (str ! NULL){pc-Data str;pc-capacity pc-capacity 2;printf(增容成功\n);}else{perror(AddContact-realloc);return;}}printf(输入名字\n);scanf(%s, pc-Data[pc-sz].name);printf(输入年龄\n);scanf(%d, pc-Data[pc-sz].age);printf(输入性别\n);scanf(%s, pc-Data[pc-sz].sex);printf(输入电话\n);scanf(%s, pc-Data[pc-sz].tele);printf(输入住址\n);scanf(%s, pc-Data[pc-sz].addr);printf(输入成功\n);pc-sz; }void ShowContact(Contact* pc) {if (pc-sz 0){printf(通讯录为空无需打印\n);return;}printf( % -20s % -5s % -5s % -20s % -20s\n, 姓名, 年龄, 性别, 电话, 住址);for (int i 0; i pc-sz; i){printf( % -20s % -5d % -5s % -20s % -20s\n,pc-Data[i].name, pc-Data[i].age, pc-Data[i].sex, pc-Data[i].tele, pc-Data[i].addr);} }void DelContact(Contact* pc) {if (pc-sz 0){printf(通讯录为空无需删除\n);return;}char name[NAME_MAX];printf(输入你要删除人的姓名\n);scanf(%s, name);int ret find(pc, name);if (ret -1){printf(查无此人\n);return;}for (int i ret; i pc-sz-1; i){pc-Data[i] pc-Data[i 1];}pc-sz--; }void SearchContact(Contact* pc) {if (pc-sz 0){printf(通讯录为空\n);return;}char name[NAME_MAX];printf(输入你要查找人的姓名\n);scanf(%s, name);int ret find(pc, name);if (ret -1){printf(查无此人\n);return;}printf( % -20s % -5s % -5s % -20s % -20s\n, 姓名, 年龄, 性别, 电话, 住址);printf( % -20s % -5d % -5s % -20s % -20s\n,pc-Data[ret].name, pc-Data[ret].age, pc-Data[ret].sex, pc-Data[ret].tele, pc-Data[ret].addr); }void ModifyContact(Contact* pc) {if (pc-sz 0){printf(通讯录为空\n);return;}char name[NAME_MAX];printf(输入你要修改人的姓名\n);scanf(%s, name);int ret find(pc, name);if (ret -1){printf(查无此人\n);return;}printf(输入名字\n);scanf(%s, pc-Data[ret].name);printf(输入年龄\n);scanf(%d, pc-Data[ret].age);printf(输入性别\n);scanf(%s, pc-Data[ret].sex);printf(输入电话\n);scanf(%s, pc-Data[ret].tele);printf(输入住址\n);scanf(%s, pc-Data[ret].addr);printf(输入成功\n); }int cmp_name(void* e1,void* e2) {return strcmp(((PeoInfo*)e1)-name, ((PeoInfo*)e2)-name); } void SortContact(Contact* pc) {qsort(pc-Data, pc-sz, sizeof(PeoInfo), cmp_name); } con.h #pragma once #includestdio.h #includestring.h #includeassert.h #includestdlib.h#define NAME_MAX 20 #define SEX_MAX 5 #define TELE_MAX 12 #define ADDR_MAX 30#define START 3 #define START_ADD 2typedef struct PeoInfo {char name[NAME_MAX];int age;char sex[SEX_MAX];char tele[TELE_MAX];char addr[ADDR_MAX]; }PeoInfo;typedef struct Contact {PeoInfo* Data;int sz;int capacity; }Contact;//init void InitContact(Contact* pc);//add void AddContact(Contact* pc);//show void ShowContact(Contact* pc);//del void DelContact(Contact* pc);//search void SearchContact(Contact* pc);//modify void ModifyContact(Contact* pc);//sort void SortContact(Contact* pc);//destory void DestoryContact(Contact* pc);test.c #define _CRT_SECURE_NO_WARNINGS 1 #include contact.henum option {Exit,Add,Del,Search,Modify,Show,Sort, };void menu() {printf(**************************\n);printf(*** 1.Add 2.Del **\n);printf(*** 3.Search 4.Modify **\n);printf(*** 5.Show 6.Sort **\n);printf(*** 0.Exit **\n);printf(**************************\n);printf(**************************\n); } int main() {int input 0;Contact Con;InitContact(Con);do{menu();printf(请输入你的选项\n);scanf(%d, input);switch (input){case Add:AddContact(Con);break;case Del:DelContact(Con);break;case Search:SearchContact(Con);break;case Modify:ModifyContact(Con);break;case Show:ShowContact(Con);break;case Sort:SortContact(Con);break;case Exit:DestoryContact(Con);printf(你已成功退出\n);break;default:printf(输入错误请重新输入\n);break;}} while (input);return 0; }欢迎纠错与讨论
http://www.w-s-a.com/news/177847/

相关文章:

  • 外贸上哪个网站开发客户建行个人网上银行登录入口
  • 空间除了可以做网站还能干什么qq钓鱼网站
  • 网站 技术企业网站用免费程序
  • 做网站的中文名字汕尾网站开发
  • 网站推广效果推广网站推荐
  • 腾讯企业网站建设网络推广比较经典和常用的方法有
  • 四川成都网站网页设计上海外贸网站制作公司
  • wordpress模板首页图片锦州网站做优化
  • 哔哩哔哩网站建设分析有哪些做网站好的公司
  • 福建建设执业中心网站沧州网络推广外包公司
  • 做网站怎么改关键词营销网站建设818gx
  • 广撒网网站怎么进行网络营销
  • 中职计算机网站建设教学计划电商网站如何避免客户信息泄露
  • 惠州微网站建设外贸进出口代理公司
  • 网站建设最常见的问题建设银行网站机构
  • 网站集群建设相关的招标南通seo网站建设费用
  • 网络培训的网站建设能够做二维码网站
  • 网站类游戏网站开发wordpress 文章首标点
  • 徐州网站建设熊掌号免费推广网站入口2020
  • 网站建设有前途长春高铁站
  • 做网站网课阿里云域名查询系统
  • saas建站平台有哪些简述网站建设基本流程答案
  • 个人怎么做网站网站浏览思路
  • 网站建设里的知识长沙网络营销公司
  • 网站建设与维护大作业pc网站转换成微网站
  • php网站开发经典教材东莞网站开发
  • 教育培训手机网站模板下载跨境电商培训哪家最好
  • 网站开发淄博网站被降权会发生什么影响吗
  • 网站开发常用的语言东城手机网站制作
  • 微小店网站建设平台手机优化加速有什么用