ImageVerifierCode 换一换
格式:DOCX , 页数:52 ,大小:1.05MB ,
资源ID:2769036      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/2769036.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构课程设计之宿舍管理系统.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构课程设计之宿舍管理系统.docx

1、数据结构课程设计之宿舍管理系统#大学数据结构课程设计报告题目: 宿舍管理查询软件 院(系): 学生姓名: 班级: 学号: 起迄日期: 指导教师: 指导教师评语: 成绩: 签名: 年 月 日20102011年度 第 2 学期 一、需求分析1.问题描述: 程序设计要求:为宿舍管理人员编写一个宿舍管理查询软件 (1)采用交互工作方式 (2)建立数据文件,数据文件按关键字(姓名、学号、放号)进行排序(冒泡、选择、插入排序等任选一种) (3) 查询菜单:(用二分查找实现以下操作) 按姓名查询按学号查询按放号查询 (4)打印任一查询结果(可以连续操作) 程序分析: (1)程序采用交互工作方式,也就是说要有

2、一个人性化的操作界面。将每一 种操作赋给一个数字,通过输入不同的数字来实现不同的操作。这样使人一看就能明白如何实现不同的操作。全部使用提示选择方式,只需要输入你要使用方式的代号即可。 (2)本系统无数据信息,在使用的时候首先创建一个数据文件,开发一个录入数据的功能,使得所需要的数据存储到软件中,并暂时存在内存中,以便使用。 (3)录入和修改函数:建立相应的函数,在主函数中得到调用,以便于对学生信息的增加和修改。 (4)查询:以不同的关键字分别使用二分查找实现。 (5)为了使用方便和安全,增加了密码登录、密码锁定、退出、删除、全部删除、修改、存储为文本文档信息等功能。 2.基本功能 (1)录入学

3、生信息 (2)显示学生信息(分别按学号、宿舍号、姓名进行排序后显示并在磁盘上以“.txt”格式保存显示的信息) (3)查询学生信息(分别按学号、宿舍号、姓名进行查询并显示) (4)修改学生信息(可进行单个删除、全部删除和修改学生信息) (5)存储学生信息(存储到磁盘上,保存为“.txt”格式) (6)锁定管理系统(进入密码登录界面,以确保安全) (7)退出管理系统 3.输入输出 各种功能之间的选择采用了数字提示方式,只需要根据提示进行选择相应的数字,在录入学生信息功能中姓名为长度30以内的任意字符,学生学号和宿舍号控制住15个数字以内。 二、 概要设计1.设计思路: 所有的程序从主函数void

4、 main()开始,首先调用了load()函数进行密码登录,然后调用Menu()主菜单函数。然后在Menu()函数中又依次增加了各种功能,然后通过switch语句分别选择录入、显示、查询、修改、存储、锁定、退出功能。选择录入功能时调用Add()录入信息函数;选择显示功能时,首先调用showhead()表头显示函数,然后分别调用Sort_S_number(Student SM),Sort_D_number(Student SM),Sort_S_name(Student SM)函数根据学生学号、学生宿舍号、学生姓名关键字进行冒泡或者直接插入排序方法排序,然后显示;选择查询功能时,首先调用searc

5、hheader(),表头显示函数,然后分别调用searh_S_number(Student SM);searh_D_number(Student SM);searh_S_name(Student SM);以学生学号、学生宿舍号、学生姓名为关键字进行查找,然后调用Display_All(Student SM);显示函数;选择修改功能,在通过switch语句进行选择删除、全部删除、修改功能;存储功能进行磁盘文本文档信息存储;锁定功能调用load()登录函数进行锁定;退出功能。 大体框架设计以后,然后依次对每个功能进行详细的设计。 2.数据结构设计: 逻辑结构:线性 存储结构:链式/-线性表的静态单

6、链表表示存储结构- /定义一个存储学生相关信息的结构体 #define M 100 /链表的最大长度 typedef struct char S_name31; /学生姓名 char S_number16; /学生学号 char S_sex15;/学生性别 char D_number15; /学生所在寝室的宿舍号 int Total; /学生总数 Student,StM; 这种描述方法避免了“指针”类型的使用,在上述描述的链表中,数组的一个分量表示一个结点,同时用游标(总数Total)代替指针指示结点在数组中的相对位置。数组的第零分量可以看成头结点,其指针域指示链表的第一个结点。定义程序中用到

7、的抽象数据类型: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)初始条件:链表不存在。操作结果:录入信息进行创建新的链表 Display_All(S)初始条件:链表S已存在操作结果:打印所有S的数据searh_S_name(Student *S)初始条件:链表S已存在。操作结果:按照名字查找指定的某元素。searh_S_number(Student *S)初始条件:链表S已存在。操作结果:按照学生学号查找指定的某元素。searh_D_number(Stude

8、nt *S)初始条件:链表S已存在。操作结果:按照学生宿舍号查找指定的某元素。Sort_D_number(Student *S)初始条件:链表S已存在。操作结果:对链表S按照宿舍号的大小进行排序。Sort_S_name(Student *S)初始条件:链表S已存在。操作结果:对链表S按照学生姓名的先后进行排序。Sort_S_number(Student *S)初始条件:链表S已存在。操作结果:对链表S按照学生学号的大小进行排序。3.软件结构设计:(1)模块划分 录入学生信息 void Add(Student *S) 显示学生信息 void Display_All(Student *S) 查询学

9、生信息 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();/声明清屏函数void load();/声明登录函数(密码登录和密码锁定)void Menu();/声明主菜单函数voi

10、d searchheader();/声明查询表头函数void showhead();/声明显示方式表头函数void Sort_S_number(Student SM);/声明学生学号按从小到大的排序函数(冒泡法/直接插入法) void Sort_D_number(Student SM);/声明排序函数按照宿舍号从小到大排序(冒泡法/直接插入法)void Sort_S_name(Student SM);/按姓名排序(冒泡法/直接插入法) void searh_S_number(Student SM);/声明查询函数以学号为关键字进行查询(折半查找)void searh_D_number(Stud

11、ent SM);/声明查询函数以宿舍号为关键字进行查询(折半查找)void searh_S_name(Student SM);/查询函数以姓名为关键字进行查询(折半查找) (3)关系图 (见详细设计)三、 详细设计 1.所有用到的数据结构的基本操作实现 (1)录入学生信息 void Add(Student *S) /定义录入函数 do cout请输入第S0.Total+1SS0.Total+1.S_number;/输入学生学号 cinSS0.Total+1.S_name;/输入学生姓名 cinSS0.Total+1.S_sex;/输入学生性别 cinSS0.Total+1.D_number;/

12、输入学生宿舍号 S0.Total+;/每增加一个学生信息,总数+ cout按数字“0”退出,任意键继续录入ch; while(strcmp(ch,ch1)!=0); (2)显示所学生信息 void Display_All(Student *S) /定义显示函数 if(S0.Total0) for(i=1;i=S0.Total;i+) coutSi.S_nameSi.S_numberSi.S_sexSi.D_numberendl; else Cout无任何学生信息endl; (3)按姓名查找(折半查找)void searh_S_name(Student *S)/查询函数以姓名为关键字进行查询(折

13、半查找) coutname; Sort_S_name(S);/调用学生姓名按从小到大的冒泡排序函数 while(low=high) mid=(low+high)/2; if(strcmp(name,Smid.S_name)=0) /如果中间值和要查找的值匹配 int i=mid;j=1; for(i=mid+1;i=high;i+) /因为姓名有可能是相同的,所以继续在midhigh区间进行顺序查找 if(strcmp(name,Si.S_name)=0) coutSi.S_nameSi.S_numberendl; coutSi.S_sexSi.D_number=low;i-) /因为姓名有可能是相同的,所以继续在low-mid区间进行顺序查找 if(strcmp(name,Si.S_name)=0) coutSi.S_nameSi.S_numberendl; coutSi.S_sexSi.D_number0) low=mid+1; else high=mid-1; if(j!=1)/判断是否查到学生信息 (4) 按学号为关键字进行查询(折半查找)void searh_S_numb

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1