数据结构宿舍管理系统Word文档格式.docx
- 文档编号:18283599
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:17
- 大小:352.90KB
数据结构宿舍管理系统Word文档格式.docx
《数据结构宿舍管理系统Word文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构宿舍管理系统Word文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
运行该文件如图5-2所示。
图5-2输出界面图
输入记录采用循环输入
while(sign!
='
n'
&
sign!
N'
)
{
输出("
\t\t房间号:
输入("
\t\t%s"
room[n+i].roomnum);
\t\t床位号:
&
room[n+i].bednum);
\t\t学号:
room[n+i].num);
\t\t姓名:
room[n+i].name);
gets(x);
/*清除多余的输入*/
\t\t是否继续输入?
(Y/N)"
\t\t%c"
sign);
i++;
}
返回(n+i);
}
按照提示选择“1”进行记录的输入如图5-3所示:
图5-3输入记录显示图
按房间号排序采用冒泡排序法。
inti,j,*p,*q,s;
chart[10];
for(i=0;
i<
n-1;
i++)/*冒泡法排序*/
for(j=0;
j<
n-1-i;
j++)
if(strcmp(room[j].roomnum,room[j+1].roomnum)>
0)
{
比较(t,room[j+1].roomnum);
比较(room[j+1].roomnum,room[j].roomnum);
比较(room[j].roomnum,t);
比较(t,room[j+1].bednum);
比较(room[j+1].bednum,room[j].bednum);
比较(room[j].bednum,t);
比较(t,room[j+1].num);
比较(room[j+1].num,room[j].num);
比较(room[j].num,t);
比较(t,room[j+1].name);
比较(room[j+1].name,room[j].name);
比较(room[j].name,t);
连续输入多组数据后,按“n”结束输入,提示按任意键继续,按任意键后选择“2”进行记录的显示如图5-4所示。
图5-4按房间号排序并显示图
按学号排序采用冒泡排序法
比较(t,room[j+1].bednum);
比较(room[j+1].bednum,room[j].bednum);
比较(room[j].bednum,t);
比较(t,room[j+1].num);
比较(room[j+1].num,room[j].num);
比较(room[j].num,t);
比较(t,room[j+1].name);
比较(room[j+1].name,room[j].name);
比较(room[j].name,t);
显示后提示按任意键继续,选择“4”进行按学号排序并显示,如图5-5所示。
图5-5按学号排序显示图
插入记录采用交互式输入:
\t\t输入他(她)的姓名:
输入("
s);
while(strcmp(room[i].name,s)!
=0&
n)i++;
如果(i==n)
{输出("
\t\t对不起没找到该学生!
return;
\t\t他(她)的房间号:
%s\n"
room[i].roomnum);
\t\t他(她)的床位号:
room[i].bednum);
\t\t他(她)的学号:
room[i].num);
显示后提示按任意键继续,选择“5”按提示步骤插入一条记录,如图5-6所示。
图5-6插入一条记录图
六、系统测试
将源代码输入至编译环境中,将程序编译连接后生成“学生宿舍管理系统.exe”运行该文件,则显示主菜单:
1、输入记录
2、显示记录
3、按房间号排序并显示
4、按学号排序并显示
5、插入一条记录并按学号排序显示
6、按姓名查找,删除一条记录
7、查找并显示一个记录
8、从文件中读入数据
9、循环写入数据
0、结束程序
请选择您要运行的选项按(0-9):
按照提示选择“1”进行记录的输入,则在主菜单下显示:
输入记录
房间号:
101
床位号:
1
学号:
21
姓名:
xiaoning
是否继续输入?
(Y/N)-
按N结束,按任意键后选择“2”进行记录的显示,则在主菜单下显示:
房间号床位号学号姓名
101121xiaoning
314212xiaozhang
203232xiaoli
417541xiaowang
请按任意键继续……
选择“5”插入一条记录,则在主菜单下显示:
学生房间号:
513
学生床位号:
4
学生学号:
52
学生姓名:
xiaoguan
插入记录成功!
513452xiaoguan
七、结论
这次课程设计我做的还不是很完善,因为功能不是很多,如果以后有机会完善的话,应该对管理员和用户登录时做进一步完善。
学生的信息还不够完整,如学生的宿舍长,系别,一些费用以及学生的成绩等待相关详细信息。
如果使次系统再详细些,需添加更多的管理员以及管理员权限,还有学生的更多信息,如果有必要的话,添加一些有关教师的信息,以及教师登录的界面。
在这次课程设计的过程中,我们体会到要想开发一个系统软件,不仅需要相当的专业技术知识,还要有严谨缜密的思维能力。
只有思想上清晰了,编程才有意义,否则就是白费力气。
同时还要善于捕获细小的方面,因为那往往是这个程序的致命因素。
这次课程设计培养了我的细心和耐性,更树立了一种科学的态度。
附录:
源代码
#include<
stdio.h>
/*引用库函数*/
stdlib.h>
ctype.h>
string.h>
typedefstruct/*定义结构体数组*/
{
charroomnum[4];
/*房间号*/
charbednum[2];
/*床位号*/
charnum[10];
/*学号*/
charname[20];
/*姓名*/
Student;
Studentroom1[1000];
/*结构体数组变量*/
intmenu_select()/*菜单函数*/
charc;
do{system("
cls"
/*运行前清屏*/
printf("
/*菜单选择*/
c=getchar();
/*读入选择*/
while(c<
'
0'
||c>
9'
return(c-'
}/*返回选择*/
intInput(Studentroom[],intn)/*输入若干条记录*/
inti=0;
charsign,x[10];
/*x[10]为清除多余的数据所用*/
)/*判断*/
printf("
/*交互输入*/
scanf("
/*输入判断*/
return(n+i);
voidDisplay(Studentroom[],intn)/*显示所有记录*/
inti;
\t\t----------------------------------------------\n"
/*格式头*/
\t\t房间号床位号学号姓名\n"
\t\t-------------------------------------------------\n"
for(i=1;
n+1;
i++)/*循环输入*/
{printf("
\t\t%-10s%-10s%-10s%-20s\n"
room[i-1].roomnum,room[i-1].bednum,room[i-1].num,room[i-1].name);
if(i>
1&
i%10==0)/*每十个暂停*/
\t\t--------------------------------------------------\n"
/*格式*/
\t\t"
system("
pause"
system("
voidSort_by_num(Studentroom[],intn)/*按学号排序*/
inti,j,*p,*q,s;
chart[10];
if(strcmp(room[j].num,room[j+1].num)>
strcpy(t,room[j+1].bednum);
strcpy(room[j+1].bednum,room[j].bednum);
strcpy(room[j].bednum,t);
strcpy(t,room[j+1].num);
strcpy(room[j+1].num,room[j].num);
strcpy(room[j].num,t);
strcpy(t,room[j+1].name);
strcpy(room[j+1].name,room[j].name);
strcpy(room[j].name,t);
voidSort_by_roomnum(Studentroom[],intn)/*按房间号排序*/
{strcpy(t,room[j+1].roomnum);
strcpy(room[j+1].roomnum,room[j].roomnum);
strcpy(room[j].roomnum,t);
strcpy(t,room[j+1].bednum);
strcpy(room[j+1].bednum,room[j].bednum);
strcpy(room[j].bednum,t);
strcpy(t,room[j+1].num);
strcpy(room[j+1].num,room[j].num);
strcpy(room[j].num,t);
strcpy(t,room[j+1].name);
strcpy(room[j+1].name,room[j].name);
strcpy(room[j].name,t);
intInsert_a_record(Studentroom[],intn)/*插入一条记录*/
charx[100];
/*清除多余输入所用*/
\t\t学生房间号:
/*交互式输入*/
scanf("
room[n].roomnum);
\t\t学生床位号:
room[n].bednum);
\t\t学生学号:
room[n].num);
\t\t学生姓名:
room[n].name);
gets(x);
n++;
Sort_by_num(room,n);
/*调用排序函数*/
\t\t插入记录成功!
/*返回成功信息*/
return(n);
intDelete_a_record(Studentroom[],intn)/*按姓名查找,删除一条记录*/
chars[20];
inti=0,j;
/*交互式问寻*/
%s"
s);
while(strcmp(room[i].name,s)!
/*查找判断*/
if(i==n)
/*返回失败信息*/
return(n);
for(j=i;
j++)/*删除操作*/
strcpy(room[j].roomnum,room[j+1].roomnum);
strcpy(room[j].bednum,room[j+1].bednum);
strcpy(room[j].num,room[j+1].num);
strcpy(room[j].name,room[j+1].name);
\t\t删除记录成功!
return(n-1);
voidQuery_a_record(Studentroom[],intn)/*查找并显示一个记录*/
/*输入失败信息*/
return;
/*输出该学生信息*/
intAddfromText(Studentroom[],intn)/*从文件中读入数据*/
inti=0,num;
FILE*fp;
/*定义文件指针*/
charfilename[20];
/*定义文件名*/
\t\t输入文件名:
filename);
/*输入文件名*/
if((fp=fopen(filename,"
rb"
))==NULL)/*打开文件*/
\t\t无法打开该文件\n"
/*打开失败信息*/
fscanf(fp,"
%d"
num);
/*读入总记录量*/
while(i<
num)/*循环读入数据*/
{fscanf(fp,"
%s%s%s%s"
room[n+i].roomnum,room[n+i].bednum,room[n+i].num,room[n+i].name);
i++;
n+=num;
fclose(fp);
/*关闭文件*/
\t\t读入成功!
voidWritetoText(Studentroom[],intn)/*将所有记录写入文件*/
{inti=0;
FILE*fp;
charfilename[100];
printf("
\t\t循环写入数据\n"
scanf("
if((fp=fopen(filename,"
w"
{printf("
system("
fprintf(fp,"
%d\n"
n);
/*循环写入数据*/
while(i<
n)
{fprintf(fp,"
%-10s%-10s%-10s%-10s\n"
room[i].roomnum,room[i].bednum,room[i].num,room[i].name);
i++;
fclose(fp);
写入成功!
voidmain()/*主函数*/
{intn=0;
for(;
;
)
{switch(menu_select())/*选择判断*/
{case1:
\t\t输入记录\n"
/*输入若干条记录*/
n=Input(room1,n);
break;
case2:
printf("
\t\t显示记录\n"
/*显示所有记录*/
Display(room1,n);
break;
case3:
\t\t按房间号排序并显示\n"
Sort_by_roomnum(room1,n);
/*按房间号排序*/
\t\t排序成功!
case4:
\t\t按学号排序并显示\n"
Sort_by_num(room1,n);
/*按学号排序*/
\t\t\t排序成功!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 宿舍 管理 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)