1、数据结构课程设计通讯录管理系统一、 设计题目(问题)描述和要求某一中学,现在需要建立学生通讯录管理系统,以管理学生信息。 要求: (1) 可以录入新的通讯信息(包括姓名,通讯地址,邮编,联系电话等)(2) 可以按照姓名进行查询相关信息(3) 可以修改相关信息二、 系统分析与概要设计根据问题描述和要求,系统要求能够按姓名查找、增加、删除和保存各学生的信息。确定程序应该具备如下功能:“查询学生信息”、“增加学生信息”、“修改学生信息”“删除学生信息”、“数据存盘”基本模块。系统可以将学生信息数据保存到磁盘文件student.txt,从而可以通过磁盘文件读出学生数据信息,为了便于统计在生成学生信息时
2、同时生成学生编号,这样每输入一个学生信息编号顺序加1,这样也方便了管理员查询学生信息。三、 详细设计和编码1. 数据类型定义根据系统要求,可以将姓名和邮编和联系电话通讯地址定义为字符型。2. 各模块算法描述查询学生信息: Que_name()输入要查询的学生姓名,比较名字与保存的信息是否相同,若相同则查找到,否则,没查找到。增加学生信息: Add()输入要添加的学生信息并保存。删除学生信息: Del()输入要删除的学生姓名,若与数据相同则删除,否则输出查找不到该信息。修改学生信息: Mod()输入要修改的学生姓名,输入要修改的信息,并确认。数据存盘: Sav()创建文件,将信息写入文件。3.
3、程序关键算法流程图(1)主函数流程(2) 某操作算法流程Student: Add()(3) Student: Del()4) Student: Mod()(5) Student: Que_name() (6) Student: Sav()(7) Student: Load()四、调试分析(内容包括:调试过程中遇到的问题并且是如何解决的以及对设计实现的回顾讨论和分析;算法的时空分析和改进设想;经验和体会等)五、 测试结果六、 小结通过本次设计,加强了对于编写管理系统程序的运用,能够更好的运用循环。对于以后的编程运用起了很大的帮助。七、 附录(附上带详细注释的源程序)#include#includ
4、e#includeusing namespace std;struct student char num20; char name20; char address50; char postcode20; char telphone20; student2000; /定义学生类结构体void Menu(); /声明菜单函数void Input(); /声明录入函数void Sav(int); /声明保存函数int Load(); /声明信息导入函数void Que_name(); /声明按姓名查找函数void Del(); /声明删除函数void Mod(); /声明修改函数void Scan(
5、); /声明浏览函信息数void Add(); /声明添加函数 void Menu() /菜单函数 coutt*欢迎来到平顶山学院学生通讯录信息管理系统!*endl; coutt* 请按要求正确录入学生的通讯录信息 *endl; coutt* 1.录入相关学生通讯录信息 *endl; coutt* 2.保存相关学生通讯录信息 *endl; coutt* 3.按姓名查找相关学生通讯录信息 *endl; coutt* 4.修改相关学生通讯录信息 *endl; coutt* 5.删除相关学生通讯录信息 *endl; coutt* 6.添加相关学生通讯录信息 *endl; coutt* 7.退出该学生
6、通讯录信息系统 *endl; coutt*欢迎欢迎您的光临*endl;void main() /主函数的实现 int n;loop: Menu(); /调用菜单函数 coutn; system(cls); switch(n) case 1:cout请输入相关学生通讯信息:endl;Input();system(cls);goto loop; case 2:cout请保存相关学生通讯信息:endl;Sav(n);goto loop; case 3:cout按姓名查找相关学生通讯信息:endl;Que_name();goto loop; case 4:cout修改相关学生通讯信息:endl;Mod
7、();goto loop; case 5:cout删除相关学生通讯信息:endl;Del();goto loop; case 6:cout添加相关学生通讯信息:endl;Add();goto loop; /用goto语句调至指定行 default :break; coutttt*欢迎您的使用!*endl;void Input() /学生通讯信息录入函数 int i,m; coutm; for (i=0;im;i+) cout请输入学生的学号: studenti.num; cout请输入通讯录中学生的姓名: studenti.name; cout请输入通讯录中学生的电话号码:studenti.t
8、elphone; cout请输入通讯录学生的地址(格式如*省*市*县*乡):studenti.address; cout请输入通讯录中学生的邮编:studenti.postcode; cout该学生的通讯信息已经输入完毕,请继续输入下一个学生通讯信息!endl; void Sav(int m) /如何写入信息? 保存通讯录文件函数 int i; FILE *fp; if (fp=fopen(E:student.dat,wb)=NULL) /创建文件并判断是否能打开 cout该文件打开失败。endl; exit(0); for (i=0;im;i+) /将内存中学生通讯信息输入到磁盘里去 if
9、(fwrite(&studenti,sizeof(struct student),1,fp)!=1) /申请空间,写入学生信息,为何有个1? cout信息写入失败!endl; fclose(fp); void Que_name() /按姓名查找函数 char name110; int i,m; m=Load(); cout请输入您要查询学生通讯信息的名字name1; for(i=0;im;i+) if(strcmp(name1,studenti.name)=0) cout查找到该学生的通讯信息如下:endl; Scan(); break; else cout抱歉,查无此人!endl; retu
10、rn ; void Scan() int i,m; m=Load(); /不明白这个,把函数赋给m吗? cout输出学生通讯信息如下:endl; for(i=0;im;i+) cout学号:studenti.num 姓名: studenti.name 联系电话:studenti.telphone 通讯地址:studenti.address邮编: studenti.postcode endl;int Load() /导入函数 FILE*fp; int i=0; if(fp=fopen(E:student.dat,rb)=NULL) cout文件打开失败!endl; exit(0); else d
11、o fread(&studenti,sizeof(struct student),1,fp); i+; while(feof(fp)=0); return(i); fclose(fp);void Del() /删除函数 int m; int i,j,n,t,f; char name110; m=Load(); cout查看学生的通讯信息如下:endl; Scan(); /调用浏览函数 cout请输入您想删除的通讯信息的名字:name1; for(f=1,i=0;f&im;i+) if(strcmp(studenti.name,name1)=0) cout查找到该学生的通讯信息如下:endl;
12、Scan(); cout如果要删除该生信息,请按1,否则按0n; if(n=1) /如果删除,则其他的信息都向前移一行 for(j=i;jm-1;j+) studentj=studentj+1; f=0; if(!f) m=m-1;/? else cout抱歉!未找到该生信息。endl; cout输出其他学生通讯信息如下:endl; Scan(); /调用浏览函数 Sav(m); /调用保存函数 cout如果您想继续删除通讯信息,请按1,否则按0。t; switch(t) case 1: Del();break; case 0: break; default : break; ;void Mo
13、d() /修改函数 char num20,tel20,post20; char name20; char address50; int b, c,i,n,t,f; int m=Load(); /导入文件内的信息 cout该学生先前的通讯信息为:endl; Scan(); /调用浏览函数 cout请输入您想要修改通讯信息的名字:name ; for(f=1,i=0;f&im;i+) if(strcmp(studenti.name, name)=0) cout查找到该学生的通讯信息如下:endl; Scan(); cout确实要修改该生通讯信息请按1,否则按0n; if(n=1) cout请输入您
14、要修改的项目(1-学号 2-姓名 3-联系电话 4-通讯地址 5-邮编):c; if(c6|c1) cout抱歉,您的输入有误,请从新输入。endl; f=0; if(f=1) cout抱歉,未找到此人!endl; do switch(c) /因为当找到第i个学生时,for语句后i自加了1,所以下面的应该把改后的信息赋值给第i-1个人 case 1: coutnum; strcpy(studenti.num,num); break; case 2:coutname; strcpy(studenti.name, name); break; case 3:couttel; strcpy(stude
15、nti.telphone,tel); break; case 4:coutaddress; strcpy(studenti.address,address); break; case 5:coutpost; strcpy(studenti.postcode,post); break; coutendl; cout确认您所修改的信息请按1,从新修改请按0:b; while(b=0); Sav(m); cout修改后所有信息如下;endl; Scan(); cout如果您想继续修改请按1,否则按0:t; switch(t) case 1: Mod();break; case 0: break; d
16、efault :break; void Add() /添加函数 int n=Load(); int i,m; cout请输入您要添加的学生通讯信息的个数:m; for (i=n;im+n;i+) coutstudenti.num; coutendl; coutstudenti.name; coutendl; coutstudenti.telphone; coutendl; coutstudenti.address; coutstudenti.postcode; coutendl; system(cls); cout该生的通讯信息添加完毕,请输入您要添加的下一位学生的通讯信息!endl; Sav(m+n); cout学生通讯信息添加完毕,查看信息如下:endl; Scan();
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1