文档C语言程序设计通讯录.docx
- 文档编号:25780724
- 上传时间:2023-06-13
- 格式:DOCX
- 页数:16
- 大小:30.26KB
文档C语言程序设计通讯录.docx
《文档C语言程序设计通讯录.docx》由会员分享,可在线阅读,更多相关《文档C语言程序设计通讯录.docx(16页珍藏版)》请在冰豆网上搜索。
文档C语言程序设计通讯录
一、设计任务书
1)复习、巩固C语言的基础知识,进一步加深对C语言的理解和掌握;
2)课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。
提高学生适应实际,实践编程的能力;
3)培养学生在项目开发中团队合作精神、创新意识及能力。
4)对系统进行功能模块分析、控制模块分析正确,符合课题要求,实现相应功能;
可以加以其他功能或修饰,使程序更加完善、合理;
二、本组课题
设计一个通讯录管理系统
三、程序功能简介
该程序具有添加、查找,修改、删除通讯录中各个成员所有信息的功能。
四、主体内容
1、设计分析
1.1问题提出
本人计划编写一个通讯录管理系统,主要用来记录和管理所有联系人的详细联系方式
1.2本系统涉及的知识点
本系统涉及到所学过的知识点有:
编译预处理,函数,循环结构,循环结构,数组,结构体,指针,文件等
1.3功能要求
1、制作一个通讯录程序,要求可以记录联系人的详细联系方式,包括:
姓名,联系电话,居住地所在省份,城市,街道,以及当地邮编
2、能根据需要随时在通讯录中添加联系人
3、能根据联系人的名字查找他的详细联系方式
4、能根据需要修改某联系人的联系方式
5、能删除某特定联系人的所有联系方式
2、程序结构流程图
这里只附部分模块流程图:
(1)系统的界面如图1所示(下图)
主菜单,请选择选项编号(0-5)
1——添加联系人
2——显示记录
3——查找
4——删除联系人信息
5——添加联系人
0——退出菜单
图1系统的菜单选项
2.2、删除模块流程图:
如图
(2)
图
(2)删除模块流程图
3.各模块的功能及程序说明
3.1各模块的功能:
*Main模块:
根据选单内容实现调用函数
*Delete模块:
删除通讯录中某人的信息,其程序如下
*list模块:
显示通讯录中的所有记录
3.2程序说明:
(1)Main函数
/******主函数开始*******/
main()
{
inti;
personp[M];
intlength;/*保存记录长度*/
clrscr();/*清屏*/
for(;;)/*无限循环*/
{
switch(menu())())/*调用主菜单函数,返回值整数作开关语句的条件*/
{
case0:
length=create(p);break;
case1:
list(p,length);break;/*显示全部记录*/
case2:
search(p,length);break;/*查找记录*/
case3:
length=delete(p,length);break;/*删除记录*/
case4:
length=add(p,length);break;/*插入记录*/
case5:
exit(0);/*如返回值为5则程序结束*/
}
}
}
(2)Delete函数
/*删除函数,参数为记录数组和记录条数*/
intdelete(persont[],intn)
{
chars[20];/*要删除记录的姓名*/
intch=0;
inti,j;
printf("pleasedeletedname\n");/*提示信息*/
scanf("%s",s);/*输入姓名*/
i=find(t,n,s);/*调用find函数*/
if(i>n-1)/*如果i>n-1超过了数组的长度*/
printf("nofoundnotdeleted\n");/*显示没找到要删除的记录*/
else
{
print(t[i]);/*调用输出函数显示该条记录信息*/
printf("Areyousuredeleteit(1/0)\n");/*确认是否要删除*/
scanf("%d",&ch);/*输入一个整数0或1*/
if(ch==1)/*如果确认删除整数为1*/
{
for(j=i+1;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[j-1].street,t[j].street);/*将后一条记录的街道拷贝到前一条*/ strcpy(t[j-1].city,t[j].city);/*将后一条记录的城市拷贝到前一条*/ strcpy(t[j-1].provience,t[j].provience);/*将后一条记录的省份拷贝到前一条*/ strcpy(t[j-1].num,t[j].num);/*将后一条记录的邮编拷贝到前一条*/ } n--;/*记录数减1*/ } } returnn;/*返回记录数*/ } (3)List函数 /*显示记录,参数为记录数组和记录条数*/ voidlist(persont[],intn) { inti; clrscr(); printf("\n\n*******************ADDRESS******************\n"); printf("nameunittelephonestreetcityproviencenum\n"); printf("------------------------------------------------\n"); for(i=0;i printf("%-20s%-30s%-10s%-20s%-20s%-20s%-20s\n",t[i].name,t[i].units, t[i].tele,t[i].street,t[i].city,t[i].provience,t[i].num); if((i+1)%10==0)/*判断输出是否达到10条记录*/ { printf("Pressanykeycontinue...\n");/*提示信息*/ getch();/*压任意键继续*/ } printf("************************end*******************\n"); } 4、试验结果『含输入数据和输出结果』 通过很多次的实验,本程序(源程序在程序清单中)终于可以正常运行,任何一项功能都能顺利实现 5、设计体会 以前不曾做过课程设计,因此在做课程设计时遇到了很大的困难,首先是在编写程序时,用的时间很长,并且经过多次运行都不能成功。 上学年我的C语言学的也是很不错的,对于比较简单的程序都能很容易的编写下来,在编写这个程序时才发现自己的能力还很不行,知识储备还很贫乏。 我觉得循环结构比较难,数组的应用还不很灵活。 但经过这些天的辛苦实践,认真踏实的获取新知识,积极的提高自己的上机操作能力,不断的吸取经验和教训,终于使自己的各项能力都有了很大的提高。 俗话说: “学得越深才会发现自己不明白的地方越多”,确实如此,如将在我的印象中以前只把C语言比作小溪,那么现在C语言已经成为海洋,当我认认真真的做完课程设计才发现C语言竟是如此的神秘,如此具有魅力。 通过C语言这套工具,我们可以设计出各种各样我们需要的东西,可以根据自己的需要,把我们的生活改造得更完美。 虽然C语言比较难,但我一定会知难而上,我会更刻苦的学习他,我将带着这套法宝开创出更美好的明天 在这次C语言课程设计中我深刻的体会到了合作的重要性,有时候自己犯错误了,但由于自己老是容易受老思想的束缚,很难找到出错的原因,而让别人帮忙查找则要容易得多。 并且多于较大的程序,一个人很难完成,将任务分开则更容易操作。 五、附录(程序清单) #include"stdio.h" #include"stdlib.h" #include"string.h" #include"ctype.h" #defineM50 typedefstruct { charname[20]; charunits[30]; chartele[10]; charstreet[20]; charcity[20]; charprovience[20]; charnum[20]; }person; intcreate(persont[]); voidlist(persont[],intn); voidsearch(persont[],intn); intdelete(persont[],intn); intadd(persont[],intn); intfind(persont[],intn,char*s); intmenu(); main() { inti; personp[M]; intlength; clrscr(); for(;;) { switch(menu()) { case0: length=create(p);break; case1: list(p,length);break; case2: search(p,length);break; case3: length=delete(p,length);break; case4: length=add(p,length);break; case5: exit(0); } } } menu() { chars[80]; intc; gotoxy(1,25); printf("pressanykeyintomenu......\n"); getch(); clrscr(); gotoxy(1,1); printf("********************MENU*********************\n\n"); printf("0.createrecord\n"); printf("1.Listthefile\n"); printf("2.Searchrecordonname\n"); printf("3.Deletearecord\n"); printf("4.addrecord\n"); printf("5.Quit\n"); printf("***********************************************\n"); do{ printf("\ncreateyouchoice(0~5): "); scanf("%s",s); c=atoi(s); }while(c<0||c>5); returnc; } intcreate(persont[]) { inti,n; char*s; clrscr(); printf("\npleaseinputnum\n"); scanf("%d",&n); printf("pleaseinputrecord\n"); printf("nameunittelephonestreetcityproviencenum\n"); printf("------------------------------------------------\n"); for(i=0;i { scanf("%s%s%s%s%s%s%s",t[i].name,t[i].units,t[i].tele,t[i].street, t[i].city,t[i].provience,t[i].num); printf("----------------------------------------------\n"); } returnn; } voidlist(persont[],intn) { inti; clrscr(); printf("\n\n*******************ADDRESS******************\n"); printf("nameunittelephonestreetcityproviencenum\n"); printf("------------------------------------------------\n"); for(i=0;i printf("%-20s%-30s%-10s%-20s%-20s%-20s%-20s\n",t[i].name,t[i].units, t[i].tele,t[i].street,t[i].city,t[i].provience,t[i].num); if((i+1)%10==0) { printf("Pressanykeycontinue...\n"); getch(); } printf("************************end*******************\n"); } voidsearch(persont[],intn) { chars[20]; inti; clrscr(); printf("pleasesearchname\n"); scanf("%s",s); i=find(t,n,s); if(i>n-1) printf("notfound\n"); else print(t[i]); } print(persontemp) { clrscr(); printf("\n\n********************************************\n"); printf("nameunittelephonestreetcityproviencenum\n"); printf("------------------------------------------------\n"); printf("%-20s%-30s%-10s%-20S%-20S%-20S%-20S\n",temp.name,temp.units,temp.tele,temp.street, temp.city,temp.provience,temp.num); printf("**********************end***********************\n"); } intfind(persont[],intn,char*s) { inti; for(i=0;i { if(strcmp(s,t[i].name)==0) returni; } returni; } intdelete(persont[],intn) { chars[20]; intch=0; inti,j; printf("pleasedeletedname\n"); scanf("%s",s); i=find(t,n,s); if(i>n-1) printf("nofoundnotdeleted\n"); else { print(t[i]); printf("Areyousuredeleteit(1/0)\n"); scanf("%d",&ch); if(ch==1) { for(j=i+1;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[j-1].street,t[j].street); strcpy(t[j-1].city,t[j].city); strcpy(t[j-1].provience,t[j].provience); strcpy(t[j-1].num,t[j].num); } n--; } } returnn; } intadd(persont[],intn) { persontemp; inti,j; chars[20]; printf("pleaseinputrecord\n"); printf("************************************************\n"); printf("nameunittelephonestreetcityproviencenum\n"); printf("--------------------------------------------------\n"); scanf("%s%s%s%s%s%s%s",temp.name,temp.units,temp.tele,temp.street,temp.city,temp.provience, temp.num); printf("------------------------------------------------\n"); printf("pleaseinputlocatename\n"); scanf("%s",s); i=find(t,n,s); for(j=n-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[j+1].street,t[j].street); strcpy(t[j+1].city,t[j].city); strcpy(t[j+1].provience,t[j].provience); strcpy(t[j+1].num,t[j].num); } strcpy(t[i].name,temp.name); strcpy(t[i].units,temp.units); strcpy(t[i].tele,temp.tele); strcpy(t[i].street,temp.street); strcpy(t[i].city,temp.city); strcpy(t[i].provience,temp.provience); strcpy(t[i].num,temp.num); n++; returnn; } voidsort(persont[],intn) { inti,j,flag; persontemp; for(i=0;i { flag=0; for(j=0;j if((strcmp(t[j].name,t[j+1].name))>0) { flag=1; strcpy(temp.name,t[j].name); strcpy(temp.units,t[j].units); strcpy(temp.tele,t[j].tele); strcpy(temp.street,t[j].street); strcpy(temp.city,t[j].city); strcpy(temp.provience,t[j].provience); strcpy(temp.num,t[j].num); 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].street,t[j+1].street); strcpy(t[j].city,t[j+1].city); strcpy(t[j].provience,t[j+1].provience); strcpy(t[j].num,t[j+1].num); strcpy(t[j+1].name,temp.name); strcpy(t[j+1].units,temp.units); strcpy(t[j+1].tele,temp.tele); strcpy(t[j+1].street,temp.street); strcpy(t[j+1].city,temp.city); strcpy(t[j+1].provience,temp.provience); strcpy(t[j+1].num,temp.num); } if(flag==0)break; } printf("sortsucess! ! ! \n"); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 文档 语言程序设计 通讯录