数据结构通讯录管理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、数据结构课程设计目标
《数据结构》是计算机专业一门重要的专业技术基础课程,是一门关键性核心课程。《数据结构》课程的目标是使学生学会分析研究计算机加工对象的特性,选择合适的数据结构和存储表示,以及编制相应的实现算法,培养和提高学生程序设计的能力。《数据结构》课程也是一门实践性较强的课程,设置实践环节是十分重要的。本课程设计的目标就是要达到理论与实际应用相结合,提高学生组织数据及编写大型程序的能力,并培养基本的、良好的程序设计技能以及合作能力。
二、问题描述
编写一个简单的通讯录管理程序。通讯录记录有姓名、地址、电话号码、电子邮箱等4项。
三、需求分析
1、要求:
1)添加:增加一个人的记录到通讯录中;
2)显示:在屏幕上显示所以通讯录中的人员信息,应能分屏显示;
3)存储:将通讯录信息保存在一个文件中;
4)装入:即将文件中的信息读入程序;
5)查询:可根据姓名查找某人的相关信息,若找到显示其姓名、地址、电话号
码、电子邮箱;
6)修改:可修改一个人的除姓名之外的其他信息;
2、详细功能如下:
A.插入:系统将提示用户输入新添加学生信息,学生信息数据包括姓名、性别、地址、编号、电话等。
B.查询:提示用户输入要查找的学生姓名,然后系统用查找函数查找,接着系统使用相关命令输出所查找的学生的全部信息。
C.删除:首先提示用户输入要删除的学生姓名,然后调用删除函数,删除该学生的所有相关资料。
D.输出后退出系统,退出通讯录管理系统。
四、概要设计
1、通讯录管理系统功能说明图:
2、设计结构体及基本数据成员类型:
#include
#include
#include
#include
struct record
{char num[10],name[20],tel[20],address[40],unit[10],email[30];
}stu[500];
int pc=0;
FILE *fp;
void mainmenu();//主菜单
void newrecord();//新名片
void searchbyname();//按姓名查询
void searchbynum();//按编号查询
void showall();//显示所有
void readfromfile();//读取文件
void writetofile();//写入文件
void deletebynum();//按编号删除
void deletebyname();//按姓名删除
void modifybynum();//按编号修改
void modifybyname();//按姓名修改
3、实现主程序与各模块的调用关系:
void mainmenu()//主菜单
{
char choic;
system("cls");
printf("\n\t\t******************** 主菜单********************");
printf("\n\t\t*********** 0-新添名片1-全部显示************");
printf("\n\t\t*********** 2-按编号查询3-按姓名查询************");
printf("\n\t\t*********** 4-按姓名删除5-按编号删除************");
printf("\n\t\t*********** 6-按姓名修改7-按编号修改************");
printf("\n\t\t*********** 8-保存退出9-不保存退出***********");
printf("\n\t\t************************************************");
printf("\n\t\t请选择:");
choic=getch();
switch (choic)
{
case '0':newrecord();break;
case '1':showall();break;
case '2':searchbynum();break;
case '3':searchbyname();break;
case '4':deletebyname();break;
case '5':deletebynum();break;
case '6': modifybyname ();break;
case '7': modifybyname ();break;
case '8':writetofile();break;
case '9':exit(0);
default:mainmenu();
}
}
五、详细设计
各个操作的算法:
1、导入名片信息:
void main()
{ readfromfile();
while (1)
{ mainmenu();
}
}
void readfromfile()//从文件导入
{ if((fp=fopen("stu.txt","rb"))==NULL)
{ printf("\n\t\t通讯录文件不存在");
if ((fp=fopen("stu.txt","wb"))==NULL)
{ printf("\n\t\t建立失败");
exit(0);
}
else
{ printf("\n\t\t通讯录文件已建立");
printf("\n\t\t按任意键进入菜单");
getch();
return;
}
exit(0);
}
fseek(fp,0,2); /*文件位置指针移动到文件末尾*/
if (ftell(fp)>0) /*文件不为空*/
{rewind(fp); /*文件位置指针移动到文件开始位置*/
for (pc=0;!feof(fp) && fread(&stu[pc],sizeof(struct record),1,fp);pc++);
printf("\n\t\t文件导入成功");