通讯录设计c语言课程设计—学生通讯录管理系统设计 设计一个学生通信录,学生通

通讯录设计  时间:2021-10-17  阅读:()

C语言 课程设计 通讯录

#include "stdio.h" #include "stdlib.h" #include "string.h" #include "ctype.h" #define M 50 typedef struct { char name[14]; char tele[14]; char address[22]; char QQ[14]; char group[10]; }person; int enter(person t[]); int load(person t[]); void save(person t[],int n); void list(person t[],int n); void modify(person t[],int n); int delete(person t[],int n); int add(person t[],int n); void N_search(person t[],int n); void T_search(person t[],int n); void N_list(person t[],int n); void G_list(person t[],int n); void print(person temp); int find(person t[],int n,char *s); int menu_select(); main() { int i; person adr[M]; int length; clrscr(); for(;;) { switch(menu_select()) { case 1: length=enter(adr);break; case 2: length=load(adr); break; case 3: save(adr,length);break; case 4: list(adr,length);break; case 5: modify(adr,length);break; case 6: length=delete(adr,length);break; case 7: length=add(adr,length);break; case 8: N_search(adr,length);break; case 9: T_search(adr,length);break; case 10: N_list(adr,length);break; case 11: G_list(adr,length);break; case 0: exit(0); } } }

c中的通讯录程序设计思路是什么?

设计一个结构体,这个结构体里面存储每个用户的所有信息,并且这个结构体有个指针指向下一个结构体,即一个结构体链表。

然后就是对这个结构体链表的操作,增加,删除,编辑,修改,排序等。

c语言课程设计—学生通讯录管理系统设计 设计一个学生通信录,学生通

/*10.3.2源程序*//******头文件(.h)***********/#include"stdio.h"/*I/O函数*/#include"stdlib.h"/*标准库函数*/#include"string.h"/*字符串函数*/#include"ctype.h"/*字符操作函数*/#defineM50/*定义常数表示记录数*/typedefstruct/*定义数据结构*/{charname[20];/*姓名*/charunits[30];/*单位*/chartele[10];/*电话*/}ADDRESS;/******以下是函数原型*******/intenter(ADDRESSt[]);/*输入记录*/voidlist(ADDRESSt[],intn);/*显示记录*/voidsearch(ADDRESSt[],intn);/*按姓名查找显示记录*/intdelete(ADDRESSt[],intn);/*删除记录*/intadd(ADDRESSt[],intn);/*插入记录*/voidsave(ADDRESSt[],intn);/*记录保存为文件*/intload(ADDRESSt[]);/*从文件中读记录*/voiddisplay(ADDRESSt[]);/*按序号查找显示记录*/voidsort(ADDRESSt[],intn);/*按姓名排序*/voidqseek(ADDRESSt[],intn);/*快速查找记录*/voidcopy();/*文件复制*/voidprint(ADDRESStemp);/*显示单条记录*/intfind(ADDRESSt[],intn,char*s);/*查找函数*/intmenu_select();/*主菜单函数*//******主函数开始*******/main(){inti;ADDRESSadr[M];/*定义结构体数组*/intlength;/*保存记录长度*/clrscr();/*清屏*/for(;;)/*无限循环*/{switch(menu_select())/*调用主菜单函数,返回值整数作开关语句的条件*/{case0:length=enter(adr);break;/*输入记录*/case1:list(adr,length);break;/*显示全部记录*/case2:search(adr,length);break;/*查找记录*/case3:length=delete(adr,length);break;/*删除记录*/case4:length=add(adr,length);break;/*插入记录*/case5:save(adr,length);break;/*保存文件*/case6:length=load(adr);break;/*读文件*/case7:display(adr);break;/*按序号显示记录*/case8:sort(adr,length);break;/*按姓名排序*/case9:qseek(adr,length);break;/*快速查找记录*/case10:copy();break;/*复制文件*/case11:exit(0);/*如返回值为11则程序结束*/}}}/*菜单函数,函数返回值为整数,代表所选的菜单项*/menu_select(){chars[80];intc;gotoxy(1,25);/*将光标定为在第25行,第1列*/printf("pressanykeyentermenu ");/*提示压任意键继续*/getch();/*读入任意字符*/clrscr();/*清屏*/gotoxy(1,1);printf("********************MENU********************* ");printf("0.Enterrecord ");printf("1.Listthefile ");printf("2.Searchrecordonname ");printf("3.Deletearecord ");printf("4.addrecord ");printf("5.Savethefile ");printf("6.Loadthefile ");printf("7.displayrecordonorder ");printf("8.sorttomakenewfile ");printf("9.Quickseekrecord ");printf("10.copythefiletonewfile ");printf("11.Quit ");printf("*********************************************** ");do{printf(" Enteryouchoice(0~11):");/*提示输入选项*/scanf("%s",s);/*输入选择项*/c=atoi(s);/*将输入的字符串转化为整型数*/}while(c11);/*选择项不在0~11之间重输*/returnc;/*返回选择项,主程序根据该数调用相应的函数*/}/***输入记录,形参为结构体数组,函数值返回类型为整型表示记录长度*/intenter(ADDRESSt[]){inti,n;char*s;clrscr();/*清屏*/printf(" pleaseinputnum ");/*提示信息*/scanf("%d",&n);/*输入记录数*/printf("pleaseinputrecord ");/*提示输入记录*/printf("nameunittelephone ");printf("------------------------------------------------ ");for(i=0;in-1)/*如果整数i值大于n-1,说明没找到*/printf("notfound ");elseprint(t[i]);/*找到,调用显示函数显示记录*/}/*显示指定的一条记录*/voidprint(ADDRESStemp){clrscr();printf(" ******************************************** ");printf("nameunittelephone ");printf("------------------------------------------------ ");printf("%-20s%-30s%-10s ",temp.name,temp.units,temp.tele);printf("**********************end*********************** ");}/*查找函数,参数为记录数组和记录条数以及姓名s*/intfind(ADDRESSt[],intn,char*s){inti;for(i=0;in-1)/*如果i>n-1超过了数组的长度*/printf("nofoundnotdeleted ");/*显示没找到要删除的记录*/else{print(t[i]);/*调用输出函数显示该条记录信息*/printf("Areyousuredeleteit(1/0) ");/*确认是否要删除*/scanf("%d",&ch);/*输入一个整数0或1*/if(ch==1)/*如果确认删除整数为1*/{for(j=i+1;j=i;j--)/*从最后一个结点开始向后移动一条*/{strcpy(t[j+1].name,t[j].name);/*当前记录的姓名拷贝到后一条*/strcpy(t[j+1].units,t[j].units);/*当前记录的单位拷贝到后一条*/strcpy(t[j+1].tele,t[j].tele);/*当前记录的电话拷贝到后一条*/}strcpy(t[i].name,temp.name);/*将新插入记录的姓名拷贝到第i个位置*/strcpy(t[i].units,temp.units);/*将新插入记录的单位拷贝到第i个位置*/strcpy(t[i].tele,temp.tele);/*将新插入记录的电话拷贝到第i个位置*/n++;/*记录数加1*/returnn;/*返回记录数*/}/*保存函数,参数为结构体数组和记录数*/voidsave(ADDRESSt[],intn){inti;FILE*fp;/*指向文件的指针*/if((fp=fopen("record.txt","wb"))==NULL)/*打开文件,并判断打开是否正常*/{printf("enfile ");/*没打开*/exit(1);/*退出*/}printf(" Savingfile ");/*输出提示信息*/fprintf(fp,"%d",n);/*将记录数写入文件*/fprintf(fp," ");/*将换行符号写入文件*/for(i=0;i=0&&id0)/*比较大小*/{flag=1;strcpy(temp.name,t[j].name);/*交换记录*/strcpy(temp.units,t[j].units);strcpy(temp.tele,t[j].tele);strcpy(t[j].name,t[j+1].name);strcpy(t[j].units,t[j+1].units);strcpy(t[j].tele,t[j+1].tele);strcpy(t[j+1].name,temp.name);strcpy(t[j+1].units,temp.units);strcpy(t[j+1].tele,temp.tele);}if(flag==0)break;/*如果标志为0,说明没有发生过交换循环结束*/}printf("sortsucess!!! ");/*显示排序成功*/}/*快速查找,参数为结构体数组和记录数*/voidqseek(ADDRESSt[],intn){chars[20];intl,r,m;printf(" Pleasesortbeforeqseek! ");/*提示确认在查找之前,记录是否已排序*/printf("pleaseenternameforqseek ");/*提示输入*/scanf("%s",s);/*输入待查找的姓名*/l=0;r=n-1;/*设置左边界与右边界的初值*/while(lr)/*如果左边界大于右边界时*/printf("notfound ");/*显示没找到*/}/*复制文件*/voidcopy(){charoutfile[20];/*目标文件名*/inti,n;ADDRESStemp[M];/*定义临时变量*/FILE*sfp,*tfp;/*定义指向文件的指针*/clrscr();/*清屏*/if((sfp=fopen("record.txt","rb"))==NULL)/*打开记录文件*/{printf("enfile ");/*显示不能打开文件信息*/exit(1);/*退出*/}printf("Enteroutfilename,forexamplec:\f1\te.txt: ");/*提示信息*/scanf("%s",outfile);/*输入目标文件名*/if((tfp=fopen(outfile,"wb"))==NULL)/*打开目标文件*/{printf("enfile ");/*显示不能打开文件信息*/exit(1);/*退出*/}fscanf(sfp,"%d",&n);/*读出文件记录数*/fprintf(tfp,"%d",n);/*写入目标文件数*/fprintf(tfp," ");/*写入换行符*/for(i=0;i

Hostodo:$34.99/年KVM-2.5GB/25G NVMe/8TB/3个数据中心

Hostodo在九月份又发布了两款特别套餐,开设在美国拉斯维加斯、迈阿密和斯波坎机房,基于KVM架构,采用NVMe SSD高性能磁盘,最低1.5GB内存8TB月流量套餐年付34.99美元起。Hostodo是一家成立于2014年的国外VPS主机商,主打低价VPS套餐且年付为主,基于OpenVZ和KVM架构,美国三个地区机房,支持支付宝或者PayPal、加密货币等付款。下面列出这两款主机配置信息。CP...

这几个Vultr VPS主机商家的优点造就商家的用户驱动力

目前云服务器市场竞争是相当的大的,比如我们在年中活动中看到各大服务商都找准这个噱头的活动发布各种活动,有的甚至就是平时的活动价格,只是换一个说法而已。可见这个行业确实竞争很大,当然我们也可以看到很多主机商几个月就消失,也有看到很多个人商家捣鼓几个品牌然后忽悠一圈跑路的。当然,个人建议在选择服务商的时候尽量选择老牌商家,这样性能更为稳定一些。近期可能会准备重新整理Vultr商家的一些信息和教程。以前...

Megalayer美国独立服务器配置及性能速度综合评测

Megalayer 商家在之前也有记录过,商家开始只有提供香港站群服务器和独立服务器,后来也有增加到美国独立服务器,以及前几天也有介绍到有增加香港VPS主机。对于香港服务器之前有过评测(Megalayer香港服务器配置一览及E3-1230 8GB服务器评测记录),这里申请到一台美国独立服务器,所以也准备简单的评测记录。目前市场上我们看到很多商家提供VPS或者云服务器基本上没有什么特别的,但是独立服...

通讯录设计为你推荐
恒大北京公司官网恒大地产集团总部在哪里?贪婪之刃英雄联盟 贪婪之刃的被动增加金币效果可以叠加吗?吉林省建设厅网站吉林省建设厅的内设机构银率钱存哪家银行 利率能上浮10%中国化妆品真品联盟亲们,化妆品正品网站有哪些?读者手机大可乐、小辣椒、读者哪个手机好cisp成绩查询国家计算机等级考试如何查分什么叫达人达人是什么意思?暗影妖狐英雄联盟狐狸皮肤暗影妖狐有特效吗钢铁大师LOL中 现在的龙龟 钢铁大师 狂战士 哪个牛 我说现在的 没被削弱 还有 请问问 提莫好玩吗
vps优惠码 xfce 台湾谷歌网址 dux 免费mysql 183是联通还是移动 广州服务器 百度云1t umax120 台湾谷歌 东莞主机托管 广州虚拟主机 服务器防火墙 工信部icp备案查询 乐视会员免费领取 谷歌搜索打不开 godaddyssl windows2008 cdn加速技术 海外加速 更多