学生宿舍管理系统设计(C语言)
宿舍管理系统c语言课程设计
宿舍管理系统c语言课程设计一、背景介绍宿舍管理系统是一种为学校宿舍管理人员提供便利的软件系统。
本系统旨在通过计算机技术的应用,实现对宿舍信息、学生信息、入住情况等数据的管理和统计,提高宿舍管理工作效率和服务质量。
二、需求分析1. 功能需求(1)管理员登录:管理员需要输入用户名和密码才能登录系统。
(2)学生信息录入:管理员可以添加、修改和删除学生信息,包括姓名、性别、年龄、联系方式等。
(3)宿舍信息录入:管理员可以添加、修改和删除宿舍信息,包括宿舍号码、楼层、床位数等。
(4)学生入住登记:管理员可以登记学生入住情况,包括选择宿舍房间号码,记录入住时间等。
(5)查询统计功能:管理员可以查询学生信息、宿舍信息以及入住情况,并进行统计分析。
2. 性能需求本系统需要具有较高的安全性和稳定性,保证数据的完整性和可靠性。
同时,在用户界面设计上要简洁明了,易于操作。
三、设计方案1. 系统架构本系统采用客户端/服务器模式,将客户端与服务器分离,实现系统的分布式部署。
客户端负责用户界面的展示和用户输入的响应,服务器负责数据存储和处理。
2. 数据库设计本系统需要设计三个数据库表:学生信息表、宿舍信息表和入住情况表。
学生信息表包括学生姓名、性别、年龄、联系方式等字段;宿舍信息表包括宿舍号码、楼层、床位数等字段;入住情况表包括学生姓名、宿舍号码、入住时间等字段。
3. 界面设计本系统的用户界面需要简洁明了,易于操作。
采用菜单式界面设计,将各个功能模块以菜单形式呈现,方便用户进行选择。
四、开发实现1. 开发环境本系统采用C语言进行开发,使用Visual Studio 2019作为开发工具。
数据库采用MySQL。
2. 关键技术(1)C语言编程技术:C语言是一种高效的编程语言,在系统开发中具有广泛应用。
(2)MySQL数据库技术:MySQL是一种常用的关系型数据库管理系统,在数据存储和处理方面具有很好的性能。
(3)网络编程技术:客户端/服务器模式需要使用网络编程技术实现客户端与服务器之间的通信。
宿舍管理系统c语言
#include"stdio.h"int main_menu_select() /*主菜单选择*/ {char s;printf("\n1 Administrator in charge of the students and books' information\n");printf("\n2 Administrator in charge of lend books\n");printf("\n3 Administrator in charge of receive books\n");printf("\n4 Student\n");printf("\n5 Guest\n");printf("\n6 exit\n\n");printf("\n input 1-6 to choice the function\n");do{s=getche();printf("\n");}while(s<49||s>54);return s;}int administrator_menu_select() /*管理员菜单选择*/ {int s;printf("input 1-6 to choice the function\n");printf("1 input the information of books\n");printf("2 recompose the information of the books\n");printf("3 cancel the information of books \n");printf("4 input the information of students\n");printf("5 recompose information of the students\n");printf("6 cancel the information of students\n");printf("7 return main menu\n");printf("8 exit\n\n" );do{s=getche();printf("\n");}while(s<49||s>56);return s;}hello_main() /*返回主菜单*/ {for(; ;){switch(main_menu_select()){case 49:adm_information();break;case 51:printf("hellooo");break;case 52:printf("helloooo");break;case 53:printf("hellooooo");break;case 54:printf("Goodbye!");exit(0);}}}hello_adm_menu() /*返回管理员功能选择菜单*/ {for(; ;){switch(administrator_menu_select()){case 49:books_information_input();break;case 50:printf("Student\n");break;case 51:printf("Guest\n");break;case 52:students_information_input();break;case 53:printf("Guest of gentleman\n");break;case 54:printf("hahha");break;case 55:hello_main();break;case 56:printf("Goodbye!");exit(0);}}}struct /*图书结构体*/ {int number;char name[20];char press[20];char writer[20];int price;}books[200];struct /*学生结构体*/ {int number;char name[20];char sex[6];int grade;}students[200];adm_information() /*管理员菜单*/ {for(; ;){switch(administrator_menu_select()){case 49:books_information_input();break;case 51:printf("Guest\n");break;case 52:students_information_input();break;case 53:printf("Guest of gentleman\n");break;case 54:printf("hahha");break;case 55:hello_main();break;case 56:printf("Goodbye!");exit(0);}}}int books_information_input() /*图书信息输入函数*/ {int m,i,s;char h;printf("input the number of the books you want to operate:");scanf("%d",&m);for(i=1;i<m+1;i++){printf("please input the %dth book's number:",i);scanf("%d",&books[i].number);printf("\n please input the %dth book's name:",i);scanf("%s",books[i].name);printf("\n please input the %dth book's press:",i);scanf("%s",books[i].press);printf("\n please input the %dth book's writer:",i);scanf("%s",books[i].writer);printf("\n please input the %dth book's price:",i);scanf("%d",&books[i].price);printf("\n\n");}printf("\ninformation of the students has been inputed\n");printf("1 to return higher menu\n"); /*返回上一级菜单,即管理员选择功能菜单*/h=getche();if(h==1)hello_adm_menu();}students_information_input() /*学生信息输入函数*/ {int m,i,s;printf("input the number of the students you want to operate:");scanf("%d",&m);for(i=1;i<m+1;i++){printf("\nplease input the %dth student's number:",i);scanf("%d",&students[i].number);printf("\n please input the %dth student's name:",i);scanf("%s",students[i].name);printf("\n please input the %dth student's sex:",i);scanf("%s",students[i].sex);printf("\n please input the %dth student's grade:",i);scanf("%d",&students[i].grade);}printf("\ninformation of the books has been inputed\n\n"); }main(){for(; ;){switch(main_menu_select()){case 49:adm_information();break;case 50:printf("helloo");break;case 51:printf("hellooo");break;case 52:printf("helloooo");break;case 53:printf("hellooooo");break;case 54:printf("Goodbye!");exit(0);}}}。
学生宿舍管理系统c程序
学生宿舍管理系统c程序
学生宿舍管理系统C程序的设计与实现
随着学校规模的不断扩大,学生宿舍管理面临着越来越多的挑战。
传统的手工管理方式已经无法满足现代化教学的需求。
因此,设计一款高效、便捷的学生宿舍管理系统变得至关重要。
本文将介绍一个基于C语言的学生宿舍管理系统,并详细阐述其设计与实现过程。
学生宿舍管理系统的功能主要包括:学生信息管理、宿舍信息管理、宿舍入住管理、宿舍退房管理以及宿舍报修管理等。
为了实现这些功能,我们设计了以下几个模块:
1、学生信息管理模块:该模块主要用于维护学生信息,包括姓名、学号、性别、年龄、联系方式等。
通过输入学生信息,可以快速查询和更新学生的基本信息。
2、宿舍信息管理模块:该模块主要用于维护宿舍信息,包括宿舍号、房间号、住宿人数等。
通过输入宿舍信息,可以快速查询和更新宿舍的基本情况。
3、宿舍入住管理模块:该模块主要用于管理学生的入住情况,包括入住时间、入住原因等。
通过输入入住信息,可以实时掌握宿舍的入住情况。
4、宿舍退房管理模块:该模块主要用于管理学生的退房情况,包括
退房时间、退房原因等。
通过输入退房信息,可以实时掌握宿舍的退房情况。
5、宿舍报修管理模块:该模块主要用于管理宿舍的报修情况,包括报修时间、报修内容、维修进度等。
通过输入报修信息,可以及时了解宿舍的维修情况。
以下是基于以上设计的学生宿舍管理系统的C程序代码实现:。
学生宿舍管理系统设计c语言
学生宿舍管理系统设计c语言学生宿舍管理系统是一个有着多种功能的系统,它主要负责管理宿舍数据、学生数据、宿舍水电费用、宿舍安全、学生违纪以及宿舍管理员的工作等。
一个合理运行的宿舍管理系统可以使学生的宿舍生活更加安全、舒适、方便。
下面我将详细阐述如何设计一个基于C语言的学生宿舍管理系统。
1.需求分析首先需要进行需求分析,明确系统应该能够执行哪些功能。
包括宿舍的数据管理,包括了宿舍编号、宿舍地址、宿舍费用等;学生的数据管理,包括了学生姓名、学号、性别、联系方式等;宿舍安全,包括了监控系统、入宿控制、防火安全等;学生管理,包括了违纪记录的管理以及学生信息的管理等。
2.设计模块针对这些功能,我们需要设计相应的模块。
首先是数据管理模块,这个模块需要包括宿舍数据和学生数据两个类。
宿舍数据类可以包含如下内容:- 宿舍编号- 宿舍地址- 宿舍费用学生数据类可以包含如下内容:- 学号- 姓名- 性别- 联系方式接下来是安全模块,这个模块需要实现入宿控制、防火安全等功能,还应该有监控系统。
违纪管理模块应该能够记录学生的各种违纪行为,例如抽烟、喝酒、打架等,这个模块需要有一个记录表格。
最后是管理员模块,这个模块可以进行学生宿舍的分配、学生信息维护、违纪行为记录等管理工作。
3.实现代码在C语言中,我们可以使用结构体来实现上述模块。
例如宿舍数据类的代码可以写成:struct dormitory{char dorm_id[10];char dorm_address[30];float dorm_fee;};学生数据类的代码可以写成:struct student{char name[20];char id[10];char sex[10];char phone[20];};其他模块的代码同样可以类似地实现。
4.测试与完善在代码实现结束后,我们需要进行测试和完善。
测试可以先按照设计的需求,输入相应的数据来验证系统是否符合要求。
在测试中,我们需要注意各种输入可能引发的异常情况,例如空数据、重复数据等。
C语言宿舍管理系统课设(附源码)
C语言宿舍管理系统课设项目说明本系统基于C语言开发,适用于刚入门的C语言新手项目课设,开发软件采用VC++6.0开发,VS,DEV C++等均可运行。
(书生)项目运行截图代码运行界面截图完整源码#include<stdio.h>#include<stdlib.h>#include<string.h>#define HEAD printf("\t|%-10s%-8s%-9s%-5s%-10s%-5s%-5s%-5s%-5s%-12s%-5s|\n","学号","姓名","专业","班级","公寓名","宿舍","床位","性别","年纪","手机号","级别")/*密码登录管理登录信息*/typedef struct EN{//存用户和密码char userName1[10];char passWorld1[10];}EN;void enter();void encryption(char passWorld[])//加密{int i;for(i=0;i<strlen(passWorld);i++){passWorld[i]+=20;}}void sign_in(char userName[],char passWorld[])//注册{FILE *fp;int flag=0;char userName1[10];char passWorld1[10];printf("\t注册(用户名密码最多9位)\n");printf("\t用户名:");fflush(stdin);gets(userName);printf("\t密码:");gets(passWorld);if((fp=fopen("enter.txt","rt"))==NULL){exit(0);}while(!feof(fp)){fscanf(fp,"%s %s",userName1,passWorld1);if(!strcmp(userName,userName1)){printf("用户名重复\n");flag=1;break;}}fclose(fp);if(flag==1)enter();else{if((fp=fopen("enter.txt","at"))==NULL)exit(0);encryption(passWorld);//加密fprintf(fp,"%s %s\n",userName,passWorld);}fclose(fp);enter();}void alter()//删除不合法用户{FILE *fp;int n=0;EN en[1000];。
c语言寝室管理系统课程设计
c语言寝室管理系统课程设计一、教学目标本课程旨在通过C语言编程实现一个简单的寝室管理系统,让学生掌握C语言的基本语法、数据结构、文件操作等知识,培养学生的编程能力、逻辑思维能力和问题解决能力。
1.掌握C语言的基本语法和编程技巧。
2.了解数据结构的基本概念,学会使用结构体和数组。
3.掌握文件操作的方法,能编写简单的文件读写程序。
4.能够使用C语言编写简单的程序,实现对寝室信息的增删改查功能。
5.具备良好的编码习惯,能够编写清晰、规范的代码。
6.学会使用调试工具,能够独立排查和解决问题。
情感态度价值观目标:1.培养学生对编程的兴趣,增强自信心,培养克服困难的勇气。
2.培养学生团队合作精神,学会与人沟通和协作。
3.培养学生关注社会问题,提高社会责任感和使命感。
二、教学内容本课程的教学内容主要包括C语言基本语法、数据结构、文件操作等。
1.C语言基本语法:介绍C语言的数据类型、运算符、控制语句、函数等基本知识。
2.数据结构:讲解结构体、数组、链表等基本数据结构的概念和应用。
3.文件操作:讲解文件打开、关闭、读写等基本文件操作方法。
4.寝室管理系统实现:通过实际项目案例,引导学生运用所学知识编写程序,实现对寝室信息的增删改查功能。
三、教学方法本课程采用讲授法、案例分析法、实验法等多种教学方法。
1.讲授法:通过讲解C语言的基本语法、数据结构和文件操作等知识,使学生掌握基本概念和编程方法。
2.案例分析法:通过分析实际项目案例,引导学生运用所学知识解决实际问题。
3.实验法:安排实验室实践环节,让学生动手编写程序,培养学生的实际编程能力和问题解决能力。
四、教学资源1.教材:《C程序设计语言》(K&R)或《C语言入门到精通》等。
2.参考书:《C Primer Plus》、《C语言深度探索》等。
3.多媒体资料:教学PPT、视频教程等。
4.实验设备:计算机、编程调试工具等。
教学资源应根据实际教学需求进行选择和准备,以支持教学内容和教学方法的实施,提高学生的学习体验。
C语言课程设计学生宿舍管理系统
模块化设计: 将系统划分为 多个模块,便 于维护和扩展
接口设计:提 供统一的接口, 便于与其他系
统集成
数据库设计: 采用关系型数 据库,便于数 据存储和ห้องสมุดไป่ตู้询
安全性考虑: 采用加密技术, 保证数据安全
用户体验:提 供友好的用户 界面,便于用
户使用
性能优化:采 用高效的算法 和数据结构, 提高系统运行
响应时间:系统处理用户请求所需的时间 吞吐量:系统在单位时间内处理的请求数量 资源利用率:系统对硬件资源的使用情况 可靠性:系统在运行过程中出现故障的概率 可扩展性:系统适应未来业务增长的能力 用户体验:用户对系统的满意度和易用性评价
提高系统响应速度:优化数据库查询和更新操作,减少数据传输时间
智能化:引入人工智能技术,实现 自动识别、自动处理等功能
安全性:加强数据加密和访问控制, 确保学生信息的安全
添加标题
添加标题
添加标题
添加标题
移动化:开发移动应用,方便学生 随时随地查询和管理宿舍信息
扩展性:支持与其他系统对接,实 现数据共享和协同工作
汇报人:
添加标题
报表管理:包括学生住宿情况报表、宿舍费用报表、 宿舍卫生检查报表等报表的生成和管理
添加标题
宿舍管理:包括宿舍分配、宿舍调整、宿舍卫生检 查等
添加标题
通知管理:包括宿舍通知、学校通知、班级通知等 通知的发布和管理
学生信息 管理:包 括学生基 本信息、 宿舍分配、 宿舍调整 等
宿舍管理: 包括宿舍 分配、宿 舍调整、 宿舍卫生 检查等
增强系统安全性:加强用户身份验证和权限管理,防止数据泄露和恶意攻击
提高用户体验:优化界面设计,简化操作流程,提高用户满意度 优化系统稳定性:加强系统监控和日志记录,及时发现和解决系统故障
c语言课程设计学生宿舍管理系统
宿舍管理系统是一种针对学生宿舍管理的信息化管理系统,它可以帮助学校、学生宿舍管理员精确、高效地管理学生宿舍的基本信息、住宿情况、违纪记录等各项管理工作。
它是学校管理的有力工具,对提高学生宿舍管理的效率和质量具有重要意义。
一、需要解决的问题(一)学生信息管理1. 宿舍管理员需要能够快速便捷地录入学生的基本信息,如尊称、性莂、芳龄、专业等,并能够进行查询、修改、删除等操作。
2. 宿舍管理员需要清晰地了解每个宿舍的学生情况,包括入住情况、空床位情况、学生离校情况等。
(二)入住管理1. 针对新生入住、学生调宿等情况,宿舍管理员需要系统化、高效地进行入住管理,包括分配床位、办理相关手续等。
2. 学生离校后,宿舍管理员需要及时更新系统信息,确保宿舍的床位情况及时准确。
(三)违纪记录管理1. 为了规范宿舍管理,宿舍管理员需要记录学生的违纪情况,如夜不归宿、打架斗殴等,并进行相应的处理。
2. 宿舍管理员需要能够查询、统计学生的违纪情况,以便于进行教育、惩戒等工作。
二、系统功能设计(一)学生信息管理1. 设计学生信息录入界面,包括尊称、性莂、芳龄、专业等信息的录入功能。
2. 设计学生信息查询界面,支持按照学号、尊称等条件进行快速查询。
3. 设计学生信息修改、删除功能,为宿舍管理员提供便捷、高效的学生信息管理工具。
(二)入住管理1. 设计入住办理界面,支持新生入住手续、学生调宿等操作。
2. 设计入住查询界面,快速了解每个宿舍的学生入住情况。
3. 设计离校处理界面,为宿舍管理员提供方便的学生离校信息处理工具。
(三)违纪记录管理1. 设计违纪记录录入界面,为宿舍管理员提供录入学生违纪情况的工具。
2. 设计违纪记录查询界面,支持按照学号、尊称等条件进行快速查询。
3. 设计违纪记录统计功能,为宿舍管理员提供违纪情况的统计分析工具。
三、系统技术实现(一)采用C语言进行系统开发,使用C语言能够充分利用系统资源,提高系统的运行效率。
C语言宿舍管理系统课设(附源码)
C语言宿舍管理系统课设项目说明本系统基于C语言开发,适用于刚入门的C语言新手项目课设,开发软件采用VC++6.0开发,VS,DEV C++等均可运行。
(书生)项目运行截图代码运行界面截图完整源码#include<stdio.h>#include<stdlib.h>#include<string.h>#define HEAD printf("\t|%-10s%-8s%-9s%-5s%-10s%-5s%-5s%-5s%-5s%-12s%-5s|\n","学号","姓名","专业","班级","公寓名","宿舍","床位","性别","年纪","手机号","级别")/*密码登录管理登录信息*/typedef struct EN{//存用户和密码char userName1[10];char passWorld1[10];}EN;void enter();void encryption(char passWorld[])//加密{int i;for(i=0;i<strlen(passWorld);i++){passWorld[i]+=20;}}void sign_in(char userName[],char passWorld[])//注册{FILE *fp;int flag=0;char userName1[10];char passWorld1[10];printf("\t注册(用户名密码最多9位)\n");printf("\t用户名:");fflush(stdin);gets(userName);printf("\t密码:");gets(passWorld);if((fp=fopen("enter.txt","rt"))==NULL){exit(0);}while(!feof(fp)){fscanf(fp,"%s %s",userName1,passWorld1);if(!strcmp(userName,userName1)){printf("用户名重复\n");flag=1;break;}}fclose(fp);if(flag==1)enter();else{if((fp=fopen("enter.txt","at"))==NULL)exit(0);encryption(passWorld);//加密fprintf(fp,"%s %s\n",userName,passWorld);}fclose(fp);enter();}void alter()//删除不合法用户{FILE *fp;int n=0;EN en[1000];fp=fopen("enter.txt","rt");if(fp==NULL){printf("\t打开文件失败\n");exit(0);}while(!feof(fp)){fscanf(fp,"%s %s",en[n].userName1,en[n].passWorld1);n++;}//printf("大小%d\n",--n);printf("\t%-8s\t%-8s\n","用户名","密码");int i;for(i=0;i<n;i++){printf("\t%-8s\t%-8s\n",en[i].userName1,en[i].passWorld1);}fclose(fp);printf("\t输入你要删除的用户名\n");printf("\t用户名:");char ch[10];printf("\t");scanf("%s",ch);for(i=0;strcmp(ch,en[i].userName1);i++){}int k=i;for(i=k;i<n-1;i++){en[i]=en[i+1];}n--;// for(i=0;i<n;i++)// {// printf("%-8s\t%-8s\n",en[i].userName1,en[i].passWorld1); // }fp=fopen("enter.txt","wt");if(fp==NULL){printf("\t打开文件失败\n");exit(0);}for(i=0;i<n;i++){fprintf(fp,"%s %s\n",en[i].userName1,en[i].passWorld1);}fclose(fp);}void enter() //登录入口{printf("\t=================================\n");printf("\t|\t登录:\t\t\t|\n");printf("\t=================================\n");FILE *fp;int i;printf("\t1.管理员\t2.登录\n");char userName[10];char passWorld[10];char userName1[10];char passWorld1[10];int choice;printf("\t");scanf("%d",&choice);int flag=0;switch(choice){case 1:{ //管理员,注册用户和删除char adm[10];printf("\t输入权限码\n");printf("\t");scanf("%s",adm);if(strcmp(adm,"12")){printf("\t权限码错误\n");enter();}printf("\t");printf("1.注册\t2.修改\n");int j;printf("\t");scanf("%d",&j);switch(j){case 1:{sign_in(userName,passWorld);break;}case 2:{int flag1=0;do{alter();flag1=0;printf("\t是否继续删除:1.是 2.否\n");printf("\t");scanf("%d",&flag1);}while(flag1==1);enter();break;}default:{break;}}break;}case 2:{ //用户登录printf("\t登录\n");printf("\t用户名:");fflush(stdin);printf("\t");gets(userName);printf("\t密码:");printf("\t");gets(passWorld);if((fp=fopen("enter.txt","rt"))==NULL){exit(0);}while(!feof(fp)){fscanf(fp,"%s %s",userName1,passWorld1);encryption(passWorld);//加密if(!strcmp(userName,userName1)&&!strcmp(passWorld,passWorld1)) {flag=1;break;}}if(flag==0){printf("\t输入用户名密码不匹配或者错误\n");enter();}printf("\t成功\n");break;}default:{printf("输入选择不符合格式\n");break;}}}/*存储数据操作数据*/typedef struct stu{ //宿舍信息char dorm[50];int dorm_num;int dorm_num_id;char id[10];char name[10];int banji;char major[20];int age;int enUniversity;char number[12];char sex[3];struct stu *next;}stu;void print(stu *head);void interface()//主界面{printf("\n\n");printf("\t---------------------------------------------------------\n");printf("\t|\t\t欢迎使用宿舍信息管理系统\t\t|\n");printf("\t---------------------------------------------------------\n");/*数据录入*/printf("\t|\t\t\t1-录入数据\t\t\t|\n");/*数据增删改查*/printf("\t|\t\t\t2-数据增加\t\t\t|\n");printf("\t|\t\t\t3-数据删除\t\t\t|\n");printf("\t|\t\t\t4-数据修改\t\t\t|\n");printf("\t|\t\t\t5-数据查询\t\t\t|\n");/*数据统计*/printf("\t|\t\t\t6-数据统计\t\t\t|\n");/*报表*/printf("\t|\t\t\t7-数据报表\t\t\t|\n");printf("\t---------------------------------------------------------\n");}int find_id(char id[],stu *head)//学号查重,重复返回0,否则1{stu *i;for(i=head->next;i!=NULL;i=i->next){if(strcmp(id,i->id)==0){printf("\t学号重复\n");return 0;}}return 1;}int find_check(stu *head,stu *p) //检查宿舍是否满员,符合返回1,不符合返回0 {//print(head); //测试//printf("进入\n");stu *i;for(i=head->next;i!=NULL;i=i->next){if(!strcmp(p->dorm,i->dorm)&&(p->dorm_num_id==i->dorm_num_id)&&(p->do rm_num==i->dorm_num)){printf("\t宿舍信息重复\n");return 0;}}return 1;}stu *creat()//创建链表{stu *head,*end,*p;char id[10];head=NULL;head=(stu*)malloc(sizeof(stu));head->next=NULL;end=head;printf("\t输入学号:");fflush(stdin);gets(id);while(strlen(id)>0){if(find_id(id,head))//学号查重,重复返回0,否则1{p=(stu*)malloc(sizeof(stu));strcpy(p->id,id);printf("\t输入姓名:");gets(p->name);printf("\t输入公寓名称:");scanf("%s",p->dorm);printf("\t输入宿舍名称:");scanf("%d",&p->dorm_num);printf("\t输入床位号:");scanf("%d",&p->dorm_num_id);if(find_check(head,p)) //检查宿舍是否满员,符合返回1,不符合返回0{printf("\t手机号:");fflush(stdin);gets(p->number);printf("\t年龄:");scanf("%d",&p->age);printf("\t性别:");scanf("%s",p->sex);printf("\t专业班级:");scanf("%s %d",p->major,&p->banji);printf("\t输入入学年份:");scanf("%d",&p->enUniversity);end->next=p;end=p;p->next=NULL;}}printf("\t输入学号:");fflush(stdin);gets(id);}return head;}void print(stu *head)//链表打印输出{stu *i;for(i=head->next;i!=NULL;i=i->next){printf("\t|%-10s%-8s%-9s%-5d%-10s%-5d%-5d%-5s%-5d%-12s%-5d|\n",i->id,i-> name,i->major,i->banji,i->dorm,i->dorm_num,i->dorm_num_id,i->sex,i->age,i->numb er,i->enUniversity);}}stu *write_linked() //文件生成链表{FILE *fp;fp=fopen("student.txt","rt");stu *i;stu *head;head=NULL;head=(stu*)malloc(sizeof(stu));stu *end,*p;end=head;while(!feof(fp)){p=(stu*)malloc(sizeof(stu));fread(p,sizeof(stu),1,fp);fgetc(fp);end->next=p;end=p;p->next=NULL;}fclose(fp);return head;}void write_file(stu *head) //用链表,生成文件{FILE *fp;fp=fopen("student.txt","wt");stu *i;for(i=head->next;i!=NULL;i=i->next){fwrite(i,sizeof(stu),1,fp);if(i->next!=NULL)fputc('\n',fp);}fclose(fp);}void header()//数据表头{printf("\t---------------------------------------------------------------------------------\n");HEAD;printf("\t---------------------------------------------------------------------------------\n"); }void exchange_num(int *x,int *y)//交换int{int t=*x;*x=*y;*y=t;}void exchange_string(char a[],char b[])//交换字符串{char t[20];strcpy(t,a);strcpy(a,b);strcpy(b,t);}void exchange(stu *ec1,stu *ec2) //交换stu结构体类型{exchange_num(&ec1->age,&ec2->age);exchange_num(&ec1->banji,&ec2->banji);exchange_string(ec1->dorm,ec2->dorm);exchange_num(&ec1->dorm_num,&ec2->dorm_num);exchange_num(&ec1->dorm_num_id,&ec2->dorm_num_id);exchange_string(ec1->id,ec2->id);exchange_num(&ec1->enUniversity,&ec2->enUniversity);exchange_string(ec1->major,ec2->major);exchange_string(ec1->name,ec2->name);exchange_string(ec1->number,ec2->number);exchange_string(ec1->sex,ec2->sex);}void sort(stu *head) //根据公寓宿舍床位排序{stu *i,*j;for(i=head->next;i!=NULL;i=i->next){for(j=i->next;j!=NULL;j=j->next){if(strcmp(i->dorm,j->dorm)>0){exchange(i,j);}}}for(i=head->next;i!=NULL;i=i->next){for(j=i->next;j!=NULL;j=j->next){if(!strcmp(i->dorm,j->dorm)&&i->dorm_num>j->dorm_num){exchange(i,j);}}}for(i=head->next;i!=NULL;i=i->next){for(j=i->next;j!=NULL;j=j->next){if(strcmp(i->dorm,j->dorm)==0&&i->dorm_num==j->dorm_num&&i->dorm_nu m_id>j->dorm_num_id){exchange(i,j);}}}}void add(stu *head)//添加数据{stu *end;for(end=head->next;end->next!=NULL;end=end->next){}stu *p;char id[20];printf("\t输入学号:");fflush(stdin);gets(id);while(strlen(id)>0){if(find_id(id,head))//学号查重,重复返回0,否则1{p=(stu*)malloc(sizeof(stu));p->next=NULL;strcpy(p->id,id);printf("\t输入姓名:");gets(p->name);printf("\t输入公寓名称:");scanf("%s",p->dorm);printf("\t输入宿舍名称:");scanf("%d",&p->dorm_num);printf("\t输入床位号:");scanf("%d",&p->dorm_num_id);if(find_check(head,p)) //检查宿舍是否满员,符合返回1,不符合返回0{printf("\t手机号:");fflush(stdin);gets(p->number);printf("\t年龄:");scanf("%d",&p->age);printf("\t性别:");scanf("%s",p->sex);printf("\t专业班级:");scanf("%s %d",p->major,&p->banji);printf("\t输入入学年份:");scanf("%d",&p->enUniversity);end->next=p;end=p;}}printf("\t输入学号:");fflush(stdin);gets(id);}printf("\t结束\n");}void dele(stu *head)//按学号删除数据{printf("\t输入你要删除的学号:");char id[20];fflush(stdin);gets(id);stu *end1;//倒数第二个stu *i;while(strlen(id)>0){for(end1=head->next;end1->next->next!=NULL;end1=end1->next){}i=head;while((i=i->next)!=NULL){if(strcmp(id,i->id)==0){exchange(i,end1->next);free(end1->next);end1->next=NULL;sort(head);printf("\t成功\n");break;}else if(i->next==NULL){printf("\t->未找到相匹配的学号<-\n");}}printf("\t输入你要删除的学号:");gets(id);}}void modify(stu *head)//按学号修改数据{char flag[5];printf("\t输入你要修改的学号:");char id[20];char new_id[20];fflush(stdin);gets(id);stu *i;stu *k;k=(stu*)malloc(sizeof(stu));k->next=NULL;while(strlen(id)>0){i=head;while((i=i->next)!=NULL){if(strcmp(id,i->id)==0){printf("\t是否修改学号(yes/no):") ;gets(flag);if(strcmp(flag,"yes")==0){printf("\t输入修改的学号:");gets(new_id);if(find_id(new_id,head)||strcmp(id,new_id)==0){strcpy(k->id,new_id);}else{printf("\t新学号重复");break;}}else{strcpy(k->id,i->id);}printf("\t输入姓名:");gets(k->name);printf("\t输入公寓名称:");scanf("%s",k->dorm);printf("\t输入宿舍名称:");scanf("%d",&k->dorm_num);printf("\t输入床位号:");scanf("%d",&k->dorm_num_id);if(find_check(head,k)||(!strcmp(k->dorm,i->dorm)&&i->dorm_num==k->dorm_n um&&i->dorm_num_id==k->dorm_num_id)) //检查宿舍是否满员,符合返回1,不符合返回0{printf("\t手机号:");fflush(stdin);gets(k->number);printf("\t年龄:");scanf("%d",&k->age);printf("\t性别:");scanf("%s",k->sex);printf("\t专业班级:");scanf("%s %d",k->major,&k->banji);printf("\t输入入学年份:");scanf("%d",&k->enUniversity);exchange(i,k);}}else if(i->next==NULL){printf("\t->未找到相匹配的学号<-\n");}}printf("\t输入你要修改的学号:");fflush(stdin);gets(id);}free(k);}void interface1()//数据查询子界面{printf("\t\t------------------\n");printf("\t\t|1.按学号查询|\n");printf("\t\t|2.按姓名查询|\n");printf("\t\t|3.按公寓宿舍查询|\n");printf("\t\t------------------\n");}void lookup_id(stu *head)//按学号查找{char id[20];printf("\t输入学号:");fflush(stdin);gets(id);stu *i;while(strlen(id)>0){i=head;while((i=i->next)!=NULL){if(strcmp(id,i->id)==0){header();printf("\t|%-10s%-8s%-9s%-5d%-10s%-5d%-5d%-5s%-5d%-12s%-5d|\n",i->id,i-> name,i->major,i->banji,i->dorm,i->dorm_num,i->dorm_num_id,i->sex,i->age,i->numb er,i->enUniversity);printf("\t---------------------------------------------------------------------------------\n");break;}else if(i->next==NULL){printf("\t未找到相应学号\n");}}printf("\t输入学号:");fflush(stdin);gets(id);}}void lookup_name(stu *head)//按姓名查找{char name[20];printf("\t输入姓名:");fflush(stdin);gets(name);stu *i;int flag;//判断是否找到数据,1找到,0枚找到int flag1;//判断是否输出表头,1输出,0不输出flag1=1;while(strlen(name)>0){ flag=0;i=head;while((i=i->next)!=NULL){if(strcmp(name,i->name)==0){if(flag1==1){header();flag1=0;}printf("\t|%-10s%-8s%-9s%-5d%-10s%-5d%-5d%-5s%-5d%-12s%-5d|\n",i->id,i-> name,i->major,i->banji,i->dorm,i->dorm_num,i->dorm_num_id,i->sex,i->age,i->numb er,i->enUniversity);flag=1;}else if(i->next==NULL&&flag==0){printf("\t未找到相应姓名\n");}}printf("\t---------------------------------------------------------------------------------\n");printf("\n");printf("\t输入姓名:");fflush(stdin);gets(name);}}void lookup_dorm_num(stu *head)//按公寓宿舍查找{int num=0;char dorm[20];printf("\t输入公寓和宿舍号:");scanf("%s %d",dorm,&num);stu *i;int flag;//判断是否找到数据,1找到,0枚找到int flag1;//判断是否输出表头,1输出,0不输出flag1=1;while(strlen(dorm)>0&&num!=0){ flag=0;i=head;while((i=i->next)!=NULL){if(num==i->dorm_num&&strcmp(dorm,i->dorm)==0){if(flag1==1){header();flag1=0;}printf("\t|%-10s%-8s%-9s%-5d%-10s%-5d%-5d%-5s%-5d%-12s%-5d|\n",i->id,i->name,i->major,i->banji,i->dorm,i->dorm_num,i->dorm_num_id,i->sex,i->age,i->numb er,i->enUniversity);flag=1;}else if(i->next==NULL&&flag==0){printf("\t未找到相应宿舍号\n");}}printf("\t---------------------------------------------------------------------------------\n");printf("\n");num=0;printf("\t输入公寓和宿舍号:");scanf("%s %d",dorm,&num);}}void son_operation(stu *head)//查询操作选项表{printf("\t输入选项(0退出):");int choice;scanf("%d",&choice);if(choice==0){return;}switch(choice){case 1:{lookup_id(head);//按id查询break;}case 2:{lookup_name(head);//按姓名查询break;}case 3:{lookup_dorm_num(head);//按公寓宿舍查询break;}default :{printf("\t->输入格式有误<-\n");break;}}}void son_statistical()//统计操作表子目录{printf("\t\t----------------\n");printf("\t\t|1.统计总人数|\n");printf("\t\t|2.统计单个公寓|\n");printf("\t\t|3.统计公寓宿舍|\n");printf("\t\t----------------\n");}void statistical_total(stu *head)//统计总人数{stu *i;int n=0;for(i=head->next;i!=NULL;i=i->next){n++;}printf("\t->共%d人<-\n",n);}void statistical_dorm(stu *head)//统计单个公寓{int n=0;char dorm[20];printf("\t输入公寓:");fflush(stdin);gets(dorm);stu *i;while(strlen(dorm)>0){i=head;n=0;while((i=i->next)!=NULL){if(strcmp(dorm,i->dorm)==0){n++;}}printf("\t->该公寓共%d人<-\n",n);printf("\t输入公寓:");fflush(stdin);gets(dorm);}}void statistical_dorm_num(stu *head)//统计公寓宿舍{int num=0;int n;char dorm[20];printf("\t输入公寓和宿舍号:");scanf("%s %d",dorm,&num);stu *i;while(strlen(dorm)>0&&num!=0){ n=0;i=head;while((i=i->next)!=NULL){if(num==i->dorm_num&&strcmp(dorm,i->dorm)==0){n++;}}printf("\t->该宿舍工%d人<-\n",n);num=0;printf("\t输入公寓和宿舍号:");scanf("%s %d",dorm,&num);}}void statistical_operation(stu *head) //统计操作选项表{printf("\t输入选项(0退出):");int choice;scanf("%d",&choice);if(choice==0){return;}switch(choice){case 1:{statistical_total(head);//统计总人数break;}case 2:{statistical_dorm(head);//统计单个公寓break;}case 3:{statistical_dorm_num(head);//统计公寓宿舍break;}default :{printf("\t->输入格式有误<-\n");break;}}}int main(){enter();//登录system("cls");printf("\t登陆成功\n");int choice;while(1){interface();stu *head;printf("\t输入1~7:");scanf("%d",&choice);switch(choice){case 1:{//录入信息head=creat();//创建链表//print(head);write_file(head);//写入文件break;}case 2:{//增加head=write_linked();add(head);sort(head);write_file(head);break;}case 3:{ //按学号删除head=write_linked();dele(head);write_file(head);break;}case 4:{//改按学号head=write_linked();modify(head);write_file(head);break;}case 5:{//查,按姓名,宿舍,学号interface1();//子目录head=write_linked();son_operation(head);break;}case 6:{ //统计,总人数,每个宿舍人数,一个楼人数head=write_linked();son_statistical();statistical_operation(head);//statistical_date();break;}case 7:{//报表head=write_linked();header();sort(head);print(head);printf("\t---------------------------------------------------------------------------------\n");break;}default :{//system("cls");printf("\t->输入有误,重新输入<-\n");break;}}printf("\t按任意键继续");fflush(stdin);getchar();system("cls");}}。
(完整word版)c语言课程设计宿舍管理系统
《面向过程程序设计》课程设计课程名称:学生宿舍管理系统院系:班级:学号:姓名:指导教师:目录1.引言 (2)2.课程设计任务书 (3)a)设计目的b)设计要求c)课程设计报告装订内容及顺序d)设计题目3.程序设计说明书 (3)4.课程设计目的 (4)a)目的b)实验内容c)需求分析5.程序基本框架结构图 (5)6.程序测试 (6)7.课程设计总结 (8)8.附录(源代码) (18)引言学生宿舍管理系统对于一个学校来说是必不可少的组成部分。
目前好多学校还停留在宿舍管理人员手工记录数据的最初阶段,手工记录对于规模小的学校来说还勉强可以接受,但对于学生信息量比较庞大,需要记录存档的数据的高校来说,人工记录是相当麻烦的。
而且当查找某条记录时,由于数据量庞大,还只能靠人工一条条去查找,这样不但麻烦还浪费了许多时间,效率也比较低。
当今社会是飞速进步的而世界,原始的记录方式已经被社会所淘汰,计算机化管理正是适应时代的产物。
信息世界永远不会是一个平静的世界,当一种技术不能满足需求时,就会有新的技术诞生并取代旧技术。
21世纪的今天,信息社会占着主流地位,,计算机在各行各业中的运用已经得到普及,自动化、信息化的管理越来越广泛应用于各个领域。
故随着宿舍需要管理的信息快速增长,建立一个宿舍管理系统可使宿舍管理人员的管理工作系统化、规范化、自动化,大大提高管理效率。
课程设计任务书一、设计目的通过本次课程设计使学生进一步加深对C语言课程内容的理解,初步掌握一般应用程序的开发方法和步骤,进一步了解与掌握C语言的编程方法和技巧,提高学生用C语言解决实际问题的能力。
二、设计要求1、认真查阅参考书、资料2、遵守课程设计时间安排3、按时上机,认真调试程序4、认真完成课程设计报告三、课程设计报告装订内容及顺序1、课程设计封皮2、目录3、引言4、课程设计任务书5、程序设计说明书6、程序设计目的7、程序基本框架结构图8、课程设计总结与心得四、设计题目湖南工业大学学生宿舍管理系统程序设计说明书该课程设计的课题是湖南工业大学学生宿舍管理系统。
学生宿舍管理系统c语言报告
学生宿舍管理系统c语言报告一、引言学生宿舍管理系统是一个用于管理学生宿舍的软件系统。
它能够帮助学校方便地进行学生宿舍的分配、入住、退房、维修等管理工作。
本报告将介绍该系统的设计与实现过程,包括需求分析、系统架构、关键功能与算法等。
二、需求分析2.1 功能需求学生宿舍管理系统需要具备以下主要功能:1. 学生信息管理:包括学生基本信息、联系方式等;2. 宿舍信息管理:包括宿舍楼层、房间号、容纳人数等;3. 入住管理:学生入住、退房、换宿舍等;4. 维修管理:记录宿舍维修情况及维修进度;5. 报表生成:生成各类统计报表,如入住率、维修次数等;6. 用户权限管理:不同用户拥有不同的操作权限。
2.2 性能需求学生宿舍管理系统需要满足以下性能需求:1. 数据处理快速:能够快速响应用户操作,保持系统的高可用性;2. 数据存储安全:对于敏感信息需要进行加密保存,确保数据安全性;3. 界面友好易用:操作界面简洁明了,用户易于操作;4. 扩展性强:系统可以方便地扩展功能,满足学校不同的管理需求。
三、系统架构学生宿舍管理系统采用三层架构进行开发,包括表示层、业务逻辑层和数据访问层。
3.1 表示层表示层是用户与系统交互的界面,这里采用命令行界面来展示系统功能。
用户可以通过输入指令来执行相应的操作,系统会返回相应的结果。
3.2 业务逻辑层业务逻辑层负责处理系统的业务逻辑,将用户的操作请求转发给数据访问层,并对返回结果进行处理后返回给表示层。
同时也包括系统的核心算法的实现。
3.3 数据访问层数据访问层负责与数据库进行交互,处理数据库的读写操作。
它封装了对数据库的操作方法,并提供给业务逻辑层使用。
四、关键功能与算法4.1 学生分配算法学生分配算法是学生宿舍管理系统的核心功能之一。
该算法需考虑学生的性别、年级、特殊需求等因素,确保学生宿舍分配的公平性和合理性。
算法步骤如下:1. 根据学生的性别和年级筛选出符合条件的宿舍楼;2. 根据学生的特殊需求,进一步筛选符合条件的房间;3. 若找到符合条件的房间,则将学生分配到该房间,更新宿舍数量信息;4. 若未找到符合条件的房间,提示学生重新选择或申请特殊宿舍。
学生宿舍管理软件C语言源代码(完整版)
getchar();
printf(请输入学生班级(30个字符以内):”);
scanf("%s",S[flag].S_class);
getchar();
printf("请输入学生的学号(15个字符以内):");
scanf( "%s" ,S[flag].S_number);
printf(请输入学生电话号码:”;
scanf("%s",&S[flag]. S_phone);
getchar();
dirty=1;
printf("修改成功!\n");
}
putchar( '\n');
}
//删除学生信息
void Delete(Student S)
{
int i,j;
int flag=0; //用来判断表中是否存在所要删除的学生的信息
scanf( "%d",&S[S->Total].D_number);
getchar();
printf("请输入学生地址:");
scanf("%s",S[S->Total].S_address);
getchar();
printf(请输入学生电话号码:”;
scanf("%s",&S[S->Total]. S_phone);
char S_class[31];//学生班级
char S_number[16];//学生学号
int D_number;//学生所在寝室的宿舍号char S_address[500];//学生地址
宿舍管理系统(c语言版)
{ printf("\t\t输入的操作代码无效,请重新输入:");
fflush(stdin);
choice=getchar();
}*/
}
void display() /*显示所有学生的信息*/
{ printf("文件读取失败!\n");
return;
}
printf("\t%-10s\t%-10s\t%-5s\n","姓名","学号","宿舍号");
bound();
while(fread(sturecord,sizeof(STU),1,fp)!=0)
{
printf("\t%-10s",sturecord->stuname);
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
void menu(); /*主菜单*/
void searchmenu(); /*查询菜单*/
void search(); /*查询系统*/
{
STU *sturecord;
sturecord=(STU*)malloc(sizeof(STU));
if(check()==0)
return;
system("cls");
sort_stunum();
C语言——学生宿舍管理系统
int i=0;
char ch;
system("cls");
do{ if(i<num)
{
printf("输入第%(个学生的宿舍号:",i+1);
scanf("%d",&stu[i].dorNo) ;
printf("\n姓名:");
scanf("%s",&stu[i].stuName);
printf("\n学号:");scanf("%d",&stu[i].stuNo);
//增加学生信息
void add(struct Student *,int);
//全局变量来记录存储学生的人数int num=0;
//主函数
int main()
{ห้องสมุดไป่ตู้
char ch[10];
printf(" \t欢迎进入宿舍管理系统\n");
printf("请输入你想存储的学生人数:") ;
scanf("%d",&num); system("cls");
//按姓名查找
void naSeek(struct Student *,int);
//按系别查找
void deSeek(struct Student *,int);
//删除学生信息void del(struct Student *,int);
//修改学生信息
void modify(struct Student *,int);
printf(" \t1. printf("\t2.
C语言学生宿舍管理系统代码(可运行)
C语⾔学⽣宿舍管理系统代码(可运⾏)#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<string.h>#include<windows.h>#include <malloc.h>#include<dos.h>#define len sizeof(struct dorminfo)#define Max 100int a[Max]={0};int length;void showmenu();void processmenu();void create();void display();void disbed();void modify();void del();void save();void read();typedef struct{int dormno;int bedno;int isstay;}bedinfo;struct dorminfo{bedinfo bed;int stuno;char name[20];char stucla[20];int year;int month;struct dorminfo *next;};struct dorminfo *head=NULL,*p1,*p2,*p3;void showmenu(){printf("\n\n\n\t\t 欢迎进⼊学⽣宿舍管理系统\n");printf("\t\t*********************************\n");printf("\t\t1.输⼊床位信息\n");printf("\t\t2.根据学号,显⽰学⽣住宿信息\n");printf("\t\t3.根据宿舍号,显⽰住宿信息\n");printf("\t\t4.根据宿舍号、床位号,修改住宿信息\n");printf("\t\t5.根据宿舍号、床位号,删除住宿信息\n");printf("\t\t6.保存学⽣宿舍信息\n");printf("\t\t7.从⽂件读⼊学⽣信息\n");printf("\t\t8.退出 \n");printf("\t\t********************************\n") ;}void processmenu(){int caidan;printf("请输⼊您的选项<1~8>:");scanf("%d",&caidan);if(caidan>8||caidan<0){printf("对不起,您输⼊的选项有误,请重新输⼊!");scanf("%d",&caidan);}switch(caidan){case 2:display();break;case 3:disbed();break;case 4:modify();break;case 5:del();break;case 6:save();break;case 7:read();break;case 8:exit(0);}}void create(){int j;char ch;length=0;p1=(struct dorminfo *)malloc(len);if(head==NULL)head=p1;printf("开始输⼊床位信息....\n");Sleep(500);do{p2=(struct dorminfo *)malloc(len);printf("请输⼊宿舍号:");scanf("%d",&p2->bed.dormno);printf("请输⼊床号:");scanf("%d",&p2->bed.bedno);printf("是否有⼈居住(1/0):");scanf("%d",&p2->bed.isstay);printf("请输⼊学⽣学号:");scanf("%d",&p2->stuno);a[length]=p2->stuno;if(length>1){for(j=1;j<length;j++){if(a[length]==a[j]){printf("该床位号已存在,请重新输⼊:");scanf("%d",&p2->bed.bedno);}}}printf("请输⼊学⽣姓名:");scanf("%s",p2->name);printf("请输⼊学⽣班级:");scanf("%s",p2->stucla);printf("请输⼊学⽣⼊住时间(年⽉)<如2015 5>:");scanf("%d%d",&p2->year,&p2->month);if(p2->year<1000||p2->year>9999||p2->month>12||p2->month<1) {printf("对不起,输⼊错误,请重新输⼊!\n");scanf("%d%d\n",&p2->year,&p2->month);}length++;p1->next=p2;p2->next=NULL;p1=p1->next;printf("第%d个住宿信息创建成功!\n",length);Sleep(300);fflush(stdin);printf("是否继续添加住宿信息?<y/Y>");ch=getchar();} while(ch=='y'||ch=='Y');}void display(){int flag=0,No;p3=head->next;scanf("%d",&No);while(p3!=NULL){if(p3->stuno==No){printf("\n住宿信息如下:");printf("\n宿舍号:%d",p3->bed.dormno);printf("\n床位号:%d",p3->bed.bedno);printf("\n是否有⼈⼊住:%d",p3->bed.isstay);printf("\n学⽣学号:%d",p3->stuno);printf("\n学⽣姓名:%s",p3->name);printf("\n学⽣班级:%s",p3->stucla);printf("\n⼊住时间为:%d年%d⽉\n",p3->year,p3->month); flag=1;}p3=p3->next;}if(!flag)printf("没有找到该学⽣住宿信息!\n");}void disbed(){int flag=0,DormNo;p3=head->next;printf("请输⼊宿舍号:");scanf("%d",&DormNo);while(p3!=NULL){if(p3->bed.dormno==DormNo){printf("\n住宿信息如下:");printf("\n宿舍号:%d",p3->bed.dormno);printf("\n床位号:%d",p3->bed.bedno);printf("\n是否有⼈⼊住:%d",p3->bed.isstay);printf("\n学⽣学号:%d",p3->stuno);printf("\n学⽣姓名:%s",p3->name);printf("\n学⽣班级:%s",p3->stucla);printf("\n⼊住时间为:%d年%d⽉\n",p3->year,p3->month); flag=1;}p3=p3->next;}if(!flag)printf("没有找到该学⽣住宿信息!\n");}void modify(){struct dorminfo *p;int DormNo,BedNo,flag;int Dormno,Bedno,Isstay,Stuno,Year,Month;char Name[20],Stucla[20];if(head==NULL){printf("住宿信息为空,不能修改,按任意键返回...\n");getch();system("cls");return ;}p1=p3=head;printf("请输⼊宿舍号、床位号:");scanf("%d %d",&DormNo,&BedNo);while(p3!=NULL){if(p3->bed.dormno==DormNo&&p3->bed.bedno==BedNo) {printf("已找到要修改的宿舍号、床位号!\n");flag=1;p=p3;}p3=p3->next;}if(flag){printf("请输⼊修改后的宿舍号:");scanf("%d",&Dormno);printf("请输⼊修改后的床号:");scanf("%d",&Bedno);printf("是否有⼈居住(1/0):");scanf("%d",&Isstay);printf("请输⼊修改后的学⽣学号:");scanf("%d",&Stuno);while(p1!=NULL){if(p1->stuno==Stuno){printf("该床位号已存在,请重新输⼊:");scanf("%d",&Stuno);}p1=p1->next;}printf("请输⼊修改后的学⽣姓名:");scanf("%s",Name);printf("请输⼊修改后的学⽣班级:");scanf("%s",Stucla);printf("请输⼊修改后的学⽣⼊住时间(年⽉)<如2015 5>:");scanf("%d%d",&Year,&Month);if(Year<1000||Year>9999||Month>12||Month<1){printf("对不起,输⼊错误,请重新输⼊!\n");scanf("%d%d",&Year,&Month);}p->bed.dormno=Dormno;p->bed.bedno=Bedno;p->bed.isstay=Isstay;p->stuno=Stuno;strcpy(p->name,Name);strcpy(p->stucla,Stucla);p->year=Year;p->month=Month;printf("修改成功,信息如下:\n");printf("-宿舍号--床号--有⽆⼈⼊住--学号--姓名--班级--⼊住时间(年⽉)");printf("\n");printf("%6d%5d%8d%9d%7s%8s%9d%2d\n",p->bed.dormno,p->bed.bedno,p->bed.isstay,p->stuno,p->name,p->stucla,p->year,p->month); }else{printf("没有找到该宿舍号与床号信息,按任意键返回...\n");getch();system("cls");return ;}}void del(){int DormNo,BedNo;p1=head,p2=head->next;printf("请输⼊宿舍号、床位号:");scanf("%d %d",&DormNo,&BedNo);while(p2!=NULL){if(p2->bed.dormno==DormNo&&p2->bed.bedno==BedNo){p1->next=p2->next;free(p2);length--;printf("删除成功!\n");return ;}p2=p2->next;p1=p1->next;}if(p1==NULL)printf("找不到要删除的宿舍号、床位号!\n");}void save(){FILE *fp1;if(head==NULL){printf("\n,没有找到该宿舍号与床号信息,按任意键返回....");getch();system("cls");return ;}if((fp1=fopen("学⽣宿舍管理系统.txt","w"))==NULL){printf("\n信息⽆法保存,按任意键返回....");getch();system("cls");return ;}p1=head->next;printf("正在保存⽂件...\n");Sleep(800);fputs(" 宿舍号床号有⽆⼈⼊住学号姓名班级⼊住时间(年⽉) :\n",fp1);while(p1!=NULL){fprintf(fp1,"%6d%5d%8d%7d%6s%4s%7d%2d\n",p1->bed.dormno,p1->bed.bedno,p1->bed.isstay,p1->stuno,p1->name,p1->stucla,p1->year,p1->month);p1=p1->next;}fclose(fp1);printf("⽂件保存成功!\n");printf("按任意键返回...\n");getch();system("cls");return ;}void read(){FILE *fp2;char ch;if((fp2=fopen("学⽣宿舍管理系统.txt","r"))==NULL){printf("⽂件⽆法打开!\n");exit(0);}printf("正在读⼊⽂件...\n");Sleep(1000);ch=fgetc(fp2);while(!feof(fp2)){putchar(ch);ch=fgetc(fp2);}printf("\n");fclose(fp2);printf("⽂件读⼊成功!\n");}void main(){while(1){processmenu(); system("pause"); system("cls");}}。
学生宿舍管理软件C语言源代码(完整版)
源程序代码:#include<stdio.h>#include<string.h>#include<stdlib.h>#defineM 100intdirty=0;//用来判断是否已保存操作//定义一个存储学生相关信息的结构体typedefstruct{charS_name[31];//学生姓名char S_class[31];//学生班级charS_number[16];//学生学号intD_number;//学生所在寝室的宿舍号char S_address[500]; //学生地址int S_phone[20];//学生电话号码//判断学号是否与表中所存学号重复voidS_number_Judge(Student S,intt){}//添加学生信息函数voidAdd(Student S){printf(“请输入学生姓名(30个字符以内): “);scanf(“%s“,S[++(S->Total)].S_name);getchar();//获取换行符inti;for(i=1;i<=(S->Total)-1;i++)while(strcmp(S[i].S_number,S[t].S_number)==0){}printf(“学号输入失败,该学号已存在,请从头输入学号!\n“);printf(“请输入学生的学号(15个字符以内):“);getchar();i=1;intTotal;//学生总数}Student[M],St;scanf(“%s“,S[t].S_number);printf(“请输入学生班级(30个字符以内):”);scanf(“%s“,S[S->Total].S_class);getchar();printf(“请输入学生的学号(15个字符以内):“);scanf(“%s“,S[S->Total].S_number);S_number_Judge(S,S->Total);//判断输入的学号是否与表中所存在的学号重复printf(“请输入宿舍号码:“);scanf(“%d“,&S[S->Total].D_number);getchar();getchar();prin tf(“请输入学生地址:“);scanf(“%s“,S[S->Total].S_address);getchar();printf(“请输入学生电话号码:”);scanf(“%s“,&S[S->Total]. S_phone);}//修改学生信息函数voidAlter(Student S){inti;intflag=0;//用来判断表中是否存在所要修改的学生的信息charname[20];printf(“请输入你要修改学生的姓名:“);getchar();for(i=1;i<=S->Total;i++){printf(“新信息如下:\n“);printf(“请输入学生姓名(30个字符以内):“);scanf(“%s“,S[flag].S_name);getchar();if(strcmp(S[i].S_name,name)==0)flag=i;getchar();dirty=1;printf(“添加胜利!\n\n“);scanf(“%s“,name);if(!flag)printf(“你所要修改的学生信息在表中不存在!\n“); elseprintf(“请输入学生班级(30个字符以内):”);scanf(“%s“,S[flag].S_class);getchar();printf(“请输入学生的学号(15个字符以内):“);scanf(“%s“,S[flag].S_number);1getchar();S_number_Judge(S,flag);printf(“请输入宿舍号:“);scanf(“%d“,&S[flag].D_number);getchar();printf(“请输入学生地址:“);scanf(“%s“,S[flag].S_address);getchar();printf(“请输入学生电话号码:”);scanf(“%s“,&S[flag]. S_phone);}//删除学生信息voidDelete(Student S){inti,j;intflag=0;//用来判断表中是否存在所要删除的学生的信息charname[20];printf(“请输入你要删除学生的姓名:“);scanf(“%s“,name);for(i=1;i<=S->Total;i++){for(i=flag;i<S->Total;i++){}j=i+1; strcpy(S[i].S_name,S[j].S_name);strcpy(S[i].S_number,S[j].S_number);S[i].D_number=S[j].D_number;(S->Total)--;dirty=1;printf(“删除胜利!“);if(strcmp(S[i].S_name,name)==0)flag=i;}putchar(“\n“);getchar();dirty=1;printf(“修改胜利!\n“);getchar();if(!flag)printf(“你所要删除的学生在表中不存在!“);else}2}printf(“\n\n“);//显示所有学生信息函数voidDisplay_All(Student S){}//排序函数按照寝室号从小到大排序(冒泡法)voidSort_D_number(Student S){inti,j,t;charname[30];charnumber[15];printf(“%-20s%-20s%-15s%-5d%s-10%s\n“,S[i].S_name,S[i].S_class,S[i].S_number,S[i].D_number,S[i].S_addputchar (“\n\n“);ress,S[i].S_phone);inti;printf(“全体学生信息如下:\n“);printf(“学生姓名学生班级学生学号宿舍号学生地址学生电话号码\n“);for(i=1;i<=S->Total;i++)char address[300];char Cnumber[30];for(i=1;i<=S->Total;i++)for(j=i;j<=S->Total;j++)if(S[i].D_number>S[j].D_number){strcpy(name,S[i].S_name);strcpy(number,S[i].S_number);strcpy(address,S[i].S_address);strcpy(Cnumber,S[i].S_class);t=S[i].D_number;strcpy(S[i].S_name,S[j].S_name);strcpy(S[i].S_number,S[j].S_number);strcpy(S[i].S_address,S[j].S_address);;strcpy(S[i].S_class,S[j].S_class);S[i].D_number=S[j].D_number;strcpy(S[j].S_name,name);strcpy(S[j].S_number,number);strcpy(S[j].S_address,address);strcpy(S[j].S_class,Cnumber);}}S[j].D_number=t;3//排序函数按照学号从小到大排序(冒泡法)voidSort_S_number(Student S){inti,j,t;charname[30];charnumber[15];char address[300];char Cnumber[30];for(i=1;i<=S->Total;i++)for(j=i;j<=S->Total;j++)if(strcmp(S[i].S_number,S[j].S_number)>0){strcpy(name,S[i].S_name);strcpy(nu mber,S[i].S_number);strcpy(address,S[i].S_address);strcpy(Cnumber,S[i].S_class);t=S[i].D_number;strcpy(S[i].S_name,S[j].S_name);strcpy(S[i].S_number,S[j].S_number);strcpy(S[i].S_address,S[j].S_address);;strcpy(S[i].S_class,S[j].S_class);S[i].D_number=S[j].D_number;strcpy(S[j].S_name,name);strcpy(S[j].S_number,number);strcpy(S[j].S_address,address);strcpy(S[j].S_class,Cnumber);}//排序函数按照班级号从小到大排序(冒泡法)void Sort_S_class (Student S){int i,j,t;char name[30];char number[15];}S[j].D_number=t;char address[300];charCnumber[30];for(i=1;i<=S->Total;i++)for(j=i;j<=S->Total;j++)if(strcmp(S[i].S_class,S[j].S_class)>0){strcpy(name,S[i].S_name);4strcpy(number, S[i].S_number);strcpy(address,S[i].S_address);strcpy(Cnumber,S[i].S_class);t=S[i]. D_number;strcpy(S[i].S_name,S[j].S_name);strcpy(S[i].S_number,S[j].S_number);strcpy(S[i].S_address,S[j].S_address);;strcpy(S[i].S_class,S[j].S_class);S[i]. D_number =S[j]. D_number;strcpy(S[j].S_name,name);strcpy(S[j].S_number,number);strcpy(S[j].S_address,address);strcpy(S[j].S_class,Cnumber);S[j]. D_number =t;}}//查询函数以班级为关键字进行查询(顺序查找)void Query_S_class(Student S){int i,j=0;char classnumber[31];printf(“请输入你要查找的班级号(30个字符以内):“);scanf(“%s“,classnumber);getchar();printf(“所查找学生信息如下:\n“);printf(“学生姓名学生班级学生学号宿舍号学生地址for(i=1;i<=S->Total;i++)if(strcmp(classnumber,S[i].S_class)==0){printf(“%-20s%-20s %-15s%-5d%s-10%s\n“,S[i].S_name,S[i].S_class,S[i].S_number,S[i].D_number,S[i].S_address,S[i].S_phone);j=1;}if(!j)printf(“\n查找失败,表中不存在该学生的信息!\n\n“);}//查询函数以姓名为关键字进行查询(顺序查找)voidQuery_S_name(Student S){inti,j=0;charname[31];5学生电话号码\n“);printf(“请输入你要查找的学生的姓名(30个字符以内):“);scanf(“%s“,nam e);getchar();printf(“所查找学生信息如下:\n“);printf(“学生姓名学生班级学生学号宿舍号学生地址学生电话号码\n“);for(i=1;i<=S->Total;i++)if(strcmp(name,S[i].S_name)==0){printf(“%-20s%-20s%-15s%-5d%s-10%s\n“,S[i].S_name,S[i].S_class,S[i].S_number,S[i].D_number,S[i].S_address,S[i].S_phone);j=1;}//查询函数以学号为关键字进行查询(折半查找)voidQuery_S_number(Student S){inti,j,top,base,mid;charnumber[15];j=0;base=1;top=S->Total;printf(“请输入你要查找学生的学号:“);scanf(“%s“,number);getchar();Sort_S_number(S);//将表中原数据按照学号从小到大排序printf(“所查找学生信息如下:\n“);printf(“学生姓名学生班级学生学号宿舍号学生地址学生电话号码\n“);if(strcmp(number,S[1].S_number)>=0&&strcmp(number,S[S->Total].S_number)< =0){while(base<=top){mid=(base+top)/2;if(strcmp(number,S[mid].S_number)==0){printf(“%-20s%-20s%-15s%-5d%s-10%s\n“,S[i].S_name,}elseif(strcmp(number,S[mid].S_number)>0)putchar(“\n“);j=1;break;}printf(“\n查找失败,表中不存在该学生的信息!\n\n“);if(!j)S[i].S_class,S[i].S_number,S[i].D_number,S[i].S_address,S[i].S_phone);6}}}base= mid+1;top=mid-1;elseif(!j)printf(“\n查找失败,表中不存在该学生的信息!\n\n“);//查询函数以寝室号为关键字进行查询(折半查找)voidQuery_D_number(Student S){inti,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(“学生姓名学生班级学生学号宿舍号学生地址学生电话号码\n“);if(i>=S[1].D_number&&i<=S[S->Total].D_number){while(base<=top){mid=(base+t op)/2;if(i==S[mid].D_number){m=mid;while(S[m].D_number==i){printf(“%-20s%-20s %-15s%-5d%s-10%s\n“,S[m].S_name,n=mid-1;S[i].S_class,S[m].S_number,S[m].D_number,S[i].S_address,S[i].S_phone);m++;}if( n>0){while(S[n].D_number==i){printf(“%-20s%-15s%-5d\n“,S[n].S_name,S[n].S_number,S[n].D_number);if(m>S->Total)break;7n--;}//存储函数voidSave(Student S){St Std;inti;intflag1=0,flag2=0;//判断存储是否胜利FILE *fp;}if(!j)printf(“\n查找失败,表中不存在该寝室的信息!\n\n“);}}elseif(i>S[mid].D_number)base=mid+1;top=mid-1;j=1;putchar(“\n“);break;}if(n<1)break;if((fp=fopen(“Dorm_Manage“,“w“))==NULL){printf(“打开文件失败!\n\n“);flag1=1;exit(0);//结束程序}for(i=1;i<=S->Total;i++)if(fwrite(&S[i],sizeof(Std),1,fp)!=1){printf(“数据写入错误\n\n“);flag2=1;exit(0);}if(!flag1&&!flag2){}dirty=0;printf(“数据存储胜利!\n\n“);8fclose(fp);}//加载记录函数voidLoad(Student S){St Std;FILE *fp;if((fp=fo pen(“Dorm_Manage“,“r“))==NULL){}while(!feof(fp))fread(&S[++(S->Total)],sizeof(Std),1,fp);fclose(fp);printf(“打开文件失败!\n\n“);exitprintf(“加载数据胜利!\n\n“);(S->Total)--;//由于读取问题,表中个数要减去}//退出程序时判断是否保存函数voidJudge_Save(inti,Student S){}//菜单voidMenu(){//菜单charch;if(i){}printf(“表中数据已改变,是否保存后再退出(Y/N)?:“);ch=getchar();getchar();while(ch!=“n“&&ch!=“N“&&ch!=“y“&&ch!=“Y“){}if(ch==“y“||ch==“Y“)Save(S);printf(“请输入N(n)或者Y(y):“);ch=getchar();getchar();9}printf(“学生管理\n\n“);printf(“*************************************菜单*************************************\n“);printf(“1.添加学生信息|8.“按照班级号从小到大排序\n”);printf(“2.修改学生信息|9.“按照寝室号从小到大排序\n“);printf(“3.删除学生信息|10.“按照学号从小到大排序\n“);printf(“4.以姓名查询学生信息|11.“显示所有学生的相关信息\n“);printf(“5.以学号查询学生信息|12.“保存操作\n“);printf(“6.以寝室号查询该寝室中的全部学生信息|13.“加载记录\n“);printf(“*********************************************************** *******************\n“);printf(“7.以班级号查询该班级中的全部学生信息|14.“退出程序\n“);voidmain(){inti;Student S;S->Total=0;do{Menu();printf(“请选择所要实现的功能(请输入1~14中的任意一个数字):“); scanf(“%d“,&i);getchar();//获取换行符putchar(“\n“);switch(i){case1:Add(S);break;break;break;break;break;break;break;printf(“排序完成!\n\n“);break;case2:Alter(S);case3:Delete(S);case4:Query_S_name(S);case6:Query_D_number(S); case 7: Query_S_class (S); case 8: Sort_S_class (S);10}case9:Sort_D_number(S); }printf(“排序完成!\n\n“); break;printf(“排序完成!\n\n“); break;break;break;break;exit(0);break;break;case10:Sort_S_number(S); case11:Display_All(S); case12:Save(S);case13:Load(S);default:printf(“选择错误:请在选项到之间选择!\n\n“); }while(i!=14);11。
C语言课程设计报告学生宿舍管理系统
《高级语言程序设计》课程设计说明书设计题目:学生宿舍管理系统目录一、总体设计 (3)1.程序的总体设计 (3)2. 函数原型声明 (3)二、用户说明 (4)1、菜单界面 (5)2、入住登记界面 (5)3、删除界面 (5)4、浏览界面 (6)5、查询修改 (6)6、排序界面 (6)7、退出 (6)三、小结 (7)四、参考文献 (7)五、源程序代码 (7)一、总体设计1.程序的总体设计◎确定界面,使用户可选择操作项目(录入,删除,浏览,修改,查询,排序)。
◎录入:使用结构体,要求用户输入楼栋、房号、面积、可住人数、已住人数◎删除:按房号删除以上信息◎查询:按房号查询以上信息◎修改:按房号修改以上信息◎排序:按已住人数排序信息2. 函数原型声明struct room *add(struct room *head);//添加函数struct room *del(struct room *h);//删除函数void show(struct room *h);//信息浏览函数void serh(struct room *h);//查询与修改函数struct room *sort(struct room *head);//排序函数void can();//结束函数二、用户使用说明运行程序后即可按提示模仿以上操作进行。
2、入住登记界面3、删除界面5、查询修改6、排序界面7、退出三、小结通过编写该程序,熟悉了C语言的基本语法,选择,循环等结构,深入练习了函数的调用方法,和文件的读写方法,熟悉了结构体的使用,更加深化了面向过程语言思想,和一些基本算法。
通过对程序的后期调试,熟悉了C常见错误,锻炼了思维的严密性,和完备性。
通过对程序的注释和画流程图,形成了一套自己编程的风格,和清晰地思路,使思维更加条理化,清晰化。
四、参考文献[1]谭浩强.C程序设计(第二版).北京:清华大学出版社,1999[2]邓文新.张宏烈.哈尔滨工业大学出版社[3]百度.五、附件源程序代码#include<stdio.h>#include<malloc.h>#include<string.h>#include <stdlib.h>struct room{int Lnum;int Fnum;int squa;int maxnum;int innum;struct room *next;};struct room *add(struct room *head);//添加函数struct room *del(struct room *h);//删除函数void show(struct room *h);//信息浏览函数void serh(struct room *h);//查询与修改函数struct room *sort(struct room *head);//排序函数//修改点void can();//结束函数void main(){struct room *head;int x,y;head=(struct room *)malloc(sizeof(struct room));head->next=NULL;printf("欢迎使用学生宿舍管理系统!\n");printf("按回车键进入菜单界面\n");getchar();while(1){A: printf("[]--------------------------------------------[]\n");printf("||--------------------------------------------||\n");printf("|| 1.入住登记 ||\n");printf("|| 2.删除信息 ||\n");printf("|| 3.信息浏览 ||\n");printf("|| 4.查询修改 ||\n");printf("|| 5.按入住人数排序 ||\n");printf("|| 6.退出系统 ||\n");printf("||--------------------------------------------||\n");printf("[]--------------------------------------------[]\n");printf("请选择服务项目!\n");flushall();scanf("%d",&x);//菜单选择if(head->next==NULL&&x!=1&&x!=6){printf("系统中无入住信息,请先进行入房登记!\n");goto A;}switch(x){case 1:head=add(head);system("cls");printf("登记完毕!\n");continue;case 2:head=del(head);T: scanf("%d",&y);while(y!=1&&y!=0){printf("输入错误!请重新输入!\n");goto T;}if(y==1){system("cls");continue;}elsecan();goto N;case 3:show(head);printf("是否返回菜单界面进行其他操作?(1/0)\n"); J: scanf("%d",&y);while(y!=1&&y!=0){printf("输入错误!请重新输入!\n");goto J;}if(y==1){system("cls");continue;}else{can();goto N;}case 4:serh(head);system("cls");continue;case 5:head=sort(head);//修改点printf("是否返回菜单界面进行其他操作?(1/0)\n"); scanf("%d",&y);while(y!=1&&y!=0){printf("输入错误!请重新输入!\n");goto J;}if(y==1){system("cls");continue;}else{can();goto N;}continue;case 6:can();goto Q;default:printf("输入错误!请重新输入!\n");}N: if(y==0)break;Q: if(x==6)break;}}struct room *add(struct room *head)//入住登记{struct room *h,*p;int i=0,n;h=head;printf("请输入要登记的入房数:\n");scanf("%d",&n);printf("请输入入住信息:\n楼号房号面积最大入住人数已入住人数\n");printf("数据须按规定顺序输入,不同数据用空格分开。
学生宿舍管理系统C语言
《C语言程序设计》课程设计报告题目:学生宿舍管理系统专业:软件技术班级:软件技术1班姓名:李桦楠齐忠春周滨滨徐烨潘喜隆郑竹强学号:124109124 124109131 124109150124109143 124109127 124109148指导老师:陈自力设计时间:2013 年 1 月14 日~ 2013年 1 月18 日信息工程系目录《C程序设计》课程设计报告 (1)1.课程设计计划 (3)2.系统需求分析与功能设计 (4)3. 总体设计 (6)4. 程序模块设计 (8)5. 技术难点与分析 (10)6.系统测试 (11)7. 心得体会 (17)8. 系统实现源代码 (18)1.课程设计计划主要成员分配任务:1.李桦楠,齐忠春(C程序设计课程设计报告)2.周滨滨(系统测试)3.潘喜隆(注册密码导入,登陆)4.郑竹强(排序,账号信息导入)5.徐烨(完成导入,注册模块)6. 李桦楠(完成其它模块功能实现)2013-1-14 早上:完成整个系统架构,各菜单的函数实现。
函数的实现。
2013-1-15 早上实现“Login(),huChe(),huChe(),ZhuChe(),UpMiMa(),Input(),Addto()”函数完成。
2013-1-16早上实现“Modify(),Del(),Query(),Sta(),Px(),DaoRu(),Linen() ZhuZhecodeDaoru(),MiMaDaoRu()”函数完成。
2013-1-17早上系统进行最后的测试。
2.系统需求分析与功能设计1.各函数的组成;void Login(); /*登入函数*/void DengRu(); /*登入*/void ZhuChe(); /*注册*/void UpMiMa(); /*修改密码*/void Input(); /*输入函数*/void Addto(); /*添加函数*/void Modify(); /*修改函数*/void Del(); /*删除函数*/void Query(); /*查找函数*/void Sta(); /*统计函数*/void Px(); /*排序函数*/void Off(); /*退出函数*/void DaoRu(); /*导入数据函数*/void ZhuZhecodeDaoru(); /*注册密码导入函数*/ void MiMaDaoRu(); /*账号信息导入函数*/ void Linen(); /*打出横线函数*/void UpMiMa_menu(); /*修改密码菜单*/void Login_menu(); /*登入菜单*/void Main_menu(); /*主菜单*/void Mod_menu(); /*修改菜单*/void Query_menu(); /*查找菜单*/void Sta_menu(); /*统计菜单*/void Login_menu(); /*登入界面函数*/ 2..结构体struct ZCcode /*注册密码结构体*/{char Password1[6];};struct code /*密码结构体*/{char user[10];char password[6];};struct Inform /*基本信息结构体*/ {int NUM;int ShuHao;char Name[7];char Sex[3];int Age;char Class[10];char Spec[10];3. 总体设计Tu-3.1录入模块 添加模块 删除模块 修改模块 统计模块 查询模块 退出模块学生宿舍管理系统学生宿舍管理系统登入 注册 修改 退出输入注册密码 正确错误输入帐号 输入密码 成功输入指令(1,2,3,4)输入帐号 原密码 新密码修改成功输入帐号输入密码 登 录成功帐号密码错误 录入成员信息写入文件中是否继续录入输入指令(1,2,3,4,5,6,7) 是否删除成员信息输入要删除的成员学号确定要删除该成员是否删除成功修改成员信息输入要修改的成员学号 输入正确没有该成员输入指令(1,2,3,4,5,6,7)查询成员输入指令,选择查询项目学号宿舍号姓名 返回统计成员4. 程序模块设计1.登入主函数实现方法;先定义整形变量 i,Flas=1(i 用来做switch开关,Flas用做while的判断变量. 做一个while循环判断条件为Flas==0。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机程序设计基础(C语言)课程设计题目:学生宿舍管理系统设计班级:计121学号:120502120504120506120505姓名:贾文超杨晓红张永康陆秀和指导教师:刘喜梅孙强范周瑜2013年7月1 日·北京信息工程学院信息技术教学与实验中心学生宿舍管理系统设计功能:实现简单的学生宿舍基本信息管理,宿舍的基本信息包括楼号、房间号、面积、所容纳人数、已入住人数等。
基本要求:1.设计简单的菜单,能够进行系统功能选择。
2.实现信息的录入功能。
3.在已有信息的基础上添加新的纪录。
4.删除指定房间号的记录。
5.修改指定房间号的记录。
6.实现信息的浏览功能。
7.按房间号查询功能。
8.按已入住人数排序功能。
1.学生宿舍管理系统概述 (4)1.1需求分析 (4)1.2基本功能 (4)2.学生宿舍管理系统总体设计 (5)1.1管理流程图 (5)1.2管理员操作 (5)3.模块划分 (6)1.1第一选择模块 (6)1.2第二录入模块 (7)1.3第三添加模块 (8)1.4第四删除模块 (8)1.5第五修改模块 (9)1.6第六浏览模块 (9)1.7第七查询模块 (10)1.8第八排序模块 (11)4.算法说明 (11)5.各函数模块功能 (11)1.1各自定义函数功能 (11)6.程序测试 (12)7.结论 (14)1.1对调试中主要问题进行总结 (14)8.体会及建议 (14)1.1对自己设计进行评价,指出合理和不足之处,提出改进的方案 (14)9.学生宿舍管理系统设计参与者 (14)1.1 小组成员信息 (14)1.学生宿舍管理系统概述1.1需求分析高校学生宿舍管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。
对于前端应用程序的开发则要求应用程序能提供强大的数据操纵功能,界面友好、使用简单方便等特点。
旧的手工纪录的宿舍管理方式已经不能适应高速发展的信息化时代,新的宿舍管理系统开发出来之后,学校的现有的宿舍信息管理将有很大的改观,由过去的人工方式转变为计算机方式,由效率低、数据冗余、易产生错误转变为检索迅速、查找方便、可靠性高、存储量大。
这些优点能够极大地提高效率,也是学校科学化、正规化管理的重要条件。
学生宿舍管理系统对于一个学校来说是必不可少的组成部分。
对于学生信息量比较庞大,需要记录存档的数据比较多的高校来说,人工记录是相当麻烦的,而且当查找某条记录时,只能靠人工去一条条地查找,这样不但麻烦而且效率非常低。
当今社会是飞速进步的世界,计算机化管理正是适应时代的产物。
21世纪的今天,信息社会占着主流地位,计算机在各行各业中的运用已经得到普及。
我们针对此,设计了一套学生宿舍管理系统。
学生宿舍管理系统采用的是计算机化管理,系统做的尽量人性化,使用者会感到操作非常方便,管理人员需要做的就是将数据输入到系统的数据库中去。
由于数据库存储容量相当大,而且比较稳定,适合较长时间的保存,也不容易丢失。
这无疑是为信息存储量比较大的学校提供了一个方便、快捷的操作方式。
本系统具有运行速度快、安全性高、稳定性好的优点,还具有修改功能,能够快速的查询学校所需的住宿信息。
1.2基本功能高校学生宿舍管理系统的开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面,但本课题要实现的是前端应用程序的开发。
在设计该系统时,会尽可能地贴近我们学生,便于管理者操作。
系统在实现上具有如下功能:1.设计简单的菜单,能够进行系统功能选择。
2.实现信息的录入功能。
3.在已有信息的基础上添加新的记录。
4.删除指定房间号的记录。
5.修改指定房间号的记录6.实现信息的浏览功能7.按房间号查询功能8.按已入住人数排序功能2.学生宿舍管理系统总体设计1.1管理流程图4.算法说明数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的调用与使用)等,利用数组对宿舍的记录进行循环输入输出,利用冒泡法记录进行排序,利用循环查找数组中某个数据,对其进行显示,删除,读入和写入文档等操作。
5.各函数模块功能1.1各自定义函数功能1、void insert()(录入系统所需的数据;将录入的数据存储在文件中)2、void seek()(按要求对数据进行查询)3、void modify()(对数据进行更新操作)4、void del()(对数据进行删除操作)5、void save()(对指定数据进行统计并输出)6、void sort()(对指定数据排序并输出)7、void reveal()(对指定数据产生报表输出)8、void menu()(功能目录)6.程序测试显示请选择菜单编号请输入待增加的宿舍数请输入第1个宿舍的房间号输入 4 1 1316………………………………………………………………………………………………………请输入第1个宿舍的宿舍长请输入第1个宿舍的楼号请输入第1个宿舍的宿舍面积贾文超 1 40…………………………………………………………………………………………请输入第1个宿舍的房间容纳人数请输入第1个宿舍的宿舍成员6贾文超/陆秀和/杨晓红/张永康/李正明/伟力…………………………………………………………………………………………请输入第1个宿舍的手机号请输入第1个宿舍的居住人数………………………………………………………………………………………………………6 ………………………………………………………………………………………………………录入完毕!请选择菜单编号6 …………………………………………………………………………………………结果:所有宿舍信息为:房间号宿舍长楼号宿舍面积房间容纳人数…………………………………………………………………………………………1316 贾文超 1 40 6******************************************************************** 宿舍成员手机号居住人数…………………………………………………………………………………………贾文超/陆秀和/杨晓红/张永康/李正明/伟力 6显示请选择菜单编号输入2…………………………………………………………………………………………--------------1.按房间号查询----------------------------2.按宿舍长查询----------------------------3.退出本菜单----------------请选择子菜单编号:1 …………………………………………………………………………………………请输入要查询的宿舍的房间号:1316 …………………………………………………………………………………………结果:房间号宿舍长楼号宿舍面积房间容纳人数…………………………………………………………………………………………1316 贾文超 1 40 6******************************************************************** 宿舍成员手机号居住人数…………………………………………………………………………………………贾文超/陆秀和/杨晓红/张永康/李正明/伟力 6显示请选择菜单编号请输入要修改的宿舍的房间号输入 3 1316 ………………………………………………………………………………………………………------------------------------ 请输入新的宿舍面积1.修改宿舍长2.修改楼号3.修改宿舍面积4.修改房间容纳人数5.修改宿舍成员6.修改手机号号码7.修改居住人数8.退出本菜单-------------------------------请选择子菜单编号:3 50 …………………………………………………………………………………………请选择子菜单编号:请选择菜单编号8 6 …………………………………………………………………………………………结果:房间号宿舍长楼号宿舍面积房间容纳人数…………………………………………………………………………………………1316 贾文超 1 50 6******************************************************************** 宿舍成员手机号居住人数…………………………………………………………………………………………贾文超/陆秀和/杨晓红/张永康/李正明/伟力 67.总结1.1对调试中主要问题进行总结调试过程中,经常会出现输入或显示为乱码的情况,这往往是上下定义的数据类型不同或定义数组长度不够所造成的。
有时候程序中还会出现录入五个数据而只显示四个的情况,这也往往是由于定义的结构体数组长度过低所造成的。
像这类问题只要把数据类型都定义成字符型,并且定义一个合理的数组长度往往都能解决。
在调试过程中我遇到最大的问题出现在删除模块。
在运用“dormitory.txt”打开文件并对某一数据进行删除后,往往显示会多显示一行数据。
这是由于“dormitory.txt”写数据时只会覆盖数据而不会清除原文件数据,因此文件最后一行数据总会保留在原文件中。
后来我先用“dormitory.txt”打开文件并读取文件中的数据,然后再用“r”打开原文件将删除后的数据重新写入文件,最终检测运行成功。
8.体会及建议1.1对自己设计进行评价,指出合理和不足之处,提出改进的方案本程序拥有很多的优点:第一,它具有作为一个宿舍管理系统的各个功能,包括录入信息、添加信息、修改信息、删除信息、查询信息、统计信息六大主要功能。
可以方便的进行住宿学生信息的管理。
第二,它的各个功能模块在实现时非常方便,例如:录入和添加学生信息可以自己控制录入和添加的人数;统计学生信息可以分学号、班级、专业等进行统计等等。
“万事开头难”这句话在我编写程序的过程中得到了真正的体现。
在最初编写的几天里出现了这样那样的错误一大堆,这主要是由于我对基础知识掌握不扎实所造成的。
但是随后几天里,我对课本知识进行了回顾并不时的向老师和同学进行请教,慢慢的对编写程序也开始得心应手起来。
程序的编写总归是一件费时费力的事情,但只要我们认真编写和调试最后总能成功。
短短的两周实习时间我收获颇多,我相信经过这次实习必将为我以后的深入参考文献:1.《软件工程导论》第四版清华大学出版2.《C#开发实战宝典》王小科编著清华大学出版社3.《C#开发大全》刘丽霞编著清华大学出版4.百度知道5.C#与.net开发网附录:源程序清单#include<stdio.h>/*I/O函数*/#include<stdlib.h>/*其它说明*/#include<string.h>/*字符串函数*/#define BUFLEN 100 /* 缓冲区最大字符数 */#define LEN 100 /* 房间号和宿舍长最大字符数,实际请更改 */#define N 1000 /* 最大宿舍人数,实际请更改*/struct apartment/*结构体*/{char room[LEN+1]; /* 房间号 */char dormitoryleader[LEN+1]; /* 宿舍长 */int dormitory; /* 楼号 */char area[3]; /* 宿舍面积 */char hold[LEN+1]; /* 房间容纳人数 */char member[1000]; /* 宿舍成员 */char tel[LEN+1]; /* 手机号号码 */char livenumber[30]; /* 居住人数 */}stu[N];int k=1,n,m; /* 定义全局变量 */void readfile();/* 函数声明 */void seek();void modify();void insert();void del();void reveal();void save();void menu();int main(){while(k)menu();system("pause");return 0;}void help(){printf("\n0.欢迎使用宿舍系统帮助!\n");printf("\n1.进入系统后,先刷新宿舍信息,再查询;\n");printf("\n2.按照菜单提示键入数字代号;\n");printf("\n3.增加宿舍信息后,切记保存按7;\n");printf("\n4.谢谢您的使用!\n");}void readfile()/* 建立信息 */{char *p="dormitory.txt";FILE *fp;int i=0;if ((fp=fopen("dormitory.txt","r"))==NULL){printf("Open error! Strike any key to exit!",p);system("pause");exit(0);}while(fscanf(fp,"%s %s%d%s %s %s %s %s",stu[i].room,stu[i].dormitoryleader,&stu[i].dorm itory,stu[i].area,stu[i].hold,stu[i].member,stu[i].tel,stu[i].livenumber)==8){i++;i=i;}fclose(fp);n=i;printf("录入完毕!\n");}void seek() /*查找*/{int i,item,flag;char s1[21]; /* 以宿舍长和房间号最长长度+1为准 */printf("------------------\n");printf("-----1.按房间号查询-----\n");printf("-----2.按宿舍长查询-----\n");printf("-----3.退出本菜单-----\n");printf("------------------\n");while(1){printf("请选择子菜单编号:");scanf("%d",&item);flag=0;switch(item){case 1:printf("请输入要查询的宿舍的房间号:\n");scanf("%s",s1);for(i=0;i<n;i++)if(strcmp(stu[i].room,s1)==0){flag=1;printf("房间号宿舍长楼号宿舍面积房间容纳人数 \n");printf("--------------------------------------------------------------------------------\n");printf("%0s %8s %3d %7s %11s \n",stu[i].room,stu[i].dormitoryleader,stu[i].dormitory, stu[i].area,stu[i].hold);printf("******************************************************************************* *\n");printf(" 宿舍成员手机号居住人数\n"); printf("--------------------------------------------------------------------------------\n");printf(" %0s %20s %8s\n",stu[i].member,stu[i].tel,stu[i].livenumber);}if(flag==0)printf("该房间号不存在!\n"); break;case 2:printf("请输入要查询的宿舍的宿舍长:\n");scanf("%s",s1);for(i=0;i<n;i++)if(strcmp(stu[i].dormitoryleader,s1)==0){flag=1;printf("房间号宿舍长楼号宿舍面积房间容纳人数 \n");printf("--------------------------------------------------------------------------------\n");printf("%0s %8s %3d %7s %11s \n",stu[i].room,stu[i].dormitoryleader,stu[i].dormitory, stu[i].area,stu[i].hold);printf("******************************************************************************* *\n");printf(" 宿舍成员手机号居住人数\n"); printf("--------------------------------------------------------------------------------\n");printf(" %0s %20s %8s\n",stu[i].member,stu[i].tel,stu[i].livenumber);}if(flag==0)printf("该宿舍长不存在!\n"); break;case 3:return;default:printf("请在1-3之间选择\n");}}}void modify() /*修改信息*/{int i,item,num;char area1[3],s1[LEN+1],s2[LEN+1]; /* 以宿舍长和房间号最长长度+1为准 */ printf("请输入要修改的宿舍的房间号:\n");scanf("%s",s1);for(i=0;i<n;i++)if(strcmp(stu[i].room,s1)==0) /*比较字符串是否相等*/num=i;printf("------------------\n");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("------------------\n");while(1){printf("请选择子菜单编号:");scanf("%d",&item);switch(item){case 1:printf("请输入新的宿舍长:\n");scanf("%s",s2);strcpy(stu[num].dormitoryleader,s2); break;case 2:printf("请输入新的楼号:\n");scanf("%d",&stu[num].dormitory);break;case 3:printf("请输入新的宿舍面积:\n");scanf("%s",area1);strcpy(stu[num].area,area1); break;case 4:printf("请输入新的房间容纳人数:\n");scanf("%s",s2);strcpy(stu[num].hold,s2); break;case 5:printf("请输入新的宿舍成员:\n");scanf("%s",s2);strcpy(stu[num].member,s2); break;case 6:printf("请输入新的手机号号码:\n");scanf("%s",s2);strcpy(stu[num].tel,s2); break;case 7:printf("请输入新的居住人数:\n");scanf("%s",s2);strcpy(stu[num].livenumber,s2); break;case 8:return;default:printf("请在1-8之间选择\n");}}}void sort()/*按居住人数排序*/{int i,j,*p,*q,s;char temp[100];for(i=0;i<n-1;i++){for(j=n-1;j>i;j--)if(strcmp(stu[j-1].livenumber,stu[j].livenumber)>0){strcpy(temp,stu[j-1].room);strcpy(stu[j-1].room,stu[j].room);strcpy(stu[j].room,temp);strcpy(temp,stu[j-1].dormitoryleader);strcpy(stu[j-1].dormitoryleader,stu[j].dormitoryleader); strcpy(stu[j].dormitoryleader,temp);strcpy(temp,stu[j-1].area);strcpy(stu[j-1].area,stu[j].area);strcpy(stu[j].area,temp);strcpy(temp,stu[j-1].hold);strcpy(stu[j-1].hold,stu[j].hold);strcpy(stu[j].hold,temp);strcpy(temp,stu[j-1].member);strcpy(stu[j-1].member,stu[j].member);strcpy(stu[j].member,temp);strcpy(temp,stu[j-1].tel);strcpy(stu[j-1].tel,stu[j].tel);strcpy(stu[j].tel,temp);strcpy(temp,stu[j-1].livenumber);strcpy(stu[j-1].livenumber,stu[j].livenumber);strcpy(stu[j].livenumber,temp);p=&stu[j-1].dormitory;q=&stu[j].dormitory;s=*q;*q=*p;*p=s;}}}void insert() /*插入函数*/{int i=n,j,flag;printf("请输入待增加的宿舍数:\n");scanf("%d",&m);do{flag=1;while(flag){flag=0;printf("请输入第 %d 个宿舍的房间号:\n",i+1);scanf("%s",stu[i].room);for(j=0;j<i;j++)if(strcmp(stu[i].room,stu[j].room)==0){printf("已有该房间号,请检查后重新录入!\n");flag=1;break; /*如有重复立即退出该层循环,提高判断速度*/}}printf("请输入第 %d 个宿舍的宿舍长:\n",i+1);scanf("%s",stu[i].dormitoryleader);printf("请输入第 %d 个宿舍的楼号:\n",i+1);scanf("%d",&stu[i].dormitory);printf("请输入第 %d 个宿舍的宿舍宿舍面积(m^2):\n",i+1);scanf("%s",stu[i].area);printf("请输入第 %d 个宿舍的房间容纳人数:\n",i+1);scanf("%s",stu[i].hold);printf("请输入第 %d 个宿舍的宿舍成员(注:人员之间加/):\n",i+1); scanf("%s",stu[i].member);printf("请输入第 %d 个宿舍的手机号:\n",i+1);scanf("%s",stu[i].tel);printf("请输入第 %d 个宿舍的居住人数:\n",i+1);scanf("%s",stu[i].livenumber);if(flag==0){i=i;i++;}}while(i<n+m);n+=m;printf("录入完毕!\n\n");sort();}void del(){int i,j,flag=0;char s1[LEN+1];printf("请输入要删除宿舍的房间号:\n");scanf("%s",s1);for(i=0;i<n;i++)if(strcmp(stu[i].room,s1)==0){flag=1;for(j=i;j<n-1;j++)stu[j]=stu[j+1];}if(flag==0)printf("该房间号不存在!\n");if(flag==1){printf("删除成功,显示结果请选择菜单6\n");n--;}}void reveal(){int i;printf("所有宿舍的信息为:\n");printf("房间号宿舍长楼号宿舍面积房间容纳人数 \n");printf("-----------------------------------------------------------------------------\n ");for(i=0;i<n;i++){printf("%0s %7s %5d %5s %9s \n",stu[i].room,stu[i].dormitoryleader,stu[i].dormitory, stu[i].area,stu[i].hold);}printf("***************************************************************************\n") ;printf("宿舍成员手机号居住人数\n");printf("--------------------------------------------------------------------------------\n");for(i=0;i<n;i++){printf("%0s %10s %10s\n",stu[i].member,stu[i].tel,stu[i].livenumber);}}void save(){int i;FILE *fp;fp=fopen("dormitory.txt","w"); /*写入*/for(i=0;i<n;i++){fprintf(fp,"%s %s %d %s %s %s %s %s\n",stu[i].room,stu[i].dormitoryleader,stu[i].dormit ory,stu[i].area,stu[i].hold,stu[i].member,stu[i].tel,stu[i].livenumber);}fclose(fp);}void menu()/* 界面 */{int num;printf("*******************宿舍系统功能菜单************************ \n");printf("友情提醒:查询前请先刷新系统! \n");printf(" ---------------------- ---------------------- \n");printf(" ********************************************* \n");printf(" * 0.系统帮助及说明 * * 1.刷新宿舍信息 * \n");printf(" ********************************************* \n");printf(" * 2.查询宿舍信息 * * 3.修改宿舍信息 * \n");printf(" ********************************************* \n");printf(" * 4.增加宿舍信息 * * 5.按房间号删除信息* \n");printf(" ********************************************* \n");printf(" * 6.显示当前信息 * * 7.保存当前宿舍信息* \n");printf(" ********************** ********************** \n");printf(" * 8.退出系统 * \n");printf(" ********************** \n");printf(" ---------------------- ---------------------- \n");printf("请选择菜单编号:");scanf("%d",&num);switch(num){case 0:help();break;case 1:readfile();break;case 2:seek();break;case 3:modify();break;case 4:insert();break;case 5:del();break;case 6:reveal();break;case 7:save();break;case 8:k=0;break;default:printf("请在0-8之间选择\n"); }}。