C语言程序设计个人通讯录管理.docx
《C语言程序设计个人通讯录管理.docx》由会员分享,可在线阅读,更多相关《C语言程序设计个人通讯录管理.docx(21页珍藏版)》请在冰豆网上搜索。
C语言程序设计个人通讯录管理
摘要
通讯录[addressbook]记录通讯地址的书本,通讯录涵盖了多项内容:
可以储存一个人的姓名、手机号码、家庭住址、QQ等,以方便联系。
通过学习我设计一个个人通讯录管理,这个系统可以方便人们的查找个人信息,他具有快速查找的功能,主要是通过按姓名查找、按手机号码查找、按地址查询等。
这个通讯录可以修改已存所有人的任何信息,也可以删除里面你不想储存人的信息,当你在运行删除的时候,系统会再次提醒你是否删除,一旦删除将会永远删除。
关键字:
通讯录查找删除
重庆科技学院
课程设计任务书
设计题目:
个人通讯录管理系统
学生姓名
课程名称
程序设计基础课程设计
专业班级
计科1104
地点
I305/I306
起止时间
2012年1月9日~1月13日
设计内容及要求
建立一通讯录,输入姓名、电话号码、住址等信息,然后对通信簿进行显示、查找、添加、修改及删除。
进一步掌握利用C语言进行程序设计的能力;进一步理解和运用结构化程序设计的思想和方法;初步掌握开发一个小型实用系统的基本方法;学会调试一个较长程序的基本方法;学会利用流程图表示算法。
根据题目要求,运用所学知识,完成设计和实现工作,并按照书写规范,撰写课程设计报告。
设计
参数
(1)系统分析、设计正确。
(2)结果以图表方式显示。
(3)界面简洁、美观。
(4)报告格式规范。
进度
要求
周一:
明确设计任务,学习相关基础知识
周二:
熟悉各知识点,进行基础练习
周三:
根据题目要求,进行设计和实现
周四:
根据题目要求,进行设计和实现
周五:
撰写报告,进行答辩
参考资料
[1]何钦铭颜晖.《C语言程序设计》.高等教育出版社.2008年
[2]谭浩强张基温.《C语言程序设计教程》.高等教育出版社.2006年
其它
说明
1.本表应在每次实施前一周由负责教师填写二份,院系审批后交院系办备案,一份由负责教师留用。
2.若填写内容较多可另纸附后。
3.一题多名学生共用的,在设计内容、参数、要求等方面应有所区别。
教研室主任:
指导教师:
伍建全/雷亮/焦晓军/陈应祖/
杨治明2012年1月1日
目录
摘要……………………………………………………………………………1
课程设计责任书………………………………………………………………2
软件需求分析说明书…………………………………………………………4
第一章系统分析与设计……………………………………………………5
第二章软件的实现…………………………………………………………6
2.1软件界面设计…………………………………………………………6
2.2软件的数据(结构)设计……………………………………………6
2.3软件的算法设计………………………………………………………6
第三章软件测试……………………………………………………………7
第四章软件使用说明书……………………………………………………8
致谢………………………………………………………………………………9
参考文献…………………………………………………………………………10
软件需求分析说明书
个人通讯录管理是个可以储存、修改、查看、查找、删除的功能。
在这个程序中可以储存一个人的姓名、家庭住址、手机号码、QQ号等信息,可以同时查看所有已存的信息,如果已存的数量过多,你可以选择快速查找,快速查找方式有:
按姓名查找、按家庭住址查找、按手机号码查找、按QQ号查找。
如果要删除信息,只要输入你要删除信息的编号就可以删除,在删除过程中,系统会再次提醒你是否确认删除,以免后悔。
如果确定删除将会永远删除。
这个程序也可以修改,输入想修改的编号,就可以修改了。
如果你输入的编号不存在,系统将会提示你是否查看所有已存的数据。
第五章系统分析与设计
2.1软件界面设计
图2.1通讯录管理的主界面
根据主界面的提示选择你想要执行的任务项钱的字母
图2.2添加联系人
在添加联系人中尼可以输入姓名、地址、电话号码、QQ号,输入好之后你可以继续完成其他选项。
图2.3浏览信息
按b屏幕上将显示已储存的个人信息,按a将继续为你服务。
图2.3查询信息
按c将执行查询任务你可以通过姓名、地址、电话、QQ号、编号查询。
按a继续服务。
图2.4删除信息
按d执行删除任务,输入你想要删除的编号,系统将会再次提醒你是否确认删除,一旦删除将会永远删除。
图2.5修改信息
选择你想修改信息的编号,就可以修改信息
图2.6修改信息
如果你选择的编号不存在,系统将会提醒你编号不存在,建议你查看所有数据,按y将显示已存的所有数据。
按a继续为你服务。
图2.7结束服务
当你执行完你所有的任务后,按b将会显示“谢谢使用,拜拜”,然后退出。
2.2软件的数据(结构)设计
2.1流程表
第六章软件的实现
voidlook()
{
FILE*fp;
charst[100];
fp=fopen("in.txt","r");
if(fp==NULL)
{
printf("抱歉,无法查看\n");
exit
(1);
}
while(!
feof(fp))
{
fgets(st,100,fp);
puts(st);
}
fclose(fp);
}
voidturn(structtongxun*tdt,int*n)
{
FILE*fp;//fp为打开in.txt文件的指针
inti=0;
fp=fopen("in.txt","w");
fprintf(fp,"姓名地址电话QQ号码编号");
while(i<*n)
{fprintf(fp,"\n%-6s%-8s%-12d%-10d%d",tdt[i].name,tdt[i].address,
tdt[i].telephone,tdt[i].QQ,tdt[i].number);
i++;
}
fclose(fp);
}
voidadd()
{
FILE*fp1;
structtongxunad;
fp1=fopen("in.txt","a");
printf("请输入姓名:
\n");
scanf("%s",ad.name);
printf("请输入地址:
\n");
scanf("%s",ad.address);
printf("请输入电话:
\n");
scanf("%d",&ad.telephone);
printf("请输入QQ号码:
\n");
scanf("%d",&ad.QQ);
printf("请输入编号:
\n");
scanf("%d",&ad.number);
fprintf(fp1,"\n%s%s%d%d%d",ad.name,
ad.address,ad.telephone,ad.QQ,ad.number);
printf("录入成功!
\n");
fclose(fp1);
第七章软件测试
对每一个函数、及组装以后的函数、写出测试用例。
格式如下(注:
自己可以自定义格式,但要满足以下要求,写成表格的形式等):
1、voidlook();//浏览
2、voiddelet();//删除
3、voidchange();//修改
4、voidtent();//测量文件中的数据个数
5、intmine();//判断需要的数据是否存在
6、voidremine();
7、voidreme();
8、structtongxun
9、{
10、charname[20];//姓名
11、charaddress[50];//地址
12、inttelephone;//电话
13、intQQ;//QQ
14、intnumber;//编号
15、};
16、voidShowS(charstuNO);/*根据学的学号,显示学生信息*/
编辑主界面
voidmenu()
{
charc;
printf("通信录信息管理\n");
printf("a.添加信息\n");
printf("b.浏览信息\n");
printf("c.查询信息\n");
printf("d.删除信息\n");
printf("e.修改信息\n");
c=getchar();
remine(c);
}
修改信息
voidchange()
{
intm,x;
charch;
printf("请选择你想修改的文件编号\n");
scanf("%d",&m);
x=mine(m);
if(x==-2)
{
printf("你所输入的编号不存在\n");
printf("是否查看数据Y\\N\n");
fflush(stdin);
scanf("%c",&ch);
if(ch=='Y'||ch=='y')
{
look();
}
}
else
reme(x);
}
voidreme(intx)
{
structtongxunre[20],de[20];
inti,n;
FILE*fp;
fp=fopen("in.txt","w");
tent(re,&n);
if(fp==NULL)
{
printf("无法打开\n");
exit
(1);
}
for(i=0;i{
if(x==re[i].number)
break;
}
printf("请输入新姓名\n");
scanf("%s",de[i].name);
printf("请输入新地址:
\n");
scanf("%s",de[i].address);
printf("请输入新电话:
\n");
scanf("%d",&de[i].telephone);
printf("请输入新QQ号码:
\n");
scanf("%d",&de[i].QQ);
printf("请输入新编号:
\n");
scanf("%d",&de[i].number);
fprintf(fp,"\n%s%s%d%d%d",de[i].name,
de[i].address,de[i].telephone,de[i].QQ,de[i].number);
fclose(fp);
}
查找信息
voidsearch()
{
structtongxuns[10];
charch,name[10],address[10];
intt,q,i,b,n;
intxm;
tent(s,&n);
puts("你想要通过什么查询\n");
puts("a.姓名b.地址c.电话d.QQ号e.编号\n");
fflush(stdin);
ch=getchar();
if(ch=='a')
{
printf("请输入姓名:
\n");
fflush(stdin);
gets(name);
for(i=0;i{
if(strcmp(name,s[i].name)==0)
printf("%s%s%d%d%d\n",s[i].name,
s[i].address,s[i].telephone,s[i].QQ,s[i].number);
break;
}
if(strcmp(name,s[i].name)!
=0)
{printf("抱歉,无记录……\n");}
}
if(ch=='b')
{
printf("请输入地址:
\n");
fflush(stdin);
gets(address);
for(i=0;i{
if((xm=strcmp(address,s[i].address))==0)
printf("%s%s%d%d%d\n",s[i].name,
s[i].address,s[i].telephone,s[i].QQ,s[i].number);
break;
}
if(strcmp(address,s[i].address)!
=0)
{printf("抱歉,无记录……\n");}
}
if(ch=='c')
{
printf("请输入电话:
\n");
scanf("%d",&t);
for(i=0;i{
if(t==s[i].telephone)
printf("%s%s%d%d%d\n",s[i].name,
s[i].address,s[i].telephone,s[i].QQ,s[i].number);
break;
}
if(t!
=s[i].telephone)
{printf("抱歉,无记录……\n");}
}
if(ch=='d')
{
printf("请输入qq号码:
\n");
scanf("%d",&q);
for(i=0;i{
if(q==s[i].QQ)
printf("%s%s%d%d%d\n",s[i].name,
s[i].address,s[i].telephone,s[i].QQ,s[i].number);
break;
}
if(q!
=s[i].QQ)
{printf("抱歉,无记录……\n");}
}
if(ch=='e')
{
printf("请输入编号:
\n");
scanf("%d",&b);
for(i=0;i{
if(b==s[i].number)
printf("%s%s%d%d%d\n",s[i].name,
s[i].address,s[i].telephone,s[i].QQ,s[i].number);
break;
}
if(s[i].number!
=b)
printf("抱歉,无记录……\n");
}
}
添加信息
voidadd()
{
FILE*fp1;
structtongxunad;
fp1=fopen("in.txt","a");
printf("请输入姓名:
\n");
scanf("%s",ad.name);
printf("请输入地址:
\n");
scanf("%s",ad.address);
printf("请输入电话:
\n");
scanf("%d",&ad.telephone);
printf("请输入QQ号码:
\n");
scanf("%d",&ad.QQ);
printf("请输入编号:
\n");
scanf("%d",&ad.number);
fprintf(fp1,"\n%s%s%d%d%d",ad.name,
ad.address,ad.telephone,ad.QQ,ad.number);
printf("录入成功!
\n");
fclose(fp1);
}
浏览信息
voidlook()
{
FILE*fp;
charst[100];
fp=fopen("in.txt","r");
if(fp==NULL)
{
printf("抱歉,无法查看\n");
exit
(1);
}
while(!
feof(fp))
{
fgets(st,100,fp);
puts(st);
}
fclose(fp);
}
voidturn(structtongxun*tdt,int*n)
{
FILE*fp;//fp为打开in.txt文件的指针
inti=0;
fp=fopen("in.txt","w");
fprintf(fp,"姓名地址电话QQ号码编号");
while(i<*n)
{fprintf(fp,"\n%-6s%-8s%-12d%-10d%d",tdt[i].name,tdt[i].address,
tdt[i].telephone,tdt[i].QQ,tdt[i].number);
i++;
}
fclose(fp);
}
删除信息
voiddelet()//删除一个信息的函数
{
structtongxunx1[10],x2[10];
charch,x;
intj,k=0,n,num;
inti=0;
tent(x1,&n);
printf("请输入一个你想删除的编号:
\n");
fflush(stdin);
scanf("%d",&num);
j=mine(num);
printf("是否确定删除!
Y\\N\n");
fflush(stdin);
scanf("%c",&x);
if(x=='Y'||x=='y')
if(j!
=-2)
{
for(;i{
if(i!
=j)
{
strcpy(x2[k].name,x1[i].name);
strcpy(x2[k].address,x1[i].address);
x2[k].telephone=x1[i].telephone;
x2[k].QQ=x1[i].QQ;
x2[k].number=x1[i].number;
k++;
}
}
n--;
turn(x2,&n);
printf("\t操作成功\n");
}
else
{
printf("没有你所输入的编号\n");
printf("是否查看通讯录\n");
printf("a.yesb.no\n");
fflush(stdin);
scanf("%c",&ch);
if(ch=='a')
{
look();
}
}
}
第八章软件使用说明书
根据界面的提示,按提示的字母输入就可以完成操作。
致谢
这次课程设计能够顺利完成,老师帮了我不少,有不懂的问题请教他,老师总是很有耐心的提我解答,所以谢谢老师。
同时我也要感谢同学们,有写小问题是和同学一起讨论得出来的。
谢谢大家。
签名日期20110113
参考文献