




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、青岛农业大学理学与信息科学学院高级语言课程设计报告 设 计 题 目 宿舍管理系统 学生专业班级 班 学生姓名(学号) 设计小组其他同学姓名(学号) 指 导 教 师 完 成 时 间 设 计 地 点 2016年 12 月 06 日一、课程设计目的和任务高级语言程序设计课程设计是计算机相关专业的主要实践性教学环节。其目的在于加深对高级语言程序设计理论和基本知识的理解,掌握使用C语言进行面向过程设计的基本方法,提高运用面向过程知识解决实际问题的能力。为毕业设计和以后的工程实践打下良好的基础。宿舍管理系统:用C语言为学生宿舍管理人员编写一个宿舍管理软件。设某宿舍有:101,102,201,202四个房间
2、,每个房间可住学生=4人,存储结构:学号、姓名、房间号,按房间号有序,实现学生的入住、退房和查询,按给定学号、姓名、房号查询。二、分析与设计1.程序的基本功能:(1).实现新生入住登记(2).修改入住学生信息(3)实现退房(4)实现以姓名查询学生信息(5)实现以学号查询学生信息(6)实现以寝室号查询学生信息(7)实现按照寝室号从小到大排序(8)实现按学号从小到大排序(9)实现显示所有学生信息(10)实现退出程序并保存数据2.定义的函数及说明:此程序由11个函数构成。 Add -添加学生信息函数(姓名、学号、宿舍号、班级)Alter-修改学生信息函数Delete-删除学生信息函数Display_
3、All-显示所有学生信息函数Query_S_name -查询函数以姓名为关键字进行查询Query_S_number -查询函数以学号为关键字进行查询Query_D_number -查询函数以寝室号为关键字进行查询Save -存储函数Judge_Save -退出程序时判断是否保存函数Menu -菜单Main-主函数3.系统总框图: 三、系统实施1.源程序代码:#include#include#include#includeint dirty=0; /用来判断是否已保存操作/定义一个存储学生相关信息的结构体typedef structchar S_name10; /学生姓名 char S_numb
4、er10; /学生学号 int D_number; /学生所在寝室的宿舍号 char S_class110; /班级int Total; /学生总数Student16;int sushehao4=101,102,201,202;int count4=0;/判断学号是否与表中所存学号重复void S_number_Judge(Student S,int t)int i;for(i=1;iTotal)-1;i+)while(strcmp(Si.S_number,St.S_number)=0)/strcmp字符串比较函数,两个字符逐个比较,相等返回值为printf(学号输入失败,该学号已存在,请重新
5、输入学号!n);printf(请输入学生的学号(10个字符以内):); scanf(%s,St.S_number);getchar();i=1;/添加学生信息函数void Add(Student S)int j;int flag=1;printf(请输入学生姓名(10个字符以内):);scanf(%s,S+(S-Total).S_name);getchar();/获取换行符printf(请输入学生的学号(10个字符以内):);scanf(%s,SS-Total.S_number); getchar();S_number_Judge(S,S-Total);/判断输入的学号是否与表中所存在的学号重
6、复while(flag) printf(请输入宿舍号码:);scanf(%d,&SS-Total.D_number);for (j=0;jTotal.D_number=sushehaoj & countjTotal.D_number=sushehaoj&countj=4)printf(该宿舍已满,请重新输入n);break;getchar();printf(请输入所在班级:);scanf(%s,SS-Total.S_class1);getchar();printf(添加成功!nn);/修改学生信息函数void Alter(Student S)int i;int flag=0; /用来判断表中是
7、否存在所要修改的学生的信息char number10;printf(请输入你要修改学生的学号:); scanf(%s,number);getchar();for(i=1;iTotal;i+)if(strcmp(Si.S_number,number)=0)flag=i;if(!flag)printf(你所要修改的学生信息在表中不存在!n);elseprintf(新信息如下:n);printf(请输入学生姓名(10个字符以内):);scanf(%s,Sflag.S_name);getchar();printf(请输入学生的学号(10个字符以内):);scanf(%s,Sflag.S_number)
8、;getchar();S_number_Judge(S,flag);printf(请输入宿舍号:);scanf(%d,&Sflag.D_number);getchar(); printf(请输入床铺号码:); scanf(%s,&SS-Total.S_bednum); getchar(); printf(请输入所在班级:); scanf(%s,&SS-Total.S_class1); getchar();dirty=1;printf(修改成功!n);putchar(n);/删除学生信息void Delete(Student S)int i,j;int flag=0; /用来判断表中是否存在所要
9、删除的学生的信息char number10;printf(请输入你要删除学生的学号:);scanf(%s,number); getchar();for(i=1;iTotal;i+)if(strcmp(Si.S_number,number)=0)flag=i;if(!flag)printf(你所要删除的学生在表中不存在!);else for(i=flag;iTotal;i+) j=i+1; strcpy(Si.S_name,Sj.S_name);/字符串拷贝函数,格式: strcpy (字符数组名,字符数组名),赋值给 strcpy(Si.S_number,Sj.S_number); Si.D_
10、number=Sj.D_number; strcpy(Si.S_bednum,Sj.S_bednum); strcpy(Si.S_class1,Sj.S_class1); (S-Total)-;dirty=1;printf(删除成功!);printf(nn);/显示所有学生信息函数void Display_All(Student S)int i;printf(全体学生信息如下:n);printf(-n); /*格式头*/ printf( 房间号 床位号 学号 姓名 班级 n); printf(-n);for(i=1;iTotal;i+)printf( %-10d%-10s%-10s%-10s%
11、-10sn,Si.D_number,Si.S_bednum,Si.S_number,Si.S_name,Si.S_class1);putchar(n);/查询函数以姓名为关键字进行查询(顺序查找)void Query_S_name(Student S)int i,j=0;char name10;printf(请输入你要查找的学生的姓名(10个字符以内):);scanf(%s,name);getchar();printf(所查找学生信息如下:n);printf(tt-n); /*格式头*/ printf(tt房间号 床位号 学号 姓名 班级 n); printf(tt-n);for(i=1;iT
12、otal;i+)if(strcmp(name,Si.S_name)=0)printf(tt%-10d%-10s%-10s%-10s%-10sn,Si.D_number,Si.S_bednum,Si.S_number,Si.S_name,Si.S_class1); j=1; if(!j)printf(n查找失败,表中不存在该学生的信息!nn);/查询函数以学号为关键字进行查询(折半查找)void Query_S_number(Student S)int i,j=0;char number10;printf(请输入你要查找的学生的学号(10个字符以内):);scanf(%s,number);get
13、char();printf(所查找学生信息如下:n);printf(tt-n); /*格式头*/ printf(tt房间号 床位号 学号 姓名 班级 n); printf(tt-n);for(i=1;iTotal;i+)if(strcmp(number,Si.S_number)=0)printf(tt%-10d%-10s%-10s%-10s%-10sn,Si.D_number,Si.S_bednum,Si.S_number,Si.S_name,Si.S_class1); j=1; if(!j)printf(n查找失败,表中不存在该学生的信息!nn);/查询函数以寝室号为关键字进行查询(折半查找
14、)void Query_D_number(Student S)int i,j,m,n,base,top,mid;j=0;base=1;top=S-Total;printf(请输入你要查询的寝室号:);scanf(%d,&i);getchar();Sort_D_number(S);/将表中原数据按照寝室号从小到大排序printf(所查找寝室信息如下:n);printf(tt-n); /*格式头*/ printf(tt房间号 床位号 学号 姓名 班级 n); printf(tt-n);if(i=S1.D_number&iTotal.D_number)while(baseS-Total)break;
15、if(n0)while(Sn.D_number=i)printf(tt%-10d%-10s%-10s%-10s%-10sn,Sn.D_number,Sn.S_bednum,Sn.S_number,Sn.S_name,Sn.S_class1); n-;if(nSmid.D_number)base=mid+1;elsetop=mid-1;if(!j)printf(n查找失败,表中不存在该寝室的信息!nn);/存储函数void Save(Student S)int i=0;FILE *fp; /*定义文件指针*/char filename100; /*定义文件名*/ printf(tt输入文件名:)
16、; /*输入文件名*/ scanf(tt%s,&filename); if(fp=fopen(filename,w)=NULL) /*打开文件*/ printf(tt无法打开该文件n); system(pause); return; fprintf(fp,%dn,S-Total); /*循环写入数据*/ while(iTotal) fprintf(fp,%-10d%-10s%-10s%-10s%-10sn,Si.D_number,Si.S_bednum,Si.S_number,Si.S_name,Si.S_class1); i+; fclose(fp); /*关闭文件*/ printf(写入成
17、功!n); /*返回成功信息*/退出程序时判断是否保存函数void Judge_Save(int i,Student S)char ch;if(i)printf(表中数据已改变,是否保存后再退出(Y/N)?:);ch=getchar();getchar();while(ch!=n&ch!=N&ch!=y&ch!=Y)printf(请输入N(n)或者Y(y):);ch=getchar();getchar();if(ch=y|ch=Y)Save(S);/菜单void Menu() system(cls); /*运行前清屏*/ printf(n); printf( 青岛农业大学学生宿舍管理系统nn)
18、;printf( n); printf( 作者:明伟、李善虎、胡蒙亨n); printf(n); printf(tt=学生宿舍管理系统=n); /*菜单选择*/ printf(tt n);printf(tt 1.新生入住 n); printf(tt 2.修改入住学生信息 n); printf(tt 3.退房服务 n); printf(tt 4.以姓名查询学生信息 n); printf(tt 5.以学号查询学生信息 n); printf(tt 6.以寝室号查询学生信息 n);printf(tt 7.查询全部学生信息 n); printf(tt 0.退出程序 n); printf(tt=n); i
19、nt main()int i;Student S;S-Total=0;doMenu();printf(请选择您要运行的选项按(0-9):);scanf(%d,&i);getchar(); /获取换行符putchar(n);switch(i)case 1:Add(S); system(pause); break;case 2:Alter(S); system(pause); break;case 3:Delete(S); system(pause); break;case 4:Query_S_name(S); system(pause); break;case 5:Query_S_number(S); system(pause); break;case 6:Query_D_number(S); system(pause); break;case 7:Display_All(S); system(pause); break;case 0:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《装修设计细节解读》课件
- 外国业务开发外包协议
- 2025年广西南宁市中考物理一模试卷(含解析)
- 铁路旅客运输服务铁路旅客服务心理概述课件
- 《财务分析决策实例》课件
- 铁道机车专业教学湖南铁道左继红88课件
- 条码技术物流工程38课件
- 铁路货物运杂费货车延期使用费费率标准课件
- 铁路运输法规旅客在站台突发急性心肌梗死第页课件
- 中国人的航天梦课件
- 2025届广东省广州市普通高中高三下学期二模物理试卷含答案
- 医院综合考核试题及答案
- 2025年工会五一劳动节活动方案范文
- 光纤通信系统与网络(第5版)课件 胡庆 第1-4章 光纤通信概论-光纤通信系统及设计
- 舞台剧代理运营协议合同
- 西南政法大学自主招生个人陈述的风格与语气
- 广东省茂名市2025届高三下学期二模试题 历史 含解析
- 农作物高产栽培技术的试题及答案
- 宁夏回族自治区银川市一中2025届高三下学期模拟训练数学试题
- 湘豫名校联考2024-2025学年高三春季学期第二次模拟考试物理试题及答案
- 智能驾驶算法优化研究-全面剖析
评论
0/150
提交评论