通讯录课程设计.docx
《通讯录课程设计.docx》由会员分享,可在线阅读,更多相关《通讯录课程设计.docx(15页珍藏版)》请在冰点文库上搜索。
通讯录课程设计
信息工程学院
课
程
设
计
报
告
项目名称:
通讯录管理系统的分析与设计
项目组长:
刘
项目成员:
叶杨
班级名称:
11信管(3)
专业名称:
C程序设计
完成时间:
4月5号
信息工程学院制
一、案例描述(小四号字体,段前断后0.5行)
1.、总体描述
在通讯录中有添加、删除、修改、查询和显示等功能,用户可以根据计算机的提示完成各项操作,实现电脑协助人工管理信息的功能。
(正文5号宋体,单倍行距)
2、模块描述
1)菜单设计:
由封面和添加、删除、修改、查询、显示和退出五大功能构成。
封面通过ptintf(),摆出各式各样的图形,又用上了system()更改了页面的背景颜色、字体颜色、通讯录的标题,已达到美化封面的作用,而五大功能则是使通讯录的功能达到完善。
2)初始化模块:
通过初始化函数,可以判断是否可打开读取通讯录所保存的文件,若无,则提醒用户添加文件;若有,则打开文件读取资料,并在其后的功能运行中保存相关资料,起到一定的储存功能。
3)add模块:
用于添加联系人信息。
创建联系人,并依次输入联系人学号、姓名、生日、电话、性别、QQ、地址等详细信息,完善联系人资料,并将其保存在文件记录中。
添加完一人信息后,界面提示用户“是否继续添加?
(YorN)”。
若选择继续添加,则重复上述步骤,添加新联系人信息,并将其详细信息一并保存到文件记录中,文件记录显示加1。
4)search模块
用于查询已添加联系人的信息。
以姓名、学号、电话等其中任意一项为关键词进行搜索并显示该联系人的详细信息。
若输入的关键词不存在,则提示用户“选择错误”。
若输入关键词正确,则显示该联系人的所有相关信息。
5)delete模块
用于删除用户不需要或输入错误的联系人的详细信息。
首先,以姓名、学号、电话等其中任意一项为关键词进行搜索并显示该联系人的详细信息所在地。
然后,删除该联系人所有信息,并将下一联系人的信息提前到当前位置并保存。
6)show模块
用于显示所有成员名单以及相关信息。
该模块建立后,用户通过点击该模块的名称,则可显示之前输入的所有联系人的详细信息,使所有信息一目了然,有利于用户核对之前所输入的信息,方便用户使用。
7)save模块
用于保存之前用户输入的所有联系人的有用信息。
该模块建立后,用户之前所输入的所有联系人的详细信息皆可保存到指定文件中,方便用户在下一次使用时仍能轻松、便捷地找到其所需的有用信息。
8)cover模块
作为程序的封面,对主界面的颜色、尺寸、图案进行设置,起到美化作用。
同时,把程序里的每一项主要功能的名称显示到主界面上,使界面更加亲近、友好,方便用户进入并进行使用,在不知不觉中提升了程序的档次。
二、界面设计
界面:
:
添加:
添加成员信息。
删除:
查询要删除的成员信息,进行删除。
修改:
查询要修改的成员信息,进行修改。
查询:
查询自己想要查询的成员信息。
显示:
显示所有成员名单以及相关信息
本通讯录界面简单明了,易于操作,输入相关数字即可操作。
三、模块化设计方案
1、系统主要函数及功能(五号黑体)
1)init函数:
通过初始化函数,打开文件读取资料,并在其后的功能运行中保存相关资料,起到一定的储存功能。
2)添加功能:
添加联系人,用户根据系统提示输入相关联系人的学号、姓名、性别等基本信息,入完成后系统自动保存联系人信息,返回系统用户界面。
3)删除功能:
用户根据系统提示输入需要删除的联系人的姓名,学号或电话,系统根据用户输入信息进行删除,在删除之后,返回系统用户界面。
4)修改功能:
用户根据系统提示输入需要修改的联系人的姓名,学号或电话,系统根据用户输入信息进行删除、修改,在修改成功之后,返回系统用户界面。
5)查询功能:
用户根据系统提示输入需要查询的联系人的姓名,学号或电话,系统根据用户输入信息进行查询,在查询成功之后,返回系统用户界面。
6)显示功能:
系统将显示通讯录中所有的联系人信息。
7)退出功能:
完成所有操作后,用户可以退出通讯录。
8)main函数:
主函数提供用户操作界面(主菜单),供用户选择相应的功能模块。
2、主函数调用各功能函数流程图
四、数据结构描述
structstudent/*结构体,存放通讯录成员信息
{
charnum[15];
charname[10];
charbirth[8];
charphone[15];
charsex[15];
charQQ[15];
charaddress[50];
charmail[20];
}stu[80];
intlength=0;//全局变量,用于计数已存入数量
FILE*fp;//文件指针,用于打开或保存通讯录文件
五、
算法设计
1、添加功能
2、删除功能
3、修改功能
4、查询功能
5、显示功能
六、
程序运行结果
添加:
删除:
查询:
显示:
七、总结
1、工作时间(5号黑色)
封面设计–10分钟
总体框架(添加、删除、查询、显示)--一周
连续添加拓展功能--30分钟
显示功能分类设计–30分钟
2、分工情况
封面设计:
总体框架:
流程图:
连续拓展功能:
显示功能设计:
3、心得体会
C语言是国内外广泛使用的计算机语言,它功能丰富,表达能力强,使用灵活方便,应用面广,目标程序效率高,可移植性好,既具有高级语言的优点,又具有低级语言的许多特点,既适用于编写系统软件,又能方便地用来编写应用软件,因此,对于我们信管专业的学生来说,能够灵活运用C语言进行程序设计非常重要。
在这次的实验中,我们三人共同协作,完成了“通讯录”这个程序的大体设计。
在还没有完全掌握C语言的情况下,完成这项任务,对我们来说是不小的挑战。
因此在完成任务的过程中,我们遇到了很多不可避免的细节方面的问题。
但这丝毫没有影响我们对这项设计的热情。
我们三人常常一起在图书馆研究、讨论,查阅相关书籍,尽自己最大的努力解决难题。
遇到商讨后仍无法解决的问题,我们就虚心请教老师,在老师的点拨后继续努力钻研。
通过这次程序设计,我们发现自己对这门课程有了进一步的了解,但同时也发现自己在这门课上仍有待加强。
因为有些看似已经掌握的知识点,在实际运用上仍会出现欠缺。
本次课题设计让我们了解到在学习上,我们不仅要在课上认真听讲,更要重视课后的复习和练习。
平时的练习不要只局限于老师布置的作业,要以积极主动的态度去学习,这样我们才会有更多的收获。
附页(源代码附加注释)
#include
#include
#include
#include
structstudent/*结构体,存放通讯录成员信息*/
{charnum[15];charname[10];charbirth[8];charphone[15];
charsex[15];charQQ[15];charaddress[50];}stu[80];
intlength=0;//全局变量,用于计数已存入数量
FILE*fp;//文件指针,用于打开或保存通讯录文件
voidinit()
{inti=0;
fp=fopen("student11.txt","rb");//储存文件名
if(fp!
=NULL)
{while(fread(&stu[i],sizeof(structstudent),1,fp)==1)
{i++;}
length=i;
printf("--------------------\n");
printf("通讯录中已有%d条记录\n",length);
printf("--------------------\n");
fclose(fp);}
elseprintf("路径不存在,无此文件");}
voidadd(inti)//添加
{charchoice;
printf("请输入该同学信息\n");
printf("学号:
");scanf("%s",stu[i].num);
printf("姓名:
");scanf("%s",stu[i].name);
printf("生日:
");scanf("%s",stu[i].birth);
printf("电话:
");scanf("%s",stu[i].phone);
printf("性别:
");scanf("%s",stu[i].sex);
printf("QQ:
");scanf("%s",stu[i].QQ);
printf("地址:
");scanf("%s",stu[i].address);
if(i==length)length++;
printf("已经存有信息%d项",length);
printf("是否继续添加?
(YorN)");
scanf("%c",&choice);
scanf("%c",&choice);
if(choice=='y'||choice=='Y')add(length);
elseif(choice=='n'||choice=='N');
else{printf("输入有误,请重试");if(choice=='y'||choice=='Y')add(length);}}
voidshoww(inti)
{printf("学号:
%s\n",stu[i].num);
printf("姓名:
%s\n",stu[i].name);
printf("生日:
%s\n",stu[i].birth);
printf("手机号:
%s\n",stu[i].phone);
printf("性别:
%s\n",stu[i].sex);
printf("QQ号:
%s\n",stu[i].QQ);
printf("地址:
%s\n",stu[i].address);}
intnum1()//根据学号查询
{charxuehao[20],i;
printf("请输入所查询人学号\n");
scanf("%s",xuehao);
for(i=0;i{if(strcmp(stu[i].num,xuehao)==0)
{showw(i);returnI;break;}}
if(i>=length)
{return-1;}}
intnum2()//根据姓名查询
{charmingzi[20],i;
printf("请输入所查询人姓名\n");
scanf("%s",mingzi);
for(i=0;i{if(strcmp(stu[i].name,mingzi)==0)
{showw(i);returni;break;}}
if(i>=length)
{return-1;}}
intnum3()//根据电话号码查询
{chardianhua[20],i;
printf("请输入所查询人电话\n");
scanf("%s",dianhua);
for(i=0;i{if(strcmp(stu[i].phone,dianhua)==0)
{showw(i);returni;break;}}
if(i>=length)
{return-1;}}
intsearch()
{printf("请选择你所查询的依据\n");
printf("1.学号\n");
printf("2.姓名\n");
printf("3.电话\n");
intp;
scanf("%d",&p);
switch(p)
{case1:
num1();break;
case2:
num2();break;
case3:
num3();break;
default:
printf("选择错误\n");}}
voiddel(inti)
{intj;
for(j=i;j<(length-1);j++)
{strcpy(stu[j].num,stu[j+1].num);
strcpy(stu[j].name,stu[j+1].name);
strcpy(stu[j].birth,stu[j+1].birth);
strcpy(stu[j].phone,stu[j+1].phone);
strcpy(stu[j].sex,stu[j+1].sex);
strcpy(stu[j].QQ,stu[j+1].QQ);
strcpy(stu[j].address,stu[j+1].address);}
length--;
printf("\t删除成功\n");}
voidshow(intx,inty)
{inta;
for(a=x;a<=y;a++)
{printf("学号:
%s\n",stu[a].num);
printf("姓名:
%s\n",stu[a].name);
printf("生日:
%s\n",stu[a].birth);
printf("电话:
%s\n",stu[a].phone);
printf("性别:
%s\n",stu[a].sex);
printf("QQ:
%s\n",stu[a].QQ);
printf("地址:
%s\n",stu[a].address);
printf("\n");}}
voidsave()
{inti;
fp=fopen("student11.txt","wb");
for(i=0;i{fwrite(&stu[i],sizeof(structstudent),1,fp);}
fclose(fp);}
voidcover()
{system("color3b");
system("modeconcols=80lines=80");
system("title喵喵通讯录");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\t\t(>^ω^<)(>^ω^<)(>^ω^<)\n");
printf("\n");
printf("\t\t喵喵猫通讯欢迎您\n");
printf("\n");
printf("\t\t(>^ω^<)(>^ω^<)(>^ω^<)\n");
printf("\n");
printf("1:
添加信息\n");
printf("2:
删除信息\n");
printf("3:
修改信息\n");
printf("4:
查询信息\n");
printf("5:
显示所有信息\n");
printf("0:
退出\n");}
intmain()
{intselect;
while
(1){
cover();
init();
printf("请输入你的选择:
");
scanf("%d",&select);
switch(select){
case1:
add(length);save();break;//添加
case2:
{intsch;
if((sch=search())!
=-1)
{del(sch);save();}
elseprintf("\t记录中无此人信息\n");break;}//删除
case3:
{intsch;
if((sch=search())!
=-1)
{printf("\t已找到此人,请输入修改信息:
\n\n");
add(sch);save();}
elseprintf("查无此人");break;}//修改
case4:
search();break;//查询
case5:
show(0,length-1);break;//显示
case0:
exit(0);break;
default:
{
printf("\n");printf("\n");printf("\n");
printf("选择错误,请重新输入\n");
printf("\n");printf("\n");printf("\n");}}
printf("\n\t按回车键继续……");
getch();}
return0;}