C语言实现学生宿舍管理系统_第1页
C语言实现学生宿舍管理系统_第2页
C语言实现学生宿舍管理系统_第3页
C语言实现学生宿舍管理系统_第4页
C语言实现学生宿舍管理系统_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第C语言实现学生宿舍管理系统本文实例为大家分享了C语言实现学生宿舍管理系统的具体代码,供大家参考,具体内容如下

实现简单的学生宿舍基本信息管理,宿舍的基本信息包括楼号、房间号、面积、所容纳人数、已入住人数等,系统以文本菜单形式工作。

登录时:用户名为asd密码任意

#includestdio.h

#includestdlib.h

#includestring.h

#includeconio.h

#includectype.h

#includemalloc.h

#includewindows.h

#defineNsizeof(structStudent)

typedefstructStudent

intbuildnum;

//宿舍楼栋号

introomnum;

//房间号

intbrnum;

//宿舍楼栋号+房间号

floatarea;

//宿舍房间面积

intrnanum;

//所容纳人数

charxy[100];

//学院

intbj;

//班级

intnum;

//学号

charname[20];//姓名

charsex[10];

//性别

intdate;

//日期

structStudent*next;

}Stu,*stu;

inta[1000000];//记录寝室入住人数

voidsave_stu(stup);

voidlogin()

system("cls");

system("color

4E");

printf("\n\n\n\n\n\n\n############################~欢迎进入学生宿舍管理系统~##########################\n");

printf("\n\n\n\t\t\t\t

★★★★★");

printf("\n\n\n\n\t\t\t\t\t\tLoading");

for(inti=0;ii++)

{

Sleep(400);

printf(".");

}

system("cls");

charusername[10];

charpassword;

intp=0;

system("color6E");

printf("\n\n\n

==============================欢迎使用=================================\n");

for(inti=0;ii++)

{

printf("\n\n\n\t\t请输入用户名:[

]\b\b\b\b\b\b\b\b\b\b\b\b");

scanf("%s",username);

if(strcmp(username,"asd")==0)

{

printf("\t\t请输入密码:

[

]\b\b\b\b\b\b\b\b\b\b\b\b");

while((password=getch())!='\r')//判断是否是回车

{

p++;

if(password==8)//实现backspace键的功能,其中backspace键的ascii码是8

{

putchar('\b');

putchar('');

putchar('\b');

if(p0)

//最多只能删到没有字符

p--;

}

if(!isdigit(password)!isalpha(password))//判断是否是数字或字符

continue;

putchar('*');//在屏幕上打印星号

}

printf("\n\n\n

===============================登陆成功=================================");

Sleep(600);

return;

system("pause");

}

else

{

if(i2)

printf("用户名错误,请重新输入");

else

{

printf("\n

您已连续3次将用户名或密码输错,系统将退出!");

exit(0);

//关闭所有文件,终止正在执行的进程

}

}

}

intmenu_select()

//主菜单选项

{

inta;

do

{

system("cls");

system("color3E");

printf("\n\n\t======================学生宿舍管理系统※※※※※※※※※※※※\n\n");

printf("\t◆◆

1.添加学生信息

◆◆\n\n");

printf("\t◆◆

2.显示学生信息

◆◆\n\n");

printf("\t◆◆

3.对学生信息进行排序

◆◆\n\n");

printf("\t◆◆

4.查找学生信息

◆◆\n\n");

printf("\t◆◆

5.修改学生信息

◆◆\n\n");

printf("\t◆◆

6.删除学生信息

◆◆\n\n");

printf("\t◆◆

0.退出系统

◆◆\n\n");

printf("\t※※※※※※※※※※※※※※※================================\n");

printf("\t请选择您要运行的选项按(0-6):");

scanf("%d",

}while(a0||a

returna;

stuss()

//将文件中的内容读出到链表中,返回值为表头地址

FILE*fp;

//文件指针

intn=0;

stuhead=NULL;

stup1,p,pr=NULL;

fp=fopen("student","ab+");

//以只读的方式打开文件

if(fp==NULL)

{

printf("文件打开失败!\n");

}

else

{

while(!feof(fp))

//判断文件位置标志是否移动到文件末尾

{

n++;

p=(stu)malloc(N);//向内存申请一段空间

fread(p,N,1,fp);

//将fp所指向的文件中的内容赋给p

if(n==1)

{

head=p;

p1=p;

}

else

//创建链表

{

pr=p1;

p1-next=p;

p1=p;

}

}

}

if(pr!=NULL)

pr-next=NULL;

else

head=NULL;

fclose(fp);

//关闭文件

returnhead;

//返回头指针

Student*input(intn)

inti;

stuhead,p,q;

if(n=0)

returnNULL;

p=(stu)malloc(sizeof(Stu));

printf("--------------------------------------------------------------------------------\n");

printf("楼栋号房间号楼栋房间号房间面积容纳数学院

班级

学号

姓名

性别

日期\n");

printf("--------------------------------------------------------------------------------\n");

scanf("%d%d%d%f%d%s%d%d%s%s%d",p-buildnum,p-roomnum,p-brnum,p-area,p-rnanum,p-xy,p-bj,p-num,p-name,p-sex,p-date);

a[p-brnum]++;

if(a[p-brnum]==p-rnanum)

printf("\n该寝室已入住满,请安排后面的学生到其它空余寝室入住\n");

head=p;

save_stu(p);

for(i=1;ii++)

{

q=(stu)malloc(sizeof(Stu));

printf("--------------------------------------------------------------------------------\n");

printf("楼栋号房间号楼栋房间号房间面积容纳数学院

班级

学号

姓名

性别

日期\n");

printf("--------------------------------------------------------------------------------\n");

scanf("%d%d%d%f%d%s%d%d%s%s%d",q-buildnum,q-roomnum,q-brnum,q-area,q-rnanum,q-xy,q-bj,q-num,q-name,q-sex,q-date);

printf("\n");

a[q-brnum]++;

if(a[q-brnum]==q-rnanum)

{

printf("\n该寝室已入住满,请安排后面的学生到其它空余寝室入住\n");

Sleep(300);

}

save_stu(q);

p-next=q;

p=q;

}

p-next=NULL;

returnhead;

voidsave_stu(stup)

//将p中内容写入文件

FILE*fp;

//文件指针

fp=fopen("student","ab");

//以追加的方式打开名字为student的二进制文件

if(fp==NULL)

{

printf("文件打开失败!");

}

if(fwrite(p,N,1,fp)!=1)

//将p所指向的一段大小为N的内容存入fp所指向的文件中

{

printf("写入错误!");

}

fclose(fp);

//关闭文件

voidoutput(stuhead)

//输出学生信息

printf("--------------------------------------------------------------------------------\n");

printf("楼栋号房间号房间面积容纳数学院

班级

学号

姓名

性别

日期

已住人数

\n");

printf("--------------------------------------------------------------------------------\n");

stup,q;

intn=0;

head=ss();

p=head;

if(head==NULL)

{

printf("\n\t\t\t学生信息为空!\n");

}

else

{

for(p=head;p!=NULL;p=p-next)

{

for(q=head;q!=NULL;q=q-next)

{

if(p-brnum==q-brnum)

n++;

}

a[p-brnum]=n;

printf("%3d%5d

%.1f

%5d%10s%4d%4d%6s%3s%4d%3d\n",p-buildnum,p-roomnum,p-area,p-rnanum,p-xy,p-bj,p-num,p-name,p-sex,p-date,n);

n=0;

}

}

intsort_menu()

//排序选择菜单

inta;

do

{

system("cls");

printf("\n\n\t\t------------------------------------------------------------\n\n");

printf("\t\t\t▲▲1.按照宿舍房间号排序\n\n");

printf("\t\t\t▲▲2.按照学号排序\n\n");

printf("\t\t\t▲▲0.返回到主菜单\n\n");

printf("\t\t------------------------------------------------------------\n");

printf("\t\t请选择您要运行的选项按(0-2):");

scanf("%d",

}

while(a0||a

returna;

intsort(stuhead,intn)

//排序

FILE*fp;

head=ss();

stup,q;

intbuildnum;

//宿舍楼栋号

introomnum;

//房间号

intbrnum;

//宿舍楼栋号+房间号

floatarea;

//宿舍房间面积

intrnanum;

//所容纳人数

charxy[100];

//学院

intbj;

//班级

intnum;

//学号

charname[20];//姓名

charsex[10];

//性别

intdate;

//日期

switch(n)

{

case1:

system("cls");

for(p=head;p!=NULL;p=p-next)

{

for(q=p-next;q!=NULL;q=q-next)

{

if(p-brnumq-brnum)

{

buildnum=q-buildnum;

roomnum=q-roomnum;

brnum=q-brnum;

area=q-area;

rnanum=q-rnanum;

strcpy(xy,q-

bj=q-

num=q-

strcpy(name,q-name);

strcpy(sex,q-sex);

date=q-date;

q-buildnum=p-buildnum;

q-roomnum=p-roomnum;

q-brnum=p-brnum;

q-area=p-area;

strcpy(q-xy,p-

q-bj=p-

q-num=p-

strcpy(q-name,p-name);

strcpy(q-sex,p-sex);

q-date=p-date;

p-buildnum=buildnum;

p-roomnum=roomnum;

p-brnum=brnum;

p-area=area;

strcpy(p-xy,xy);

p-bj=bj;

p-num=num;

strcpy(p-name,name);

strcpy(p-sex,sex);

p-date=date;

}

}

}

fp=fopen("student","wb");

if(fp==NULL)

{

printf("文件打开失败!");

}

if(fwrite(head,N,1,fp)!=1)

{

printf("写入错误!");

}

fclose(fp);

if(head!=NULL)

{

p=head-next;

fp=fopen("student","ab");

if(fp==NULL)

{

printf("文件打开失败!");

}

while(p!=NULL)

{

if(fwrite(p,N,1,fp)!=1)

{

printf("写入错误!");

}

p=p-next;

}

fclose(fp);

}

output(head);

system("pause");

return1;

case2:

system("cls");

for(p=head;p!=NULL;p=p-next)

{

for(q=p-next;q!=NULL;q=q-next)

{

if(p-numq-num)

{

buildnum=q-buildnum;

roomnum=q-roomnum;

brnum=q-brnum;

area=q-area;

strcpy(xy,q-

bj=q-

num=q-

strcpy(name,q-name);

strcpy(sex,q-sex);

date=q-date;

q-buildnum=p-buildnum;

q-roomnum=p-roomnum;

q-brnum=p-brnum;

q-area=p-area;

strcpy(q-xy,p-

q-bj=p-

q-num=p-

strcpy(q-name,p-name);

strcpy(q-sex,p-sex);

q-date=p-date;

p-buildnum=buildnum;

p-roomnum=roomnum;

p-brnum=brnum;

p-area=area;

strcpy(p-xy,xy);

p-bj=bj;

p-num=num;

strcpy(p-name,name);

strcpy(p-sex,sex);

p-date=date;

}

}

}

fp=fopen("student","wb");

if(fp==NULL)

{

printf("文件打开失败!");

}

if(fwrite(head,N,1,fp)!=1)

{

printf("写入错误!");

}

fclose(fp);

if(head!=NULL)

{

p=head-next;

fp=fopen("student","ab");

if(fp==NULL)

{

printf("文件打开失败!");

}

while(p!=NULL)

{

if(fwrite(p,N,1,fp)!=1)

{

printf("写入错误!");

}

p=p-next;

}

fclose(fp);

}

output(head);

system("pause");

return1;

case0:

system("pause");

return0;

}

intfind_menu()

//查找菜单

inta;

do

{

system("cls");

printf("\n\n\t\t------------------------------------------------------------\n\n");

printf("\t\t\t▲▲1.按照楼栋房间号查找(查找同一寝室人员)\n\n");

printf("\t\t\t▲▲2.按照学院查找(查找同一学院人员)\n\n");

printf("\t\t\t▲▲3.按照班级查找(查找同一班级人员)\n\n");

printf("\t\t\t▲▲4.按照学号查找\n\n");

printf("\t\t\t▲▲5.按照姓名查找\n\n");

printf("\t\t\t▲▲0.返回到主菜单\n\n");

printf("\t\t------------------------------------------------------------\n");

printf("\t\t请选择您要运行的选项按(0-5):");

scanf("%d",

}while(a0||a

returna;

intfind(stuhead,intn)

//查找选择菜单

stup;

head=ss();

switch(n)

{

case1:

system("cls");

intsou;

printf("\n\t\t\t要查找的宿舍房间号为:");

scanf("%d",sou);

printf("--------------------------------------------------------------------------------\n");

printf("楼栋号房间号房间面积容纳数学院

班级

学号

姓名

性别

日期

已住人数

\n");

printf("--------------------------------------------------------------------------------\n");

for(p=head;p!=NULL;p=p-next)

{

if(p-brnum==sou)

printf("%3d%5d

%.1f

%5d%10s%4d%4d%6s%3s%4d%3d\n",p-buildnum,p-roomnum,p-area,p-rnanum,p-xy,p-bj,p-num,p-name,p-sex,p-date,a[p-brnum]);

}

system("pause");

return1;

case2:

system("cls");

p=head;

chard[30];

printf("\n\t\t\t要查找的学院为:");

scanf("%s",

printf("--------------------------------------------------------------------------------\n");

printf("楼栋号房间号房间面积容纳数学院

班级

学号

姓名

性别

日期

已住人数

\n");

printf("--------------------------------------------------------------------------------\n");

for(p=head;p!=NULL;p=p-next)

{

if(strcmp(p-xy,d)==0)

printf("%3d%5d

%.1f

%5d%10s%4d%4d%6s%3s%4d%3d\n",p-buildnum,p-roomnum,p-area,p-rnanum,p-xy,p-bj,p-num,p-name,p-sex,p-date,a[p-brnum]);

}

system("pause");

return1;

case3:

system("cls");

intcl;

printf("\n\t\t\t要查找的班级为:");

scanf("%d",cl);

printf("--------------------------------------------------------------------------------\n");

printf("楼栋号房间号房间面积容纳数学院

班级

学号

姓名

性别

日期

已住人数

\n");

printf("--------------------------------------------------------------------------------\n");

for(p=head;p!=NULL;p=p-next)

{

if(p-bj==cl)

printf("%3d%5d

%.1f

%5d%10s%4d%4d%6s%3s%4d%3d\n",p-buildnum,p-roomnum,p-area,p-rnanum,p-xy,p-bj,p-num,p-name,p-sex,p-date,a[p-brnum]);

}

system("pause");

return1;

case4:

system("cls");

intf;

printf("\n\t\t\t要查找的学号为:");

scanf("%d",

printf("--------------------------------------------------------------------------------\n");

printf("楼栋号房间号房间面积容纳数学院

班级

学号

姓名

性别

日期

已住人数

\n");

printf("--------------------------------------------------------------------------------\n");

for(p=head;p!=NULL;p=p-next)

{

if(p-num==f)

printf("%3d%5d

%.1f

%5d%10s%4d%4d%6s%3s%4d%3d\n",p-buildnum,p-roomnum,p-area,p-rnanum,p-xy,p-bj,p-num,p-name,p-sex,p-date,a[p-brnum]);

}

system("pause");

return1;

case5:

system("cls");

charg[20];

printf("\n\t\t\t要查找的姓名为:");

scanf("%s",g);

printf("--------------------------------------------------------------------------------\n");

printf("楼栋号房间号房间面积容纳数学院

班级

学号

姓名

性别

日期

已住人数

\n");

printf("--------------------------------------------------------------------------------\n");

for(p=head;p!=NULL;p=p-next)

{

if(strcmp(p-name,g)==0)

printf("%3d%5d

%.1f

%5d%10s%4d%4d%6s%3s%4d%3d\n",p-buildnum,p-roomnum,p-area,p-rnanum,p-xy,p-bj,p-num,p-name,p-sex,p-date,a[p-brnum]);

}

system("pause");

return1;

case0:

system("pause");

return0;

}

intalter(stuhead)

//修改学生信息

FILE*fp;

inty;

printf("\n\t\t\t请输入将要修改的学生的学号:");

scanf("%d",

stup;

head=ss();

p=head;

while(p!=NULL)

{

if(y==p-num)

{

printf("--------------------------------------------------------------------------------\n");

printf("楼栋号房间号房间面积容纳数学院

班级

学号

姓名

性别

日期

已住人数

\n");

printf("--------------------------------------------------------------------------------\n");

printf("%3d%5d

%.1f

%5d%10s%4d%4d%6s%3s%4d%3d\n",p-buildnum,p-roomnum,p-area,p-rnanum,p-xy,p-bj,p-num,p-name,p-sex,p-date,a[p-brnum]);

printf("\n\t\t对信息进行修改:\n");

printf("--------------------------------------------------------------------------------\n");

printf("楼栋号房间号宿舍房间号房间面积容纳数学院

班级

学号

姓名

性别

日期\n");

printf("--------------------------------------------------------------------------------\n");

scanf("%d%d%d%f%d%s%d%d%s%s%d",p-buildnum,p-roomnum,p-brnum,p-area,p-rnanum,p-xy,p-bj,p-num,p-name,p-sex,p-date);

a[p-brnum]++;

if(a[p-brnum]==p-rnanum)

printf("\n该寝室已入住满,请安排后面的学生到其它空余寝室入住\n");

printf("\n");

}

p=p-next;

}

fp=fopen("student","wb");

//以只写的方式打开名为student的二进制文件,打开的同时清空文件中的内容

if(fp==NULL)

{

printf("文件打开失败!");

}

if(fwrite(head,N,1,fp)!=1)

//将head写入fp所指向的文件中

{

printf("写入错误!");

}

fclose(fp);

//关闭文件

if(head!=NULL)

//如果head不为空

{

p=head-next;

//让p指向第二个结点

fp=fopen("student","ab");

//以追加的方式打开文件

if(fp==NULL)

{

printf("文件打开失败!");

}

while(p!=NULL)

{

if(fwrite(p,N,1,fp)!=1)//将p写入fp所指向的文件中

{

printf("写入错误!");

}

p=p-next;

}

fclose(fp);

}

Sleep(500);

}

intdel_menu()

inta;

do

{

system("cls");

printf("\n\n\t\t------------------------------------------------------------\n\n");

printf("\t\t\t▲▲1.删除某个学生信息\n\n");

printf("\t\t\t▲▲2.删除全部学生信息\n\n");

printf("\t\t\t▲▲0.返回到主菜单\n\n");

printf("\t\t------------------------------------------------------------\n");

printf("\t\t请选择您要运行的选项按(0-2):");

scanf("%d",

}

while(a0||a

returna;

intdel(stuhead,intg)

//删除学生信息

FILE*fp;

stup,q;

head=ss();

p=head;

q=NULL;

switch(g)

{

case1:

system("cls");

intx,y;

printf("\n\t\t\t请输入将要删除学生的学号:");

scanf("%d",

while(p!=NULLp-num!=y)

{

q=p;

p=p-next;

x=p-brnum;

}

if(p!=NULL)

{

if(q==NULL)

{

head=head-next;

}

elseif(p-next!=NULL)

{

q-next=p-next;

}

else

q-next=NULL;

}

free(p);

printf("\n\t\t\t删除成功!\n");

a[x]--;

fp=fopen("student","wb");

if(fp==NULL)

{

printf("文件打开失败!");

}

if(fwrite(head,N,1,fp)!=1)

{

printf("写入错误!");

}

fclose(fp);

if(head!=NULL)

{

p=head-next;

fp=fopen("student","ab");

if(fp==NULL)

{

printf("文件打开失败!");

}

while(p!=NULL)

{

if(fwrite(p,N,1,fp)!=1)

{

printf("写入错误!");

}

p=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论