c语言课程设计宿舍管理系统(共23页).doc
精选优质文档-倾情为你奉上 面向过程程序设计课 程 设 计 课程名称:学生宿舍管理系统 院 系: 班 级: 学 号: 姓 名: 指导教师: 目录1. 引言.22. 课程设计任务书.3a) 设计目的b) 设计要求c) 课程设计报告装订内容及顺序d) 设计题目3. 程序设计说明书.34. 课程设计目的.4a) 目的b) 实验内容c) 需求分析5. 程序基本框架结构图.56. 程序测试.67. 课程设计总结.88. 附录(源代码).18 引言学生宿舍管理系统对于一个学校来说是必不可少的组成部分。目前好多学校还停留在宿舍管理人员手工记录数据的最初阶段,手工记录对于规模小的学校来说还勉强可以接受,但对于学生信息量比较庞大,需要记录存档的数据的高校来说,人工记录是相当麻烦的。而且当查找某条记录时,由于数据量庞大,还只能靠人工一条条去查找,这样不但麻烦还浪费了许多时间,效率也比较低。当今社会是飞速进步的而世界,原始的记录方式已经被社会所淘汰,计算机化管理正是适应时代的产物。信息世界永远不会是一个平静的世界,当一种技术不能满足需求时,就会有新的技术诞生并取代旧技术。21世纪的今天,信息社会占着主流地位,计算机在各行各业中的运用已经得到普及,自动化、信息化的管理越来越广泛应用于各个领域。故随着宿舍需要管理的信息快速增长,建立一个宿舍管理系统可使宿舍管理人员的管理工作系统化、规范化、自动化,大大提高管理效率。课程设计任务书一、设计目的通过本次课程设计使学生进一步加深对C语言课程内容的理解,初步掌握一般应用程序的开发方法和步骤,进一步了解与掌握C语言的编程方法和技巧,提高学生用C语言解决实际问题的能力。二、设计要求1、认真查阅参考书、资料2、遵守课程设计时间安排3、按时上机,认真调试程序4、认真完成课程设计报告三、课程设计报告装订内容及顺序1、课程设计封皮2、目录3、引言4、课程设计任务书5、程序设计说明书 6、程序设计目的7、程序基本框架结构图8、课程设计总结与心得四、设计题目湖南工业大学学生宿舍管理系统 程序设计说明书该课程设计的课题是湖南工业大学学生宿舍管理系统。这个系统主要是实现对学生信息的输入,输出,追加,查询,修改,统计及删除等功能,完成对学生宿舍信息的管理。在学生宿舍管理系统中主要有输入、显示、追加、查询、修改、统计、删除及退出7大功能。设计首页界面使其美观。课程设计目的一、目的1.通过本次课程设计,强化上级动手能力,在理论和实践的基础上进一步巩固 C语言程序设计课程的学习内容,掌握工程软件设计的基本方法。 2.熟悉C语言的基本内容从而掌握C语言的基本知识以及了解C程序的基本编写及运行。 3.了解程序的分模块编写并对程序的每个模块进行详细的设计并且能理解一般C语言编写的程序。 4.熟悉C程序设计的开发环境及C程序的调试过程。二、实验内容我设计的是“学生宿舍管理系统”,主要是针对住宿学生个人信息的管理,适用对象主要是学校,以方便学校对住宿学生的管理。包括学生的姓名、学号、性别、专业、班级等等。在编写过程中主要运用C语言的基本知识有:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的调用与使用)等。三、需求分析 该程序是由C语言编写的一个宿舍管理查询软件,本程序在Microsoft Visual C+ 6.0下运行,其主要功能是实现对学生信息的录入、添加、删除、修改、查询、统计。其中查询可以分别以姓名、学号、宿舍号为关键字查询学生信息。统计可以分别以学号、宿舍号、性别、班级、专业为关键字进行统计。专心-专注-专业程序基本框架结构图 学生宿舍管理系统 数据输入退出系统数据删除数据 统计数据修改数据查询数据追加数据显示返回按楼寝查询按楼号查询按姓名查询按学号查询源代码清单#include <stdio.h>#include <stdlib.h>#include <string.h>#include <ctype.h>#include <conio.h>#define M 10000typedef struct sushechar num10;char name20;char sex5;char class110;char lh10;char qsh10;char tel15; XSSS;XSSS persM;int n=0;void cx1();void cx2();void cx3();void cx4();void tj1();void tj2();void tj3();int isnum(char *);void zm();void load();void modify();void input();void save();void list();void zm1();void zm3();void explain();void dele();main()char c;while(1)system("cls");zm();c=getch();switch(c)case '1': load(); input(); save(); break;case '2': load(); modify(); save(); break;case '3': load(); input(); save();break;case '4':load(); list(); save();break;case '5':load(); zm1(); save();break;case '6':load(); zm3(); save();break;case '7':load(); dele(); save();break;case '8':load(); explain(); save();break;case '0': exit(0);default : printf("n*输入错误,请重新输入!*n"); void zm()printf(" *n");printf(" * *n");printf(" * *n");printf(" * 湖 南 工 业 大 学 学 生 宿 舍 管 理 系 统 *n");printf(" * *n");printf(" * *n");printf(" *n");printf("nnn");printf(" 1. 录入信息n");printf(" 2. 修改信息n");printf(" 3. 追加信息n");printf(" 4. 显示信息n");printf(" 5. 查询信息n");printf(" 6. 统计信息n");printf(" 7. 删除信息n");printf(" 8. 版权信息n");printf(" 0. 退出本程序n");void zm1()char c;system("cls");printf(" *n");printf(" * *n");printf(" * *n");printf(" * 湖 南 工 业 大 学 学 生 宿 舍 管 理 系 统 *n");printf(" * *n");printf(" * *n");printf(" *n");printf("nnn");printf(" 1. 按学号查询n");printf(" 2. 按姓名查询n");printf(" 3. 按楼号查询n");printf(" 4. 按楼号+寝室号查询n");printf(" 0. 结束查询返回上层n");c=getch();switch(c)case '1': cx1(); break;case '2': cx2(); break;case '3': cx3();break;case '4': cx4();break;case '0': return ;default : printf("输入错误,按任意键返回!"); getch(); return ;void zm3()char c;system("cls");printf(" *n");printf(" * *n");printf(" * *n");printf(" * 湖 南 工 业 大 学 学 生 宿 舍 管 理 系 统 *n");printf(" * *n");printf(" * *n");printf(" *n");printf("nnn");printf(" 1. 按班级统计n");printf(" 2. 按楼号统计n");printf(" 3. 按楼号+寝室号统计n");printf(" 0. 结束统计返回上层n");c=getch();switch(c)case '1': tj1(); break;case '2': tj2(); break;case '3': tj3();break;case '0': return ;default : printf("输入错误,按任意键返回!"); getch(); return ;void cx1()char name10;int i,m; system("cls");printf("nnn*按学号查询*n");printf("n 请输入要查询的学号:");scanf("%s",name);m=0;for(i=0;i<n;i+)if(strcmp(persi.num,name)=0 ) printf("#Record 学号 姓名 性别 班级 楼号 寝室号 本人电话n");printf("%7d %-8s%-8s%-6s%-8s%-8s%-8s%-8sn",i+1,persi.num,persi.name,persi.sex,persi.class1,persi.lh,persi.qsh,persi.tel);m+;if(m=0) printf("n 查无此人!n");printf("press any key continuen ");getch(); void cx2()char name20;int i,m; system("cls");printf("nnn*按姓名查询*n");printf("n 请输入姓名:");scanf("%s",name);m=0;for(i=0;i<n;i+)if(strcmp(persi.name,name)=0 ) printf("#Record 学号 姓名 性别 班级 楼号 寝室号 本人电话n");printf("%7d %-8s%-8s%-6s%-8s%-8s%-8s%-8sn",i+1,persi.num,persi.name,persi.sex,persi.class1,persi.lh,persi.qsh,persi.tel);m+;if(m=0) printf("n 查无此人!n");printf("press any key continuen ");getch();void cx3()char name10;int i,m; system("cls");printf("nnn*按楼号查询*n");printf("n 请输入要查询的楼号:");scanf("%s",name);m=0;for(i=0;i<n;i+)if(strcmp(persi.lh,name)=0 ) printf("#Record 学号 姓名 性别 班级 楼号 寝室号 本人电话n");printf("%7d %-8s%-8s%-6s%-8s%-8s%-8s%-8sn",i+1,persi.num,persi.name,persi.sex,persi.class1,persi.lh,persi.qsh,persi.tel);m+;if(m=0) printf("n 文件中没有该楼的学生数据!n");printf("press any key continuen ");getch();void cx4()char name10;char num10;int i,m; system("cls");printf("nnn*按楼号+寝室号查询*n");printf("n 请输入要查询的楼号:");scanf("%s",name);printf("n 请输入要查询的寝室号:");scanf("%s",num);m=0;for(i=0;i<n;i+)if(strcmp(persi.lh,name)=0 && strcmp(persi.qsh,num)=0) printf("#Record 学号 姓名 性别 班级 楼号 寝室号 本人电话n");printf("%7d %-8s%-8s%-6s%-8s%-8s%-8s%-8sn",i+1,persi.num,persi.name,persi.sex,persi.class1,persi.lh,persi.qsh,persi.tel);m+;if(m=0) printf("n 文件中没有符合条件的数据!n");printf("press any key continuen ");getch(); void load()FILE *fp; n=0;if(fp=fopen("xsss.txt","rb")=NULL)printf("The file is not found!nplease append new data!n");return ;while(fread(&persn,sizeof(XSSS),1,fp)!=0) /*(!feof(fp)*/n+;printf("数据导入成功 !n");fclose(fp);void save()FILE *fp; int i=0;if(fp=fopen("xsss.txt","wb")=NULL)printf("The file is not found!nplease append new data!n");return ;for(i=0;i<n;i+)fwrite(&persi,sizeof(XSSS),1,fp);fclose(fp);printf("数据已保存n");void input()XSSS a; while(1)system("cls");printf("nnn* 输 入 信 息 *n");printf("n 请输入学生住宿信息n");printf("学号:");scanf("%s",a.num);printf("姓名:");scanf("%s",a.name);printf("性别:");scanf("%s",a.sex);printf("班级:");scanf("%s",a.class1);printf("楼号:");scanf("%s",a.lh); printf("寝室号:");scanf("%s",a.qsh);printf("本人电话:");scanf("%s",a.tel);if(isnum(a.tel)=0)printf("输入的电话号码错误,系统将以 '0000' 代替!n ");strcpy(a.tel,"0000");persn+=a;printf("是否继续录入(Y/N)?");if (toupper(getch()='N')break;void list()int i;system("cls");printf("nnn*显示所有个人信息*n");for(i=0;i<n;i+)printf("#Record 学号 姓名 性别 班级 楼号 寝室号 本人电话n");printf("%7d %-8s%-8s%-6s%-8s%-8s%-8s%-8sn",i+1,persi.num,persi.name,persi.sex,persi.class1,persi.lh,persi.qsh,persi.tel);printf("press any key continuen ");getch(); void modify()char num20;int i; system("cls");printf("nnn*修 改 学 生 住 宿 信 息*n");printf("n 请输入要修改学生的学号:");scanf("%s",num);for(i=0;i<n;i+)if(strcmp(persi.num,num)=0) break;if(i=n) printf("n 文件中没有该学生的数据,无法进行修改操作!n");elseprintf("#Record 学号 姓名 性别 班级 楼号 寝室号 本人电话n");printf("%7d %-8s%-8s%-6s%-8s%-8s%-8s%-8sn",i+1,persi.num,persi.name,persi.sex,persi.class1,persi.lh,persi.qsh,persi.tel);printf("n 真的要修改吗(Y/N)?");if (toupper(getch()='Y')printf("n 请输入新信息:n");printf("学号:");scanf("%s",persi.num);printf("姓名:");scanf("%s",persi.name);printf("性别:");scanf("%s",persi.sex);printf("班级:");scanf("%s",persi.class1);printf("楼号:");scanf("%s",persi.lh);printf("寝室号:");scanf("%s",persi.qsh);printf("本人电话:");scanf("%s",persi.tel);if(isnum(persi.tel)=0)printf("输入的电话号码错误,系统将以 '0000' 代替!n ");strcpy(persi.tel,"0000");printf("n处理后的结果:n");printf("#Record 学号 姓名 性别 班级 楼号 寝室号 本人电话n");printf("%7d %-8s%-8s%-6s%-8s%-8s%-8s%-8sn",i+1,persi.num,persi.name,persi.sex,persi.class1,persi.lh,persi.qsh,persi.tel);printf("n处理结束!n");getch();void tj1()char name10;int i,m; system("cls");printf("nnn*按班级统计*n");printf("n 请输入要统计人数的班级号:");scanf("%s",name);m=0;for(i=0;i<n;i+)if(strcmp(persi.class1,name)=0 ) m+;if(m=0) printf("n 文件中没有符合条件的数据!n");elseprintf("%s 班有 %d 人住宿n",name,m);printf("nn统计结束!n ");getch(); void tj2()char name10;int i,m; system("cls");printf("nnn*按楼号统计*n");printf("n 请输入要统计人数的楼号:");scanf("%s",name);m=0;for(i=0;i<n;i+)if(strcmp(persi.lh,name)=0 ) m+;if(m=0) printf("n 文件中没有符合条件的数据!n");elseprintf("%s 号楼有 %d 人住宿n",name,m);printf("nn统计结束!n ");getch(); void tj3()char name10;char num10;int i,m; system("cls");printf("nnn*按楼号+寝室号统计*n");printf("n 请输入要统计人数的楼号:");scanf("%s",name);printf("n 请输入寝室号:");scanf("%s",num);m=0;for(i=0;i<n;i+)if(strcmp(persi.lh,name)=0 && strcmp(persi.qsh,num)=0) m+;if(m=0) printf("n 文件中没有符合条件的数据!n");elseprintf("%s 号楼的 %s 寝室 有 %d 人住宿n",name,num,m);printf("nn统计结束!n ");getch(); int isnum(char *s)int i=0;while(si)if(!(si>='0' && si<='9') return 0;else i+;return 1;void explain()system("cls");printf(" *n");printf(" * *n");printf(" * *n");printf(" * 湖 南 工 业 大 学 学 生 宿 舍 管 理 系 统 *n");printf(" * *n");printf(" * *n");printf(" *n");printf("nnn");printf("本学生宿舍管理系统由某某班学生某某某编写,本程序有许多不足之处,n");printf("欢迎大家提出意见,以供修改。本系统最终版权解释归本人所有,未经许可,不得转载。");printf("联系方式: ");getch();void dele()char name10;int i,m,j,n;system("cls");printf("nnn* 删 除 信 息 *n");printf("n 请输入要删除的学生信息:");scanf("%s",name);m=0;for(i=0;i<n;i+)if(strcmp(persi.class1,name)=0 ) m+;break;if(m=0)printf("没有找到该学生信息");elseprintf("#Record 学号 姓名 性别 班级 楼号 寝室号 本人电话n");printf("%7d %-8s%-8s%-6s%-8s%-8s%-8s%-8sn",i+1,persi.num,persi.name,persi.sex,persi.class1,persi.lh,persi.qsh,persi.tel);printf("n 真的要删除吗(Y/N)?");if (toupper(getch()='Y') /toupper小写变大写for(j=i;j<n-1;j+)persj=persj+1;n-; printf("nn删除结束!n ");getch(); 测试分析1)显示的主菜单界