1、为宿舍管理人员编写一个宿舍管理查询软件 (1)采用交互工作方式 (2)建立数据文件,数据文件按关键字(姓名、学号、放号)进行排序(冒泡、选择、插入排序等任选一种) (3) 查询菜单:(用二分查找实现以下操作) 按姓名查询按学号查询按放号查询 (4)打印任一查询结果(可以连续操作) 程序分析: (1)程序采用交互工作方式,也就是说要有一个人性化的操作界面。将每一 种操作赋给一个数字,通过输入不同的数字来实现不同的操作。这样使人一看就能明白如何实现不同的操作。全部使用提示选择方式,只需要输入你要使用方式的代号即可。 (2)本系统无数据信息,在使用的时候首先创建一个数据文件,开发一个录入数据的功能,
2、使得所需要的数据存储到软件中,并暂时存在内存中,以便使用。 (3)录入和修改函数:建立相应的函数,在主函数中得到调用,以便于对学生信息的增加和修改。 (4)查询:以不同的关键字分别使用二分查找实现。 (5)为了使用方便和安全,增加了密码登录、密码锁定、退出、删除、全部删除、修改、存储为文本文档信息等功能。 2.基本功能 (1)录入学生信息 (2)显示学生信息(分别按学号、宿舍号、姓名进行排序后显示并在磁盘上以“.txt”格式保存显示的信息) (3)查询学生信息(分别按学号、宿舍号、姓名进行查询并显示) (4)修改学生信息(可进行单个删除、全部删除和修改学生信息) (5)存储学生信息(存储到磁盘
3、上,保存为“.txt”格式) (6)锁定管理系统(进入密码登录界面,以确保安全) (7)退出管理系统 3.输入输出 各种功能之间的选择采用了数字提示方式,只需要根据提示进行选择相应的数字,在录入学生信息功能中姓名为长度30以内的任意字符,学生学号和宿舍号控制住15个数字以内。 二、 概要设计1.设计思路: 所有的程序从主函数void main()开始,首先调用了load()函数进行密码登录,然后调用Menu()主菜单函数。然后在Menu()函数中又依次增加了各种功能,然后通过switch语句分别选择录入、显示、查询、修改、存储、锁定、退出功能。选择录入功能时调用Add()录入信息函数;选择显示
4、功能时,首先调用showhead()表头显示函数,然后分别调用Sort_S_number(Student SM),Sort_D_number(Student SM),Sort_S_name(Student SM)函数根据学生学号、学生宿舍号、学生姓名关键字进行冒泡或者直接插入排序方法排序,然后显示;选择查询功能时,首先调用searchheader(),表头显示函数,然后分别调用searh_S_number(Student SM);searh_D_number(Student SM);searh_S_name(Student SM);以学生学号、学生宿舍号、学生姓名为关键字进行查找,然后调用Di
5、splay_All(Student SM);显示函数;选择修改功能,在通过switch语句进行选择删除、全部删除、修改功能;存储功能进行磁盘文本文档信息存储;锁定功能调用load()登录函数进行锁定;退出功能。 大体框架设计以后,然后依次对每个功能进行详细的设计。 2.数据结构设计: 逻辑结构:线性 存储结构:链式/-线性表的静态单链表表示存储结构- /定义一个存储学生相关信息的结构体 #define M 100 /链表的最大长度 typedef struct char S_name31; /学生姓名 char S_number16; /学生学号 char S_sex15;/学生性别 char
6、 D_number15; /学生所在寝室的宿舍号 int Total; /学生总数 Student,StM; 这种描述方法避免了“指针”类型的使用,在上述描述的链表中,数组的一个分量表示一个结点,同时用游标(总数Total)代替指针指示结点在数组中的相对位置。数组的第零分量可以看成头结点,其指针域指示链表的第一个结点。定义程序中用到的抽象数据类型:ADT List 数据对象:D=ai| ai ElemSet,i=1,2,3,n,n0数据关系:R1=| ai-1,ai D,i=1,2,3,,n基本操作:Add(Student *S)初始条件:链表不存在。操作结果:录入信息进行创建新的链表 Dis
7、play_All(S)链表S已存在打印所有S的数据searh_S_name(Student *S)链表S已存在。按照名字查找指定的某元素。searh_S_number(Student *S)按照学生学号查找指定的某元素。searh_D_number(Student *S)按照学生宿舍号查找指定的某元素。Sort_D_number(Student *S)对链表S按照宿舍号的大小进行排序。Sort_S_name(Student *S)对链表S按照学生姓名的先后进行排序。Sort_S_number(Student *S)对链表S按照学生学号的大小进行排序。3.软件结构设计:(1)模块划分 录入学生信
8、息 void Add(Student *S) 显示学生信息 void Display_All(Student *S) 查询学生信息 void search(Student *S) 修改学生信息 void Exchange(Student *S) 存储学生信息 锁定管理系统 void load() 退出管理系统 (2)函数原型 Void main();/主函数void Add(Student SM);/声明录入学生信息函数void Display_All(Student SM); /声明显示函数void Exchangehead();/声明修改学生信息表头函数(删除和修改)void Clear(
9、);/声明清屏函数void load();/声明登录函数(密码登录和密码锁定)void Menu();/声明主菜单函数void searchheader();/声明查询表头函数void showhead();/声明显示方式表头函数void Sort_S_number(Student SM);/声明学生学号按从小到大的排序函数(冒泡法/直接插入法) void Sort_D_number(Student SM);/声明排序函数按照宿舍号从小到大排序(冒泡法/直接插入法)void Sort_S_name(Student SM);/按姓名排序(冒泡法/直接插入法) void searh_S_numbe
10、r(Student SM);/声明查询函数以学号为关键字进行查询(折半查找)void searh_D_number(Student SM);/声明查询函数以宿舍号为关键字进行查询(折半查找)void searh_S_name(Student SM);/查询函数以姓名为关键字进行查询(折半查找) (3)关系图 (见详细设计)三、 详细设计 1.所有用到的数据结构的基本操作实现 void Add(Student *S) /定义录入函数 do cout请输入第S0.Total+1SS0.Total+1.S_number;/输入学生学号SS0.Total+1.S_name;/输入学生姓名SS0.Tot
11、al+1.S_sex;/输入学生性别SS0.Total+1.D_number;/输入学生宿舍号 S0.Total+;/每增加一个学生信息,总数+ cout0) for(i=1;i=S0.Total;i+) coutSi.S_nameSi.S_numberSi.S_sexSi.D_number else Coutname; Sort_S_name(S);/调用学生姓名按从小到大的冒泡排序函数 while(low=low;i-) /因为姓名有可能是相同的,所以继续在low-mid区间进行顺序查找 if(strcmp(name,Si.S_name)=0) cout0) low=mid+1; else high=mid-1; if(j!=1)/判断是否查到学生信息 (4) 按学号为关键字进行查询(折半查找)void searh_S_numb
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1