C语言课程设计《通讯录管理系统》.docx
- 文档编号:3576379
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:13
- 大小:35.36KB
C语言课程设计《通讯录管理系统》.docx
《C语言课程设计《通讯录管理系统》.docx》由会员分享,可在线阅读,更多相关《C语言课程设计《通讯录管理系统》.docx(13页珍藏版)》请在冰点文库上搜索。
C语言课程设计《通讯录管理系统》
湖南文理学院电信学院
课程设计报告
题目:
通讯录管理
姓名:
侯准
学院:
电气与信息工程学院
专业:
通信工程
班级:
三班
学号:
200916020319
指导教师:
张晓虎
完成日期:
2010年9月28日
课程设计任务书
题目
通讯录管理
课程设计内容要求:
1.在规定时间内完成“信息管理系统的设计。
主要功能有:
(1)通讯录管理系统
1)添加通讯录信息功能
2)查找通讯录信息功能
3)修改通讯录信息功能
4)删除通讯录信息功能
5)输出通讯录信息功能
2.在“信息管理系统”设计中运用C语言的结构体、函数调用、文件管理操作、指针、数组等知识来实现。
3.设计要饱和总体设计、算法分析、流程图。
4.用C语言实现系统。
5.系统要通过调试能够正常运行。
6.系统的各个功能模块要求用函数的形式实现。
7.完成设计任务并书写课程设计报告。
设计者姓名
指导教师意见:
指导教师签名:
目录
1.设计目的…………………………………(4)
2.概论………………………………………..(5)
3.算法分析…………………………………..(6)
4.程序源代码………………………………..(6)
5.测试及输出结果使用方法………………..(11)
6.心得体会……………………………..........(13)
7.参考文献……………………………………(14)
设计目的
通过一个学期的学习,我认为要学好C语言程序这门课程,不仅要认真阅读课本知识,更重要的是要通过上机实践才能增强和巩固我的知识;C语言程序这门课程并不简单,是需要用心去学习,慢慢体会的,这一次的小程序让我学到了很多很多,使我对C语言有了更深的认识,虽然只学了一学期,然后就编了这个程序,是有点辛苦,但是我感觉最深的是我学习到了更多的知识,在这里我要感谢我的C语言老师李书涛老师以及指导老师谭忠兵老师,因为他们的指导我才能有如此大的进步。
概论
课程设计目的:
1.进一步掌握和利用C语言进行程序设计的能力;
2.进一步理解和运用结构化程序设计的思想和方法;
3.初步掌握开发一个小型实用系统的基本方法;
4.学会调试一个较长程序的基本方法;
5.学会利用流程图或N-S图表示算法;
6.掌握书写程设计开发文档的能力(书写课程设计报告)。
主要内容:
1.添加数据:
输入姓名、电话号码及地址,即可添加数据。
2.查找数据:
输入所要查找的姓名即可查询。
3.修改数据:
输入所要修改的姓名,进行修改,保存后即成功。
4.删除数据:
输入所要删除的姓名,确定后即成功。
5.输出数据:
点击后即可查看所有保存的通讯录数据。
0.退出程序。
算法分析:
此程序运用了forwhile语句、switch语句、break语句等。
知识有函数结构,函数的调用,指针等知识。
程序源代码:
#include
structperson
{
charname[8];
chartel[15];
charaddr[50];
};
charfilename[20];
FILE*fp;
voidcreat();
voidappend();
voidsearch();
voidmodify();
voiddelete1();
voidoutput();
main()
{
intm;
creat();
while
(1)
{
printf("\n\nappend,pleasepress1");/*添加,请按1*/
printf("\nsearch,pleasepress2");/*查找,请按2*/
printf("\nmodify,pleasepress3");/*修改,请按3*/
printf("\ndelete,pleasepress4");/*删除,请按4*/
printf("\noutput,pleasepress5");/*输出,请按5*/
printf("\nexit,pleasepress0\n");/*退出,请按6*/
scanf("%d",&m);
if(m>=0&&m<=5)
{
switch(m)
{
case1:
append();
break;
case2:
search();
break;
case3:
modify();
break;
case4:
delete1();
break;
case5:
output();
break;
case0:
exit();
}
printf("\n\nFinshpleasechooseagain!
");/*操作完毕,请再次选择*/
}
else
printf("\n\nYouchoosewrongpleasepressotherkey!
");/*选择错误,请再次选择*/
}
}
voidcreat()
{
structpersonone;
longs1;
printf("\nPleaseenterthenameofcommunicationbook:
");/*请输入通讯簿名*/
scanf("%s",filename);
if((fp=fopen(filename,"w"))==NULL)
{
printf("\nCan'tbuildupthecommunicationbook!
");/*不能建立通讯簿*/
exit();
}
fprintf(fp,"\n%-10s%-20s%-50s\n","name","telephone","address");
printf("\nPleaseinputthename,telephonenumberandaddresses(with0end)\n");/*请输入姓名、电话号码及住址(以0结束)*/
scanf("%s",one.name);
while(strcmp(one.name,"0"))
{
scanf("%s%s",one.tel,one.addr);
fprintf(fp,"%-10s%-20s%-50s\n",one.name,one.tel,one.addr);
scanf("%s",one.name);
}
fclose(fp);
}
voidappend()
{
structpersonone;
if((fp=fopen(filename,"a"))==NULL)
{
printf("\nCan'topenthecommunicationbook!
");/*不能打开通讯簿*/
exit();
}
printf("\nPleasaenterthename,telephonenumberandadderssesthattoincrease\n");/*请输入添加的姓名、电话号码及住址*/
scanf("%s%s%s",one.name,one.tel,one.addr);
fprintf(fp,"%-10s%-20s%-50s\n",one.name,one.tel,one.addr);
fclose(fp);
}
voidsearch()
{
intk=0;
charnamekey[8];
structpersonone;
printf("\nPleaseinputthename:
");
scanf("%s",namekey);
if((fp=fopen(filename,"rb"))==NULL)
{
printf("\nCan'topenthecommunicationbook!
");
exit();
}
while(!
feof(fp))
{
fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);
if(!
strcmp(namekey,one.name))
{
printf("\n\nHavealreadycheck,therecordis:
");/*已查到,记录为*/
printf("\n%-10s%-18s%-50s",one.name,one.tel,one.addr);
k=1;
}
}
if(!
k)
printf("\n\nsorry,thispersonrecordisnotinthecommunicationbook.");/*对不起,通讯簿中没有此人的记录*/
fclose(fp);
}
voidmodify()
{
intm,k=0;
longoffset;
charnamekey[8];
structpersonone;
printf("\nPleaseinputthename:
");
scanf("%s",namekey);
if((fp=fopen(filename,"r+"))==NULL)
{
printf("\nCan'topenthecommunicationbook!
");/*不能打开通讯簿*/
exit();
}
while(!
feof(fp))
{
offset=ftell(fp);
fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);
if(!
strcmp(namekey,one.name))
{
k=1;
break;
}
}
if(k)
{
printf("\nHavealreadycheck,therecordis:
");
printf("\n%-10s%-18s%-50s",one.name,one.tel,one.addr);
printf("\nPleaseinputnewthename,telephonenumberandaddresses:
");/*请输入新姓名、电话号码及住址*/
scanf("%s%s%s",one.name,one.tel,one.addr);
fseek(fp,offset,SEEK_SET);
printf("%ld",ftell(fp));
fprintf(fp,"%-10s%-20s%-50s\n",one.name,one.tel,one.addr);
}
else
printf("\nsorry,thispersonrecordisnotinthecommunicationbook.");/*对不起,通讯簿中没有此人的记录*/
fclose(fp);
}
voiddelete1()
{
intm,k=0,flag;
longoffset1,offset2;
charnamekey[8],valid[4];
structpersonone;
printf("\nPleaseinputthename:
");
scanf("%s",namekey);
if((fp=fopen(filename,"r+"))==NULL)
{
printf("\nCan'topenthecommunicationbook!
");
exit();
}
while(!
feof(fp))
{
offset1=ftell(fp);
fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);
if(!
strcmp(namekey,one.name))
{
k=1;
break;
}
}
if(k)
{
printf("\nHavealreadycheck,therecordis:
");
printf("\n%-10s%-18s%-50s",one.name,one.tel,one.addr);
printf("\nReallyneedtodelete,press1;don'tdelete,press0:
");/*确实要删除,按1;不删除,按0*/
scanf("%d",&m);
if(m)
{
fseek(fp,offset1,SEEK_SET);
fprintf(fp,"%-10s%-20s%-50s\n","","","");
}
}
else
printf("\nsorry,thispersonrecordisnotinthecommunicationbook.");
fclose(fp);
}
voidoutput()
{
structpersonone;
if((fp=fopen(filename,"r"))==NULL)
{
printf("\nCan'topenthecommunicationbook!
");/*不能打开通讯簿*/
exit();
}
printf("%20s\n","COMMUNICATIONBOOK");
while(!
feof(fp))
{
fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);
printf("%-10s%-20s%-50s",one.name,one.tel,one.addr);
}
fclose(fp);
}
测试及输出结果使用方法:
1.添加数据
2.查找数据
3.修改数据
4.删除数据
5.输出数据
心得体会:
经过不到两个星期的课程设计,使我对C语言有了更进一步的认识和了解,要学好它要重在实践,要通过不断的上机操作才能更好的学习好它。
以前上课都是一些枯燥的东西,但是通过课程设计把所学的东西用在了实践上,设计出来一些有用的东西,这几天精力都放在了编程上,但是有好多次总是运行不了,找来找去只是一些小小的错误。
这几天深深地感到自己上机编程能力很不足,编的程序可读性不太好.以后要多多学习别人的经验,增强程序的可读性。
但经过这几天的改错,在查错方面也积累了一些经验。
这些天虽然是有点累,但是还是学到了许多没有学到的知识,我很开兴!
!
!
参考文献:
《C语言程序设计教程》 主编 李凤霞 主审 李书涛 北京理工大学出版社
C语言经典例题分析
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通讯录管理系统 语言 课程设计 通讯录 管理 系统