宿舍管理系统报告 - 范文中心

宿舍管理系统报告

07/07

目 录

一、实验目的................................................................................................................... 2 二、实验内容................................................................................................................... 2 三、实验环境................................................................................................................... 2 四、需求分析................................................................................................................... 2 五、概要设计................................................................................................................... 3

1、方案设计 ............................................................................................................. 3 2、数据结构说明 ...................................................................................................... 3 3、模块功能说明 ...................................................................................................... 4 六、详细设计及运行结果 ................................................................................................. 5

1、登陆界面 ............................................................................................................. 5 2、主界面 . ................................................................................................................ 5 3、录入模块 ............................................................................................................. 6 4、录入界面 ............................................................................................................. 7 5、打印学生信息界面 ............................................................................................... 7 6、更新学生信息界面 ............................................................................................... 8 7、查询宿舍信息界面 ............................................................................................... 8 8、统计宿舍信息界面 ............................................................................................... 9 9、学生宿舍排序 ...................................................................................................... 9 七、源程序 .................................................................................................................... 10 八、心得体会................................................................................................................. 28

学生宿舍管理系统

一、实验目的

1. 2. 3. 4.

熟练掌握线性表的基本操作在顺序存储和链式存储上的实现。、; 以线性表的各种操作(建立、插入、删除、遍历等)的实现为重点; 掌握线性表的动态分配顺序存储结构的定义和基本操作的实现;

通过实验帮助学生加深对C 语言的使用(特别是函数的参数调用、指针

类型的应用和链表的建立等各种基本操作)。

二、实验内容

我组设计的是“学生宿舍管理系统”,主要是针对住宿学生个人信息的管理,适用对象主要是学校,以方便学校对住宿学生的管理。包括学生的姓名、学号、性别、专业、班级等等。在编写过程中主要运用C 语言的基本知识有:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的调用与使用)等。

三、实验环境

台式计算机每人一台; 软件:Visual C++6.0;

四、需求分析

该程序是由C 语言编写的一个宿舍管理查询软件,本程序在Microsoft Visual C++ 6.0下运行,其主要功能是实现对学生信息的录入、添加、删除、修改、查询、统计。其中查询可以分别以姓名、学号、宿舍号为关键字查询学生信息。统计可以分别以学号、宿舍号、性别、班级、专业为关键字进行统计,并且输出信息按学号大小从小到大输出。

五、概要设计

1、方案设计

2、数据结构说明

程序中数据主要是学生信息和宿舍信息,具体属于类型如下: struct stu {

char name[20]; int num; char sex; int age; int grade; int nclass; char zhuanye[30]; };

struct dom

{

int bui_num; int floor_num; int room_num; int bed_num; struct stu st; }s[MAX],p;

3、模块功能说明

第一密码模块:调用cipher(),进行管理者的注册与登录操作。 第二录入模块:调用input_message(),对住宿学生信息进行录入。 第三添加模块:调用append_message(),对新来学生信息进行添加录入。 第四修改模块:调用revise_message(),对需修改学生的信息进行修改。 第五删除模块:调用delete_message(),对某一学生信息进行删除操作。

第六查询模块:调用find_message(),分别以姓名、学号、宿舍号对学生信息进行查询。 第七统计模块:调用census_message(),分别以学号、宿舍号、性别、班级、专业方式对学生信息进行统计,并按学号由小到大输出。

六、详细设计及运行结果

1、登陆界面

2、主界面

5、打印学生信息界面

7、查询宿舍信息界面

9、学生宿舍排序

七、源程序

#include #include "string.h"

#define MAX 10 #define

PRINT1

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

#define PRINT2 printf("学号--学生姓名--性别--年龄--年级--班级--专业--楼号--楼层号--房间号--床号\n\n") int sum; struct stu {

char name[20]; int num; char sex; int age; int grade; int nclass; char zhuanye[30]; };

struct dom {

int bui_num; int floor_num; int room_num; int bed_num; struct stu st;

}s[MAX],p;

/*保存信息*/

save_message()

{ FILE *fp;

int i;

if((fp=fopen("dom.txt","wt"))==NULL)

{

printf("读文件错误!\n");

return 0;

}

for(i=0;i

if(fwrite(&s[i],sizeof(struct dom),1,fp)!=1)

printf("写文件错误!\n");

fclose(fp);

}

/*输入模块*/

input_message()

{ int i=0;

//clrscr();

printf("\n\n 录入学生信息(最多%d个)\n",MAX);

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

do

{

printf("\n 第%d个学生\n\n",i+1);

printf("\n 学号: ");

scanf("%d",&s[i].st.num);

if(s[i].st.num==0) break;

printf("\n 学生姓名: ");

scanf("%s",s[i].st.name);

printf("\n 学生性别(男生用M 表示, 女生用F 表示):");

getchar();

scanf("%c",&s[i].st.sex);

printf("\n 学生年龄: ");

scanf("%d",&s[i].st.age);

printf("\n 学生年级: ");

scanf("%d",&s[i].st.grade);

printf("\n 学生班级: ");

scanf("%d",&s[i].st.nclass);

printf("\n 学生专业: ");

scanf("%s",&s[i].st.zhuanye);

printf("\n 宿舍楼号: ");

scanf("%d",&s[i].bui_num);

printf("\n 宿舍楼层号: ");

scanf("%d",&s[i].floor_num);

printf("\n 宿舍房间号: ");

scanf("%d",&s[i].room_num);

printf("\n 宿舍床号: ");

scanf("%d",&s[i].bed_num);

i++;

}while(i

printf("\n --%d个学生的信息输入完毕!--\n",i);

sum=i;

printf("\n 按任意键返回主菜单!");

getchar();

// bioskey(0);

return 0;

}

/*读取信息*/

int read_message()

{

FILE *fp;

int i=0;

if((fp=fopen("dom.txt","rt"))==NULL)

{

printf("\n\n*****暂时还没有任何信息,按任意键进入主菜单选择基本信息的录入!*****\n");

return 0;

}

while(!feof(fp))

{

fread(&s[i],sizeof(struct dom),1,fp);

i++;

}

fclose(fp);

return(i);

}

/*输出模块*/

output_message()

{ int i=0;

// clrscr();

printf("\n\n --学生信息表-- \n\n");

PRINT2;

PRINT1;

for(i=0;i

if(s[i].st.num!=0)

{

printf("%2d%10s%6c%7d%6d%5d%8s%5d%6d%8d%9d\n\n",s[i].st.num,s[i].st.name,s[i].st.sex,s[i].st.age,

s[i].st.grade,s[i].st.nclass,s[i].st.zhuanye,s[i].bui_num,s[i].floor_num,s[i].room_num,s[i].bed_num);

printf("\n");

// bioskey(0);

}

return 0; ///

}

/*添加学生信息*/

insert_message()

{int i=sum,flag=0;

char choice;

printf("\n\n 添加一个新同学\n");

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

do

{

printf("\n 新学号: ");

scanf("%d",&s[i].st.num);

printf("\n 学生姓名: ");

scanf("%s",s[i].st.name);

printf("\n 学生性别(男生用M 表示, 女生用F 表示):");

getchar();

scanf("%c",&s[i].st.sex);

printf("\n 学生年龄: ");

scanf("%d",&s[i].st.age);

printf("\n 学生年级: ");

scanf("%d",&s[i].st.grade);

printf("\n 学生班级: ");

scanf("%d",&s[i].st.nclass);

printf("\n 学生专业: ");

scanf("%s",s[i].st.zhuanye);

printf("\n 宿舍楼号: ");

scanf("%d",&s[i].bui_num);

printf("\n 宿舍楼层号: ");

scanf("%d",&s[i].floor_num);

printf("\n 宿舍房间号: ");

scanf("%d",&s[i].room_num);

printf("\n 宿舍床号: ");

scanf("%d",&s[i].bed_num);

sum++;

printf("\n 要继续吗?(Y/N)");

getchar();

scanf("%c",&choice);

if(choice=='y' || choice=='Y')

{

flag=1;

i++;

printf("\n 继续!\n");

}

else flag=0;

}while(flag==1);

printf("\n 按任意键返回主菜单!");

return 0;

}

/*删除模块*/

del_message()

{int flag,del_num,i,k;

char choice;

do

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

scanf("%d",&del_num);

for(i=0;i

if(del_num==s[i].st.num)

for(k=i;k

s[k]=s[k+1];

sum--;

printf("\n\n 继续吗?(Y/N)");

getchar();

scanf("%c",&choice);

if(choice=='y' || choice=='Y')

{

flag=1;

printf("\n 继续!\n");

}

else flag=0;

}while(flag==1);

printf("\n\n 按任意键返回主菜单!");

getchar();

return 0;

}

/*修改模块*/

revise_message()

{int i=0,choices,revise_num,flag=0; char choice;

do

{

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

scanf("%d",&revise_num);

for(i=0;i

if(s[i].st.num==revise_num)

{

printf("\n --学生信息--\n");

PRINT1;

PRINT2;

printf("%2d%10s%6c%7d%6d%5d%8s%5d%6d%8d%9d\n\n",s[i].st.num,s[i].st.name,s[i].st.sex,s[i].st.age,s[i].st.grade,s[i].st.nclass,s[i].st.zhuanye,s[i].bui_num,s[i].floor_num,s[i].room_num,s[i].bed_num);

printf("\n 您要修改哪一项?\n");

printf("\n 1.学号\n");

printf("\n 2.性别\n");

printf("\n 3.姓名\n");

printf("\n 4.年龄\n");

printf("\n 5.年级\n");

printf("\n 6.班级\n");

printf("\n 7.专业\n");

printf("\n 8.楼号\n");

printf("\n 9.楼层号\n");

printf("\n 10.房间号\n");

printf("\n 11.床号\n");

printf("\n 请选择(1-11): ");

scanf("%d",&choices);

switch(choices)

{

case 1:printf("\n 输入修改后的学号");

scanf("%d",&s[i].st.num);break;

case 2:printf("\n 输入修改后的姓名");

scanf("%s",s[i].st.name);break;

case 3:printf("\n 输入修改后的性别");

scanf("%s",s[i].st.sex);break;

case 4:printf("\n 输入修改后的年龄");

scanf("%d",&s[i].st.age);break;

case 5:printf("\n 输入修改后的年级");

scanf("%d",&s[i].st.grade);break;

case 6:printf("\n 输入修改后的班级");

scanf("%d",&s[i].st.nclass);break;

case 7:printf("\n 输入修改后的专业");

scanf("%s",&s[i].st.zhuanye);break;

case 8:printf("\n 输入修改后的楼号");

scanf("%d",&s[i].bui_num);break;

case 9:printf("\n 输入修改后的楼层号");

scanf("%d",&s[i].floor_num);break;

case 10:printf("\n 输入修改后的房间号");

scanf("%d",&s[i].room_num);break;

case 11:printf("\n 输入修改后的床号");

scanf("%d",&s[i].bed_num);break;

}

PRINT1;

PRINT2;

printf("%2d%10s%6c%7d%6d%5d%8s%5d%6d%8d%9d\n\n",s[i].st.num,s[i].st.name,s[i].st.sex,s[i].st.age,s[i].st.grade,s[i].st.nclass,s[i].st.zhuanye,s[i].bui_num,s[i].floor_num,s[i].room_num,s[i].bed_num);

break;

}

if(i==sum)

printf("\n 该学生不存在!");

// bioskey(0);

return 0;

/* printf("\n\n 继续修改吗?(Y/N)");

getchar();

scanf("%c",&choice);

if(choice=='y'|| choice=='Y')

{

flag=1;

printf("\n 继续!\n");

}

else flag=0; */

}while(flag==1);

getchar();

printf("\n 按任意键返回主菜单! ");

return 0;

}

/*更新模块*/

renew_message()

{

int choice;

do

{

printf("\n\n\n ***** printf(" 1. printf(" 2. printf(" 3. printf(" 0. printf(" scanf("%d",&choice);

switch(choice)

{

case 1:insert_message();break; case 2:del_message();break;

case 3:revise_message();break; case 0:break;

}

}while(choice!=0);

return 0;

}

更新学生信息*****\n\n"); 添加学生信息\n\n"); 删除学生信息\n\n"); 修改学生信息\n\n"); 返回主菜单\n\n"); 请选择(0-3): ");

inquire_name() /*按姓名查询*/

{

int i,j=0;

char inquire_name[10];

printf("\n 输入要查询的学生姓名: ");

scanf("%s",inquire_name);

for(i=0;i

if(strcmp(s[i].st.name,inquire_name)==0&&s[i].st.num!=0)

{

printf("\n --学生信息-- \n");

PRINT1;

PRINT2;

printf("%2d%10s%6c%7d%6d%5d%8s%5d%6d%8d%9d\n\n",s[i].st.num,s[i].st.name,s[i].st.sex,s[i].st.age,

s[i].st.grade,s[i].st.nclass,s[i].st.zhuanye,s[i].bui_num,s[i].floor_num,s[i].room_num,s[i].bed_num);

}

else j++;

if(j==sum)

printf("\n 该学生不存在!");

return 0;

}

int inquire_num() /*按学号查询*/

{

int i,j=0,inquire_num;

printf("\n 输入要查询的学生学号: ");

scanf("%d",&inquire_num);

for(i=0;i

if(inquire_num==s[i].st.num)

{

printf("\n --学生信息--\n");

PRINT1;

PRINT2;

printf("%2d%10s%6c%7d%6d%5d%8s%5d%6d%8d%9d\n\n",s[i].st.num,s[i].st.name,s[i].st.sex,s[i].st.age,

s[i].st.grade,s[i].st.nclass,s[i].st.zhuanye,s[i].bui_num,s[i].floor_num,s[i].room_num,s[i].bed_num);

}

else j++;

if(j==sum)

printf("\n 该学生不存在!");

return 0;

}

/*查询模块*/

inquire_message()

{int choice;

do

{

printf("\n\n *****查询学生信息*****\n\n");

printf(" 1.按学生姓名查询\n");

printf(" 2.按学生学号查询\n");

printf(" 0.回主菜单\n");

printf(" 请选择(0-2): ");

scanf("%d",&choice);

switch(choice)

{

case 1:inquire_name();break;

case 2:inquire_num();break;

case 0:break;

}

}while(choice!=0);

return 0;

}

count_person() /*学生住宿情况统计*/

{

int i,j=0,count_grade,count_nclass;

char count_zhuanye[20];

printf("\n 输入要统计的学生专业, 年级, 班级: ");

scanf("%10s %8d %8d",&count_zhuanye,&count_grade,&count_nclass);

printf("\n 住宿情况");

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

printf("\n 姓名 学号 楼号 楼层号 房间号 床号 \n");

for(i=0;i

if(s[i].st.grade==count_grade&&s[i].st.nclass==count_nclass&&strcmp(s[i].st.zhuanye,count_zhuanye)==0)

printf("\n%10s%8d%8d%8d%8d%8d\n",s[i].st.name,s[i].st.num,s[i].bui_num,s[i].floor_num,

s[i].room_num,s[i].bed_num);

else j++;

if(j==sum)

printf("\n 该学生不存在!");

return 0;

}

/*统计模块*/

count_message()

{

int choice;

do

{

printf("\n\n *****统计住宿信息*****\n");

printf(" 1.学生住宿情况统计\n");

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

printf(" 请选择(0-1): ");

scanf("%d",&choice);

switch(choice)

{

case 1:count_person();break;

case 0:break;

}

}while(choice!=0);

return 0;

}

sort_domitry() /*学生宿舍情况排序*/

{

int i,j ;

printf("\n 宿舍排序\n");

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

printf("\n 排序 姓名 学号 性别 楼号 楼层号 房间号\n");

for(i=0;i

{

for(j=i+1;j

if(s[i].bui_num

{

p=s[i];

s[i]=s[j];

s[j]=p;

}

else if(s[i].bui_num==s[j].bui_num)

if(s[i].floor_num

{

p=s[i];

s[i]=s[j];

s[j]=p;

}

else if(s[i].floor_num==s[j].floor_num)

if(s[i].room_num

{

p=s[i];

s[i]=s[j]; 床号

s[i]=p;

}

else if(s[i].room_num==s[j].room_num)

if(s[i].bed_num

{

p=s[i];

s[i]=s[j];

s[j]=p;

}

}

for(i=0;i

if(s[i].st.num!=0)

printf("\n%12d%8s%8d%8c%8d%8d%8d%6d\n\n",i+1,s[i].st.name,s[i].st.num,s[i].st.sex,s[i].bui_num,s[i].floor_num,s[i].room_num,s[i].bed_num);

return 0;

}

/*排序模块*/

sort_message()

{ int choice;

do

{

printf("\n *****宿舍排序*****\n");

printf(" 1.宿舍情况排序\n");

printf(" 0.返回主菜单!\n");

printf(" 请选择(0-1): ");

scanf("%d",&choice);

switch(choice)

{

case 1:sort_domitry();break;

case 0:break;

}

}

while(choice!=0);

return 0;

}

void main()

{

int choice;

sum=read_message();

// bioskey(0);

do

{

// clrscr();

printf("\n\n\n *****宿舍管理系统*****\n\n");

printf(" 1.录入学生信息\n\n");

printf(" 2.打印学生信息\n\n");

printf(" 3.更新学生信息\n\n");

printf(" 4.查询宿舍信息\n\n");

printf(" 5.统计宿舍信息\n\n");

printf(" 6.学生宿舍排序\n\n");

printf(" 0.退出系统\n\n");

printf(" 请选择(0-6):");

scanf("%d",&choice);

switch(choice)

{

case 1: input_message(); break; /*录入模块*/

case 2: output_message(); break; /*输出模块*/

case 3: renew_message(); break; /*更新模块*/

case 4: inquire_message(); break; /*查询模块*/

case 5: count_message(); break; /*统计模块*/

case 6: sort_message(); break; /*排序模块*/

; case 0: break; /*退出系统*/

}

}while(choice!=0);

save_message();

//save_message(sum)

printf("\n以上学生信息已保存!-(文件名:domitry.txt)\n");

}

八、心得体会

做了一个星期的程序设计终于做完了,在这次程序设计课中,真是让我获益匪浅,我突然发现写程序还挺有意思的。

通过这次的程序设计,发现一个程序设计就是算法与数据结构的结合体,自己也开始对程序产生了前所未有的兴趣,以前偷工减料的学习也不可能一下子写出一个程序出来,于是我就认真看老师写的程序,发现我们看懂了一个程序其实不难,难的是对于一个程序的思想的理解,我们要掌握一个算法,不仅仅限于读懂,主要的是要理解老师的思路,学习老师的解决问题的方法。自己在写程序的时候,发现自己的知识太少了,特别是基础知识很多都是模模糊糊的一个概念,没有落实到真正的程序,所以自己写的时候也感到万分痛苦!

我以后一定会好好学习,学以致用!


相关内容

  • C10 女生宿舍管理员采访稿
    C10 女生宿舍管理员 采访稿 我们每天在学校生活的大部分时间都围绕着宿舍生活,然而在宿舍里,那个每天每时每刻都守候在宿舍的门口的宿管让我们的校园生活多了几分安心与安全.经过管理学11组全体组员的认真分析和深入研究,我们最终确定将采访基层管 ...
  • 农学宿舍自查报告
    农学院宿舍自查报告 根据安学院学工发[2014]4号关于开展2013-2014学年第二学期学生宿舍安全专项检查的通知,农学院认真学习了学校文件精神,为贯彻落实学校开展的学生宿舍安全隐患排查活动,扎实推进高层次文明校园创建工作,紧急召开了加强 ...
  • 公寓安全管理制度
    公寓楼安全管理制度 一.按时作息,严格遵守公寓楼管理制度. 二.不得将宿舍钥匙随意转交他人,不得随意配置宿舍钥匙,各宿舍负责人要合理安排值日 人员.发现问题及时报告宿舍管理人员或保卫科值班人员. 三.住校生在宿舍内不得存放超过五十元的现金, ...
  • 学生宿舍管理系统项目可行性研究报告
    学生宿舍管理系统项目 1.1编写目的 随着时代的发展,计算机技术越来越深入各行各业,为广大的用户提供了更为周到和便捷的服务.目前各行各业广泛使用专用系统,其内容范围跨越了教育科研.文化事业.金融.商业.新闻出版.娱乐.体育等各个领域,其用户 ...
  • 20**年学校后勤处长述职报告
    2012年学校后勤处长述职报告 根据学院的统一布署,按照学院有关考核工作的要求,我在这里将xx年的工作情况向大家作一汇报,请大家给予评议. 本人自xx年xx月主持后勤服务集团工作以来,严格按照与学院签订的 干部管理合约 以及学校纪委关于廉洁 ...
  • 宿舍楼疏散演练方案
    大同市卫生学校宿舍楼 应急疏散演练方案 一.演练目的 为进一步加强学校的安全工作,增强学生面对突发事件与自 然灾害发生时的应变.自救.以及迅速有序撤离现场的自护能力,提高学校安全管理水平,拟计划进行一次学生宿舍楼应急疏散演练. 二.实施对象 ...
  • 舍得乡中心学校学生宿舍管理制度
    舍得乡中心学校学生宿舍管理 一. 凡在校住宿的学生必须严格遵守学校的一切规定, 服从宿舍管理员的安排. 二.学生在宿舍内要讲文明,同学之间要团结友爱,互相帮助. 三.发扬艰苦朴素.勤俭节约的作风,节约用水用电,爱惜粮食,爱护公物,损坏或遗失 ...
  • 安全文明月策划书
    廊坊师范学院 文学院 安全文明月策划书 前言 大学生中,校园是我们生活和学习得重要场所,寝室安全更是校园安全的重要组成部分,一个安全,健康向上.丰富多彩的寝室文化,有利于寝室成员开拓视野.启迪思维.活跃思想,有利于我们和睦相处,形成良好的心 ...
  • 制衣厂职工宿舍及仓库项目申请报告
    目 录 第一章 申报单位及项目概况 ...................................................................................................... ...
  • 隰县实验中学[学生行为管理考核细则]
    隰县实验中学 "补位抓细学生管理办法"之系列制度 目 录 第一部分 <学生行为管理考核细则> 一.文明礼仪篇 文明礼仪--------------------------------------------- ...