宿舍管理查询系统.doc_第1页
宿舍管理查询系统.doc_第2页
宿舍管理查询系统.doc_第3页
宿舍管理查询系统.doc_第4页
宿舍管理查询系统.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

课程设计报告课程设计题目: 宿舍管理查询系统 学生姓名 xxx专 业 xxx工程班 级 xxx指导教师 xxx 2015年 1月 8日东华理工大学课程设计评分表学生姓名: xxxx 班级: xxx 学号:xxx课程设计题目:宿舍管理查询系统项目内容满分实 评选题能结合所学课程知识、有一定的能力训练。符合选题要求(5人一题)10工作量适中,难易度合理10能力水平能熟练应用所学知识,有一定查阅文献及运用文献资料能力10理论依据充分,数据准确,公式推导正确10能应用计算机软件进行编程、资料搜集录入、加工、排版、制图等10能体现创造性思维,或有独特见解10成果质量总体设计正确、合理,各项技术指标符合要求。10说明书综述简练完整,概念清楚、立论正确、技术用语准确、结论严谨合理;分析处理科学、条理分明、语言流畅、结构严谨、版面清晰10设计说明书栏目齐全、合理,符号统一、编号齐全。格式、绘图、表格、插图等规范准确,符合国家标准10有一定篇幅,字符数不少于500010总 分100指导教师评语: 指导教师签名: 年 月 日实验要求 1.为宿舍管理人员编写一个宿舍管理查询软件,建立数据文件,数据文件按关键字(姓名、学号、房号)进行排序(冒泡、选择、插入排序等任选一种) 查询菜单:(用二分查找实现以下操作) A. 按姓名查询 B. 按学号查询 C. 按房号查询算法设计1.1存储结构本系统定义的存储结构采用结构体数组,结构体为:typedef struct /定义结构体成员char name20;int num; /学号和房号都为整型int room;stu;stu stud;typedef structint length; /当前长度stu *elem; /存储空间基址int listsize; /当前分配的存储容量linklist; 在此说明每个部分的算法设计说明(可以是描述算法的流程图)2.1.2程序结构图为: 姓名排序模块学号删除模块房间排序模块学号排序模块 姓名查找模块房号查找模快学号插入模块主函数学号查找模块3 详细设计#include#include#include#define M 100int change=0; /用来判断是否已保存操作/定义一个存储学生相关信息的结构体typedef structchar S_name31; /学生姓名 char S_number16; /学生学号int D_number; /学生所在寝室的宿舍号Stud;typedef struct Stud studentM; int 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 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;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(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-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=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_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);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 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(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)-; /由于读取问题,表中个数要减去/退出程序时判断是否保存函数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(按f.载入信息n);printf(按g保存退出n);printf(*n);void main()char i;St S;S=(St)malloc(sizeof(Stu);S-Total=0;doMenu();printf(请选择所要实现的功能(请输入af中的任意一个数字):);scanf(%s,&i);getchar(); /获取换行符putchar(n);switch(i)case a:Add(S); break;case b:Search(S); break;case c:Display_All(S); break;case d:Save(S); break;case e:Load(S); break;case f:Judge_Save(change,S); exit(0); break;default:pr

温馨提示

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

评论

0/150

提交评论