数据结构宿舍管理查询软件课程设计.docx

上传人:b****6 文档编号:6835755 上传时间:2023-01-11 格式:DOCX 页数:23 大小:411.95KB
下载 相关 举报
数据结构宿舍管理查询软件课程设计.docx_第1页
第1页 / 共23页
数据结构宿舍管理查询软件课程设计.docx_第2页
第2页 / 共23页
数据结构宿舍管理查询软件课程设计.docx_第3页
第3页 / 共23页
数据结构宿舍管理查询软件课程设计.docx_第4页
第4页 / 共23页
数据结构宿舍管理查询软件课程设计.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

数据结构宿舍管理查询软件课程设计.docx

《数据结构宿舍管理查询软件课程设计.docx》由会员分享,可在线阅读,更多相关《数据结构宿舍管理查询软件课程设计.docx(23页珍藏版)》请在冰豆网上搜索。

数据结构宿舍管理查询软件课程设计.docx

数据结构宿舍管理查询软件课程设计

《数据结构课程设计》

宿舍管理查询软件

 

学院:

信息科学技术学院

班级:

信计082

学号:

********……

*****

指导教师:

并接

完成日期:

2010年12月

 

四、详细设计及测试

5

 

一、设计任务

题目:

宿舍管理查询软件

任务:

为宿舍管理人员编写一个宿舍管理查询软件,程序设计要求:

(1)建立数据文件,数据文件按关键字(姓名、学号、房号)进行排序(冒泡、选择、插入排序等任选一种)

(2)实现如下查询功能:

按姓名查询

按学号查询

按房号查询

(3)打印任意查询结果(可以连续操作)

针对题目所要求的功能不太多,我特意添加了插入数据、读入文件数据以及将数据写入文件三个额外功能。

二、总体设计

根据系统要求,即本系统具有信息的录入,显示,排序显示、查找,插入、从文件中读入数据、循环写入数据、结束程序等功能,先设计出详细的系统流程图,然后将源代码输入程序,进行编译调试即可。

程序总体分12个项目:

输入记录、显示记录、按姓名排序并显示、按房间号排序并显示、按学号排序并显示、按姓名查找并显示、按房间号查找并显示、按学号查找并显示、插入一条记录按学号排序并显示、从文件中读入数据、循环写入数据以及结束程序。

三、系统流程图

系统流程图下页图所示

四、详细设计及测试

根据流程图,将程序源代码输入到编译环境中,按照提示选择进行记录的输入,输入一个数据后提示是否继续输入,直到结束程序为止。

将程序编译生成“学生宿舍管理系统.exe”。

运行该文件如图1所示。

图1输出界面图

输入记录采用循环输入

while(sign!

='n'&&sign!

='N')/*判断*/

{

printf("\t\t姓名:

");

scanf("\t\t%s",&room[n+i].name);

printf("\t\t学号:

");

scanf("\t\t%s",&room[n+i].num);

printf("\t\t房间号:

");

scanf("\t\t%s",&room[n+i].roomnum);

printf("\t\t是否继续输入?

(Y/N)");

scanf("\t\t%c",&sign);/*输入判断*/

i++;

}

返回(n+i);

按照提示选择“1”进行记录的输入如图2所示:

图2输入记录显示图

连续输入多组数据后,按“n”结束输入,提示按任意键继续,按任意键后选择“2”进行记录的显示如图3所示。

图3显示所有记录

按姓名排序采用冒泡排序法。

inti,j;

chart[10];

for(i=0;i

for(j=0;j

if(strcmp(room[j].name,room[j+1].name)>0)

{

strcpy(t,room[j+1].name);

strcpy(room[j+1].name,room[j].name);

strcpy(room[j].name,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].roomnum);

strcpy(room[j+1].roomnum,room[j].roomnum);

strcpy(room[j].roomnum,t);}

显示后提示按任意键继续,选择“3”进行按姓名排序并显示,如图4所示。

图4按姓名排序显示图

按房间号排序采用冒泡排序法

for(i=0;i

for(j=0;j

if(strcmp(room[j].roomnum,room[j+1].roomnum)>0)

{

strcpy(t,room[j+1].num);

strcpy(room[j+1].num,room[j].num);

strcpy(room[j].num,t);

strcpy(t,room[j+1].roomnum);

strcpy(room[j+1].roomnum,room[j].roomnum);

strcpy(room[j].roomnum,t);

strcpy(t,room[j+1].name);

strcpy(room[j+1].name,room[j].name);

strcpy(room[j].name,t);

}

显示后提示按任意键继续,选择“4”进行按房间号排序并显示,如图5所示。

 

图5按房间号排序显示图

同样学号排序也是用的冒泡法排序。

for(i=0;i

for(j=0;j

if(strcmp(room[j].num,room[j+1].num)>0)

{strcpy(t,room[j+1].roomnum);

strcpy(room[j+1].roomnum,room[j].roomnum);

strcpy(room[j].roomnum,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);}

显示后提示按任意键继续,选择“5”进行按学号排序并显示,如图6所示。

图6按学号排序显示图

功能6-8为查找功能

按姓名查找并显示功能

printf("\t\t输入要查找的姓名:

");

scanf("%s",s);

while(strcmp(room[i].name,s)!

=0&&i

if(i==n)

{

printf("\t\t对不起没有找到该学生!

\n");/*返回失败信息*/

}

else

Display_a_record(room1,i);/*调用函数*/

显示后提示按任意键继续,选择“6”按提示步骤按学号查找一条记录并显示,如图7所示。

图7按姓名查找并显示图

按房间号查找和按学号查找的方法大同小异。

分别输入“7”、“8”显示截图如下页

 

图8按房间号查找并显示图图9按学号查找并显示图

功能9为插入一条记录按学号排序并显示。

intInsert_a_record(Studentroom[],intn)/*插入一条记录并按学号排序*/

{printf("\t\t学生姓名:

");

scanf("\t\t%s",&room[n].name);

printf("\t\t学生学号:

");

scanf("\t\t%s",&room[n].num);

printf("\t\t学生房间号:

");

scanf("\t\t%s",&room[n].roomnum);

n++;

Sort_by_num(room,n);/*调用排序函数*/

printf("\t\t插入记录成功!

\n");/*返回成功信息*/

return(n);}

显示后提示按任意键继续,选择“9”进行插入数据,如下页图10所示。

图10插入一条记录按学号排序并显示图

 

五、心得体会

这次课程设计我做的还不是很完善,因为功能不是很多,如果以后有机会完善的话,应该对管理员和用户登录时做进一步完善。

学生的信息还不够完整,如学生的宿舍长,系别,一些费用以及学生的成绩等待相关详细信息。

如果使次系统再详细些,需添加更多的管理员以及管理员权限,还有学生的更多信息,如果有必要的话,添加一些有关教师的信息,以及教师登录的界面。

在这次课程设计的过程中,我们体会到要想开发一个系统软件,不仅需要相当的专业技术知识,还要有严谨缜密的思维能力。

只有思想上清晰了,编程才有意义,否则就是白费力气。

同时还要善于捕获细小的方面,因为那往往是这个程序的致命因素。

这次课程设计培养了我的细心和耐性,更树立了一种科学的态度。

附录:

源代码

#include

#include

#include

#include

typedefstruct

{

charroomnum[4];

charnum[10];

charname[20];

}Student;

Studentroom1[1000];

intmenu()

{

charc;

do

{system("cls");

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

printf("\t\t§1.输入记录§\n");

printf("\t\t§2.显示记录§\n");

printf("\t\t§3.按姓名排序并显示§\n");

printf("\t\t§4.按房间号排序并显示§\n");

printf("\t\t§5.按学号排序并显示§\n");

printf("\t\t§6.按姓名查找并显示§\n");

printf("\t\t§7.按房间号查找并显示§\n");

printf("\t\t§8.按学号查找并显示§\n");

printf("\t\t§9.插入一条记录按学号排序并显示§\n");

printf("\t\t§10.从文件中读入数据§\n");

printf("\t\t§11.循环写入数据§\n");

printf("\t\t§0.结束程序§\n");

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

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

");

c=getchar();

}

while(c<'0'||c>'11');

return(c-'0');

}

 

intInput(Studentroom[],intn)

{

inti=0;

charsign;

while(sign!

='n'&&sign!

='N')

{

printf("\t\t姓名:

");

scanf("\t\t%s",&room[n+i].name);

printf("\t\t学号:

");

scanf("\t\t%s",&room[n+i].num);

printf("\t\t房间号:

");

scanf("\t\t%s",&room[n+i].roomnum);

printf("\t\t是否继续输入?

(Y/N)");

scanf("\t\t%c",&sign);

i++;

}

return(n+i);

}

 

voidDisplay_all_record(Studentroom[],intn)

{

inti;

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

printf("\t\t房间号学号姓名\n");

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

for(i=1;i

{

printf("\t\t%-10s%-10s%-10s\n",room[i-1].roomnum,room[i-1].num,room[i-1].name);

}

printf("\t\t");

system("pause");

}

voidDisplay_a_record(Studentroom[],intn)

{

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

printf("\t\t房间号学号姓名\n");

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

printf("\t\t%-10s%-10s%-10s\n",room[n].roomnum,room[n].num,room[n].name);/*输出所查找的一条记录*/

printf("\n");

printf("\t\t");

}

voidSort_by_name(Studentroom[],intn)

{

inti,j;

chart[10];

for(i=0;i

for(j=0;j

if(strcmp(room[j].name,room[j+1].name)>0)

{

strcpy(t,room[j+1].name);

strcpy(room[j+1].name,room[j].name);

strcpy(room[j].name,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].roomnum);

strcpy(room[j+1].roomnum,room[j].roomnum);

strcpy(room[j].roomnum,t);

}

}

voidSort_by_num(Studentroom[],intn)

{

inti,j;

chart[10];

for(i=0;i

for(j=0;j

if(strcmp(room[j].num,room[j+1].num)>0)

{

strcpy(t,room[j+1].roomnum);

strcpy(room[j+1].roomnum,room[j].roomnum);

strcpy(room[j].roomnum,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)

{

inti,j;

chart[10];

for(i=0;i

for(j=0;j

if(strcmp(room[j].roomnum,room[j+1].roomnum)>0)

{

strcpy(t,room[j+1].num);

strcpy(room[j+1].num,room[j].num);

strcpy(room[j].num,t);

strcpy(t,room[j+1].roomnum);

strcpy(room[j+1].roomnum,room[j].roomnum);

strcpy(room[j].roomnum,t);

strcpy(t,room[j+1].name);

strcpy(room[j+1].name,room[j].name);

strcpy(room[j].name,t);

}

}

 

voidFind_record_name(Studentroom[],intn)

{

chars[10];

inti=0;

printf("\t\t输入要查找的姓名:

");

scanf("%s",s);

while(strcmp(room[i].name,s)!

=0&&i

if(i==n)

{

printf("\t\t对不起没有找到该学生!

\n");

}

else

Display_a_record(room1,i);

}

 

voidFind_record_rommnum(Studentroom[],intn){

chars[20];

inti=0;

printf("\t\t输入要查找的房间号:

");

scanf("%s",s);

while(strcmp(room[i].roomnum,s)!

=0&&i

if(i==n)

{

printf("\t\t对不起没有找到该学生!

\n");

}

else

Display_a_record(room1,i);

}

voidFind_record_num(Studentroom[],intn)

{

chars[20];

inti=0;

printf("\t\t输入要查找的学号:

");

scanf("%s",s);

while(strcmp(room[i].num,s)!

=0&&i

if(i==n)

{

printf("\t\t对不起没有找到该学生!

\n");

}

else

Display_a_record(room1,i);

}

 

intInsert_a_record(Studentroom[],intn)

printf("\t\t学生姓名:

");

scanf("\t\t%s",&room[n].name);

printf("\t\t学生学号:

");

scanf("\t\t%s",&room[n].num);

printf("\t\t学生房间号:

");

scanf("\t\t%s",&room[n].roomnum);

n++;

Sort_by_num(room,n);

printf("\t\t插入记录成功!

\n");

return(n);

}

intAddfromText(Studentroom[],intn)

{

inti=0,num;

FILE*fp;

charfilename[20];

printf("\t\t输入文件名:

");

scanf("\t\t%s",&filename);

if((fp=fopen(filename,"rb"))==NULL)

{

printf("\t\t无法打开该文件\n");

printf("\t\t");

system("pause");

return(n);

}

fscanf(fp,"%d",&num);

while(i

{fscanf(fp,"%s%s%s%s",room[n+i].roomnum,room[n+i].num,room[n+i].name);

i++;

}

n+=num;

fclose(fp);

printf("\t\t读入成功!

\n");

printf("\t\t");

system("pause");

return(n);

}

voidWritetoText(Studentroom[],intn)

{

inti=0;

FILE*fp;

charfilename[100];

printf("\t\t循环写入数据\n");

printf("\t\t输入文件名:

");

scanf("\t\t%s",&filename);

if((fp=fopen(filename,"w"))==NULL)

{

printf("\t\t无法打开该文件\n");

system("pause");

return;

}

fprintf(fp,"%d\n",n);

while(i

{

fprintf(fp,"%-10s%-10s%-10s%-10s\n",room[i].roomnum,room[i].num,room[i].name);

i++;

}

fclose(fp);

printf("写入成功!

\n");

}

 

intmain()

{

intn=0;

for(;;)

{

switch(menu())

{

case1:

printf("\t\t输入记录\n");

n=Input(room1,n);

break;

case2:

printf("\t\t显示记录\n");

Display_all_record(room1,n);

break;

case3:

printf("\t\t按姓名排序并显示\n");

Sort_by_name(room1,n);

printf("\t\t排序成功!

\n");

Display_all_record(room1,n);

printf("\t\t");

break;

case4:

printf("\t\t按房间号排序并显示\n");

Sort_by_roomnum(room1,n);

printf("\t\t排序成功!

\n");

Display_all_record(room1,n);

printf("\t\t");

break;

case5:

printf("\t\t按学号排序并显示\n");

Sort_by_num(room1,n);

printf("\t\t\t排序成功!

\n");

Display_all_record(room1,n);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1