宿舍管理系统报告

目 录

一、实验目的................................................................................................................... 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");

}

八、心得体会

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

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

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

目 录

一、实验目的................................................................................................................... 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组全体组员的认真分析和深入研究,我们最终确定将采访基层管 ...查看


  • 学生宿舍管理情况自查报告
  • 改善条件 优化环境 规范管理 精细服务 ----环城西郊小学创建学生"文明宿舍"自查报告 我校现有学生550人(其中住宿生430人) .为进一步消除各类安全隐患,保证广大学生生命和财物安全,创造良好的学习.住宿环境,建设 ...查看


  • 学生宿舍突发事件应急预案
  • 关于公寓突发事件采取应急预案 为确保学生宿舍安全.维护稳定.严防各类事故的发生,把损失降低到最低程度,根据学院要求和学生宿舍的实际情况,特拟订学生宿舍突发事件处理方案如下: 一.做好突发事件的预防工作 1.坚持预防为主的原则,积极做好防火. ...查看


  • 农学宿舍自查报告
  • 农学院宿舍自查报告 根据安学院学工发[2014]4号关于开展2013-2014学年第二学期学生宿舍安全专项检查的通知,农学院认真学习了学校文件精神,为贯彻落实学校开展的学生宿舍安全隐患排查活动,扎实推进高层次文明校园创建工作,紧急召开了加强 ...查看


  • 晚归调查报告
  • 广西经济管理干部学院 [市场调查与预测] 报告名称: 所属系部: 所在班级: 学生姓名: 指导老师: 二0一三年五月二十日 一. 前言 根据统计,在大学里,宿舍是我们活动最多的地方之一,宿舍生活环境质量的好坏与每个大学生的生活质量和日常学习 ...查看


  • 可行性分析报告(5)
  • 学生宿舍管理系统可行性分析报告 1.可行性研究的前提 该系统主要包括基本数据维护.基本业务.数据库管理和信息查询四部份. 1.1 基本数据维护部份应包括提供管理员添加.修改并维护基本的数据途径. 例如添加修改宿舍和办理学生入住与搬出或者换宿 ...查看


  • 宿舍夜间查房的规定及学生夜不归宿处理办法
  • 凌云中学学生宿舍楼夜间查房制度及学生夜不归宿处理办法 一.学生宿舍楼夜间查房制度 夜间查房工作由宿舍管理员进行组织,各宿舍长负责执行,具体规定如下: 1.自查.每间宿舍指定一名责任心强.工作认真负责的学生作为宿舍长,各宿舍长在熄灯前应到值班 ...查看


热门内容