数据结构课程设计——宿舍管理.doc_第1页
数据结构课程设计——宿舍管理.doc_第2页
数据结构课程设计——宿舍管理.doc_第3页
数据结构课程设计——宿舍管理.doc_第4页
数据结构课程设计——宿舍管理.doc_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

东华理工大学课程设计报告课程设计题目:宿舍管理查询软件 学生姓名: 班 级:专 业:信息与计算科学指导教师: 年 月 日目录一、题目的内容及要求2二、需求分析3三、概要设计:3三、详细设计:4五、源代码:21六、运行结果及分析:29七、收获体会:32八、参考文献:33摘要数据结构课程设计的目的是,通过设计掌握数据结构课程中学到的基本理论和算法并综合运用于解决实际问题中,它是理论与实践相结合的重要过程。设计要求学会如何对实际问题定义相关数据结构,并采用恰当的设计方法和算法解决问题,同时训练学生进行复杂程序设计的技能和培养良好的程序设计习惯。宿舍管理是对每栋楼房所有宿舍的一个详细情况登记,每个宿舍在数据库里面的信息都是静态的只有里面的实住人数是动态增加的,用C+语言开发一个程序系统实现对入住学生的信息操作,方便宿舍管理人员进行管理。关键词 :C+;宿舍管理;程序设计 一、题目的内容及要求宿舍管理查询软件1)任务:为宿舍管理人员编写一个宿舍管理查询软件, 程序设计要求:A.采用交互工作方式B.建立数据文件,数据文件按关键字(姓名、学号、房号)进行排序(冒泡、选择、插入排序等任选一种)2)查询菜单: (用二分查找实现以下操作)A.按姓名查询 B.按学号查询 C.按房号查询3)打印任一查询结果(可以连续操作)二、需求分析 为了实现提高高校宿舍管理部门的工作效率,充分利用资源,减少少不必要的人力,物力,和财力的支出,方便宿舍管理部门的工作人员全面地掌握学生住宿情况等目的,为宿舍管理部门开发设计专用系统软件宿舍管理软件来进行管理学生宿舍信息,使学生宿舍信息实现标准化的管理和规范化的制度是十分必要的。 该程序应该具有以下功能:(1)学生的入住处理(2)输出学生入住信息(分别按姓名,学号,寝室号有序)(3)学生换宿舍处理(4)按给定学号,姓名,寝室号查询(5)插入新增的学生信息该程序执行的全过程大致为:(1)选择要实现的功能(2)按照提示输入所需要的条件(3)显示执行后的结果三、概要设计选择的数据结构为:#include #include #include # include #include数据结构采用链式存储,所有程序从主函数void main()开始,首先调用menu()主菜单函数,在menu()函数中依次增加各种功能,然后通过switch语句分别选择录入,显示,插入,查找,退出功能1,选择录入功能时调用shuru()函数录入信息;2选择显示功能时,首先用showheader()表头显示函数,然后分别调用sort_I(struct student stuN,int), sort_Q(struct student stuN,int), sort_X(struct student stuN,int),函数根据学生学号,学生宿舍号,学生姓名关键字进行冒泡排序,然后显示3选择查询功能时首先调用charu(stu,count)函数进行信息插入,然后调用showheader()表头显示函数,最后调用display(struct student stu) 函数显示信息并对其进行排序4选择查询功能时,首先调用menu5()显示查询的菜单,然后分别调用chazhao1(stu,count),chazhao2(stu,count),chazhao3(stu,count) ,以学生学号,姓名,宿舍号为关键字进行查找,最后调用display()显示函数5退出功能四、详细设计1.数据结构设计数据结构:线性存储结构:链式/-线性表的静态单链表表示存储结构- /定义一个存储学生相关信息的结构体# define N 20 ; /链表的最大长度void showheader();/声明显示方式表头函数 int menu(); /主菜单 int menu3(); /插入界面菜单 int menu5(); /查找界面菜单struct student int ID; /学生学号 char name15; /学生姓名 char sex; /学生性别 int roomnum; /学生所在寝室的宿舍号 float score3; char *getSex() if(sex=g) return 女; else return 男; 这种方法避免了“指针”类型的使用,在上述的链表中,数组的一个分量表示一个结点,数组的第零分量可以看成头结点,其指针域指向链表的第一个结点。定义程序中用到的抽象数据类型: 基本操作: shuru() 初始条件:链表不存在。 操作结果:录入信息进行创建新的链表 display(struct student) 初始条件:链表已存在 操作结果:打印所有的数据 chazhao1(struct student stuN,int i) 初始条件:链表已存在 操作结果:按照学号查找指定的某元素 Chazhao2(struct student stuN,int i) 初始条件:链表已存在 操作结果:按照姓名查找指定的某元素 Chazhao3(struct student stuN,int i) 初始条件:链表已存在 操作结果:按照宿舍号查找指定的某元素 sort_I(struct student stuN,int) 初始条件:链表已存在 操作结果:对链表按照学号先后进行排序 sort_X(struct student stuN,int) 初始条件:链表已存在 操作结果:对链表按照姓名先后进行排序 sort_Q(struct student stuN,int) 初始条件:链表已存在 操作结果:对链表按照宿舍号大小进行排序 charu(struct student stuN,int) 初始条件:链表已存在 操作结果:在链表中按一定的顺序插入信息2.软件结构设计2.1模块划分/录入学生信息struct student shuru(); /显示学生信息void display(struct student); /学生信息排序void sort(struct student stuN,int); /插入学生信息 void charu(struct student stuN,int); /查找学生信息void chazhao(struct student stuN,int i); /退出管理系统2.2函数原型 void main();主函数 void showheader();/声明显示方式表头函数 int menu(); /声明主菜单 int menu3(); /声明插入界面菜单 int menu5(); /声明查找界面菜单 struct student shuru(); /声明录入学生信息 void display(struct student); /声明显示学生信息 void sort_I(struct student stuN,int);/ 声明学生学号由先到后排序(冒泡法) void sort_Q(struct student stuN,int); 声明学生宿舍号从大到小排序(冒泡法)void sort_X(struct student stuN,int); 声明学生姓名由先到后排序(冒泡法) void charu(struct student stuN,int);/声明插入学生信息 void chazhao1(struct student stuN,int i); /声明学生学号查找 void chazhao2(struct student stuN,int i); /声明学生姓名查找void chazhao3(struct student stuN,int i); 声明学生宿舍号查找2.3操作实现2.3.1录入学生信息struct student shuru() struct student stu; coutstu.ID; /输入学号 ;/输入姓名 coutstu.sex;/输入性别 coutstu.roomnum; /输入宿舍号 cout是否继续?(Y/N)endl; return stu; case 1: do printf(* 学员信息录入 *n); cout请输入第count+1个学员的信息nn; stucount=shuru(); /调用函数进行信息录入 /cout是否继续(y/n); fflush(stdin); ch=getchar(); count+; while(ch=y); /用dowhile循环实现信息连续录入 break; / 2.3.2显示学生信息void display(struct student stu) /信息显示 couttstu.IDt; t; coutstu.getSex()t; coutstu.roomnumtendl; case 2: /信息显示功能 cout* 学员信息显示 *n; coutn排序后的信息如下:n ; sort_I(stu,count);/按学号的排序 sort_Q(stu,count);/ 按宿舍号的排序 sort_X(stu,count);/ 按姓名排序 showheader(); for(j=0;jcount;j+) display(stuj); /定义显示函数 break; 2.3. 3 学生信息插入case 3:/插入功能 while(choice3!=3) choice3=menu3(); /选择插入菜单界面 if(choice3=1) do cout* 学员信息插入 *n; charu(stu,count); /插入学生信息 count+; cout是否继续插入?(y/n); fflush(stdin); ch=getchar(); while(ch=y); /实现连续插入 if (choice3=2) coutnn插入学生信息后如下:n; sort_I(stu,count);/插入后按学号先后排序 sort_Q(stu,count);/插入后按宿舍号大小排序sort_X(stu,count);/插入后按姓名先后排序 showheader(); for(j=0;jcount;j+) display(stuj); break; 2.3.4学生信息排序void sort_I(struct student stuN,int i) /按关键字学号进行从小到大的冒泡排序 int j,k; struct student temp; for(j=0;ji;j+) for(k=0;k(stuk+1.ID) temp=stuk; stuk=stuk+1; stuk+1=temp; void sort_Q(struct student stuN,int i) /按关键字宿舍号号进行从小到大的冒泡排序 int j,k; struct student temp; for(j=0;ji;j+) for(k=0;k(stuk+1.roomnum) temp=stuk; stuk=stuk+1; stuk+1=temp; void sort_X(struct student stuN,int i) /按关键字姓名进行由先到后的冒泡排序 int j,k; struct student temp; for(j=0;ji;j+) for(k=0;k(stuk+1.name) temp=stuk; stuk=stuk+1; stuk+1=temp; case 2: /信息排序功能 cout* 学员信息显示 *n; coutn排序后的信息如下:n ; sort_I(stu,count);/按学号排序 sort_Q(stu,count);/按宿舍号排序 sort_X(stu,count);/按姓名排序 showheader(); for(j=0;jcount;j+) display(stuj); break;2.3.5学生信息查找void chazhao1(struct student stuN,int i) /对学号进行折半查找 int select,low=0,high=i,mid; char ch; coutt*您选择的是按照学号查找:*nn; do coutselect; while(low=high) mid=(low+high)/2; if(select=stumid.ID) break; else if(selectstumid.ID) high=mid-1; else low=mid+1; if(lowi) showheader(); display(stulow); else cout你查找的信息不存在n; fflush(stdin); ch=getchar(); while(ch=y); void chazhao2(struct student stuN,int i) /对姓名进行顺序查找 int j; char name15; char ch; coutt*您选择的是按照姓名查找:*nn; do coutname; for(j=0;ji;j+) if(strcmp(name,)=0) break; if(ji) showheader(); display(stuj); else cout你查找的信息不存在n; fflush(stdin); ch=getchar(); while(ch=y); void chazhao3(struct student stuN,int i)/对宿舍号进行折半查找 int room,low=0,high=i,mid; char ch; coutt*您选择的是按照房间号查找:*nn; do coutroom; while(low=high) mid=(low+high)/2; if(room=stumid.roomnum) break; else if(roomstumid.roomnum) high=mid-1; else low=mid+1; if(lowi) showheader(); display(stulow); else cout你查找的信息不存在n; cout是否继续查找?(y/n); fflush(stdin); ch=getchar(); while(ch=y); 2.3.6退出操作case 5:/退出 cout确认退出?(y/n); /提示是否退出 fflush(stdin); ch=getchar(); break; default: coutaa警告:您输入错误,是否重输!(y/n); fflush(stdin); ch1=getchar(); break; while(ch=n| ch1=y); coutaa警告:您的用户名或密码输入有误!是否重输?(y/n); fflush(stdin); ch=getchar(); while(ch=y); 五、源代码#include #include #include # include #include# define N 20 void showheader(); int menu(); int menu3(); int menu5(); /int quanxian(); /void SavePass(); struct student shuru(); void display(struct student); void sort_I(struct student stuN,int); void sort_Q(struct student stuN,int); void charu(struct student stuN,int); void chazhao1(struct student stuN,int i); void chazhao2(struct student stuN,int i); void chazhao3(struct student stuN,int i); struct student int ID; char name15; char sex; int roomnum; float score3; char *getSex() if(sex=g) return 女; else return 男; ; void main() struct student stuN; int count=0,m=0,j; char ch,ch1; int choice,choice3,choice4; do do ch1=n; choice=menu(); switch(choice) case 1: /信息录入功能 do cout*学生信息录入*n; cout请输入第count+1个学员的信息nn; stucount=shuru(); /cout是否继续(y/n); fflush(stdin); ch=getchar(); count+; while(ch=y); break; case 2: /信息显示功能 cout* 学员信息显示 *n; coutn排序后的信息如下:n ; sort_I(stu,count); sort_Q(stu,count); showheader(); for(j=0;jcount;j+) display(stuj); break; case 3:/插入功能 while(choice3!=3) choice3=menu3(); if(choice3=1) do cout* 学员信息插入 *n; charu(stu,count); count+; cout是否继续插入?(y/n); fflush(stdin); ch=getchar(); while(ch=y); if (choice3=2) coutnn插入学生信息后如下:n; sort_I(stu,count); sort_Q(stu,count); showheader(); for(j=0;jcount;j+) display(stuj); break; case 4:/查找功能 while(choice4!=4) choice4=menu5(); if(choice4=1) chazhao1(stu,count); if(choice4=2) chazhao2(stu,count); if(choice4=3) chazhao3(stu,count); break; case 5:/退出 cout确认退出?(y/n); fflush(stdin); ch=getchar(); break; default: coutaa警告:您输入错误,是否重输!(y/n); fflush(stdin); ch1=getchar(); break; while(ch=n| ch1=y); coutaa警告:您的用户名或密码输入有误!是否重输?(y/n); fflush(stdin); ch=getchar(); while(ch=y); struct student shuru() struct student stu; coutstu.ID; ; coutstu.sex; coutstu.roomnum; cout是否继续?(Y/N)endl; return stu; void display(struct student stu) couttstu.IDt; t; coutstu.getSex()t; coutstu.roomnumtendl; void sort_I(struct student stuN,int i) int j,k; struct student temp; for(j=0;ji;j+) for(k=0;k(stuk+1.ID) temp=stuk; stuk=stuk+1; stuk+1=temp; void sort_Q(struct student stuN,int i) int j,k; struct student temp; for(j=0;ji;j+) for(k=0;k(stuk+1.roomnum) temp=stuk; stuk=stuk+1; stuk+1=temp; void charu(struct student stuN,int k) int i,l; struct student in ; in=shuru(); for(i=0;ii;l-) stul=stul-1; stui=in; int menu() int choice; couttt*nnttt 欢迎进入学生宿舍管理查询系统 nntt*nn; coutttt*主菜单*nn; cout 学生信息录入nn; cout 学生信息显示nn; cout 插入学生信息nn; cout 查找学生信息nn; cout 退出n; coutchoice; return choice; int menu3() coutt*这里显示的是插入功能子菜单*nn; couttttt1、插入学生信息nn; couttttt2、显示插入后的学生信息nn; couttttt3、退出子菜单,返回上一级菜单nn; coutchoice3; return choice3; void chazhao1(struct student stuN,int i) int select,low=0,high=i,mid; char ch; coutt*您选择的是按照学号查找:*nn; do coutselect; while(low=high) mid=(low+high)/2; if(select=stumid.ID) break; else if(selectstumid.ID) high=mid-1; else low=mid+1; if(lowi) showheader(); display(stulow); else cout你查找的信息不存在n; fflush(stdin); ch=getchar(); while(ch=y); void chazhao2(struct student stuN,int i) int j; char name15; char ch; coutt*您选择的是按照姓名查找:*nn; do coutname; for(j=0;ji;j+) if(strcmp(name,)=0) break; if(ji) showheader(); display(stuj); else cout你查找的信息不存在n; fflush(stdin); ch=getchar(); while(ch=y); void

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论