通讯录管理系统.docx
- 文档编号:15707986
- 上传时间:2023-07-06
- 格式:DOCX
- 页数:25
- 大小:135.06KB
通讯录管理系统.docx
《通讯录管理系统.docx》由会员分享,可在线阅读,更多相关《通讯录管理系统.docx(25页珍藏版)》请在冰点文库上搜索。
通讯录管理系统
*******************
实践教学
*******************
兰州理工大学
计算机与通信学院
2012年春季学期
C程序设计课程设计
题目:
通讯录管理系统
专业班级:
姓名:
人才v
学号:
指导教师:
成绩:
______________
摘要
随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。
管理信息系统是一个不断发展的新型学科,任何一个单位要生存要发展,要高效率地把内部活动有机地组织起来,就必须建立与自身特点相适应的管理信息系统。
本程序能够准
确地记录人们的相关信息,操作简单易行,查询灵活方便,删除数据方便简单,稳定性好;数据计算自动完成,尽量减少人工干预。
关键词:
地址,查找,修改,添加。
目录
1题目要求-1-
1.1要求-1-
2系统分析-1-
3总体设计-1-
4详细设计-1-
4.0主函数-1-
4.1各功能模块设计-4-
5运行结果(附带抓图)-11-
6总结-15-
参考文献-16-
致谢-16-
附录:
-1-
1题目要求
1.1要求
主要利用c语言的文件操作能力设计开发一个小型的通讯录管理系统,至少具有如下功能:
记录通讯录内的人员的姓名、地址、电话号码。
显示所有人员的信息。
通过输入姓名查找人员信息。
通过输入姓名查找到要删除的人员信息,然后可以进行删除。
通过输入姓名查找到要修改的人员信息,然后可以进行修改。
添加人员信息。
2系统分析
本程序的功能是为用户提供简单的通讯录进行管理,通过该程序存储联系人信息,提供关键字查找功能,可以对数据进行修改、删除、添加,从文件中掉入已保存的通讯录数据,保存通讯录数据等操作,易于操作。
3总体设计
根据要求,电话簿数据以文本文件存放在文件中,故需要提供文件的输入、输出等操作;还需要保存记录以进行修改,删除,查找等操作;另外还应提供键盘式选择菜单实现功能选择。
根据上面的分析,可以将这个系统分为如下六大模块:
数据输入,数据添加,数据修改,查找,删除,浏览。
4详细设计
4.0主函数
【数据结构】
原始数据有姓名,电话号码,地址。
所以定义一个全局结构体数组person用于保存原始数据。
【数据结构代码】
structperson
{
charname[8];//姓名
chartel[15];//电话号码
charaddr[50];//地址
};
charfilename[20];//保存每个人的信息
主函数利用wlile语句和switch语句。
【程序】
main()//主函数
{
intm;
printf("★**************************************************************★\n");
printf("★*********************欢迎使用通讯录管理系统*******************★\n");
printf("★**************************************************************★\n");
creat();
while
(1)
{
printf("\n\n添加,请按1");
printf("\n查找,请按2");
printf("\n修改,请按3");
printf("\n删除,请按4");
printf("\n输出,请按5");
printf("\n退出,请按0\n");
scanf("%d",&m);
if(m>=0&&m<=5)
{
switch(m)
{
case1:
append();//添加新纪录
break;
case2:
search();//查找纪录
break;
case3:
modify();//修改纪录
break;
case4:
//删除纪录
delete();
break;
case5:
output();//输出已有纪录
break;
case0:
exit();//退出系统
}
printf("\n\n操作完毕,请再次选择!
");
}
else
printf("\n选择错误,请再次选择!
");
}
}
4.1各功能模块设计
4.1.1以文件形式保存记录
由于要求,所有的纪录都以文件的形式保存。
【程序】
voidcreat()
{
structpersonone;
longs1;
printf("\n请输入通讯录名:
");
scanf("%s",filename);//输入通讯录的名字
if((fp=fopen(filename,"w"))==NULL)//打开一个文件,写入
{
printf("\n不能建立通讯录!
");
exit();
}
fprintf(fp,"%-10s%-20s%-50s\n","姓名","电话号码","住址");
printf("\n请输入姓名、电话号码及住址(以0结束)\n");
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);//关闭打开的文件
}
4.1.2输出已录入的纪录
打开文件,读取里面的纪录,用while循环输出,输出后关闭文件。
【程序】
voidoutput()
{
structpersonone;
if((fp=fopen(filename,"r"))==NULL)//打开文件,读取记录
{
printf("\n不能打开通讯录!
");
exit();
}
printf("\n\n%20s\n","通讯录");
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);//关闭文件
}
4.1.3添加新的记录
打开文件,进行写入操作,添加新的记录,包括姓名,电话号码,地址。
【程序】
voidappend()
{
structpersonone;
if((fp=fopen(filename,"a"))==NULL)
{
printf("\n不能打开通讯录!
");
exit();
}
printf("\n请输入添加的姓名、电话号码及住址\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);
}
4.1.4查找记录
在以有的记录中查找所需人的记录,并且输出,当没有此人记录时,输出输出“对不起,通讯录中没有此人的记录”的提示。
【程序】
voidsearch()
{
intk=0;
charnamekey[8];
structpersonone;
printf("\n请输入姓名:
");
scanf("%s",namekey);//输入要查找人的姓名
if((fp=fopen(filename,"rb"))==NULL)
{
printf("\n不能打开通讯录!
");
exit();
}
while(!
feof(fp))
{
fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);
if(!
strcmp(namekey,one.name))
{
printf("\n\n已查到,记录为:
");
printf("\n%-10s%-18s%-50s",one.name,one.tel,one.addr);//输出查找记录
k=1;
}
}
if(!
k)//如果没有记录时执行
printf("\n\n对不起,通讯录中没有此人的记录。
");
fclose(fp);
}
4.1.5修改记录
查找以有联系人,如果找不到,输出“对不起,通讯录中没有此人的记录。
”的提示。
若找到,则显示“已查到,记录为:
……,请输入新姓名、电话号码及住址:
”。
【程序】
voidmodify()
{
intm,k=0;
longoffset;
charnamekey[8];
structpersonone;
printf("\n请输入姓名:
");
scanf("%s",namekey);//输入要修改记录的姓名
if((fp=fopen(filename,"r+"))==NULL)
{
printf("\n不能打开通讯录!
");//找不到时输出
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("\n已查到,记录为:
");//提示已找到
printf("\n%-10s%-18s%-50s",one.name,one.tel,one.addr);
printf("\n:
");
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("\n对不起,通讯录中没有此人的记录。
");
fclose(fp);
}
4.1.6删除记录
查找要删除的记录,若有,显示“已查到,记录为……,确实要删除,按1;不删除,按0:
”。
按提示进行删除操作。
【程序】
voiddelete()
{
intm,k=0,flag;
longoffset1,offset2;
charnamekey[8],valid[4];
structpersonone;
printf("\n请输入姓名:
");
scanf("%s",namekey);//输入要删除联系人的姓名
if((fp=fopen(filename,"r+"))==NULL)
{
printf("\n不能打开通讯录!
");
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("\n已查到,记录为");
printf("\n%-10s%-18s%-50s",one.name,one.tel,one.addr);
printf("\n确实要删除,按1;不删除,按0:
");
scanf("%d",&m);//输入1,确认删除
if(m)
{
fseek(fp,offset1,SEEK_SET);
fprintf(fp,"%-10s%-20s%-50s\n","","","");
}
}
5运行结果(附带抓图)
进入通讯录管理系统,建立我的通讯录,进入菜单选项。
添加第一个联系人
查找联系人
修改联系人信息
删除联系人信息
输出联系人列表
退出通讯录管理系统
以文件保存的通讯录
6总结
通过这次C程序设计,我掌握了模块化设计方法,能够深入的理解结构化程序设计思想,熟练运用结构化程序设计方法,提高了运用C语言进行程序设计的能力。
参考文献
1C/C++程序设计,王连相等,中国科学技术出版社,2004
2C语言程序设计,谭浩强,清华大学出版社,1999
3C程序设计题解与上机指导,谭浩强,清华大学出版社,1999
4C语言实用程序荟萃,西安电子科技大学出版社,1993
5C语言函数手册,机械工业出版社,1999
6C语言的实际应用,安徽科学技术出版社,2000
致谢
首先要感谢张老师的授课与指导!
感谢所有支持我完成C程序设计论文的老师和同学们!
在这次课程设计中老师给了我很大的帮助,帮我解答疑难问题,给我提供资料,给我提供查阅资料的信息,引导我该如何去思考问题,教会我解决问题的方法.同时又鼓励我自己学习,老师给我的不仅是知识,是帮助,更是学习的信心和智慧,在这里衷心感谢老师的耐心细心一丝不苟的帮助.同时也感谢和我一起走过的同学,这是我们共同努力地结果,衷心的感谢大家对我的帮助和支持.
附录:
源程序
#include
structperson
{
charname[8];
chartel[15];
charaddr[50];
};
charfilename[20];
FILE*fp;
voidcreat();
voidoutput();
voidsearch();
voidappend();
voidmodify();
voiddelete();
main()
{
intm;
printf("★**************************************************************★\n");
printf("★*********************欢迎使用通讯录管理系统*******************★\n");
printf("★**************************************************************★\n");
creat();
while
(1)
{
printf("\n\n添加,请按1");
printf("\n查找,请按2");
printf("\n修改,请按3");
printf("\n删除,请按4");
printf("\n输出,请按5");
printf("\n退出,请按0\n");
scanf("%d",&m);
if(m>=0&&m<=5)
{
switch(m)
{
case1:
append();
break;
case2:
search();
break;
case3:
modify();
break;
case4:
delete();
break;
case5:
output();
break;
case0:
exit();
}
printf("\n\n操作完毕,请再次选择!
");
}
else
printf("\n\n选择错误,请再次选择!
");
}
}
voidcreat()
{
structpersonone;
longs1;
printf("\n请输入通讯录名:
");
scanf("%s",filename);
if((fp=fopen(filename,"w"))==NULL)
{
printf("\n不能建立通讯录!
");
exit();
}
fprintf(fp,"%-10s%-20s%-50s\n","姓名","电话号码","住址");
printf("\n请输入姓名、电话号码及住址(以0结束)\n");
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);
}
voidoutput()
{
structpersonone;
if((fp=fopen(filename,"r"))==NULL)
{
printf("\n不能打开通讯录!
");
exit();
}
printf("\n\n%20s\n","通讯录");
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);
}
voidappend()
{
structpersonone;
if((fp=fopen(filename,"a"))==NULL)
{
printf("\n不能打开通讯录!
");
exit();
}
printf("\n请输入添加的姓名、电话号码及住址\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("\n请输入姓名:
");
scanf("%s",namekey);
if((fp=fopen(filename,"rb"))==NULL)
{
printf("\n不能打开通讯录!
");
exit();
}
while(!
feof(fp))
{
fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);
if(!
strcmp(namekey,one.name))
{
printf("\n\n已查到,记录为:
");
printf("\n%-10s%-18s%-50s",one.name,one.tel,one.addr);
k=1;
}
}
if(!
k)
printf("\n\n对不起,通讯录中没有此人的记录。
");
fclose(fp);
}
voidmodify()
{
intm,k=0;
longoffset;
charnamekey[8];
structpersonone;
printf("\n请输入姓名:
");
scanf("%s",namekey);
if((fp=fopen(filename,"r+"))==NULL)
{
printf("\n不能打开通讯录!
");
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("\n已查到,记录为:
");
printf("\n%-10s%-18s%-50s",one.name,one.tel,one.addr);
printf("\n请输入新姓名、电话号码及住址:
");
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("\n对不起,通讯录中没有此人的记录。
");
fclose(fp);
}
voiddelete()
{
intm,k=0,flag;
longoffset1,offset2;
charnamekey[8],valid[4];
structpersonone;
printf("\n请输入姓名:
");
scanf("%s",namekey);
if((fp=fopen(filename,"r+"))==NULL)
{
printf("\n不能打开通讯录!
");
exit();
}
while(!
feof(fp))
{
offset1=ftell(fp);
fscanf(fp,"%s%s%s\n",one.name,one.te
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通讯录 管理 系统