C语言课程设计-学生宿舍信息管理系统

需求分析

  本系统的最终用户为宿含楼管理员,本宿舍楼的学生。根据我们日常生活中 的经验,结合对自己学校宿舍楼管理老师的咨询和对同宿舍楼同学的调查,得出 用户的下列实际要求:

宿舍楼的基本情况

学生住在宿舍楼中,每栋宿舍楼都会有若干名老师负责本宿舍楼的日常管理。

学生的基本信息:入校时,每位同学都有唯一的学号,并被分配到指定的宿含楼和指定的宿舍, 也会有一个宿舍号,其入校时间就是他的入住时间。另外,为了管理上的方便, 同一院系的学生的宿舍一般在一起,相应地会有其所在的院系名称。

 系统功能的设计和划分

根据如上得到的用户需求,我们将本系统按照所完成的功能分成以下几部分:第一部分:用户管理部分 第二部分:管理员管理部分 各部分完成的功能如下

:用户管理部分

1、处理用户注册

2、处理用户登录

3、用户可以查询学生信息。

4、用户可以查询快件信息。

5、用户可以提交与查询报修信息。

6、用户可以插入与删除用户自己的离返校信息。

7、用户可以修改用户自己密码。

管理员管理部分

1、处理管理员登录

2、管理员可以查询学生信息。

3、管理员可以发布与更新快件信息。

4、管理员可以插入、修改与查询报修信息。

5、管理员可以插入与查询学生夜归信息。

6、管理员可以查询在校与离校学生信息。

7、管理员可以修改管理员密码。

概要设计:

详细设计:

该登录模块中应用选择算法,可能应按用户的输入要求进行相应的数据格式装换,确保系统的稳定,安全。 

软件旨在宿舍管理全部电脑化。它主要包括:宿舍号、住宿人员登记、对学生住宿情况查询,可以更快地了解到每个学生的住宿情况,使宿舍的管理效率更高,做的更好!宿舍管理系统是一个现代化软件,他通过集中式的信息数据库将各种档案管理功能结合起来,达到共享数据,降低成本,提高效率,改进服务等目的。

用户的特点  

用户只需一个浏览器进行工作,实行客户端的零安装和零维护,并支持远程办公和不间断服务。  

在整体设计中,我们将宿舍管理系统分为五个大的功能:系统管理功能、公寓管理功能、信息查询功能、出入登记功能、信息修改功能。

#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 100 
int 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 1:create();break;
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;
printf("请输入学号:");
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;
Sleep(1000);
}
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");
system("cls");
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)
{
showmenu();
processmenu();
system("pause");
system("cls");
}	
}

  • 22
    点赞
  • 162
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
学生宿舍管理系统对于一个学校来说是必不可少的组成部分。目前好多学校还停留在宿舍管理人员手工记录数据的最初阶段,手工记录对于规模小的学校来说勉强还可以接受,但对于学生量比较庞大,需要记录存档的数据比较多的高校来说,人工记录是相当麻烦的。而且当查找某条记录时,由于数据量庞大,还只能靠人工去一条条的查找,这样不但麻烦还浪费了许多时间,效率也比较低。当今社会是飞速进步的世界,原始的记录方式已经被社会所淘汰,计算机化管理正是适应时代的产物。世界永远不会是一个平静的世界,当一种技术不能满足需求时,就会有新的技术诞生并且取而代之。21世纪,社会占着主流地位,计算机在各行各业中的运用已经得到普及,自动化的管理越来越广泛应用于各个领域。我们针对如此,设计了一套学生宿舍管理系统。学生宿舍管理系统采用的是计算机化管理,系统做得尽量人性化,使用者(即管理员)会感到操作方便,需要做的就是将数据输入到系统的数据库中去。由于数据库存储容量比较大,而且比较稳定,适合长时间的保存,也不容易丢失。这无疑是为存储量比较大的学校提供了一个方便、快捷的操作方式。本系统具有运行快、安全性高、稳定性好的优点,并且具备录入、查询、修改、删除等功能,能够快速的查询该栋宿舍楼学生住宿的一系列信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

X-MTing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值