关于C语言的通讯录课程设计Word格式.docx
《关于C语言的通讯录课程设计Word格式.docx》由会员分享,可在线阅读,更多相关《关于C语言的通讯录课程设计Word格式.docx(31页珍藏版)》请在冰豆网上搜索。
![关于C语言的通讯录课程设计Word格式.docx](https://file1.bdocx.com/fileroot1/2022-12/16/aafbe287-ef88-471c-8e0d-9fc46cd0a23b/aafbe287-ef88-471c-8e0d-9fc46cd0a23b1.gif)
6、课程设计实践作为培养学生动手能力的一种手段,单独考核。
3.课程设计说明书
一需求分析
利用C语言编写出通讯录程序,并且实现一个通讯录所拥有的基本功能,加强了C语言学习者将所学知识与生活实践相结合的能力,既能检验学习成果,又能发现C语言的应用市场,通讯录应用广泛,在日常生活中随处可见,最基本的通讯录至少应该满足以下要求:
1.读出功能
?
列出所有记录(每项记录只列出姓名、序列、电话号码,邮箱);
2.查询功能(姓名匹配查询;
根据序列号查询;
)
3.修改功能
4.增加功能(增加一个新的记录;
5.删除功能(删除一条联系人记录;
6.保存功能(保存所输入的项)
通讯录系统的使用很好的解决了日常生活中对联系人保存和信息修改的难题,方便了生活。
简单,易操作。
二系统设计
主要利用了C语言完成了这个小型的通讯录程序。
本程序主要实现了输入并存储联系人的通讯信息、输入所有联系人的信息、按照姓名或编号查找输入的联系人信息、修改输入的联系人信息、输出所有联系人的通讯信息、增加联系人、保存输入信息的功能。
基本功能:
1、输入密码进入系统:
通过调用字符串函数strcmp,将键入字符串与源程序中的字符串进行比较,如果吻合,出现“欢迎进入系统”字样,按任意键进入系统,反之,出现“密码错误“字样,按任意键,结束进程。
2、输入并存储联系人的信息:
通过输入联系人的编号、姓名、和电话号码,电子邮箱,然后就可以把数据保存在建立的list文件里面。
3、打印联系人的所有信息:
通过一个printf语句就可以把所有输入的联系人的信息打印在屏幕上。
4、通过编号和姓名查找联系人:
这个功能通过strcmp比较输入的字符串和保存的字符串是否有一致的,然后将吻合的字符串所在的联系人信息条目输出到屏幕上。
5、删除信息有误或信息变动的联系人信息:
这个功能通过调用字符串函数strcmp和strcpy来实现,以下一条信息来覆盖错误的信息,从而达到删除目的效果。
6、修改某条联系人的信息:
这个功能仍然要通过字符串函数strcmp函数去比较键入字符串和已输入字符串,如果有相同的,就将所在的这一条联系人信息加以修改,如果没有则直接输出“没有此联系人”。
7、存入所输入信息功能:
这个功能通过使用文件操作,定义文件指针,将输入信息存放在文件夹内,方便下次查看
系统的结构图,如图:
有功能模块图和流程图
三详细设计
1、首先写入头文件
#include<
stdio.h>
stdlib.h>
string.h>
2、定义一个结构体存储联系人的信息
typedefstruct
{
charscore[10];
//联系人序列
charname[20];
//联系人姓名
charsex[8];
//联系人性别
charnum[15];
//联系人号码
charemail[20];
//联系人邮箱
}Person;
3、然后写入定义一个菜单函数,用于介绍通讯系统所具有的所有功能选项,以及输入数字实现选择功能。
intmenu_select()//选择菜单函数
charc;
do
{
system("
cls"
);
//清屏
printf("
\t\t@@@@@@@@@@@@@@@@@@@@@@@@@\n"
\t\t@#通讯录@@@\n"
\t\t@#1.添加联系人@@@\n"
\t\t@#2.显示信息@@@\n"
\t\t@#3.删除信息@@@\n"
\t\t@#4.查询信息@@@\n"
\t\t@#5.修改信息@@@\n"
\t\t@#6.保存信息@@@\n"
\t\t@#0.退出通讯录@@@\n"
\t\t^^^^^^^^^^^^^^^^^^^^^^^^^\n"
\t\t*************************\n"
\t\t请您选择(0-6):
"
c=getchar();
}
while(c<
'
0'
||c>
6'
return(c-'
}
4、输入信息函数(包括:
序列、名字、性别、手机号码、电子邮箱等。
)以及选择是否需要继续添加信息。
intInput(Personper[],intn)
{
inti=0;
charsign,x[10];
while(sign!
='
n'
&
sign!
N'
)
\t序列:
scanf("
\t%s"
&
per[n+i].score);
\t姓名:
per[n+i].name);
\t性别:
per[n+i].sex);
\t号码:
per[n+i].num);
\t邮箱:
per[n+i].email);
gets(x);
\n\t是否继续添加?
(Y/N)"
\t%c"
sign);
i++;
return(n+i);
}
6、显示函数(显示所输入的所有联系人信息)
fvoidDisplay(Personper[],intn)
{
inti;
printf("
\n"
/*格式*/
序列姓名性别号码电子邮箱\n"
--------------------------------------------------------------------------------------------------------------------\n"
for(i=1;
i<
n+1;
i++)
%-9s%-10s%-15s%-20s\n"
per[i-1].score,per[i-1].name,per[i-1].sex,per[i-1].num,per[i-1].email);
system("
pause"
7、删除目标联系人函数
intDelete_a_news(Personper[],intn)
chars[20];
inti=0,j;
\t请输入想删除记录中的名字:
scanf("
%s"
s);
while(strcmp(per[i].name,s)!
=0&
n)i++;
if(i==n)
{
\t没有此联系人!
return(n);
for(j=i;
j<
n-1;
j++)
strcpy(per[j].score,per[j+1].score);
strcpy(per[j].name,per[j+1].name);
strcpy(per[j].sex,per[j+1].sex);
strcpy(per[j].num,per[j+1].num);
strcpy(per[j].email,per[j+1].email);
\t\t\t已经成功删除!
return(n-1);
8、查询信息函数函数(分为姓名查询和序列号码查询)
voidQuery_a_record(Personper[],intn)
intm;
\t\n请选择查询方式:
\t********************\n"
\t*1.联系人姓名*\n"
\t*2.联系人序列号*\n"
请选择:
%d"
m);
while(m!
=1&
m!
=2)
输入错误,请重新选择:
}
if(m==1)
chars[20];
inti=0;
\t请输入想查询联系人的姓名:
while(strcmp(per[i].name,s)!
if(i==n)
{
printf("
\t记录中没有此联系人!
return;
}
\t联系人序列:
%s\n"
per[i].score);
\t联系人姓名:
per[i].name);
\t联系人性别:
per[i].sex);
\t联系人号码:
per[i].num);
\t联系人邮箱:
per[i].email);
};
if(m==2)
\t输入查询联系人序列:
while(strcmp(per[i].score,s)!
\t系统中没有此记录!
}
9、联系人信息修改函数
fvoidChange(Personper[],intn)
\t请输入想修改的联系人的名字:
\t系统中没有此联系人!
return;
per[i].score);
\t修改成功!
3、写一个存储函数来把数据保存到文件中。
voidWritetoText(Personper[],intn)
FILE*fp;
/*定义文件指针*/
charfilename[20];
/*定义文件名*/
\t保存到文件\n"
/*输入文件名*/
\t请输入所保存的文件名:
filename);
if((fp=fopen(filename,"
w"
))==NULL)
\t无法打开文件\n"
fprintf(fp,"
***************************通讯录********************************\n"
---------------------------------------------------------------------------------------------------\n"
while(i<
n)
fprintf(fp,"
%-2s\t%-10s\t%-15d\t%-20d\t\n"
per[i].score,per[i].name,per[i].sex,per
[i].num,per[i].email);
---------------------------------------------------------------------------\n"
**************共有%d条联系人信息**************\n"
n);
fclose(fp);
/*关闭文件*/
保存成功!
密码函数(进入系统前先输对密码)
voidmima()
charmm[8];
charshishu[]="
123456"
;
\t\t\t\t请输入您的密码:
gets(mm);
if(strcmp(mm,shishu)==0)
{printf("
\t\t\t欢迎进入系统!
!
请按任意键进入系统,谢谢……\n"
else
\t\t\t\t您的密码错误\n"
按任意键自动退出程序\n"
exit(0);
10、写出主函数,调用所有自定义函数。
voidmain()/*主函数*/
voidmima();
intn=0;
mima();
for(;
switch(menu_select())
case1:
\n\t添加联系人到系统\n"
/*添加*/
n=Input(pe,n);
break;
case2:
\n\t联系人记录表\n"
/*显示记录*/
Display(pe,n);
case3:
\n\t从系统中删除信息\n"
n=Delete_a_news(pe,n);
/*删除记录*/
\t"
case4:
\n\t在系统中查找信息\n"
Query_a_record(pe,n);
/*查找记录*/
break;
case5:
\n\t修改系统信息\n"
Change(pe,n);
/*修改数据*/
case6:
\n\t保存功能\n"
WritetoText(pe,n);
/*保存数据*/
case0:
\t┌────────-\n"
\t│gameover│\n"
\t│谢谢使用,再见!
│\n"
\t└────────┘\n"
/*结束程序*/
\n\t\t"
四设计与调试分析
1、选择菜单操作的核心步骤:
c=getchar();
2、输入信息的核心步骤:
3、显示信息的核心代码如下:
----------------------------------------------------------------------\n"
在程序的设计中,我写的代码的错误很多。
刚开始不知道为什么然后根据错误查找方法找到了。
有的时候,忘了将中英文切换,将中英文标点混为一谈;
用if……else时else找不到对应的if;
调用函数时调用语句不规范等。
做完这个程序,并修正所有错误后,觉得除了一些低级错误意外,又从错误中学到了很多,觉得有进步了一点。
五系统运行与演示
1、密码输入界面:
2、主菜单界面:
2、输入1得到输入联系人信息的界面,如图。
3、输入2得到的打印所有联系人的信息的界面,如图。
4、选择3得到的运行界面如下图。
4、输入4得到不及格的学生如下图。
5、输入5修改信息,如图。
6、输入6得到界面如下图。
7、选择0退出系统。
七、附录(代码)
Personpe[100];
\t\t请您选择(0-6