版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
I目录TOC\o"1-2"\h\z\u一、需求分析 2二、系统分析 2三、总体设计 2四、详细设计 21、数据结构设计 22、模块接口设计 2五、软件使用说明 2图5-1学生管理系统主界面 2图5-2数据输入界面 2图5-3按床位号显示界面 2图5-4按学号显示界面 2图5-5插入记录界面 2图5-6删除记录界面 2图5-7输入完成界面 2图5-8学生信息显示界面 2图5-9查找成功界面 2设计总结 2参考文献 2致谢 2附录:源程序 2一、需求分析目前市面上流行的管理系统不少。但是,对于学校的寝室管理系统来说,需要大型的系统,而且是一个操作方便,功能实用,能满足学校寝室数据的管理及需求的系统。我们的目标就是开发一个功能实用、操作方便,简单明了的寝室管理系统。寝室管理系统对每个学生信息包含了学号、班级、姓名、寝室号等等。面对每天纷繁复杂的寝室管理工作,本管理系统很好的解决了工作人员的烦恼。相比传统的人工管理,此管理系统具有:功能全面、操作简单、检索迅速、查找方便、可靠性高、存储量大、成本低等绝对的优势。通过本管理系统,可以大大的节约工作时间,减少工作量,提高了工作效率,能帮助工作人员更加方便、高效的管理学生。二、系统分析设计一个实用的信息管理系统,能以简便高效的方式对学生宿舍信息进行管理和检索,具体功能如下:系统以菜单方式工作,要求界面友好,易于操作;录入学生宿舍信息用文件保存;能建立、修改和删除学生宿舍信息;通过输入姓名进行查询;具有信息浏览功能。三、总体设计总体设计如图3-1所示:图3-1图3-1总体设计开始输出界面选择操作选择1选择2选择3选择4选择5选择6选择7选择8选择9选择0输入记录是是显示记录否否否否否否否否否退出系统结束按床位排序显示按学号排序显示是是是是插入一个记录查找删除记录查找显示记录从文件输入写入文件保存是是是是否四、详细设计本程序主要分为九个模块,它们分别为:输入若干条记录、显示所有记录、按学号排序、按房间号排序、插入一条记录、按姓名查找,删除一条记录、查找并显示一个记录、从文件中读入数据、将所有记循环写入文件。这九个函数再通过函数调用分别得以实现。1、数据结构设计本程序中,对于学生宿舍各项详细信息的记录用了结构数组的形式,对于主要数据结构的应用如下:结构数组:typedefstruct/*定义结构体数组*/{charroomnum[4];/*房间号*/charbednum[2];/*床位号*/charnum[10];/*学号*/charname[20];/*姓名*/}Student;主函数,首先提供了程序运行时的友好界面,列出了清单,提供用户做出选择,以便决定使用系统的哪种功能。然后,通过执行多分支选择语句——switch语句,分别实现其它各个函数的调用功能。其它各个函数的功能分别如下:(1)intInput函数用于输入若干条记录
(2voidDisplay函数用于显示所有记录
(3)voidSort_by_roomnum函数用于按房间号排序并显示(4voidSort_by_num函数用于按学号排序并显示 (5)voidQuery_a_record函数用于插入记录按学号排序并显示(6)intDelete_a_record函数用于按姓名查找,删除一条记录
(7)voidQuery_a_record函数用于按姓名查找并显示一条记录
(8)intAddfromText从文件中读入数据
(9)voidWritetoText循环写入数据
2、模块接口设计本程序执行的入口是main函数,然后用switch语句实现对各个函数的调用。被调用的函数都是有形参的,函数通过调用函数实现相应的功能。其中涉及到被调用的函数有:voidmain()/*主函数*/可以调用以下的函数intInput(Studentroom[],intn)/*输入若干条记录*/voidDisplay(Studentroom[],intn)/*显示所有记录*/voidSort_by_num(Studentroom[],intn)/*按学号排序*/voidSort_by_roomnum(Studentroom[],intn)/*房间号排序*/intInsert_a_record(Studentroom[],intn)/*插入一条记录*/intDelete_a_record(Studentroom[],intn)/*按姓名查找,删除一条记录*/voidQuery_a_record(Studentroom[],intn)/*查找并显示一个记录*/intAddfromText(Studentroom[],intn)/*从文件中读入数据*/voidWritetoText(Studentroom[],intn)/*将所有记录写入文件*/五、软件使用说明程序运行如下:图5-1学生管理系统主界面进入主菜单将程序进行编译链接后生成“学生管理系统.exe”运行该文件如图5-1所示:按照提示选择“1”进行记录的输入(输入一个数据后提示是否继续输入)如图5-2所示:图5-2数据输入界面连续输入多组数据后,按“n”结束输入,提示按任意键继续,按任意键后选择“2”就能显示刚刚输入的数据信息。显示后提示按任意键继续,按任意键后选择“3”进行记录的按床位号排序并显示,如图5-3所示:图5-3按床位号显示界面显示后提示按任意键继续,按任意键后选择“4”进行记录的按学号排序并显示,如图5-4所示:图5-4按学号显示界面显示后提示按任意键继续,按任意键后选择“5”按提示步骤插入一条记录并显示,如图5-5所示:图5-5插入记录界面显示后提示按任意键继续,按任意键后选择“6”按提示步骤删除一条记录,如果没找到该学生显示如图5-6所示:图5-6删除记录界面如果有该学生显示如图5-7所示:图5-7输入完成界面显示后提示按任意键继续,按任意键后选择“7”按提示步骤查找并显示一个记录,如图5-8所示:图5-8学生信息显示界面显示后提示按任意键继续,按任意键后选择“8”按提示步骤查找原有记录文件如果找不到则出现无法打开文件的提示信息,如果有该文件则显示如图5-9所示:图5-9查找成功界面将原有文件读入程序,显示后提示按任意键继续,按任意键后选择“9”按提示步骤循环写入记录,如图5-10所示:参考文献C/C++程序设计教程(第二版),王连相,中国铁道出版社,2011C语言程序设计,潭浩强,清华大学出版社,1999C/C++程序设计上机指导与测试(第二版),王连相,中国铁道出版社,2011C程序设计题解与上机指导,潭浩强,清华大学出版社,1999C语言函数手册,机械工业出版社,1999C语言的实际应用,安徽科学技术出版社,2000附录:源程序#include<stdio.h>/*引用库函数*/#include<stdlib.h>#include<ctype.h>#include<string.h>typedefstruct/*定义结构体数组*/{charroomnum[4];/*房间号*/charbednum[2];/*床位号*/charnum[10];/*学号*/charname[20];/*姓名*/}Student;Studentroom1[1000];/*结构体数组变量*/intmenu_select()/*菜单函数*/{charc;do{system("cls");/*运行前清屏*/printf("\t\t********欢迎进入学生宿舍管理系统********\n");printf("\t\t§1.输入记录§\n");printf("\t\t§2.显示记录§\n");printf("\t\t§3.按房间号排序并显示§\n");printf("\t\t§4.按学号排序并显示§\n");printf("\t\t§5.插入一条记录按学号排序并显示§\n");printf("\t\t§6.按姓名查找,删除一条记录§\n");printf("\t\t§7查找并显示一个记录§\n");printf("\t\t§8.从文件中读入数据§\n");printf("\t\t§9.循环写入数据§\n");printf("\t\t§0.结束程序§\n");printf("\t\t****************************************\n");/*菜单选择*/printf("\t\t请选择您要运行的选项按(0-9):");c=getchar();/*读入选择*/}while(c<'0'||c>'9');return(c-'0');/*返回选择*/}intInput(Studentroom[],intn)/*输入若干条记录*/{ inti=0;charsign,x[10];/*x[10]用于清除多余数据*/while(sign!='n'&&sign!='N')/*判断*/{printf("\t\t房间号:");/*交互输入*/scanf("\t\t%s",&room[n+i].roomnum);printf("\t\t床位号:");scanf("\t\t%s",&room[n+i].bednum);printf("\t\t学号:");scanf("\t\t%s",&room[n+i].num);printf("\t\t姓名:");scanf("\t\t%s",&room[n+i].name);gets(x);/*清除多余的输入*/printf("\t\t是否继续输入?(Y/N)");scanf("\t\t%c",&sign);/*输入判断*/i++;}return(n+i);}voidDisplay(Studentroom[],intn)/*显示所有记录*/{inti;printf("\t\t\n");/*格式头*/printf("\t\t房间号床位号学号姓名\n");printf("\t\t\n");for(i=1;i<n+1;i++)/*循环输入*/{printf("\t\t%-10s%-10s%-10s%-20s\n",room[i-1].roomnum,room[i-1].bednum,room[i-1].num,room[i-1].name);if(i>1&&i%10==0)/*每十个暂停*/{ printf("\t\t\n");printf("\t\t");system("pause");printf("\t\t\n");}}printf("\t\t");system("pause");}voidSort_by_num(Studentroom[],intn)/*按学号排序*/{ inti,j,*p,*q,s;chart[10];for(i=0;i<n-1;i++)/*冒泡法排序*/for(j=0;j<n-1-i;j++)if(strcmp(room[j].num,room[j+1].num)>0){strcpy(t,room[j+1].bednum);strcpy(room[j+1].bednum,room[j].bednum);strcpy(room[j].bednum,t);strcpy(t,room[j+1].num);strcpy(room[j+1].num,room[j].num);strcpy(room[j].num,t);strcpy(t,room[j+1].name);strcpy(room[j+1].name,room[j].name);strcpy(room[j].name,t); }}voidSort_by_roomnum(Studentroom[],intn)/*按房间号排序*/{inti,j,*p,*q,s;chart[10];for(i=0;i<n-1;i++)/*冒泡法排序*/for(j=0;j<n-1-i;j++)if(strcmp(room[j].roomnum,room[j+1].roomnum)>0){strcpy(t,room[j+1].roomnum);strcpy(room[j+1].roomnum,room[j].roomnum);strcpy(room[j].roomnum,t);strcpy(t,room[j+1].bednum);strcpy(room[j+1].bednum,room[j].bednum);strcpy(room[j].bednum,t);strcpy(t,room[j+1].num);strcpy(room[j+1].num,room[j].num);strcpy(room[j].num,t);strcpy(t,room[j+1].name);strcpy(room[j+1].name,room[j].name);strcpy(room[j].name,t);}}intInsert_a_record(Studentroom[],intn)/*插入一条记录*/{ charx[100];/*清除多余输入所用*/printf("\t\t学生房间号:");/*交互式输入*/scanf("\t\t%s",&room[n].roomnum);printf("\t\t学生床位号:");scanf("\t\t%s",&room[n].bednum);printf("\t\t学生学号:");scanf("\t\t%s",&room[n].num);printf("\t\t学生姓名:");scanf("\t\t%s",&room[n].name);gets(x);n++;Sort_by_num(room,n);/*调用排序函数*/printf("\t\t插入记录成功!\n");/*返回成功信息*/return(n);}intDelete_a_record(Studentroom[],intn)/*查找并删除一条记*/{chars[20];inti=0,j;printf("\t\t输入他(她)的姓名:");/*交互式问寻*/scanf("%s",s);while(strcmp(room[i].name,s)!=0&&i<n)i++;/*查找判断*/if(i==n){printf("\t\t对不起没找到该学生!\n");/*返回失败信息*/return(n);}for(j=i;j<n-1;j++)/*删除操作*/{strcpy(room[j].roomnum,room[j+1].roomnum);strcpy(room[j].bednum,room[j+1].bednum);strcpy(room[j].num,room[j+1].num);strcpy(room[j].name,room[j+1].name);}printf("\t\t删除记录成功!\n");/*返回成功信息*/return(n-1);}voidQuery_a_record(Studentroom[],intn)/*查找显示一个记录*/{chars[20];inti=0;printf("\t\t输入他(她)的姓名:");/*交互式输入*/scanf("\t\t%s",&s);while(strcmp(room[i].name,s)!=0&&i<n)i++;/*查找判断*/if(i==n){printf("\t\t对不起没找到该学生!\n");/*输入失败信息*/return;}printf("\t\t他(她)的房间号:%s\n",room[i].roomnum);/*输出该学生信息*/printf("\t\t他(她)的床位号:%s\n",room[i].bednum);printf("\t\t他(她)的学号:%s\n",room[i].num);}intAddfromText(Studentroom[],intn)/*从文件中读入数据*/{inti=0,num;FILE*fp;/*定义文件指针*/charfilename[20];/*定义文件名*/printf("\t\t输入文件名:");scanf("\t\t%s",&filename);/*输入文件名*/if((fp=fopen(filename,"rb"))==NULL)/*打开文件*/{printf("\t\t无法打开该文件\n");/*打开失败信息*/printf("\t\t");system("pause");return(n);}fscanf(fp,"%d",&num);/*读入总记录量*/while(i<num)/*循环读入数据*/{fscanf(fp,"%s%s%s%s",room[n+i].roomnum,room[n+i].bednum,room[n+i].num,room[n+i].name);i++;}n+=num;fclose(fp);/*关闭文件*/printf("\t\t读入成功!\n");printf("\t\t");system("pause");return(n);}voidWritetoText(Studentroom[],intn)/*将所有记录写入文件*/{inti=0;FILE*fp;/*定义文件指针*/charfilename[100];/*定义文件名*/printf("\t\t循环写入数据\n");/*输入文件名*/printf("\t\t输入文件名:");scanf("\t\t%s",&filename);if((fp=fopen(filename,"w"))==NULL)/*打开文件*/{printf("\t\t无法打开该文件\n");system("pause");return;}fprintf(fp,"%d\n",n);/*循环写入数据*/while(i<n){fprintf(fp,"%-10s%-10s%-10s%-10s\n",room[i].roomnum,room[i].bednum,room[i].num,room[i].name);i++;}fclose(fp);/*关闭文件*/printf("写入成功!\n");/*返回成功信息*/}voidmain()/*主函数*/{intn=0;for(;;){switch(menu_select())/*选择判断*/{case1:printf("\t\t请输入记录\n");/*输入若干条记录*/n=Input(room1,n);break;case2:printf("\t\t显示记录\n");/*显示所有记录*/Display(room1,n);break;case3:printf("\t\t按房间号排序并显示\n");Sort_by_roomnum(room1,n);/*按房间号排序*/printf("\t\t排序成功!\n"); Display(room1,n);printf("\t\t");break;case4:printf("\t\t按学号排序并显示\n");Sort_by_num(room1,n);/*按学号排序*/printf("\t\t\t排序成功!\n");Display(room1,n);printf("\t\t");break;case5:printf("\t\t插入一条记录按学号排序并显示\n");n=Insert_a_record(room1,n);/*插入一条记录*/Display(room1,n);printf("\t\t");break;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年焦炭采购与销售合同
- 大班秋天语言教案分析
- 股权转让协议书模板集锦8篇
- 保健工作计划模板集合八篇
- 初一年级上册语文教学计划
- 大学生毕业自我鉴定(15篇)
- 小学体育个人工作计划
- 酒店前台的实习报告范文十篇
- 做教师的心得体会
- 业务员半年工作总结15篇
- 云南省昭通市巧家县2023-2024学年五年级上学期期末考试语文试卷
- 有趣的英语小知识讲座
- 2024年拟攻读博士学位期间研究计划
- 飞机装配设计课程设计说明书
- 国际知名高科技园区发展及对我国的经验借鉴
- 财政投资评审项目造价咨询服务方案审计技术方案
- DQE工作指导文档
- 2023年民兵冬训总结
- 北京市海淀清华附中2023-2024学年生物高一第一学期期末考试试题含解析
- 从 2023-上传通知测试
- 中广核研究院热室设施建设项目 环境影响报告书(建造阶段)
评论
0/150
提交评论