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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

实验5宿舍管理系统.docx

1、实验5宿舍管理系统实验报告课程名称数据结构实验成绩实验名称查找和排序方法的综合性、设计性、创新性实验学号B姓名 班级B日期12.5.21-22实验目的: 掌握数据结构的两种基本技术:查找和排序,根据实际情况选择效率较高的算法解决应用问题。实验条件:计算机一台,visual C+6.0实验内容与步骤:1. 问题描述为宿舍管理人员设计一个宿舍管理查询系统, 程序采用交互工作方式,完成下列功能:建立合适的数据结构作为查找表并输入数据;数据分别按关键字姓名、学号、房号进行排序(所学排序算法任选一种效率较高的算法);设计查询菜单,按指定关键字姓名、学号、房号进行查询并输出结果,要求查询采用效率较高的算法

2、实现;可以连续查询;2. 数据结构类型定义typedef struct char S_name31; /学生姓名 char S_number16; /学生学号 int D_number; /学生所在寝室的宿舍号Stud;typedef struct Stud studentM; int Total; /学生总数Stu,*St;3. 模块划分(1) 添加学生信息:void Add(St S)(2) 判断学生学号是否重复:void S_number_Judge(St S,int t)(3) 修改学生信息:void Alter(St S)(4) 删除学生信息:void Delete(St S)(5)

3、 显示所有学生信息:void Display_All(St S)(6) 按照寝室号从小到大排序:void Sort_D_number(St S)(7) 按照学号从小到大排序:void Sort_S_number(St S)(8) 以姓名为关键字查找:void Query_S_name(St S)(9) 以学号为关键字进行查找:oid Query_S_number(St S)(10) 以寝室号为关键字进行查找:void Query_D_number(St S)(11) 查找操作二级菜单:void Search(St S)(12) 存储函数:void Save(St S)(13) 加载函数:voi

4、d Load(St S)(14) 判断是否存储过:void Judge_Save(int i,St S)(15) 一级菜单:void Menu()(16) 主函数:void main()4. 详细设计#include#include#include#define M 100int change=0; /用来判断是否已保存操作/定义一个存储学生相关信息的结构体typedef struct char S_name31; /学生姓名 char S_number16; /学生学号 int D_number; /学生所在寝室的宿舍号Stud;typedef struct Stud studentM; i

5、nt Total; /学生总数Stu,*St;/判断学号是否与表中所存学号重复void S_number_Judge(St S,int t) int i; for(i=1;iTotal)-1;i+) if(i!=t) while(strcmp(S-studenti).S_number,(S-studentt).S_number)=0)&(i!=t) printf(学号输入失败,该学号已存在,请重新输入学号!n); printf(请输入学生的学号(15个字符以内):); scanf(%s,(S-studentt).S_number); getchar(); i=1; /添加学生信息函数void

6、Add(St S) printf(请输入学生姓名(30个字符以内):); scanf(%s,(S-student+(S-Total).S_name); getchar();/获取换行符 printf(请输入学生的学号(15个字符以内):); scanf(%s,(S-studentS-Total).S_number); getchar(); S_number_Judge(S,S-Total);/判断输入的学号是否与表中所存在的学号重复 printf(请输入宿舍号码:); scanf(%d,&(S-studentS-Total).D_number); getchar(); change=1; pr

7、intf(添加成功!nn);/修改学生信息函数void Alter(St S) int i; int flag=0; /用来判断表中是否存在所要修改的学生的信息 char name20; printf(请输入你要修改学生的姓名:); scanf(%s,name); getchar(); for(i=1;iTotal;i+) if(strcmp(S-studenti).S_name,name)=0) flag=i; if(!flag) printf(你所要修改的学生信息在表中不存在!n); else printf(新信息如下:n); printf(请输入学生姓名(30个字符以内):); scan

8、f(%s,(S-studentflag).S_name); getchar(); printf(请输入学生的学号(15个字符以内):); scanf(%s,(S-studentflag).S_number); getchar(); S_number_Judge(S,flag); printf(请输入宿舍号:); scanf(%d,&(S-studentflag).D_number); getchar(); change=1; printf(修改成功!n); putchar(n);/删除学生信息void Delete(St S) int i,j; int flag=0; /用来判断表中是否存在所

9、要删除的学生的信息 char name20; printf(请输入你要删除学生的姓名:); scanf(%s,name); getchar(); for(i=1;iTotal;i+) if(strcmp(S-studenti).S_name,name)=0) flag=i; if(!flag) printf(你所要删除的学生在表中不存在!); else for(i=flag;iTotal;i+) j=i+1; strcpy(S-studenti).S_name,(S-studentj).S_name); strcpy(S-studenti).S_number,(S-studentj).S_nu

10、mber); (S-studenti).D_number=(S-studentj).D_number; (S-Total)-; change=1; printf(删除成功!); printf(nn);/显示所有学生信息函数void Display_All(St S) int i; printf(全体学生信息如下:n); printf(学生姓名 学生学号 宿舍号n); for(i=1;iTotal;i+) printf(%-20s%-15s%-5dn,(S-studenti).S_name,(S-studenti).S_number,(S-studenti).D_number); putchar

11、(nn);/排序函数按照寝室号从小到大排序(冒泡法)void Sort_D_number(St S) int i,j,t; char name30; char number15; for(i=1;iTotal;i+) for(j=i;jTotal;j+) if(S-studenti).D_number(S-studentj).D_number) strcpy(name,(S-studenti).S_name); strcpy(number,(S-studenti).S_number); t=(S-studenti).D_number; strcpy(S-studenti).S_name,(S-

12、studentj).S_name); strcpy(S-studenti).S_number,(S-studentj).S_number); (S-studenti).D_number=(S-studentj).D_number; strcpy(S-studentj).S_name,name); strcpy(S-studentj).S_number,number); (S-studentj).D_number=t; /排序函数按照学号从小到大排序(冒泡法)void Sort_S_number(St S) int i,j,t; char name30; char number15; for(i

13、=1;iTotal;i+) for(j=i;jTotal;j+) if(strcmp(S-studenti).S_number,(S-studentj).S_number)0) strcpy(name,(S-studenti).S_name); strcpy(number,(S-studenti).S_number); t=(S-studenti).D_number; strcpy(S-studenti).S_name,(S-studentj).S_name); strcpy(S-studenti).S_number,(S-studentj).S_number); (S-studenti).D

14、_number=(S-studentj).D_number; strcpy(S-studentj).S_name,name); strcpy(S-studentj).S_number,number); (S-studentj).D_number=t; /查询函数以姓名为关键字进行查询(顺序查找)void Query_S_name(St S) int i,j=0; char name31; printf(请输入你要查找的学生的姓名(30个字符以内):); scanf(%s,name); getchar(); printf(所查找学生信息如下:n); printf(学生姓名 学生学号 宿舍号n);

15、 for(i=1;iTotal;i+) if(strcmp(name,(S-studenti).S_name)=0) printf(%-20s%-15s%-5dn,(S-studenti).S_name,(S-studenti).S_number,(S-studenti).D_number); j=1; if(!j) printf(n查找失败,表中不存在该学生的信息!nn);/查询函数以学号为关键字进行查询(折半查找)void Query_S_number(St S) int flag,top,bottom,mid; char number15; flag=0; bottom=1; top=S

16、-Total; printf(请输入你要查找学生的学号:); scanf(%s,number); getchar(); Sort_S_number(S); /将表中原数据按照学号从小到大排序 printf(所查找学生信息如下:n); printf(学生姓名 学生学号 宿舍号n); if(strcmp(number,(S-student1).S_number)=0&strcmp(number,(S-studentS-Total).S_number)=0) while(bottomstudentmid).S_number)=0) printf(%-20s%-15s%-5dn,(S-studentm

17、id).S_name,(S-studentmid).S_number,(S-studentmid).D_number); putchar(n); flag=1; break; else if(strcmp(number,(S-studentmid).S_number)0) bottom=mid+1; else top=mid-1; if(!flag) printf(n查找失败,表中不存在该学生的信息!nn);/查询函数以寝室号为关键字进行查询(折半查找)void Query_D_number(St S) int i,j,m,n,base,top,mid; j=0; base=1; top=S-

18、Total; printf(请输入你要查询的寝室号:); scanf(%d,&i); getchar(); Sort_D_number(S);/将表中原数据按照寝室号从小到大排序 printf(所查找寝室信息如下:n); printf(学生姓名 学生学号 宿舍号n); if(i=(S-student1).D_number&istudentS-Total).D_number) while(basestudentmid).D_number) m=mid; n=mid-1; while(S-studentm).D_number=i) printf(%-20s%-15s%-5dn,(S-student

19、m).S_name,(S-studentm).S_number,(S-studentm).D_number); m+; if(mS-Total) break; if(n0) while(S-studentn).D_number=i) printf(%-20s%-15s%-5dn,(S-studentn).S_name,(S-studentn).S_number,(S-studentn).D_number); n-; if(n(S-studentmid).D_number) base=mid+1; else top=mid-1; if(!j) printf(n查找失败,表中不存在该寝室的信息!n

20、n);void Search(St S) int j; printf(*n); printf(*按1按姓名查找*n); printf(*按2按学号查找*n); printf(*按3按寝室号查找*n); printf(*n); do printf(请输入信息n); scanf(%d,&j); getchar(); putchar(n); switch(j) case 1 : Query_S_name(S); break; case 2 : Query_S_number(S); break; case 3 : Query_D_number(S); break; default: printf(选择

21、错误:请在选项之间选择!nn); break; while (j!=1)&(j!=2)&(j!=3);/存储函数void Save(St S) Stud Std; int i; int flag1=0,flag2=0; /判断存储是否成功 FILE *fp; if(fp=fopen(Dorm_Manage,w)=NULL) printf(打开文件失败!nn); flag1=1; exit(0); /结束程序 for(i=1;iTotal;i+) if(fwrite(&S-studenti,sizeof(Std),1,fp)!=1) printf(数据写入错误nn); flag2=1; exit

22、(0); if(!flag1&!flag2) printf(数据存储成功!nn); change=0; fclose(fp);/加载记录函数void Load(St S) Stud Std; FILE *fp; if(fp=fopen(Dorm_Manage,r)=NULL) printf(打开文件失败!nn); exit(0); while(!feof(fp) fread(&S-student+(S-Total),sizeof(Std),1,fp); fclose(fp); printf(加载数据成功!nn); (S-Total)-; /由于读取问题,表中个数要减去/退出程序时判断是否保存函

23、数void Judge_Save(int i,St S) if(i) Save(S); exit(0);/菜单void Menu() /菜单 printf(欢迎进入宿舍管理系统nn); printf(*菜单*n); printf(按a.添加学生信息n); printf(按b.修改学生信息n); printf(按c.删除学生信息n); printf(按d.查询学生信息n); printf(按e.显示所有学生信息n); printf(按f.保存信息n); printf(按g.载入信息n); printf(按h保存退出n); printf(*n);void main() char i; St S;

24、S=(St)malloc(sizeof(Stu); S-Total=0; do Menu(); printf(请选择所要实现的功能(请输入ah中的任意一个数字):); scanf(%s,&i); getchar(); /获取换行符 putchar(n); switch(i) case a:Add(S); break; case b:Alter(S); break; case c:Delete(S); break; case d:Search(S); break; case e:Display_All(S); break; case f:Save(S); break; case g:Load(S); break; case h:Judge_Save(change,S);

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

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