完整版c语言毕业课程设计通讯录管理系统.docx
《完整版c语言毕业课程设计通讯录管理系统.docx》由会员分享,可在线阅读,更多相关《完整版c语言毕业课程设计通讯录管理系统.docx(14页珍藏版)》请在冰豆网上搜索。
完整版c语言毕业课程设计通讯录管理系统
《C语言程序设计》课程设计
实验报告
题目:
链表应用—简单通讯录管理系统
班级:
网络102
学号:
姓名:
项东旭
成绩:
指导教师:
路萤
完成日期:
年月日
目录
1.第一章:
前言……………………………………………………2
2.第二章:
概述……………………………………………………3
3.第三章:
主要流程图……………………………………………4
4.第四章:
算法分析………………………………………………5
5.第五章:
测试及输出结果………………………………………9
6.第六章:
课程设计体会…………………………………………
7.第七章:
参考文献……………………………………………
8.第八章:
程序源代码………………………………………………
第一章:
前言
通过一个学期的学习,我认为要学好C语言程序这门课程,不仅要认真学习课本知识,更重要的是要通过上机实践实现对知识的强化与巩固。
C语言博大精深,需要我们认真体会,小心求证,不断实践。
C语言课程设计则对我们有以下几点帮助:
1.进一步掌握和利用C语言进行程序设计的能力;
2.进一步理解和运用结构化程序设计的思想和方法;
3. 初步掌握开发一个小型实用系统的基本方法;
4. 学会调试一个较长程序的基本方法;
5. 学会利用流程图或N-S图表示算法;
6. 掌握书写程设计开发文档的能力(书写课程设计报告)。
第二章:
概述
目的和意义:
本课程设计可加深对课堂理论学习的理解,增强动手能力,以培养学生合作的能力,为毕业设计作好实践环节上的准备。
通讯录系统是在学校常见的计算机信息管理系统。
它的主要任务是对学生信息进行管理,如学生信息的输入、查询、修改、增加、删除,迅速准确地完成各种学生信息的统计和查询。
主要内容:
本系统有分6个功能:
(1)添加数据
(2)查询数据(3)删除数据(4)修改数据(5)全部输出(6)退出
其主要利用结构类型,指针,数组,函数等C语言知识来实现。
1.添加数据:
输入姓名、电话号码及地址,即可添加数据。
2.查询数据:
输入所要查询的姓名即可查询。
3.修改数据:
输入所要修改的姓名,进行修改,保存后即成功。
4.删除数据:
输入所要删除的姓名,确定后即成功。
5.输出数据:
点击后即可查看所有保存的通讯录数据。
0.退出程序。
第三章:
主要流程图
模块化设计
为实现系统功能,本程序主要分为五个模块。
它们分别为:
添加数据,查询数据,删除数据,修改数据,全部输出和退出。
这五个函数再通过主函数调用分别得以实现。
主函数,首先提供了程序运行时的友好界面,列出了清单,提供用户做出选择,以便决定使用通讯录的哪种功能。
系统功能模块结构图:
第四章:
算法分析
整个系统主要包括五大模块:
添加数据,查询数据,删除数据,修改数据和全部输出。
各个算法分析如下:
主main函数:
Voidinput函数
主要利用if函数
查找数据
删除数据
修改数据voidmodify函数
全部输出
第五章:
测试及输出结果
主界面:
添加界面:
查询界面:
按姓名:
按号码:
删除界面:
按姓名:
按号码:
修改界面:
按姓名:
按号码:
输出界面:
退出界面:
第六章:
课程设计体会
一、对实验原理有更深的理解
通过该课程设计,掌握了什么是C语言程序设计,C语言程序设计的基本过程及其各阶段的基本任务,熟悉了C语言程序设计的流程图,了解了与C语言程序设计相关的技术,对课本上的知识有了更深的理解,课本上的知识是机械的,表面的。
通过把该算法的内容,算法的执行顺序在计算机上实现,把原来以为很深奥的书本知识变的更为简单,对实验原理有更深的理解。
二、激发了学习的积极性
通过该课程设计,全面系统的理解了C语言程序设计构造的一般原理和基本实现方法。
把死板的课本知识变得生动有趣,激发了学习的积极性。
把学过的C语言程序设计的知识强化,能够把课堂上学的知识通过自己设计的程序表示出来,加深了对理论知识的理解。
以前对于C语言程序设计的认识是模糊的,概念上的,现在通过自己动手做实验,对C语言程序设计的认识更加深刻。
课程设计中程序比较复杂,在调试时应该仔细,在程序调试时,将不必要的命令去除。
在这次课程设计中,我就是按照实验指导的思想来完成。
加深了理解VC的内部功能及内部实现,培养实践动手能力和程序设计能力的目的。
三、总结
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对我们的实际工作能力的具体训练和考察过程.随着科学技术发展的日新月异,当今计算机应用在生活中可以说得是无处不在。
因此作为二十一世纪的大学来说掌握程序开发技术是十分重要的,而C语言又是最常见,功能最强大的一种高级语言,因此做好C语言课程设计是十分必要的。
回顾起此次课程设计,至今我们仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在整整半个月的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体,指针,链表……通过这次课程设计之后,我们把前面所学过的知识又重新温故了一遍。
我做的是通讯录系统,虽然是很简单的一个小的程序,但对我一个初学者来说却是一个很大的困难。
更加是第一次做课程设计,所以第一天下午在机房做了一个下午却丝毫没有进展,最主要是不知从何开始,这个时候才知道上课老师们不厌其烦的教导是多么的宝贵,这个时候才后悔上课的时候没有认真的听讲。
可是现在一切都晚了,还好时间还算是充裕,只好拿出书本重新复习一下。
特别是结构体,指针的部分,几乎是一片空白。
不过经过几天的努力,大体上把课本上的知识点看了一遍,知识点也都基本是撑握了,所以下一步就是开始正式的编程序了。
不过毕竟是个新手,还是不知如何下手,于是就在网上下了一篇类似的程序,经过仔细的研究,终于读懂了C语言编程的基本过程和方法。
经过一波三折,终于开始正式编程。
编程是一件很枯燥很无聊的事情,但是出于完成作业,得到学分的压力,还必须强迫自己坚持下去,按照老师所说的模块化思想,分部分的进行编写。
而且编程是一件高精度、模范化的事情,稍有疏乎都会影响全局,也可能因为某一处的小的错误而导致整个程序的无法运行。
所以认真仔细就是非常重要的了。
开始的时候真的感觉编程是一件很无聊的事情,不过当一个程序运行成功的时候那种喜悦是无法言语的,那种成就感是无法比拟的。
又经过几天的努力,终于把程序完成了,尽管程序还是有很多错误和漏洞,不过还是很高兴的。
无论如何是自己的劳动成果,是自己经过努力得到的成绩,同时也是学习C语言的一次实践作业,自己进步的证明。
通过这次课程设计,使我对C语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,我也发现我的好多不足之处,首先是自己在指法上还不行,经常按错字母,通过学习也有所改进;再有对C语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对C语言中经常出现的错误也不了解,通过实践的学习,我认识到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。
在课程设计过程中,收获知识,提高能力的同时,我也学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪。
因此在以后的生活和学习的过程中,我一定会把课程设计的精神带到生活中,不畏艰难,勇往直前。
第七章:
参考文献
1、C程序设计(第四版)
谭浩强著
2、收集的各种网络资料
第八章:
程序源代码
#includeif(id)
printf("%d\t%s\t%s\t%s\t%s\n",
id,s->name,s->unit,s->tele,s->mail);
else
printf("【姓名】%s【工作单位】%s【电话】%s【电邮】%s\n",
s->name,s->unit,s->tele,s->mail);
*endif*
}*endshow*
voidregist(void)
{
CONs;FILE*f=0;
input(&s,BFULL);
f=fopen(fileDB,"ab");
fwrite(&s,sizeof(s),1,f);
fclose(f);
printf("资料已保存!
\n");
}*endregist*
intbrowse(char*key,fpos_t*p,CON*s)
{
FILE*f=0;inti=0,r=0;CONt;
char*a=0,*b=0;fpos_tq;
if(!
s)return0;
f=fopen(fileDB,"rb");
if(!
f){
printf("数据库暂无记录\n");
return0;
}*endif*
printf("编号\t姓名\t单位\t电话\t电邮\n");
printf("\n");
while(!
feof(f)){
fgetpos(f,&q);
r=fread(&t,sizeof(t),1,f);
if(r<1)break;
if(t.name[0]==0)continue;
if(key){
a=strstr(t.name,key);
b=strstr(t.tele,key);
if(a==0&&b==0)continue;
}*endif*
if(p)*p=q;
if(s)memcpy(s,&t,sizeof(t));
i++;
show(i,&t);
}*endwhile*
fclose(f);
printf("\n");
returni;
}*endbrowse*
fpos_tquery(CON*s)
{
charkey[szSTR]="";fpos_tp=0;intr=0;
printf("请输入姓名或者电话号码:
");
scanf("%s",key);
r=browse(key,&p,s);
returnr?
p:
-1;
}*endquery*
voidclear(void)
{
FILE*f=0;CONs;
fpos_tp=query(&s);
if(p<0)return;
f=fopen(fileDB,"rb+");
fsetpos(f,&p);
memset(&s,0,sizeof(s));
fwrite(&s,sizeof(s),1,f);
fclose(f);
printf("记录已删除!
\n");
}*endclear*
voidmodify(void)
{
FILE*f=0;CONs;intcmd=0;
fpos_tp=query(&s);
if(p<0)return;
f=fopen(fileDB,"rb+");
fsetpos(f,&p);
for(;;){
show(0,&s);
printf("请选择:
1-姓名;2-工作单位;3-电话;4-电邮;5-保存并退出;6-放弃修改并退出\n");
scanf("%d",&cmd);
switch(cmd){
case1:
case2:
case3:
case4:
input(&s,OPER[cmd]);
break;
case5:
fsetpos(f,&p);
fwrite(&s,sizeof(s),1,f);
case6:
fclose(f);
return;
default:
printf("错误的操作,请重新输入。
\n");
}*endcase*
}*mext*
}*endclear*
intmain(void)
{
intcmd=0;CONs;
for(;;){
printf("\n\t\t\t\t欢迎使用本通信簿!
");
printf("\n\t\t\t-1-添加--");
printf("\n\t\t\t-2-查询--");
printf("\n\t\t\t-3-删除--");
printf("\n\t\t\t-4-修改--");
printf("\n\t\t\t-5-全部输出");
printf("\n\t\t\t-0-退出--\n");
scanf("%d",&cmd);
switch(cmd){
case0:
return0;
case1:
regist();break;
case2:
query(&s);break;
case3:
clear();break;
case4:
modify();break;
case5:
browse(0,0,&s);break;
}endcase
}
return0;
}
*此程序存在一个弊端,在执行添加操作时,如果输完某个数据后加空格再输入一个数据时会有问题,想要知道,自己运行了看去O(∩_∩)O哈哈~*
优缺点:
1、此程序在运行时最好不要出现错误,不然会有麻烦,很难解决,这是本程序的弊端所在。
2、此程序所记录的通讯录为有限多个,暂时限定为64个,不过可以根据所需做出适当调整。
3、此程序界面简洁明了,易于操作,不失为一优点。