数据结构课程设计Word格式文档下载.doc
《数据结构课程设计Word格式文档下载.doc》由会员分享,可在线阅读,更多相关《数据结构课程设计Word格式文档下载.doc(29页珍藏版)》请在冰豆网上搜索。
功能要求:
(1)建立通讯录的链表;
(2)插入通讯录信息;
(3)查询通讯录信息;
(4)删除通讯录信息;
(5)输出通讯录信息。
规定:
输入通讯录的信息:
编号、姓名、性别、电话、地址
界面要求:
有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。
存储结构:
利用单链表存储通讯录信息,同时要求将通讯信息相关数据存储在数据文件中。
(数据文件的数据读写方法等相关内容在c语言程序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存储结构;
测试数据:
要求使用1、全部合法数据;
2、整体非法数据;
3、局部非法数据。
进行程序测试,以保证程序的稳定。
测试数据及测试结果请在上交的资料中写明。
一、系统分析与概要设计
根据问题描述和要求,系统要求能够按姓名查找、增加、删除和保存各学生的信息。
确定程序应该具备如下功能:
“查询学生信息”、“增加学生信息”、“修改学生信息”“删除学生信息”、“数据存盘”基本模块。
系统可以将学生信息数据保存到磁盘文件student.txt,从而可以通过磁盘文件读出学生数据信息,为了便于统计在生成学生信息时同时生成学生编号,这样每输入一个学生信息编号顺序加1,这样也方便了管理员查询学生信息。
二、详细设计和编码
1.数据类型定义
根据系统要求,可以将姓名和邮编和联系电话通讯地址定义为字符型。
2.各模块算法描述
查询学生信息:
Que_name()输入要查询的学生姓名,比较名字与保存的信息是否相同,若相同则查找到,否则,没查找到。
增加学生信息:
Add()输入要添加的学生信息并保存。
删除学生信息:
Del()输入要删除的学生姓名,若与数据相同则删除,否则输出查找不到该信息。
修改学生信息:
Mod()输入要修改的学生姓名,输入要修改的信息,并确认。
数据存盘:
Sav()创建文件,将信息写入文件。
3.程序关键算法流程图
(1)主函数流程
(2)某操作算法流程Student:
:
Add()
(3)Student:
Del()
(4)Student:
Mod()
(5)Student:
Que_name()
(6)Student:
Sav()
(7)Student:
Load()
三、调试结果
运行界面
录入信息界面
查询信息界面
修改信息界面
源代码:
#include<
iostream>
string.h>
windows.h>
usingnamespacestd;
structstudent
{
charnum[20];
charname[20];
charaddress[50];
charsex[20];
chartelphone[20];
}student[2000];
//定义学生类结构体
voidMenu();
//声明菜单函数
voidInput();
//声明录入函数
voidSav(int);
//声明保存函数
intLoad();
//声明信息导入函数
voidQue_name();
//声明按姓名查找函数
voidDel();
//声明删除函数
voidMod();
//声明修改函数
voidScan();
//声明浏览函信息数
voidAdd();
//声明添加函数
voidMenu()//菜单函数
cout<
<
"
\t*******欢迎来到景德镇陶瓷学院学生通讯录信息管理系统!
*******"
endl;
\t**请按要求正确录入学生的通讯录信息**"
\t**1.录入相关学生通讯录信息**"
\t**2.保存相关学生通讯录信息**"
\t**3.按姓名查找相关学生通讯录信息**"
\t**4.修改相关学生通讯录信息**"
\t**5.删除相关学生通讯录信息**"
\t**6.添加相关学生通讯录信息**"
\t**7.退出该学生通讯录信息系统**"
\t*****************欢迎您的光临**************************"
}
voidmain()//主函数的实现
{
intn;
loop:
Menu();
//调用菜单函数
cout<
请输入您所要进行的操作过程的序号(1-7):
;
cin>
>
n;
system("
cls"
);
switch(n)
{
case1:
cout<
请输入相关学生通讯信息:
Input();
system("
gotoloop;
case2:
请保存相关学生通讯信息:
Sav(n);
case3:
按姓名查找相关学生通讯信息:
Que_name();
case4:
修改相关学生通讯信息:
Mod();
case5:
删除相关学生通讯信息:
Del();
case6:
添加相关学生通讯信息:
Add();
//用goto语句调至指定行
default:
break;
}
cout<
\t\t\t*********欢迎您的使用!
**********"
voidInput()//学生通讯信息录入函数
inti,m;
请输入您所要输入的学生通讯信息的个数(1-2000):
cin>
m;
for(i=0;
i<
i++)
{
cout<
请输入学生的编号:
<
cin>
student[i].num;
cout<
请输入通讯录中学生的姓名:
cin>
student[i].name;
请输入通讯录中学生的性别:
student[i].sex;
请输入通讯录中学生的电话号码:
student[i].telphone;
请输入通讯录学生的地址(格式如***省**市**县**乡):
student[i].address;
该学生的通讯信息已经输入完毕,请继续输入下一个学生通讯信息!
}
voidSav(intm)//如何写入信息?
保存通讯录文件函数
inti;
FILE*fp;
if((fp=fopen("
E:
\\student.dat"
"
wb"
))==NULL)//创建文件并判断是否能打开
该文件打开失败。
exit(0);
i++) //将内存中学生通讯信息输入到磁盘里去
if(fwrite(&
student[i],sizeof(structstudent),1,fp)!
=1)//申请空间,写入学生信息,为何有个1?
?
cout<
信息写入失败!