宿舍管理系统c语言设计_第1页
宿舍管理系统c语言设计_第2页
宿舍管理系统c语言设计_第3页
宿舍管理系统c语言设计_第4页
宿舍管理系统c语言设计_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

河南工程学院

《数据结构》课程设计

成果报告

姓名__________________________

学号__________________________

学院计算机学院

专业班级计算机科学与技术1521

专业课程数据结构___________

指导老师_________

2016年6月20日

宿舍管理查询系统

河南工程学院计算机学院

课程设计报告书

课程设计题目:

课程设计时间:6月20日〜6月24日

课程设计地点:计算机学院1201

课程设计单位:计算机学院

指导教师:李芳学院院长:曲宏山

宿舍管理查询系统

本组组长夏少峰

本组成员夏少峰、丁宏阁、曲宣榕

设计题目宿舍管理查询系统

本人分工资料查询,设计思路、算法设计、部分代码编制、

代码调试

考核项目考核内容得分

(30分)出勤情况、态度、效率、协作精神:知识掌握

平时考核

情况、基本操作技能、知识应用能力、获取知识能力

(20分)需求分析能力,算法分析设计能力

设计思想

(30分)编制代码能力,调试分析能力

编码、调试分析

文档资料(20分)表达能力、文档写作能力和文档的规范性

总评成绩

指导教师评语:

等级:

评阅人:职称:副教授

II

宿舍管理查询系统

年月日

目录

目录

1设计目标................................................1

2课题分析................................................1

2.1需求分析..............................................1

2.2存储结构设计..........................................2

2.3算法设计及其分析......................................2

2.4程序流程图...........................................11

3程序清单...............................................12

4系统测试...............................................30

4.1测试数据............................................30

4.2测试结果.............................................31

5总结...................................................33

5.1收获.................................................33

5.2不足................................................34

5.3算法改进分析........................................34

HI

宿舍管理查询系统

IV

宿舍管理查询系统

1设计目标

(1)随着计算机技术的发展以及网络的发展,对学生宿舍的管理与控制

越来越实用并且得到管理者的证实,无论是查询还是修改都有很

方便,查询的信息一目了然。这个程序包含了学生宿舍信息的录

入、修改,学生楼栋信息的录入、毕业生的退舍、智能分配宿舍

等功能,但不能进行删除的操作,总体来说使用简单方便。这个

程序应该满足以下几个要求:

(2)信息的输入:需要建立起完整的宿舍信息数据库,从而实现通过输入

学生入住的楼栋号、宿舍号,该宿舍入住的人数以及入住的学生

的信息〔包括学生的姓名、学号和系别),来添加学生信息,实

现信息录入。

(3)信息的修改:进行信息输入后,过一段时间后,想要对里面的信息进

行修改,可以通过学号等关键字对其进行修改。

信息的查询:这个程序应该可以实现通过按学号或房号进行查找的过程。在此

使用的是折半法,查找过程是:先确定待查记录所在的范围(区间),然后逐

步缩小范围直到找到或找不到该记录为止。这样可以缩短查找时间,同时还可

以减少查找的次数。

退出程序:当完成了所有的操作之后就要进行退出操作了。

2课题分析

2.1需求分析

(1)学生宿舍管理是一个很大的项目,在早期,还没有利用计算机管理

时,一切都是利用人工进行管理的,这样管理起来既烦琐又复杂,

资料也很容易被丢失,而且耗时、耗资金。而利用本系统,可以高效

地对学生宿舍进行统一管理与控制,资料也不容易被丢失,这样大

大节省了人力与资源,提高了管理效率,给管理人员带来很多方便,

基于以上分析有如下分析:

宿舍管理查询系统

(2)要实现交互工作方式,各项操作结束后均应返回主菜单。

(3)系统本无任何信息数据,要建立数据文件,需要开发一个信息录入

功能,即首先创建一个学员线性表,同时我们可以将数据暂时保存

在内存中,所以我们开发信息存盘功能;

(4)信息录入后都要保存在内存中,用户看不到,需要设计一个信息显

示功能,信息的显示应该便于查询,所以需要具备按各种关键字显

示的功能;

(5)由于有些新同学入校,所以设计了插入功能;

当用户操作完毕需要退出时,提供了退出选项,便于使用者退出交互式工作系

2.2存储结构设计

本系定义的存储结构为顺序存储结构,结构体为

typedefstruct(

charTD[20];〃学号

charname[20];//姓名

chargender[10];//性别

chardormitory[4];〃宿舍号

}Student;

typedefstruct{

char1D[4];〃宿舍号

intmaxnum;〃可容纳人数

intcurrent_num;〃已入住人数

chargender[10];〃男舍或女舍

2.3算法设计及其分析

在此系统中,根据对查阅资料的了解,我们对宿舍人员的信息以及各种函数进

行了定义,具体如下:

(1)将宿舍人员信息定义为一个名字为typedefstruct的结构体,其中色括

charID{20},charname[201,cahrgender[10],chardormitory[4]分别表示学

2

宿舍管理查询系统

号、姓名、性别和宿舍号,将宿舍信息定义为一个名字为typedefstruct的结

构体,其中包括charID[4],charmax_num,charcurrentnum,chargender[10],

分别是宿舍号、可容纳人数、已入住人数、男舍或者女高。

(2)功能函数加上主函数一共有十二个,功能函数包括create(),open(),

insert_dorm(),insertstu(),dormnumsearch0,change0,namesearch(),

check_out(),numsearch(),exchange(),display(),main(),分别用新增楼

栋,“增宿舍信息,新增学生入住宿舍信息,毕业生退舍,互换宿舍,姓名查

询,学号查询,宿舍号查询,互换宿舍,调换宿舍,职能分配宿舍,退出本系

统的功能。

(3)在主函数中,使用一个while语句来选择调用主菜单中的各个功能函数。

由于本人负责新增宿舍楼栋,新增宿舍信息,新增学生宿舍信息的功能,所以

操作如下:

/击数字键“0”则为新增楼栋信息

单击数字键“1”则为新增宿舍信息

单击数字键“2”则为新增学生宿舍信息

在每次操作前都要输入相应的编号。

各功能函数的具体实现如下:

voidcreate(){

printf("\n请输入新增楼栋名称:\n〃);

scanf("%s",);

_fp=fopen(,〃rb+");

if(_fp==NULL){〃如果文件不存在则建立文件否则提示文件已存在

_fp=fopon(,、vb+”);

fp=fopen(strcat(,"学生"),"wb+〃);

if(fp==NULL||_fp==NULL){

printfCopen!\n〃);

exit(-1);

)

)

else

printf("文件已存在!\n");

fclose(fp);

fclose(_fp);

)

3

宿舍管理查询系统

voidopen(){

printf(〃请输入学生宿舍所在楼栋:\n〃);

scanf("s",);

_fp=fopen(,"rb+”);

fp=fopen(strcat(.”学生"),":rb+”);

if(fp==NULL||_fp==NULL)(

printf("open!\n");

exit(-1);

)

)

voidinsert_dorm(){

Dormitory*d=(Dormitory*)malloc(sizcof(Dormitory));

open();

printf(〃\n请输入宿舍号,可容纳学生数,已容纳学生数,男舍/女舍(空格隔开,

结束):\n〃);

scanf("为s”,d->ID);

while(strcmp(d->ID,"#")){

scanf(“/d%d&d->max_num,&d->currontnum,d->gendcr);

fwritc(d,sizeof(Dormitory),1,fp);

scanfd->ID);

)

fclose(_fp);

fuloseCfp);

)

voidinsert_stu(){

longlocate,pre」ocate;

intflag=0;

Student*s=(Student*)malloc(sizeof(Student));

4

宿舍管理查询系统

Dormitory*d=(Dormitory*)ma11oc(sizeof(Dormitory));

open();

printf("\n请输入学号、姓名、性别、宿舍号(空格隔开,结束):\n");

scanf("%s”,s->ID);

while(strcmp(s->ID,”#〃)){〃不相等继续读取,相等为0便退出循环不再读取数据

scanf("%s%$眦〃,s->name,s->gender,s->dormitory);

locate=ftell(_fp);

while(fread(d;sizeof(Dormitory),1,_fp)){

if(!strcmp(d->ID,s->dormitory)){//每增加一个学生,相应寝室的实际

人数应当增加一个

fseek(_fp,locate,SEEK_SET):

d->currcnt_num++;

fwrite(d,sizeof(Dormitory),1,_fp);

flag=1;

break;

)

locate=ftell(_fp);

)

if(flag==0){

printf("不存在该宿舍!\n");

exit(-1);

)

fwiile(5,bizevf(Student),1,fp);

rewind(fp);

scanf('%s”,s->ID);

)

fclose(_fp);

fclose(fp);

5

宿舍管理查询系统

voidchcinge(){

intflag=0,tag=0;

longlocate,locateb,locatec;

charinput_stunum[20];

charinput_dormnum[4];

charprevious_dormnum[4];

Student*s=(Student*)ma11oc(sizeof(Student));

Dormitory*d=(Dormitory*)malloc(sizeof(Dormitory));

open();

printf("\n请输入需要调换宿舍学生学号:\n〃);

scanf(飞s”,input_stunum):

locate=ftel1(fp);

while(fread(s,sizeof(Student),1,fp)){

if(!strcmp(input_stunum,s->ID)){

flag=1;

printf("该学生信息如下:\n%-20s%-20s%-20s%-20s\n","学号","姓名",

性别〃,“宿舍号〃);

printfC"%-20s%-20s%-20s%-20s\n,/,s->lD,s->namc,s->gcnder,

s->dormitory);

strcmp(previous_dormnum,s->dormitory);

printf(〃\n请输入新宿舍的宿舍号:\n〃);

tscaiifinputdoniniuiii)r

locateb=ftell(_fp);

whi1c(fread(d,sizcof(Dormitory),1,fp)){

if(!strcmp(inputdormnum,d->ID)){

tag=1;

if(d->current_num==d->max_num)

printf("该宿舍已满员!“);

6

宿舍管理查询系统

else{

〃更换学生宿舍信息

fseek(fp,locate,SEEKSET);

strcpy(s->dormitory,inputdormnum);

fwrite(s,sizeof(Student),1,fp);

〃更换新宿舍信息

fseek(_fp,locate_b,SEEK_SET);

d->current_num++;

fwrite(d,sizeof(Dormitory),1,fp);

rewind(fp);

〃更换旧宿舍信息

locate_c=ftel1(_fp);

while(fread(d,sizeof(Dormitory),1,_fp)){

if(!strcmp(previous_dormnum,d->ID)){

fseek(fp,locatec,SEEKSET);

d->currentnum—;

fwrite(d,sizeof(Dormitory),1,fp);

break;

)

locate_c=ftell(_fp);

)

}

break;

}

locateq=ftel1(_fp);

)

if(tag==0){

printf("不存不该在舍宿);

7

宿舍管理查询系统

exit(-1);

)

break;

)

locate=ftell(fp);

)

if(flag==0)

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

fclose(_fp);

fclose(fp);

)

voidnamesearch(){

intflag=0,tag=0;

longlocate;

charinput_name[20];

chardornum[4];

charID[20];

Student*s=(Student*)malloc(sizeof(Student));

Dormitory*d=(Dormilory*)ma1Ioc(sizeof(Dormitory));

open();

printf("\n请输入需要搜索的姓名:\n");

isuanfC*%5Z,,iiipul_iRuiie);

while(fread(s,sizeof(Student),1,fp)){

locate=ftell(fp);〃记录下按名字搜索到达的位置

if(!stremp(input_name,s->name)){

flag=1;

8

宿舍管理查询系统

printf("\n学生信息如下:\nM20s%-20s%-20s%-20s\n",〃学号","姓名",〃

性别","宿舍号〃);

printf(*%-20s%-20s%-20s%-20s\n,z,s->!D,s->name,s->gender,

s->dormitory);

strcpy(dornum,s->dormitory);

strcpy(ID,s->ID);

rewind(fp);//指针重置于文件头,查找室友

printf("\n其室友信息如下:\n%-20s%-20s%-20$%-20s\n",〃学号","姓名",

〃性别“,〃宿舍号”);

while(fread(s,sizeof(Student),1,fp)){〃室友宿舍号相同,学号不同

if((!strcmp(dor_num,s->dormitory))&&(strcmp(s->ID,ID))){

printf(,,%-20s%-20s%-20s%-20s\nw,s->ID,s->name,s->gendcr,

s->dormitory);

tag=1;

)

)

if(tag==0)

printf(〃\n没有室友!\n");

tag=0;

whi1e(fread(d,sizeof(Dormitory),1,_fp)){

if(!strcmp(dor_num,d->ID)){

printf("\n该学生所在寝室信息如下:\n%-20s%-20s%-20s%-20s\n,z,

〃宿舍号〃,〃可容纳学生数”,〃已容纳学生数〃,〃男舍/女台〃);

printfC,%-20s%-20d%~20d%-20s\nw,d->ID,d->max_num,

d->currcnt_num,d->gcnder);

break;

)

}

//break;

9

宿舍管理查询系统

)

//同名情况

if(flag)

fseek(fp,locate,SEEKSET);

)

if(flag==0)

pEntf(〃\n没有符合条件的学生的记录!\n");

fclose(_fp);

fclose(fp);

)

voidcheckout()(

charstunum[20];

chardorm_num[20];

longlocate,locate』;

Student*s=(Student*)malloc(sizeof(Student));

Dormitory*d=(Dormitory*)malloc(sizeof(Dormitory));

open();

printf(〃\n请输入退宿学生学号:\n〃);

scan「(飞s”,stu_num);

locate=ftell(fp);

while(fxead(5,tsiaseof(Student),1,fp)){

//locate=ftell(fp);

if(!strcmp(s->ID,stunum)){

strepy(dormnum,s->dormitory);

fseek(fp,locate,SEEK_SET);

memset(s,0,sizeof(Student));

fwrite(s,sizeof(Student),1,fp);

10

宿舍管理查询系统

2.4程序流程图

►.

退出系统

宿舍管理查询系统

3程序清单

#define_CRT_SECURE_NO_WARNINGS

#include<stdio.h>

#include<sldlib.h>

#include<string.h>

typedefstruct{

charID[20];〃学号

charname[20];〃姓名

chargender[10];〃性别

chardormitory[4];〃宿舍号

}Student;

typedefstruct{

charID[4];〃宿舍号

intmax_num;〃可容纳人数

intcurrent_num;〃已入住人数

chargender[10];//男舍或女舍

(Dormitory;

char[20];

FILE*fp:〃学生信息文件指针

FILE*_fp;〃宿舍信息文件指针

voidcreate(){

printf(〃\n请输入新增楼栋名称:\n〃);

scanf);

12

宿舍管理查询系统

_fp=fopen(,"rb+”);

if(_fp=NULL){〃如果文件不存在则建立文件否则提示文件已存在

_fp=fopen(,vwb+,z);

fp=fopen(strcat(,"学生"),"wb+”);

if(fp==NULL||_fp==NULL)(

printf("open!Xn^);

exit(-1);

)

)

else

printf("文件已存在!\n");

fclose(fp):

fclosc(fp);

)

voidopen(){

printf("请输入学生宿舍所在楼桥:\<);

scanf("%s",);

_fp=fopen(,〃rb+“);

fp=fopen(strcat(.”学生"),"rb+");

if(fp==NULL||_fp==NULL){

printf("open!\n〃);

exit(-1);

}

)

voidinsert„dorm(){

Dormitory*d=(Dormitory*)ma11oc(sizeof(Dormitory));

open();

printf("\n请输入宿舍号,可容纳学生数,已容纳学生数,男舍/女舍(空格隔开,

13

宿舍管理查询系统

结束):\n*);

scanf("%s”,d->ID);

while(strcmp(d->ID,"#")){

scanf(飞d%d%s”,&d->maxnum,&d->currentnum,d->gender);

fwrite(d,sizeof(Dormitory),1,_fp);

scanfd->ID);

)

fclose(_fp);

fclose(fp);

)

voidinsert_stu(){

longlocate,prelocate;

intflag=0;

Student*s=(Student*)malloc(sizeof(Student));

Dormitory*d=(Dormitory*)malloc(sizeof(Dormitory));

open();

printf(〃\n请输入学号、姓名、性别、宿舍号(空格隔开,结束):\n〃);

scanfs->ID);

while(strcmp(s->11),〃#〃)){〃不相等继续读取,相等为0便退出循环不再读取数据

scanf(飞s%s*s”,s->name,s->gender,s->dormitory);

locate=ftell(_fp);

while(PieadCd:sizeof(Duimilury),1,_fp)){

if(!strcmp(d->ID,s->dormitory)){//每增加一个学生,相应寝室的实际

人数应当增加一个

fseek(fp,locate,SEEKSET);

d->current_num++;

fwrite(d,sizeof(Dormitory),1,_fp);

flag=1;

14

宿舍管理查询系统

break;

)

locate=ftell(_fp);

)

if(flag==0){

printf("不存在该宿舍!\n");

exit(-1);

)

fwrite(s,sizeof(Student),1,fp);

rewind(_fp);

scanf("%s”,s->ID);

)

fclosc(fp);

fclose(fp);

)

voiddormnumsearch(){

intflag=0,tag=0;

charinput_dormnum[4];

Student*s=(Student*)malloc(sizeof(Student));

Dormitory*d=(Dormilory*)ma11oc(sizeof(Dormitory));

open();

printf(“请输入需要搜索的宿舍号:\n");

tsuaiifC*%5Z,,inpul_iloiiiuiuiii);

while(fread(d,sizeof(Dormitory),1,_fp)){

if(!stremp(inputdormnum,d->ID)){

flag=1;

printf(〃\n接室信息如下:\n%-20s%-20s汩20s%-20s\n",〃宿舍号","可容纳

学生数〃,”已容纳学生数”,〃男舍/女舍〃);

printf(*%-^0s%-20d%-20d%-20s\n",d->W,d->max_num,d->current_num,

15

宿舍管理查询系统

d->gender);

break;

)

)

if(flag){

printf("该宿舍学生信息如下:\n%-20s%-20s%-20s%-20s'n","学号","姓名〃,〃

性别“,〃宿舍号〃);

while(fread(s.sizeof(Student),1,fp)):

if(!strcmp(input_dormnum,s->dormitory)){

tag=1;

printfCz%-20s%-20s%-20s%-20s\n^,s->ID,s->name,s->gender,

s->dormitory):

}

)

if(tag==0)

printf(〃\n该宿舍没有学生入住!\n");

)

else

printf("不存在该宿舍记录!!\n");

fclose(fp);

fclose(fp);

)

voiduhcingeO{

intflag=0,tag=0;

longlocate,locateb,locatcc;

charinput_stunum[20];

charinput_dormnum[4];

charprevious_dormnum[4]:

Student*s=(Student*)malloc(sizeof(Student));

16

宿舍管理查询系统

Dormitory*d=(Dormitory*)ma11oc(sizeof(Dormitory));

open();

printf("\n请输入需要调换宿舍学生学号:\n〃);

scanf(“%s”,inputstunum);

locate=ftell(fp);

while(fread(s,sizeof(Student),1,fp)){

if(!stremp(input_stunum,s->ID)){

flag=1;

printf(〃该学生信息如下:\n%-20s%-20s$-20s%-20s'n","学号","姓名",

性别〃,〃宿舍号〃);

Drintf("虹20s%-20s%-20s%-20s\n",s->!D,s->name,s->gender,

s->dormitory);

strcmp(previous_dormnum,s->dormitory);

prinlf(〃\n请输入新宿舍的宿舍号:\n〃);

scanf("/s〃:input_dormnum);

locate_b=ftell(_fp);

whi1e(fread(d,sizeof(Dormitory),1,_fp)){

if(!strcmp(input_dormnum,d->ID)){

tag=1;

if(d->current_num==d->max_num)

printf(〃该宿舍已满员!〃);

else{

〃更换学生宿舍信息

fseek(fp,locate,SEEKSET);

strcpif(s->dormitory,inputdoi'mnum);

fwrite(s,sizeof(Student),1,fp);

〃更换新宿舍信息

fseek(_fp,locate_b,SEER一SEI);

17

宿舍管理查询系统

d->current_num++;

fwrite(d,sizeof(Dormitory),1,_fp);

rewind(_fp);

〃更换旧宿舍信息

locatcc=ftell(_fp);

while(fread(d,sizeof(Dormitory),1,_fp)){

if(!strcmp(previous_dormnum,d->[D)){

fseek(_fp,locate_c,SEEK_SET);

d->current.num一;

fwrite(d,sizeof(Dormitory),1,fp);

break:

}

locate_c=ftell(_fp);

)

}

break;

)

locateb=ftell(_fp);

}

if(tag==0){

printf("不存在该宿舍不);

exit(-1);

)

break;

)

locate=ftell(fp);

}

if(flag==0)

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

18

宿舍管理查询系统

fclose(_fp);

fclose(fp);

)

voidnamesearch(){

intflag=0,tag=0;

longlocate;

charinput_name[20];

chardor_num[4];

charID[20];

Student*s=(Student*)malloc(sizeof(Student)):

Dormitory*d=(Dormitory*)malloc(sizeof(Dormitory));

open();

printf(〃\n请输入需要搜索的姓名:\n");

scanf(线s”,input_name);

while(fread(s,sizeof(Student),1,fp)){

locate=ftcll(fp);〃记录下按名字搜索到达的位置

if(!stremp(input_name,s->name)){

flag=1;

printf("\n学生信息如下:\n220s%-20s%-20s%-20s\rr,"学号","姓名"

性别“,〃宿舍号〃兀

z,,

printfC%-20s%-20s%-20s%-20s\n,s->ID,s->name,s->gender,

s->dormitory);

strepy(dornum,s->dormitory);

strepy(ID,s->1D);

rewind(fp);//指针重置于文件头,查找室友

printf("\n具室友信息如下:\n%-20s%-2Us%-20s%-20s\n^,"学号","姓名",

19

宿舍管理查询系统

"性别〃,"宿舍号");

while(fread(s,sizeof(Student),1,fp)){〃室友宿舍号相同,学号不同

if((!strcmp(dor_num,s->dormitory))&&(strcmp(s->ID,ID))){

printf(/,%-20s%-20s%-20s%-20s\n",,s->ID,s->name,s->gender,

s->dormitory);

tag=1;

}

)

if(tag==0)

printf("\n没有室友!\n");

tag=0:

whi1c(fread(d,sizeof(Dormitory),1,_fp)){

if(!strcmp(dor_num,d->ID)){

,,

printf("\n该学生所在寝室信息如下:\n%-20s%-20s%-20s%-20s\n,

〃宿舍号〃,〃可容纳学生数〃,〃已容纳学生数〃,〃男舍/女舍〃);

printf(z,%-20s%-20d%-20d%-20s\n//,d->ID,d->maxnum,

d->currentnum,d->gender);

break;

}

)

//break;

)

〃同名情况

if(flag)

fscek(fp,locate,SEEKSET);

}

if(flag==0)

printf("\n没有符合条件的学生的记录!\n");

20

宿舍管理查询系统

fclose(_fp);

fclose(fp);

)

voidcheckout(){

charstu_num[20];

chardormnum[20];

longlocate,locate_b;

Student*s=(Student*)malloc(sizeof(Student));

Dormitory*d=(Dormitory*)malloc(sizeof(Dormitory));

open();

Drintf("\n请输入退宿学牛学号:\n〃):

scanf('%s”,stunum);

locate=ftell(fp);

while(fread(s,sizeof(Student),1,fp)){

//locate=ftell(fp);

if(!strcmp(s->ID,stunum)){

strcpy(dormnum,s->dormitory);

fscek(fp,locate,SEEKSET);

memset(s,0,sizeof(Student));

fwrite(s,sizeof(Student),1,fp);

break;

)

locate=ftell(fp);

}

locate_b=ftel1(_fp);

while(fread(d,sizeof(Dormitory),1,_fp)){

if(!strcmp(d->ID,dorm_num)){

fseek(_fp,locateb,SEEKSET);

21

宿舍管理查询系统

d->current_num一;

//printf(*lll\n*);

〃printf(飞d\n〃,d->current_num);

fwrite(d,sizeof(Dormitory),1,_fp);

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

break;

)

locate_b=ftel1(_fp);

}

fclose(fp);

fclose(fp);

voidnumsearch(){

intflag=0,tag=0;

charinput_num[20];

chardornum[4];

Student*s=(Student*)malloc(sizeof(Student));

Dormitory*d=(Dormitory*)malloc(sizeof(Dormitory));

opon();

printf("\n请输入需要搜索的学号:\n〃);

scanfinput_num);

while(fread(s,sizeof(Student),1,fp)){

if(!bliuiiip(iiipul_iiuni,«->ID)){

flag=1;

printf("\n该学生信息如下:\n%-20s%-20s%-20s%-20s\n","学号","姓名",

〃性别〃,"宿舍号");

w,,

printf(%-20s%-20s%-20s%-20s\n>s->H),s->name,s->gender,

s->dormitory);

break;

22

宿舍管理查询系统

)

)

strcpy(dor_num,s->dormitory);

if(flag){

rewind(fp);

printf("\n室友信息如下:\n%-20s%-20s%-20魏-20s\n",〃学号","姓名","性别

〃,〃宿舍号〃);

while(fread(s.sizeof(Student),1,fp)):

if((!strcmp(dor_num,s->dormitory))&&strcmpCinput^um,s->ID)){

printf("%-20s%-20s%-20s220s\n”,s->ID,s->name,s->gender,

s->dormitory);

tag=1:

}

)

if(tag==0)

printf("\n没有室友!\n");

while(fread(d;sizeof(Dormitory),1,_fp)){

if(!strcmp(dor_num,d->ID)){

printf(〃\n该学生所在寝室信息如下:\n%-20s%-20s%-20s%-20s\n,z,〃

宿舍号“,〃可容纳学生数",“已容纳学生数","男舍/女舍〃);

printf'C%-20s%-20d%-20d%-20s\nz,,d->II),d->max_num,

d->current_num,d->gender);

break;

)

)

}

else

printf("\n没有该学生的记录!\n〃);

fclose(_fp);

fclose(fp);

23

宿舍管理查询系统

}

voidexchangeO{

intflag=0,tag=0;

longlocatea,locateb;

charinput_ID_a[20];

charinput_ID_b[20];

chardor_num[4];

Student*s=(Student*)mallocCsizeof(Student));

Student*s=(Student*)malloc(sizeof(Student));

open();

Drintf("\n请输入需要互换宿舍学牛A的学号:\n"):

scanf('%s”,inputIDa);

printf("\n请输入需要互换宿舍学生B的学号:\n");

scanfinput_lD_b);

locate_a=ftell(fp);

while(fread(s,sizeof(Student),1,fp)){

if(!strcmp(inputIDa,s->ID)){

printf("\n学生A信息如下:\n%-20s%-20s%-20s%-20s\n","学号〃,”姓名〃,

性别“,〃宿舍号”);

printf(z,%-20s%-20s%-20s%-20s\n,,>s->ID,s->name,s->gender,

s->dormitory);

flag=1;

break;

)

locate_a=ftel1(fp);

}

rewind(fp);

locate_b=ftell(fp);

24

宿舍管理查询系统

while(fread(_s,sizeof(Student),1,fp)){

if(!strcmp(input_ID_b,_s->ID)){

printf(〃\n学生B信息如下:\n%-20s*20st20s与-20s\n",〃学号",〃姓名〃,

性别",”宿舍号〃);

,,

printfC*%-20s%-20s%-20s%-20s\n,_s->ID,_s->name,_s->gender,

_s->dormitory);

tag=1;

break;

)

locateb=ftell(fp);

)

if(flag==0||tag=0){

printf(〃不存在A同学或B同学记录!〃);

exit(-1);

)

else{

strcpy(dornum.s->dormitory);

strcpy(s->dormitory,_s->dormitory);

strcpy(_s->dormitory,dor_num);

//1ocate_a=1ocate_a-sizeof(Student);

fseek(fp,locates,0);

fwiile(5,bizevf(Student),1,fp);

//locate_b=locate_b-sizeof(Student);

fseok(fp,locatcb,0);

fwriteQs,sizeof(Student),1,fp);

}

printf("更换宿舍后:\n");

rewind(fp);

25

宿舍管理查询系统

locate_a=ftell(fp);

while(fread(s,sizeof(Student),1,fp)){

if(!strcmp(input_IDa,s->ID)){

printf("\n学生A信息如下:\n%-20s%-20sK20s%-20s\n","学号","姓名"

性别”,〃宿舍号〃);

,,,,

printf(%-20s%-20s%-20s%-20s\n)s->JD,s->name,s->gender,

s->dormitory);

break;

)

locatea=ftell(fp);

)

locate_b=ftel1(fp);

while(fread(_s,sizeof(Student),1,fp)){

if(!st

温馨提示

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

评论

0/150

提交评论