欢迎来到天天文库
浏览记录
ID:46544353
大小:101.00 KB
页数:12页
时间:2019-11-25
《宿舍管理软件》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、一・需求分析:本程序的关键字定义有学生姓名char类型,学号double型,房间号int型,定义结构休变量,并定义为指针类型,主要功能是实现学生的信息的录入和查询,第一步必须是添加学生信息,该步骤是前提,在正确输入的前捉下,输入信息口动保存到txt文件中,之后选择功能键123,4,选择5退出系统。程序实现了学生信息的添加、查询、修改和删除,在修改信息时可以选择修改学生姓名,修改学号,修改宿舍号,在查询时,可以选择按姓名查询,按学号查询,按房间号查询,当正确输入已有的信息姓名,学号,宿舍号Z—时,会出现学生的所有信息。二概要设计・没有定义抽象数
2、据类型,定义学生信息是结点形式。宏定义有三个:#defineFALSE0;#defineTRUE1#;defineNULL0,存储结构是顺序链表,即数组。流程图:三・详细设计:以卜-是数据类型定义:#defineFALSE0#defineTRUE1#defineNULLOunsignedintkey;〃存放姓名的阿克斯码相加取余后的关键字structNode//定义结点{charname[20];//姓名doubleschoolnum;//学号introomnum;〃房间号码//structNode*next;〃指向下一个结点的指针}*stu
3、;voidappend(Node*stu,int&q)〃添加记录信息,q表示要添加的学生数{Cin»q;〃输入本次添加学生个数stu=(Node*)malloc(q*sizeof(Node));〃分配结点空间ofstreamout("out.txt",ios::out);〃打开txt文本文件for(inti=0;ivq;i++)cin»stu[i].name»stu
4、i
5、.schoolnum»stu[i].roomnum;for(inti=0;i6、[i].roomnum«endl;〃将录入的信息读入文件中}voidlist(Node*stu)〃该函数显示所仃信息{ifstreamin("out.txtn,ios::in);〃将信息读入内存中while(!in.eof())〃读出信息〃判断文件不为空,将文件读入内存【I〔in»stu[i].name»stu[i].schoolnum»stu[i].roomnum;n++;i++;}n—;for(m=0;m7、lnum«setw(8)«stu[mJ.roomnum«setw(20)«endl;〃读入内存的信息输出}voidfind1(Node*stu,charname[20])〃按姓名查找{ifstreamin("out.txt",ios::in);while(!in.eof())〃读入信息到指定的内存中{in»stu[i].name»stu[i].schoolnum»stu[i].roomnum;n++;i++;}n-;〃读入内存中Cin»name;Find(name,i);//在数组中的下标为i的位置cout«setw(20)«stu8、j].n9、ame«""«stu[jj.schoolnum«""«stu[j].roomnum«endl;}voidfind2(Node*stu)〃按学号码进行折半查找{ifstreamin("out.txt",ios::in);〃读入内存中sort(stu.schoolnum)〃先对学号进行排序cin»schoolnum;search(schoolnum,i);//i表示找到的学号所在的数组中的位置cout«setw(20)«stu[i].schoolnum«,,_,,«stu[i].roomnum«n_"«stu[i].name«endl;}}voi10、dfind3(Node*stu)〃按房间号码进行折半查找{ifstreamin("out.txt",ios::in);〃读入内存中sort(stu.roomnum)〃先对学号进彳j•排序cin»roomnum;search(roomnumj);//i表示找到的学号所在的数组屮的位置cout«setw(20)«stu[i].schoolnum«"_n«stu[i].roomnum«"_"«stu[i].name«endl;}voidchange(Node*stu)〃修改学生信息{ifstreamin("out.txtn,ios::in);〃读入11、内存cin»pname;strcmp(name,,pname)==O;〃找到该学生cout«stu[j].name«nM«stu[j]・schoolnum«nH«s
6、[i].roomnum«endl;〃将录入的信息读入文件中}voidlist(Node*stu)〃该函数显示所仃信息{ifstreamin("out.txtn,ios::in);〃将信息读入内存中while(!in.eof())〃读出信息〃判断文件不为空,将文件读入内存【I〔in»stu[i].name»stu[i].schoolnum»stu[i].roomnum;n++;i++;}n—;for(m=0;m7、lnum«setw(8)«stu[mJ.roomnum«setw(20)«endl;〃读入内存的信息输出}voidfind1(Node*stu,charname[20])〃按姓名查找{ifstreamin("out.txt",ios::in);while(!in.eof())〃读入信息到指定的内存中{in»stu[i].name»stu[i].schoolnum»stu[i].roomnum;n++;i++;}n-;〃读入内存中Cin»name;Find(name,i);//在数组中的下标为i的位置cout«setw(20)«stu8、j].n9、ame«""«stu[jj.schoolnum«""«stu[j].roomnum«endl;}voidfind2(Node*stu)〃按学号码进行折半查找{ifstreamin("out.txt",ios::in);〃读入内存中sort(stu.schoolnum)〃先对学号进行排序cin»schoolnum;search(schoolnum,i);//i表示找到的学号所在的数组中的位置cout«setw(20)«stu[i].schoolnum«,,_,,«stu[i].roomnum«n_"«stu[i].name«endl;}}voi10、dfind3(Node*stu)〃按房间号码进行折半查找{ifstreamin("out.txt",ios::in);〃读入内存中sort(stu.roomnum)〃先对学号进彳j•排序cin»roomnum;search(roomnumj);//i表示找到的学号所在的数组屮的位置cout«setw(20)«stu[i].schoolnum«"_n«stu[i].roomnum«"_"«stu[i].name«endl;}voidchange(Node*stu)〃修改学生信息{ifstreamin("out.txtn,ios::in);〃读入11、内存cin»pname;strcmp(name,,pname)==O;〃找到该学生cout«stu[j].name«nM«stu[j]・schoolnum«nH«s
7、lnum«setw(8)«stu[mJ.roomnum«setw(20)«endl;〃读入内存的信息输出}voidfind1(Node*stu,charname[20])〃按姓名查找{ifstreamin("out.txt",ios::in);while(!in.eof())〃读入信息到指定的内存中{in»stu[i].name»stu[i].schoolnum»stu[i].roomnum;n++;i++;}n-;〃读入内存中Cin»name;Find(name,i);//在数组中的下标为i的位置cout«setw(20)«stu
8、j].n
9、ame«""«stu[jj.schoolnum«""«stu[j].roomnum«endl;}voidfind2(Node*stu)〃按学号码进行折半查找{ifstreamin("out.txt",ios::in);〃读入内存中sort(stu.schoolnum)〃先对学号进行排序cin»schoolnum;search(schoolnum,i);//i表示找到的学号所在的数组中的位置cout«setw(20)«stu[i].schoolnum«,,_,,«stu[i].roomnum«n_"«stu[i].name«endl;}}voi
10、dfind3(Node*stu)〃按房间号码进行折半查找{ifstreamin("out.txt",ios::in);〃读入内存中sort(stu.roomnum)〃先对学号进彳j•排序cin»roomnum;search(roomnumj);//i表示找到的学号所在的数组屮的位置cout«setw(20)«stu[i].schoolnum«"_n«stu[i].roomnum«"_"«stu[i].name«endl;}voidchange(Node*stu)〃修改学生信息{ifstreamin("out.txtn,ios::in);〃读入
11、内存cin»pname;strcmp(name,,pname)==O;〃找到该学生cout«stu[j].name«nM«stu[j]・schoolnum«nH«s
此文档下载收益归作者所有