C 语言的课程设计通讯录系统管理.docx
- 文档编号:6142654
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:14
- 大小:74.62KB
C 语言的课程设计通讯录系统管理.docx
《C 语言的课程设计通讯录系统管理.docx》由会员分享,可在线阅读,更多相关《C 语言的课程设计通讯录系统管理.docx(14页珍藏版)》请在冰豆网上搜索。
C语言的课程设计通讯录系统管理
目录
目录2
一、课程设计的目的与要求3
二、题目说明4
2.1程序开发背景4
2.2开发工具介绍4
三、总体设计5
3.1.系统结构图:
5
3.2软件流程图:
6
四、详细说明7
4.1系统实施7
五、遇到的问题和解决方法10
六、课程设计总结11
七、参考文献12
八.附录(源程序代码)13
一、课程设计的目的与要求
目的:
进一步加深,巩固所学专业课程(《C语言程序设计》)的基本理论知识,理论联系实际,进一步培养自己综合分析问题的能力,掌握运用C语言独立地编写,调试应用程序和进行其他相关设计的技能。
同时也加深自己对C语言程序的运用,更灵活的掌握C语言。
要求:
1.要求利用C语言面向过程的编程思想来完成系统的设计;
2.突出C语言的函数特征,以多个函数实现每一个子功能;
3.画出功能模块图;
4.进行简单界面设计,能够实现友好的交互;
5.具有清晰的程序流程图和数据结构的详细定义;
6.熟练掌握C语言对文件的各种操作。
二、题目说明:
2.1程序开发背景
目前因此需要开发一套适合大众的.兼容性好的系统很有必要。
本程序是一个通讯录管理系统,对通讯录进行管理,通讯录的记录包括编号,姓名,年龄,电话,通讯地址,电子邮箱等。
输入这些信息,本程序可以记录,保存。
通过本程序可以实现对人员的记录,管理,满足用户的需求,提供一个电子化的通讯录管理系统
2.2开发工具介绍
本系统开发利用TurboC2.0。
TurboC2.0是在微机上广泛使用的集成环境,它具有清晰,直观,简单易用,功能较强等特点,并把程序的编辑,编译,调试,连接和运行等操作全部集中在一个界面上进行,使用十分方便,灵活。
三:
总体设计
3.1系统结构图:
图3-1
添加:
可以添加通讯录记录,依次输入编号,姓名,年龄,电话,通讯地址,电子邮箱后,会提示是否继续添加;
显示:
可以用表格形式输出所有通讯录里的记录;
删除:
输入欲删除的那个人的名字后,会自动删除关于他(她)的记录:
查询:
可以选择用姓名,电话,地址三种方式查询。
修改:
输入欲修改的那个人名字后,再依次输入编号,姓名,年龄,电话,通讯地址,电子邮箱即可完成修改;
保存:
输入文件名(带后缀名)后,即可将通讯录信息保存到文件。
3.2软件流程图
Rji
图3-2
四.详细说明
4.1系统实施
1.输入模块:
.函数功能:
向链表的末尾添加从键盘输入通讯录的记录中的编号,姓名,年龄,电话,通讯地址,电子邮箱后,;
函数参数:
结构体指针head,指向通讯录的记录中的编号,姓名,年龄,电话,通讯地址,电子邮箱后,;
图4-1
intAppendscore(STU*head,intn,intm)
{
intj;
STU*p;
charch;
for(p=head+n;p
{
printf("\ninputnumber:
");/*输入学号*/
scanf("%d",&p->number);
printf("inputname:
");/*输入姓名*/
scanf("%s",p->name);
for(j=0;j { printf("inputscore%d: ",j+1);/*输入成绩*/ scanf("%d",p->score+j); } n++; printf("Doyouwanttoappendanewnode(Y/N)? "); scanf("%c",&ch); if(ch=='n'||ch=='N')returnn; } 2.排序模块: 函数功能: 用选择法编号,姓名,年龄,电话,通讯地址,电子邮箱后,; 函数参数: 结构体指针head,指向编号,姓名,年龄,电话,通讯地址,电子邮箱后,; 图4-2 voidSortScore(STU*head,intn) { inti,j,k; STUtemp; for(i=0;i { k=i; for(j=i;j { if((head+j)->average>(head+k)->average) { k=j; } } if(k! =j) { temp=*(head+k); *(head+k)=*(head+j); *(head+i)=temp; } } } 3.查询模块: 函数功能编号,姓名,年龄,电话,通讯地址,电子邮箱后,; 图4-3 voidSearchScore(STU*head,intn,intm) { intname,findNo; printf("pleaseinputthenameyouwanttosearch: "); findNo=SearchName(head,name,n) if(findNo==-1) { printf("\nNotfound! \n"); } else { printScore(head+findNo,1,m); } } 五、遇到的问题和解决方法 1、存在的不足: 本学生成绩管理系统由六大模块组成,每个模块相互联系又相互独立。 这个学生成绩管理系统存在着很多不足之处,由于自己本身编程能力的问题,这个系统可以实现的功能非常有限。 只能实现学生管理系统最基本的功能,可以进行简单的输入、输出学生资料,查询和修改学生信息,能直接从文件中读入数据,能对系统所作的修改、操作进行保存等。 而且在每个模块也有不足的地方,比如在输入学生资料时,对每个信息项没有严格的规定,可以输入任何的字符。 这有待以后努力,更详尽的实现模块的功能。 2、指针数组的使用: 就是在插入学生记录模块中,另一个指针数组的定义,之前做的时候没有注意到这点,结果所做的修改不能够保存到文件,之后操作的时候也没有显示所做修改的记录,之后找了资料看了之后才知道,是变量的问题,所以最后作了修改,加了一个另外的指针数组。 3、Clrscr的使用问题: 刚开始时对菜单的切换不是很了解,编写的程序运行的时候是一竖行向下的,很影响使用者的视觉范围,通过查询一些资料得知了clrscr()的作用,能够把一些暂时不用或不相关的信息通过清屏来处理。 4、细节方面 其实在有些细节方面还是要特别注意啊,比如分号的添加,<<与>>的方向问题,函数的返回值等问题,虽然容易改掉,但是很容易养成不好的习惯,而且还会浪费时间,所以在一开始写的时候就要很仔细,这样才能保证程序编的精细,同时若出现很多这样的错误的话,在编写程序的时候也会心里烦的,所以在编程的时候要认真仔细。 5、内存的分配问题: 对于初学者的话对内存的分配和释放问题是比较抽象的和模糊的问题,在排序是之前就出现了交换数据困难的问题,以及内存分配空间繁琐释放空间不及时的问题,造成空间的浪费,使得程序运行时效率较低,因此最后采用了顺序存储记录的方式,这就能改变前面所出现的问题。 6、较小的问题方面: 其余的就没什么比较大的问题了,基本上只要细心一点的话就可以正确调试了。 六、课程设计总结 在经过这几天的的课程设计的学习让我学到了很多知识,让我有很多收获,它锻炼了我的细心,磨砺了我做事情的毅力,让我学会了与别人合作,增加了我与伙伴的感情。 虽然为了课程设计整日在忙碌的生活中,但我感觉没一天过得很充实,很愉快。 总的来说,这次课程设计,实在是受益匪浅。 在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,例如编写的程序在计算机上识别的是没有错误的,但是运行的结果确实不对的,不过最后在老师和同学的帮助下也都顺利解决。 虽然课程设计只有短短的几天,但是我发现我学到的知识比整整一个学期学到的都多。 理论和实践的相结合是学习最有效的方法。 在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计之后,一定把以前所学过的知识重新温故。 回顾起此次课程设计,我感慨颇多,的确,从拿到题目到完成整个编程,从理论到实践,在整整几天的日子里,可以学到很多很多的的东西,不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。 而且在这个学生管理系统程序中,我对计算机C语言有了更深刻的认识,对很多的以前有些陌生的语言能够了解和掌握。 其中的许多函数在我的脑海中留下了很深的印象,这次的课程设计同时也帮助我们再一次复习了我们的计算机C语言,巩固了我们的知识。 通过这次课程设计也使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为实践服务,从而提高自己的实际动手能力和独立思考的能力。 七、参考文献 1.《C语言程序设计学习指导与实验教程》高禹冯湘忠等主编,中国农业大学出版社 2.《实用C语言程序设计教程》陈建铎等主编,中国水利水电出版社 3.《.C语言程序设计教程》王敬华林萍等主编,.清华大学出版社 附录(源程序代码) #include #include #include #include #defineSTU_NUM40/*最多的学生人数*/ #defineCOURSE_NUM10/*最多的考试科目*/ structstudent { intnumber;/*每个学生的学号*/ charname;/*每个学生的姓名*/ intscore[COURSE_NUM];/*每个学生M门功课成绩*/ intsum; /*每个学生的总成绩*/ floataverage; /*每个学生的平均成绩*/ }; typedefstructstudentSTU; intAppendscore(STU*head,intn,intm) { intj; STU*p; charch; for(p=head+n;p { printf("\ninputnumber: "); scanf("%d",&p->number); printf("inputname: "); scanf("%s",p->name); for(j=0;j { printf("inputscore%d: ",j+1); scanf("%d",p->score+j); } n++; printf("Doyouwanttoappendanewnode(Y/N)? "); scanf("%c",&ch); if(ch=='n'||ch=='N')returnn; } } voidPrintScore(STU*head,intn,intm) { STU*p; inti; charstr[100]={'\0'},temp[3]; strcat(str,“NumberName"); for(i=1;i<=m;i++) { strcat(str,"scoer"); itoa(i,temp,10); strcat(str,temp); strcat(str,""); } strcat(str,"sumaverage"); printf("%s",str); for(p=head;p { printf("\nNo.%3d%8s",p->number,p->name); for(i=0;i { printf("%7d",p->score[i]); } printf("%11d%9.2f\n",p->sum,p->average); } } voidTotalScore(STU*head,intn,intm) { STU*p; inti; for(p=head;p { p->sum=0; for(i=0;i { p->sum=p->sum+p->score[i]; } p->average=(float)p->sum/m; } } voidSortScore(STU*head,intn) { inti,j,k; STUtemp; for(i=0;i { k=i; for(j=i;j { if((head+j)->average>(head+k)->average) { k=j; } } if(k! =j) { temp=*(head+k); *(head+k)=*(head+j); *(head+i)=temp; } } } voidSearchScore(STU*head,intn,intm) { intname,findNo; printf("pleaseinputthenameyouwanttosearch: "); findNo=SearchName(head,name,n) if(findNo==-1) { printf("\nNotfound! \n"); } else { PrintScore(head+findNo,1,m); } } charMenu(void) switch(ch) { charch; printf("#==================================#\n"); printf("#xueshengguanlixitong#\n"); printf("#----------------------------------#\n"); printf("#copyright@2011-1-11#\n"); printf("#==================================#\n"); printf("#1.jiazaiwenjian#\n"); printf("#2.xianshixueshengchengji#\n"); printf("#3.xueshengchengjipaixu#\n"); printf("#4.chaxunxueshengchengji#\n"); printf("#5.tuichuxitong#\n"); printf("#==================================#\n"); printf("qingan0-8xuanzecandanxiang: "); scanf("%c",&ch); returnch; } main() { charch; intm=3,n=0; STUstu[STU_NUM]; while (1) { ch=Menu;/*显示菜单,并读取用户输入*/ switch(ch) { case'1': LoadScoreFile(stu,&n,&m); break; case'2': n=PrintfScore(stu,n,m);/*调用成绩显示模块*/ break; case'3': SearchScore(stu,n,m);/*调用按姓名查找模块*/ break; case'4': SortScore(stu,n);/*调用成绩排序模块*/ printf("\nSortedresult\n"); PrintScore(stu,n,m);/*显示成绩排序结果*/ break; case'0': exit(0);/*退出程序*/ printf("Endofprogrm! "); break; defult: printf("Inputerror! "); break; } } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言的课程设计通讯录系统管理 语言 课程设计 通讯录 系统管理