学生通讯录管理系统的设计与实现
问题描述:
纸质的通讯录已经不能满足实际需求,容易丢失,查找困难等问题是纸质通讯录所不能克服的缺点。“学生通讯录管理系统”是为了帮助老师、同学,或者其他一些需要使用的通讯录的人员进行管理和应用的一种应用程序。
需求分析:
1)输入数据建立通讯录。
2)查询通讯录中满足要求的信息。
3)插入新的通讯录信息。
4)删除不需要的通讯录信息。
5)查看所有的通讯录信息。
主界面设计要求:
1)通讯录的建立
2)插入通讯录记录
3)查询通讯录记录
4)删除通讯录记录
5)显示通讯录记录
6)退出系统
设计要求:
A.建立通讯录时,每个学生的信息包括:学号,姓名,电话。
B.查找时,学号、姓名、电话均可以作为查询字段。
C.查看所有的通讯录信息时,所有记录需要时有序的(按学号排序,按姓名排序(字典序),按电话号码排序)。
D.存储结构:要求使用顺序存储结构。
E.数据使用:使用本班级的具体信息。
需求分析:
本次设计目的是学生信息管理系统,可存入每个学生的基本信息,所有学生信息都可根据名字、学号、电话、邮箱进行查询,也都可以根据这四个基本信息检索到一个学生并删除其数据。
输入形式:student.txt,以文件形式进行输入。
输出形式:根据不同的输入进行不同的操作。
达到功能:能插入一个学生的信息,能删除一个学生的信息,能查询一个学生的信息。
测试数据:班上70个同学的基本数据。
概要设计:
数据类型:顺序链表 ArrayList类
学生数据结构:StuData类 包含name、id、phone、email四个String基本类型。
所有操作写在Structure中,包含insert、remove、query、printAll。
Main函数用Java标准输入,循环输入,用switch判断输入进行各种操作,1进行建立信息系统从文件中读入操作,2进行插入一个学生数据的功能,3进行查询信息的操作,4进行删除通讯记录的操作,5进行打印所有学生信息的功能,6代表退出系统。
详细设计:
本程序是学生信息管理系统,构造了一种StuData数据结构,里面包含姓名、学号、电话、邮箱四个String类型的字段,具有的功能是,从文件中读入班级70个人的信息,用循环构造70个StuData对象,依次存入ArrayList 各种操作,具体代码如下: #include #include #include #include #include #include #include using namespace std; struct Student{ char number[20]; char name[20]; char tel[20]; char QQ[100]; }; Student S[1000]; int cnt; void init() { cnt = 0; FILE *T; T = freopen(\"a.txt\ while(scanf(\"%s%s%s%s\F){ // printf(\"%s %s %sjiji\\n\ cnt++; } freopen(\"CON\ printf(\"建立成功\\n\"); } void showscreem() { printf(\"*******************************************************************************\\n\"); printf(\" 1 通讯录的建立\\n\"); printf(\" 2.插入通讯记录\\n\"); printf(\" 3.查询通讯记录\\n\"); printf(\" 4.删除通讯记录\\n\"); printf(\" 5.显示通讯记录\\n\"); printf(\" 0.退出系统\\n\"); printf(\"************************************************************************** *****\\n\"); } void Insert() { Student t; scanf(\"%s%s%s%s\ S[cnt++] = t; printf(\"插入成功\\n\"); } void Find() { char str[100]; printf(\"请输入有关信息\\n\"); scanf(\"%s\ int flag1 = 0; for(int i = 0;i flag |= !strcmp(str,S[i].number); flag |= !strcmp(str,S[i].name); flag |= !strcmp(str,S[i].tel); flag |= !strcmp(str,S[i].QQ); if(flag){ printf(\"学号%s 姓箱%s\\n\ flag1 = 1; } } 名%s 电话%s 邮 if(!flag1) printf(\"没找到\\n\"); } void Delete() { char str[100]; printf(\"请输入有关信息\\n\"); scanf(\"%s\ int flag = 0;int pos; for(int i = 0;i flag |= !strcmp(str,S[i].name); flag |= !strcmp(str,S[i].tel); flag |= !strcmp(str,S[i].QQ); if(flag){ pos = i;break; } } if(!flag) printf(\"没找到\\n\"); else{ printf(\"删除成功\\n\"); for(int i = pos;i } } int cmp(const Student & a, const Student &b) { return strcmp(a.number,b.number)<0; } int cmp1(const Student & a, const Student &b) { return strcmp(a.name,b.name)<0; } int cmp2(const Student & a, const Student &b) { return strcmp(a.tel,b.tel)<0; } void show() { printf(\"按照学号排序\\n\"); sort(S,S+cnt,cmp); for(int i = 0;i } printf(\"按照姓名排序\\n\"); sort(S,S+cnt,cmp1); for(int i = 0;i } printf(\"按照电话排序\\n\"); sort(S,S+cnt,cmp2); for(int i = 0;i 邮 printf(\"姓名%s 学号%s 电话%s 邮 箱%s\\n\ } } int main() { int n; showscreem(); while(scanf(\"%d\ if(n==0) break; if(n==1) init(); else if(n==2){ printf(\"请按顺序输入学号,姓名,邮箱\\n\"); Insert(); } else if(n==3){ Find(); } else if(n==4){ Delete(); } else if(n==5){ show(); } showscreem(); } return 0; } 总结:本系统可以通过删除和插入的操作方式完成数据的修改;但没有直接修改数据的功能。进入系统后,随即显示系统主菜单界面,用户可以在该界面下输入各子菜单前对应的数字并按回车键,执行相应的子菜单命令。 因篇幅问题不能全部显示,请点此查看更多更全内容