宿舍查询软件.docx

上传人:b****6 文档编号:5289982 上传时间:2022-12-14 格式:DOCX 页数:27 大小:399.05KB
下载 相关 举报
宿舍查询软件.docx_第1页
第1页 / 共27页
宿舍查询软件.docx_第2页
第2页 / 共27页
宿舍查询软件.docx_第3页
第3页 / 共27页
宿舍查询软件.docx_第4页
第4页 / 共27页
宿舍查询软件.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

宿舍查询软件.docx

《宿舍查询软件.docx》由会员分享,可在线阅读,更多相关《宿舍查询软件.docx(27页珍藏版)》请在冰豆网上搜索。

宿舍查询软件.docx

宿舍查询软件

华北科技学院

 

课程设计说明书

 

班级:

计科B10-3姓名:

杨小龙学号16

设计题目:

宿舍管理查询软件

设计时间:

2012-06-25至2012-07-06

指导教师:

刘春梅

评语:

_________________________________

_________________________________________

_________________________________________

_________________________________________

_________________________________________

评阅成绩:

____评阅教师:

_____

 

一、设计题目与要求

1、设计目的:

编写一个学生宿舍查询软件,实现对学生宿舍信息的基本管理。

把所学数据结构知识应用到实际软件开发中去。

设计内容:

本软件应完成以下几个功能:

(1)实现学生信息的输入(可连续输入)、

(2)实现学生信息的写入和读取

(3)显示输入的学生信息

(4)实现如下排序功能:

按姓名排序

按学号排序

按房号排序

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

按姓名查询

按学号查询

按房号查询

(6)打印任意查询结果

2、设计要求:

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

A.采用交互工作方式

B.建立数据文件,数据文件按关键字(姓名、学号、房号)进行排

C.查询菜单:

(分别按姓名、学号、房号查询)

D.打印任一查询结果(可以连续操作)

二、概要设计

1.功能需求分析

宿舍管理查询软件

应该包括学生信息的录入、写入文件、读入文件、显示、排序、查找,其中学生信息应该包括学生的学号、姓名和房号。

此软件应该包括以下功能:

1.系统以菜单方式工作

2.录入新的学生信息

3.写入读取学生信息

4.显示学生信息

5.对学生信息排序

6.查找某学号的学生信息

2.总体设计

功能结构图设计

依据程序的功能需求,描述该系统功能的结构图如下:

图1系统功能结构图

3.模块简介

依据程序的功能模块的划分,各模块定义如下:

(1)输入学生信息

模块名:

intInput(Studentroom[],intn)

模块描述:

通过此模块可以根据文字提示依次输入学生信息。

(2)写入学生信息

模块名:

intAddfromText(Student*room,intn)//循环写入

模块描述:

将录入的学生信息写入文件,以便以后读取和查询。

(3)读取学生信息

模块名:

voidWritetoText(Studentroom[],intn)//循环读取

模块描述:

从文件中读取以前所写入的信息,以便以后直接进行查询等。

(4)显示学生信息

模块名:

voidDisplay_all_record(Studentroom[],intn);

模块描述:

此模块可以显示出所输入学生的信息,并已初步按学号排序。

(5)按姓名、房间号、学号排序

模块名:

voidSort_by_name(Studentroom[],intn)//姓名排序

voidSort_by_roomnum(Studentroom[],intn)//房号排序

voidSort_by_num(Studentroom[],intn)//学号排序

模块描述:

在排序子菜单中,根据提示分别按姓名、学号、房间号排序。

(6)按姓名、房间号、学号查找

模块名:

voidFind_record_name(Studentroom[],intn)

voidFind_record_rommnum(Studentroom[],intn)

voidFind_record_num(Studentroom[],intn)

模块描述:

在查找子菜单中,根据提示分别按姓名、房间号、学号查找。

三、详细设计

1数据结构

1、定义数据结构

typedefstruct

{

charroomnum[10];

charnum[10];

charname[20];

}Student;

Studentroom1[1000];

};

2算法说明

(1)、主函数的算法设计:

清屏、显示菜单及运用选择操作(运用swith语句),调用各个子函数,最后退出程序。

整个程序流程图如下:

图2系统流程图

(2)、各个子程序的算法设计

1)学生信息的输入:

该子函数的程序流程图如图3所示。

图3模块1输入子流程图

2)学生信息的写入和读取:

该子函数运用fprintf函数和fscanf函数实现学生信息的写入和读取,流程图分别如下图4

(1)和图4

(2)所示。

图4

(1)子模块2文件写入图4

(2)子模块3文件读入

3)学生信息的排序和查找:

排序子函数运用冒泡排序法,分别对学生信息按姓名、房号、学号进行排序,流程图如图5,查找运用顺序查找,分别对学生信息进行查找,特别的:

按房号查找,一个房号可以查找号几个学生,该函数流程图如下图6(其他查找流程图略)。

图5排序流程图图6按房号查找

四、运行结果和调试分析

1.程序运行结果如图5所示。

图7主菜单界面

2.在主菜单下输入选项“1”,根据提示语进行输入,测试实例如下图。

图8模块1输入界面

完成学生信息输入后,程序显示出所输入的全部信息。

输入结束后按任意键,程序回到主菜单。

3.在主菜单下输入“2”,根据提示,键盘输入要写入文件名,若写入成功,显示如下界面。

图9模块2写入

4.在主菜单下输入“3”,根据提示,键盘输入已写入的文件名,若读取成功,则显示图6

(1)界面,若读取失败,则显示图6

(2)。

图10

(1)读取成功图10

(2)读取失败

5.在主菜单下输入“4”,显示所读取的学生信息。

图11学生信息显示

6.在主菜单下输入“5”,显示排序子菜单。

图12排序子菜单

7.在排序子菜单界面下,分别选择输入“1”、“2”、“3”,系统将分别按姓名、房号、学号排序并显示排序结果,(姓名、房号排序结果显示如图,学号排名略)按任意键返回排序子菜单,在排序子菜单界面下按“4”退出子菜单,返回主菜单。

图13

(1)姓名排序图13

(2)房号排序

8.在主菜单界面下,选择输入“6”,显示查找子菜单。

图14查找子菜单

9.在排序子菜单下,选择输入“1”、“2”、“3”,根据提示,输入要查找的姓名、房号、学号进行查找,查找结果如下图15

(1)

(2)(3),若查找的信息不存在,在显示没有找到,效果截图15(4),按任意键返回查找子菜单,在子菜单界面下,按“4”返回主菜界面。

图15

(1)姓名查找图15

(2)房号查找

图15(3)学号查找图15(4)查找失败

整个程序运行效果,如上图所示。

五、总结体会

这次课程设计完成还不是很完善,虽然功能不是很多,但是由于链表和查找这块掌握不够好,查找没有用二分查找,所以在时间复杂度方面不是很满意,总体程序而言基本功能都能实现,界面设计这方面自认为还是比较满意的。

如果以后有机会话我觉得我应该在学生的信息详细度方面,如每个寝室的宿舍长,系别,专业班级,性别等加以完善。

还有就是多考虑时间复杂度方面的问题,选择合适的数据结构来实现功能。

在编程过程中,也离不开同学的帮忙,遇到好多问题都是同学帮忙解决的,比如说:

在子菜单中实现功能之后,要返回主菜单,这里运用好多方法,都得不到满意的效果,要么选择退出,退出之后不能再运行,要么每运行一次他就自动退出,后来经同学帮忙,运用goto语句解决这问题。

还有就是一些小的细节也会引起很大错误,比如,我遇到录入信息,再次打开,读取文件之后,虽然读取成功,但是不能用,想了好长时间没有结果,最后同学帮忙找问题,才发现时由于疏忽,没有返回n值。

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

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

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

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

也增长了以后编程的信心。

源代码:

#include

#include

#include

#include

typedefstruct

{

charroomnum[10];

charnum[10];

charname[20];

}Student;

Studentroom1[1000];

intmenu()//主菜单显示

{

charc;

do

{system("cls");

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

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

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

printf("\t\t*********主菜单**********\n\n");

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

printf("\t\t2.写入学生信息\n\n");

printf("\t\t3.读取学生信息\n\n");

printf("\t\t4.显示学生信息\n\n");

printf("\t\t5.学生信息排序\n\n");

printf("\t\t6.查找学生信息\n\n");

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

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

printf("\t\t⊙请选择您要运行的选项按(1-7):

");

c=getchar();

}

while(c<'1'||c>'7');

return(c-'0');

}

intmenu1()//排序菜单显示

{

charc;

do

{system("cls");//清屏

while(c<'1'||c>'4')

{

system("cls");

printf("\n\t\t***********学生信息排序***********\n\n");

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

printf("\t\t\t2>按房号排序显示\n\n");

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

printf("\t\t\t4>退出子菜单\n\n");

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

printf("\t\t⊙请选择您要运行的选项按(1-4):

");

c=getchar();

}

}

while(c<'1'||c>'4');

return(c-'0');

}

intmenu2()//查找菜单显示

{

charc;

do

{system("cls");

while(c<'1'||c>'4')

{

system("cls");

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

printf("\t\t\t1>按姓名查找显示\n\n");

printf("\t\t\t2>按房号查找显示\n\n");

printf("\t\t\t3>按学号查找显示\n\n");

printf("\t\t\t4>退出子菜单\n\n");

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

printf("\t\t⊙请选择您要运行的选项按(1-4):

");

c=getchar();

}

}

while(c<'1'||c>'4');

return(c-'0');

}

 

intInput(Studentroom[],intn)//输入显示

{

inti=0;

charsign;

while(sign!

='n'&&sign!

='N')

{

printf("\n\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("\n\t\t☉是否继续输入?

(Y/N)");

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

i++;

}

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

system("pause");

return(n+i);

}

voidWritetoText(Studentroom[],intn)//循环写入

{

inti=0;

FILE*fp;

charfilename[100];

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

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

{

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

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

system("pause");

return;

}

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

while(i

{

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

i++;

}

fclose(fp);

printf("\n\t\t恭喜您,写入成功!

\n\n");

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

system("pause");

return;

}

intAddfromText(Student*room,intn)//循环读入

{

inti=0,num;

FILE*fp;

charfilename[20];

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

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

{

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

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

system("pause");

return(n);

}

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

printf("\t\t");

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

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

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

while(i

{

fscanf(fp,"%s%s%s",room1[i].roomnum,room1[i].num,room1[i].name);

printf("\t\t");

printf("%-17s%-17s%-17s\n",room1[i].roomnum,room1[i].num,room1[i].name);

i++;

n++;

}

fclose(fp);

printf("\n\t\t恭喜您,读入成功!

\n");

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

system("pause");

return(n);

}

 

voidDisplay_all_record(Studentroom[],intn)//显示

{

inti;

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

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

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

for(i=1;i

{

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

}

printf("\t\t");

system("pause");

}

voidDisplay_a_record(Studentroom[],intn)

{

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

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

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

printf("\t\t%-17s%-17s%-16s\n",room[n].roomnum,room[n].num,room[n].name);

printf("\n");

}

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("\n\t\t☉输入要查找的姓名:

");

scanf("%s",s);

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

=0&&i

if(i==n)

{

printf("\n\t\t对不起没有该学生记录!

\n\n");

}

else

Display_a_record(room1,i);//调用显示

}

voidFind_record_rommnum(Studentroom[],intn)//按房间号查找

{

chars[20];

inti=0;

intflag=0;

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

");

scanf("%s",s);

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

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

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

if(i

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

当前位置:首页 > 党团工作 > 党团建设

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

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