中南大学个人通讯录管理系统实验报告+源码C语言版.docx
- 文档编号:23810527
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:22
- 大小:535.94KB
中南大学个人通讯录管理系统实验报告+源码C语言版.docx
《中南大学个人通讯录管理系统实验报告+源码C语言版.docx》由会员分享,可在线阅读,更多相关《中南大学个人通讯录管理系统实验报告+源码C语言版.docx(22页珍藏版)》请在冰豆网上搜索。
中南大学个人通讯录管理系统实验报告+源码C语言版
中南大学
CentralSouthUniversity
课程设计报告
题目:
个人通讯录管理系统
设计者:
专业班级:
学号:
指导教师:
所属院系:
信息科学与工程院
2009年7月3日
目录
一.课程设计的目的和要求。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
2
二课程设计内容。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
3
三.设计整体规划及方案。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
4
四.课程设计任务。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
5
五.程序的流程图。
。
。
。
。
。
。
。
6
六.个人体会。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
7
七、参考文献。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
10
八、源程序。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
11
一.课程设计的目的和要求
本次“计算机程序设计实践”课程设计,是基于C语言“计算机程序设计基础”课程学习内容的重要实践环节,其主要目的在于,通过综合程序课程设计,加深对《C语言》课程所学知识的理解,进一步巩固C语言讲法规则。
学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而培养和提高学生的独立分析问题和解决实际问题的能力。
二、课程设计内容
在熟练掌握C语言的基本知识:
数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的使用)等。
进一步掌握各种函数的应用,包括时间函数、、绘图函数,以及文件的读写操作等
具体要求如下:
1、在TurboC(VisualC)或Win-TC环境下,用结构化程序设计思想进行C语言程序设计。
2、认真阅读设计题目、任务内容及进度要求,完成好管理系统中各相关功能模块的设计、调试与实现。
三.课程设计整体规划及方案
整个程序的设计是通过对每一个功能的设计,然后,再对每一个功能的程序进行模块化,再把每一模块化的程序装入设计好的菜单中,从而形成一个完整的材料管理系统。
1、自顶向下、逐步细化、逐步求精
所谓“自顶向下,逐步细化、逐步求精”就是在对于给定问题进行透彻的了解和详细的分析的基础上,把问题分解成若干个按顺序执行的逻辑部分,称为“模块”。
每个子任务如果仍很复杂,还可以再分解为若干个子任务。
如此逐层分解,对于每个模块的设计都采用这种“自顶向下、逐步细化”的方法,将它们分解成为基本结构为止,就如同写文章先拟出题目和中心内容,再确定分为几大部分,每一大部分又分哪几节,每一节分为几段,每一段包括哪几个意思,这就是“自顶向下,逐步细化”的方法。
2、菜单技术
当一个程序的规模比较庞大,层次和模块比较多时,不要每次都将所有模块按顺序执行一遍,最好在每一层,至少在最高几层都设一个“菜单”。
为方便用户操作,“菜单”技术已广泛使用在计算机的系统软件中,具体做法是:
程序首先把各功能说明及相应代号以菜单形式显示在屏幕上,然后由用户在键盘上输入所选的功能代号,程序自动转去调用相应的功能模块进行处理。
四.课程设计任务
实现个人通讯录管理,录入包括姓名、单位、固定电话、移动手机、分类(如同事、朋友、家人等)、e-mail、QQ。
具体操作如下:
1.输入记录(Inputrecords);
2.下载功能(loadrecord)
2.显示功能(showallrecords);
3.查询(searchrecord);
4.删除(deleterecord);
5.保存(save);
6.退出;
其中
0.对n名人物的信息进行输入;
2.显示所有记录的信息,若无记录,则给出提示信息;
3.可以按姓名查询该材料的有关信息;
4.可以按姓名对任意一种材料进行删除;
5.储存所输入地记录;
6.退出程序
五.流程图
六、测试结果
主界面:
输入“0“进行记录:
输入”5”进行储存:
输入“2“显示所有记录:
输入”3”进行查询:
输入“4“进删除:
七、个人心得体会
通过本次对c语言程序实践,我深刻认识到一个比较大的程序并不没有想象中的简单,它是一个巨大的工程,需要我们极其认真的对待以及不畏困难的决心。
在上机得第一天,坐在电脑前不知道做什么,书也没带一本,就看着电脑。
老师来了后说:
“熟悉一下环境,下一次来正式做任务”。
通过那一节课的熟悉,我对c语言有了一个重新的认识。
这几天下来,我通过对操作个人通讯录系统,我从中学到了不少东西,每一次调试出错时,我都感到无比的沮丧,没有信心了,但是还要继续,我就通过问同学、去图书馆查找资料、上网查询等途径来克服困难;每一次克服困难,我都感到无比的成功,每一次都离成功越来越近。
通过这次实践,我的C语言水平有了显著的提高,基础打得更加扎实了。
说实话,c语言是一个很复杂的工程设计,在设计过程中有很多的东西搞不懂,需要学习的东西还有很多。
八.参考文献:
[1]《c语言程序设计及其试验教程》李丽娟马淑平等主编北京:
中国铁道出版社,2006
[2]《c语言程序设计》(第三版)谭浩强著北京:
清华大学出版社,2005
[3]
[4]“计算机程序设计实践”任务书中南大学信息科学与工程学院自动化系2009年6月
[5]XX搜索
九、源程序:
#include
#include
#include
typedefstructtxl
{
charname[15];
charworkplace[100];
charphone[30];
charcellphone[20];
charrelationship[20];
charemail[50];
charQQ[20];
}dtxl;
typedefstructdlnode
{
dtxldata;
structdlnode*prior;
structdlnode*next;
}dnode;/*建立双向链表结构体;*/
dnode*head;
voidenter(void)
{
dnode*p,*rear;
charflag='Y';
head=(dnode*)malloc(sizeof(dnode));
rear=head;
head->next=head;
head->prior=head;/*建立双向链表结构体;*/
while(flag=='Y'||flag=='y')
{
p=(dnode*)malloc(sizeof(dnode));
printf("nameworkplacephonecellphonerelationshipemailQQ\n");
printf("-----------------------------------------------------------------------------\n");
scanf("%s%8s%8s%8s%8s%8s%8s",&p->data.name,&p->data.workplace,&p->data.phone,&p->data.cellphone,&p->data.relationship,&p->data.email,&p->data.QQ);
rear->next=p;
p->prior=rear;
rear=p;
p->next=head;/*向双链表中动态增加节点数据;*/
printf("-----------------------------------------------------------------------------\n");
printf("continueinput?
(Y/N)\n");
scanf("%s",&flag);
}
printf("\n");
}
voidload(dnode*head)
{
FILE*fp;
intn,i;
dnode*p,*rear;
rear=head;
head->next=head;
head->prior=head;
if((fp=fopen("file.txt","rb"))==NULL)
{
printf("error!
!
!
\n");
exit(0);
}
fscanf(fp,"%d",&n);
for(i=0;i { p=(dnode*)malloc(sizeof(dnode)); fscanf(fp,"%s%8s%8s%8s%8s%8s%8s",&p->data.name,&p->data.workplace,&p->data.phone,&p->data.cellphone,&p->data.relationship,&p->data.email,&p->data.QQ); rear->next=p; p->prior=rear; rear=p; p->next=head;/*从文件中动态载入节点数据;*/ } fclose(fp); printf("success! ! ! \n\n"); } voiddisplay(dnode*head) { dnode*p; p=head->next; printf("showallrecords: \n"); printf("-----------------------------------------------------------------------------\n"); printf("nameworkplacephonecellphonerelationshipemailQQ\n"); printf("-----------------------------------------------------------------------------\n"); while(p! =head) { printf("%s%8s%8s%8s%8s%8s%8s",&p->data.name,&p->data.workplace,&p->data.phone,&p->data.cellphone,&p->data.relationship,&p->data.email,&p->data.QQ); printf("\n"); printf("-----------------------------------------------------------------------------------------------------------------------------------------------\n\n"); p=p->next; } } dnode*search(dnode*head) { dnode*p; charname[9]; p=head->next; scanf("%s",name); while(p! =head&&p&&strcmp(p->data.name,name)! =0) {p=p->next;} returnp; } voiddeletes(dnode*head) { charf; dnode*p; p=search(head); if(p==head) { printf("notbefound! ! ! \n\n"); return; } else { printf("haveothernumtodelete? (Y/N)\n"); scanf("%s",&f); if(f=='Y'||f=='y') { p->prior->next=p->next; p->next->prior=p->prior; free(p); printf("Successtodelete! \n"); } } } voidsave(dnode*head) { FILE*fp; dnode*p; intn=0,i; if((fp=fopen("file.txt","wb"))==NULL) { printf("error! ! ! \n"); exit (1); } p=head->next; if(p! =head) { while(p! =head) { p=p->next; n++; } fprintf(fp,"%d",n);/*写入节点个数;*/ fprintf(fp,"\r\n");/*写入回车符;*/ p=head->next; for(i=0;i { fprintf(fp,"%s%8s%8s%8s%8s%8s%8s",&p->data.name,&p->data.workplace,&p->data.phone,&p->data.cellphone,&p->data.relationship,&p->data.email,&p->data.QQ); fprintf(fp,"\r\n"); p=p->next; }/*向文件中写入节点数据;*/ } else printf("PleasemakesurethedataisnotNULL! ! "); fclose(fp); printf("Savesuccessed! ! ! \n"); } voidquit(void) { exit(0); } voidmain() {charflag='Y'; for(;;) { dnode*q; intch; printf(": \n"); printf("NewsletterRecordsPersonalSystem\n"); printf("=================================\n"); printf("InputRecord------------------0\n"); printf("LoadRecord-------------------1\n"); printf("ShowAllRecord---------------2\n"); printf("SearchRecord-----------------3\n"); printf("DeleteRecord-----------------4\n"); printf("Save--------------------------5\n"); printf("Exit--------------------------6\n");/*通讯录提示信息;*/ printf("=================================\n"); printf("Pleaseinputnum(0~6): \n"); scanf("%d",&ch); switch(ch) { case0: enter();break; case1: head=(dnode*)malloc(sizeof(dnode)); load(head);break; case2: display(head);break; case3: jmp: printf("Pleaseinputnametosearch: \n"); q=search(head); if(q! =head) { printf("-----------------------------------------------------------------------------\n"); printf("nameworkplacephonecellphonerelationshipemailQQ\n"); printf("-----------------------------------------------------------------------------\n"); printf("%s%8s%8s%8s%8s%8s%8s",q->data.name,q->data.workplace,q->data.phone,q->data.cellphone,q->data.relationship,q->data.email,q->data.QQ); printf("\n--------------------------------------------------------------------------------------------------------------------------------------\n"); printf("success! \n"); printf("continuesearching\n? (Y/N)\n"); scanf("%s",&flag); if(flag=='Y'||flag=='y') gotojmp; } else printf("sorry,thereisn'ttherecord! ! ! \n\n"); break; case4: printf("pleaseinputnametodeletetherecord: \n"); deletes(head);break; case5: save(head);break; case6: quit();break; default: printf("WARN! ! ! pleaseinputthenum0-6! \n"); }/*用SWITCH函数选择菜单;*/ } } _
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中南 大学 个人 通讯录 管理 系统 实验 报告 源码 语言版