通讯录课程设计.docx
《通讯录课程设计.docx》由会员分享,可在线阅读,更多相关《通讯录课程设计.docx(19页珍藏版)》请在冰豆网上搜索。
通讯录课程设计
通讯录管理系统
目录:
一、课程设计目的2
二、课程设计题目描述及要求2
三、总体设计3
四、详细设计3
五、源程序清单4
六、执行结果12
七、总结和体会15
摘要:
通过一周的编程,在老师的辅导下,我完成了课程设计。
通过课程设计的完成对C语言邮了更深的了解。
我做的课程设计题目是通讯录管理系统,主要用到了结构体、结构体数组、指针、文件等等。
对函数的声明和调用有了更深的理解。
但我做的这个关于通讯录管理系统的课程设计还存在不足,还希望老师的指点。
1、课程设计目的
通过这次课程设计更好的掌握以下知识:
●掌握函数的定义与说明。
●掌握各种基本的数据类型和结构体的定义
●掌握数组的定义与使用,注意下标的使用
●掌握基本的程序结构:
顺序、选择、循环
2、课程设计题目描述及要求
建立一个通讯录管理系统,具有数据插入、修改、删除、显示、查询和统计功能的电话薄管理程序。
其中记录每位同学的学号、姓名、性别、工作单位、电话号码和E-mail地址建立单独的条目,存入数据文件。
【程序设计功能及要求】
(1)人数不定,数据使用文件存放。
(2)记录每位同学的学号、姓名、性别、工作单位、电话号码和E-mail地址建立单独的条目,存入数据文件。
(3)可对记录中的姓名和电话号码等进行修改。
(4)可增加或删除记录。
(5)可显示所有保存的记录。
(6)加入统计功能,可以统计男女同学或总人数。
(7)加入查询功能,通过姓名、学号或电话号码查询到同学的条目。
(8)在开始画面加入简单的菜单便于选择功能。
(9)文件格式。
3、总体设计
系统功能模板图
显示:
可以以表格形式输出所有通讯录里的记录。
查找:
可以选择用姓名、学号、手机号码三种选择方式。
增加:
可以添加通讯录记录,依次是学号、姓名、性别、
工作单位、电话号码和E-mail,并会提示是否继续
添加。
删除:
输入要删除的姓名,自动删除他(她)的记录内容。
修改:
输入要修改的姓名,再一次按学号、姓名、性别、
工作单位、电话号码和E-mail完成修改。
保存:
将通讯录信息保存到指定的文件中。
读取:
从保存到的指定文件中读取通讯录信息。
统计:
可以统计男生、女生或男女生总人数。
4、详细设计
程序流程图:
五、源程序清单
#include
#include
#include
#defineSIZE100
inti,m=0,mnan=0,mnv=0;//m为当前通讯录内人数
charmenu();//菜单
voidlist();//显示
voidsearch();//查找
voidapp();//增加
voiddele();//删除
voidcorrect();//修改
voidsave();//保存
voidload();//读入
voidjieguo();//结果
structrecord{
intrr;//编号
intnum;//学号
charname[20];//姓名
charsex[10];//性别
chardw[20];//工作单位
chartel[12];//电话
charemail[20];//邮箱
}rec[SIZE];
voidmain(){
charchoice;
chara;
while
(1)
{
choice=menu();
switch(choice)
{
case1:
printf("显示通讯录中内容\n");
list();
break;
case2:
printf("查找联系人\n");
search();
break;
case3:
printf("增加联系人记录\n");
app();
break;
case4:
printf("删除联系人记录\n");
dele();
break;
case5:
printf("修改联系人记录\n");
correct();
break;
case6:
printf("保存通讯录到文件中\n");
save();
break;
case7:
printf("从文件中读取记录\n");
load();
break;
case8:
printf("统计信息结果\n");
jieguo();
break;
case0:
printf("退出通讯录管理系统\n");
printf("是否保存y/n?
\n");
scanf("%s",&a);
if(a=='y')
{
save();
return;
}
else
return;
default:
printf("输入错误!
!
");
}
}
}
charmenu()
{
intc;
printf("------------欢迎使用------------\n\n");
printf("*************简易通讯录*************\n");
printf("1.显示通讯录\n");
printf("2.查找联系人\n");
printf("3.增加联系人\n");
printf("4.删除联系人\n");
printf("5.修改通讯录\n");
printf("6.保存到文件\n");
printf("7.从文件读取\n");
printf("8.统计信息结果\n");
printf("0.退出此系统\n");
printf("************************************\n");
printf("\n请选择………\n\n");
scanf("%d",&c);
returnc;
}
voidlist()
{
printf("学号姓名性别工作单位电话号码E-mail\n");
for(i=0;i{
if(rec[i].name[0])
{
printf("%d\t%s\t%s\t%s\t%s\t%s\n",rec[i].num,rec[i].name,rec[i].sex,rec[i].dw,rec[i].tel,rec[i].email);
}
}
printf("----------------END--------------\n");
}
voidapp()
{
chara;
puts("当前通讯录中的内容\n");
list();
do
{
rec[m].rr=m+1;
printf("请输入新的联系人信息:
\n");
printf("姓名:
");
scanf("%s",rec[m].name);
printf("手机电话:
");
scanf("%s",rec[m].tel);
printf("工作单位:
");
scanf("%s",rec[m].dw);
printf("EMAIL:
");
scanf("%s",rec[m].email);
printf("学号:
");
scanf("%d",&rec[m].num);
printf("性别:
");
scanf("%s",rec[m].sex);
puts("这是新添加的联系人信息:
\n");
printf("学号\t姓名\t性别\t工作单位\t电话号码\tE-mail\n");
printf("%d\t%s\t%s\t%s\t%s\t%s\n",rec[m].num,rec[m].name,rec[m].sex,rec[m].dw,rec[m].tel,rec[m].email);
m++;
if(rec[m].sex=="nan")
mnan++;
else
mnv++;
puts("\t\t\t新纪录输入完成!
\n");
puts("继续添加吗?
(y/n)");
scanf("%s",&a);
}while(a=='y');
}
voidsearch()
{
intch;
intk=1;
printf("1、按姓名查找:
\n");
printf("2、按学号查找:
\n");
printf("3、按手机号码查找:
\n");
printf("请选择:
");
scanf("%d",&ch);
switch(ch)
{
charxm[20];
intd;
case1:
printf("输入要查找的姓名:
");
scanf("%s",xm);
for(i=0;iif(strcmp(xm,rec[i].name)==0){
k=0;
printf("这是您需要查找的联系人的信息。
\n");
printf("学号姓名性别工作单位电话号码E-mail\n");
printf("%d\t%s\t%s\t%s\t%s\t%s\n",rec[i].num,rec[i].name,rec[i].sex,rec[i].dw,rec[i].tel,rec[i].email);
}
}
if(k)
printf("通讯录中没有你要查找的人。
");
break;
case2:
printf("输入查找的学号\n");
scanf("%d",&d);
for(i=0;iif(d==rec[i].num){
k=0;
printf("这是您需要查找的联系人的信息。
\n");
printf("学号姓名性别工作单位电话号码E-mail\n");
printf("%d\t%s\t%s\t%s\t%s\t%s\n",rec[i].num,rec[i].name,rec[i].sex,rec[i].dw,rec[i].tel,rec[i].email);
}
}
if(k)
printf("通讯录中没有你要查找的人。
");
break;
case3:
printf("输入要查找的电话号码:
");
scanf("%s",xm);
for(i=0;iif(strcmp(xm,rec[i].tel)==0){
k=0;
printf("这是您需要查找的联系人的信息。
\n");
printf("学号姓名性别工作单位电话号码E-mail\n");
printf("%d\t%s\t%s\t%s\t%s\t%s\n",rec[i].num,rec[i].name,rec[i].sex,rec[i].dw,rec[i].tel,rec[i].email);
}
}
if(k)
printf("通讯录中没有你要查找的人。
");
break;
default:
printf("输入错误!
!
");
}
}
voiddele()
{
charxm[10];
inta;
list();
printf("输入要删除的姓名:
");
scanf("%s",xm);
for(i=0;iif(strcmp(xm,rec[i].name)==0)
{
a=rec[i].rr;
break;
}
if(i==m)
{
printf("没有此人!
");
return;
}
if(rec[i].sex=="nan")
mnan--;
else
mnv--;
if(a!
=m+1)
{
for(i=a;irec[i-1]=rec[i];
rec[i-1].rr=i;
}
m--;
list();
printf("已删除!
");
}
}
voidcorrect()
{
charxm[10];
boolk=1;
list();
printf("输入要修改联系人的姓名:
");
scanf("%s",xm);
for(i=0;i{
if(strcmp(xm,rec[i].name)==0)
{
k=0;
printf("\n这是您要修改联系人的初始信息\n\n");
printf("学号姓名性别工作单位电话号码E-mail\n");
printf("%d\t%s\t%s\t%s\t%s\t%s\n",rec[i].num,rec[i].name,rec[i].sex,rec[i].dw,rec[i].tel,rec[i].email);
printf("请输入修改后的电话号码:
");
scanf("%s",rec[i].tel);
printf("请输入修改后的工作单位:
");
scanf("%s",rec[i].dw);
printf("请输入修改后的E-mail:
");
scanf("%s",rec[i].email);
printf("请输入修改后的学号:
");
scanf("%d",&rec[i].num);
list();
printf("修改完成!
");
break;
}
}
if(k)
printf("输入有误,未找到!
");
}
voidsave()
{
FILE*fp;
if((fp=fopen("E:
//课程设计//通讯录.txt","wb"))==NULL)
{
printf("Can'topenfile");
exit(0);
}
list();
for(i=0;iif(fwrite(&rec[i],sizeof(structrecord),1,fp)!
=1)
printf("Filewreteerror!
\n");
fclose(fp);
printf("\t保存成功!
\n");
}
voidload()
{
FILE*fp;
m=0;mnan=0;mnv=0;
if((fp=fopen("E:
//课程设计//通讯录.txt","rb"))==NULL)
{
printf("Can'topenfile\n");
exit(0);
}
for(i=0;i{
if(fread(&rec[i],sizeof(structrecord),1,fp)!
=1)
{
if(feof(fp))
break;
printf("Filereaderror!
\n");
}
if(strcmp("nan",rec[i].sex)==0)
mnan++;
else
mnv++;
rec[i].rr=i+1;
m++;
}
list();
printf("\t读取成功\n");
fclose(fp);
}
voidjieguo()
{
intch;
printf("1、男生人数:
\n");
printf("2、女生人数:
\n");
printf("3、总人数:
\n");
printf("请选择:
");
scanf("%d",&ch);
switch(ch)
{
case1:
printf("男生总人数是:
%d",mnan);
break;
case2:
printf("女生总人数是:
%d",mnv);
break;
case3:
printf("总人数是:
%d",m);
break;
default:
printf("输入错误!
!
");
}
}
6、执行结果
(1)显示主菜单的界面
(2)增加联系人界面
(3)显示通讯录界面
(4)查找联系人界面
(5)删除联系人界面
(6)修改通讯录界面
(7)保存到文件界面
(8)从文件中读取界面
(9)统计男女人数界面
7、总结与体会
这次课程设计是对我进入大学以来学习C语言结果的一次大检验。
自己动手、自己发现和解决问题,发现了自己的许多不足,在设计程序时考虑的不够全面。
在答辩的过程中,老师给我提了许多好的建议,比如在执行是否给予添加联系人时,y/n是否有大小写之分,联系电话的类型能否输入不是数字的信息等等。
所以这次编程的收货不小,不仅让我对C语言的操作有了进一步的掌握,还让我了解到程序设计的书写风格及其注释的格式。
通过这为期一周的课程设计,我们对C语言这门课程有了更深一步的了解。
它是计算机程序设计的重要理论基础,在我们数学和信息专业的学习中占据着十分重要的地位。
同时也让我们知道,要学好这门课程,仅学习书本上的知识是不够的,还要有较强的实践能力。
因为我们学习知识就是为了实践。
而只有多实践,多编写程序,才能更好地理解与掌握书本上的东西。