第一篇:宿舍管理系统课程设计报告
青岛农业大学 理学与信息科学学院
高级语言课程设计报告
设 计 题 目 宿舍管理系统
学生专业班级班
学生姓名(学号)
设计小组其他同学姓名(学号)
指 导 教 师
完 成 时 间
设 计 地 点
2016年12月06日
一、课程设计目的和任务
《高级语言程序设计》课程设计是计算机相关专业的主要实践性教学环节。其目的在于加深对高级语言程序设计理论和基本知识的理解,掌握使用C语言进行面向过程设计的基本方法,提高运用面向过程知识解决实际问题的能力。为毕业设计和以后的工程实践打下良好的基础。
宿舍管理系统:用C语言为学生宿舍管理人员编写一个宿舍管理软件。设某宿舍有:101,102,201,202四个房间,每个房间可住学生<=4人,存储结构:学号、姓名、房间号,按房间号有序,实现学生的入住、退房和查询,按给定学号、姓名、房号查询。
二、分析与设计
1.程序的基本功能:(1).实现新生入住登记(2).修改入住学生信息(3)实现退房
(4)实现以姓名查询学生信息(5)实现以学号查询学生信息(6)实现以寝室号查询学生信息(7)实现按照寝室号从小到大排序(8)实现按学号从小到大排序(9)实现显示所有学生信息(10)实现退出程序并保存数据 2.定义的函数及说明:
此程序由11个函数构成。
Add----------添加学生信息函数(姓名、学号、宿舍号、班级)Alter----------修改学生信息函数 Delete--------删除学生信息函数
Display_All--------显示所有学生信息函数
Query_S_name---------查询函数以姓名为关键字进行查询 Query_S_number-------查询函数以学号为关键字进行查询 Query_D_number------查询函数以寝室号为关键字进行查询 Save-----存储函数
Judge_Save----退出程序时判断是否保存函数 Menu--菜单 Main---主函数
3.系统总框图:
三、系统实施
1.源程序代码:
#include
int D_number;//学生所在寝室的宿舍号 char S_class1[10];//班级
int Total;//学生总数 }Student[16];int sushehao[4]={101,102,201,202};int count[4]={0};//判断学号是否与表中所存学号重复 void S_number_Judge(Student S,int t){ int i;for(i=1;i<=(S->Total)-1;i++)
while(strcmp(S[i].S_number,S[t].S_number)==0)//strcmp字符串比较函数,两个字符逐个比较,相等返回值为
{
printf(“学号输入失败,该学号已存在,请重新输入学号!n”);
printf(“请输入学生的学号(10个字符以内):”);scanf(“%s”,S[t].S_number);
getchar();
i=1;
} } //添加学生信息函数 void Add(Student S){ int j;int flag=1;printf(“请输入学生姓名(10个字符以内):”);scanf(“%s”,S[++(S->Total)].S_name);getchar();//获取换行符
printf(“请输入学生的学号(10个字符以内):”);scanf(“%s”,S[S->Total].S_number);getchar();S_number_Judge(S,S->Total);//判断输入的学号是否与表中所存在的学号重复
while(flag){ printf(“请输入宿舍号码:”);
scanf(“%d”,&S[S->Total].D_number);for(j=0;j<4;j++){
if(S[S->Total].D_number==sushehao[j] && count[j]<4)
{
count[j]++;
flag=0;
break;
}
if(S[S->Total].D_number==sushehao[j]&&count[j]==4)
{
printf(“该宿舍已满,请重新输入n”);
break;
} } } getchar();printf(“请输入所在班级:”);scanf(“%s”,S[S->Total].S_class1);getchar();printf(“添加成功!nn”);
}//修改学生信息函数 void Alter(Student S){ int i;int flag=0;//用来判断表中是否存在所要修改的学生的信息
char number[10];printf(“请输入你要修改学生的学号:”);scanf(“%s”,number);getchar();for(i=1;i<=S->Total;i++)
if(strcmp(S[i].S_number,number)==0)
flag=i;if(!flag)
printf(“你所要修改的学生信息在表中不存在!n”);else {
printf(“新信息如下:n”);
printf(“请输入学生姓名(10个字符以内):”);
scanf(“%s”,S[flag].S_name);
getchar();
printf(“请输入学生的学号(10个字符以内):”);
scanf(“%s”,S[flag].S_number);
getchar();
S_number_Judge(S,flag);
printf(“请输入宿舍号:”);
scanf(“%d”,&S[flag].D_number);
getchar();printf(“请输入床铺号码:”);scanf(“%s”,&S[S->Total].S_bednum);getchar();printf(“请输入所在班级:”);scanf(“%s”,&S[S->Total].S_class1);getchar();
dirty=1;
printf(“修改成功!n”);} putchar('n');} //删除学生信息
void Delete(Student S){ int i,j;int flag=0;//用来判断表中是否存在所要删除的学生的信息
char number[10];printf(“请输入你要删除学生的学号:”);scanf(“%s”,number);getchar();for(i=1;i<=S->Total;i++)
if(strcmp(S[i].S_number,number)==0)
flag=i;if(!flag)
printf(“你所要删除的学生在表中不存在!”);else { for(i=flag;i
j=i+1;
strcpy(S[i].S_name,S[j].S_name);//字符串拷贝函数,格式:符数组名,字符数组名),赋值给
strcpy(S[i].S_number,S[j].S_number);
字 strcpy(S[i].D_number=S[j].D_number;
strcpy(S[i].S_bednum,S[j].S_bednum);
strcpy(S[i].S_class1,S[j].S_class1);}
(S->Total)--;
dirty=1;
printf(“删除成功!”);} printf(“nn”);} //显示所有学生信息函数
void Display_All(Student S){ int i;printf(“全体学生信息如下:n”);printf(“--------------------n”);/*格式头*/ printf(“ 房间号床位号学号姓名班级 n”);printf(“--------------------n”);for(i=1;i<=S->Total;i++)
printf(“ %-10d%-10s%-10s%-10s%-10sn”,S[i].D_number,S[i].S_bednum,S[i].S_number,S[i].S_name,S[i].S_class1);
putchar('n');} //查询函数以姓名为关键字进行查询(顺序查找)void Query_S_name(Student S){ int i,j=0;char name[10];printf(“请输入你要查找的学生的姓名(10个字符以内):”);scanf(“%s”,name);getchar();printf(“所查找学生信息如下:n”);printf(“tt-----------------n”);/*格式头*/ printf(“tt房间号床位号学号姓名班级 n”);printf(“tt-----------------n”);for(i=1;i<=S->Total;i++)
if(strcmp(name,S[i].S_name)==0)
{
printf(“tt%-10d%-10s%-10s%-10s%-10sn”,S[i].D_number,S[i].S_bednum,S[i].S_number,S[i].S_name,S[i].S_class1);j=1;
} if(!j)
printf(“n查找失败,表中不存在该学生的信息!nn”);} //查询函数以学号为关键字进行查询(折半查找)void Query_S_number(Student S){ int i,j=0;char number[10];printf(“请输入你要查找的学生的学号(10个字符以内):”);scanf(“%s”,number);getchar();printf(“所查找学生信息如下:n”);printf(“tt-----------------n”);/*格式头*/ printf(“tt房间号床位号学号姓名班级 n”);printf(“tt-----------------n”);for(i=1;i<=S->Total;i++)
if(strcmp(number,S[i].S_number)==0)
{
printf(“tt%-10d%-10s%-10s%-10s%-10sn”,S[i].D_number,S[i].S_bednum,S[i].S_number,S[i].S_name,S[i].S_class1);j=1;
} if(!j)
printf(“n查找失败,表中不存在该学生的信息!nn”);} //查询函数以寝室号为关键字进行查询(折半查找)void Query_D_number(Student S){ int i,j,m,n,base,top,mid;j=0;base=1;top=S->Total;printf(“请输入你要查询的寝室号:”);scanf(“%d”,&i);getchar();Sort_D_number(S);//将表中原数据按照寝室号从小到大排序
printf(“所查找寝室信息如下:n”);printf(“tt-----------------n”);/*格式头*/ printf(“tt房间号床位号学号姓名班级 n”);printf(“tt-----------------n”);if(i>=S[1].D_number&&i<=S[S->Total].D_number){
while(base<=top)
{
mid=(base+top)/2;
if(i==S[mid].D_number)
{
m=mid;n=mid-1;
while(S[m].D_number==i)
{
printf(“tt%-10d%-10s%-10s%-10s%-10sn”,S[m].D_number,S[m].S_bednum,S[m].S_number,S[m].S_name,S[m].S_class1);m++;
if(m>S->Total)
break;
}
if(n>0)
{
while(S[n].D_number==i)
{
printf(“tt%-10d%-10s%-10s%-10s%-10sn”,S[n].D_number,S[n].S_bednum,S[n].S_number,S[n].S_name,S[n].S_class1);n--;
if(n<1)
break;
}
}
j=1;
putchar('n');
break;
}
else if(i>S[mid].D_number)
base=mid+1;
else
top=mid-1;
} } if(!j)
printf(“n查找失败,表中不存在该寝室的信息!nn”);} //存储函数
void Save(Student S){ int i=0;FILE *fp;/*定义文件指针*/ char filename[100];/*定义文件名*/ printf(“tt输入文件名:”);/*输入文件名*/ scanf(“tt%s”,&filename);if((fp=fopen(filename,“w”))==NULL)/*打开文件*/ { printf(“tt无法打开该文件n”);system(“pause”);return;} fprintf(fp,“%dn”,S->Total);/*循环写入数据*/ while(i<(S->Total)){
fprintf(fp,“%-10d%-10s%-10s%-10s%-10sn”,S[i].D_number,S[i].S_bednum,S[i].S_number,S[i].S_name,S[i].S_class1);i++;} fclose(fp);/*关闭文件*/ printf(“写入成功!n”);/*返回成功信息*/ } //退出程序时判断是否保存函数
void Judge_Save(int i,Student S){ char ch;if(i){
printf(“表中数据已改变,是否保存后再退出(Y/N)?:”);
ch=getchar();
getchar();
while(ch!='n'&&ch!='N'&&ch!='y'&&ch!='Y')
{
printf(“请输入N(n)或者Y(y):”);
ch=getchar();
getchar();
}
if(ch=='y'||ch=='Y')
Save(S);} } //菜单
void Menu(){ system(“cls”);/*运行前清屏*/ printf(“n”);printf(“
青岛农业大学学生宿舍管理系统nn”);
printf(“ n”);printf(“ 作者:明伟、李善虎、胡蒙亨n”);printf(“n”);printf(“tt=============学生宿舍管理系统===========n”);/*菜单选择*/ printf(“tt n”);
printf(“tt 1.新生入住 n”);printf(“tt 2.修改入住学生信息 n”);printf(“tt 3.退房服务 n”);printf(“tt 4.以姓名查询学生信息 n”);printf(“tt 5.以学号查询学生信息 n”);printf(“tt 6.以寝室号查询学生信息 n”);
printf(“tt 7.查询全部学生信息 n”);printf(“tt 0.退出程序 n”);printf(“tt=========================================n”);} int main(){ int i;Student S;S->Total=0;do {
Menu();
printf(“请选择您要运行的选项按(0-9):”);
scanf(“%d”,&i);
getchar();//获取换行符
putchar('n');
switch(i)
{
case 1:Add(S);
system(“pause”);
break;
case 2:Alter(S);
system(“pause”);
break;
case 3:Delete(S);
system(“pause”);
break;
case 4:Query_S_name(S);
system(“pause”);
break;
case 5:Query_S_number(S);
system(“pause”);
break;
case 6:Query_D_number(S);
system(“pause”);
break;
case 7:Display_All(S);system(“pause”);
break;
case 0:Judge_Save(dirty,S);
exit(0);
break;
default:printf(“选择错误:请在选项到之间选择!nn”);
break;
} }while(i!=10);}(注:黑体部分为我负责的部分)2.程序运行说明(包括结果说明)程序运行说明
运行程序后,出现主菜单界面,按照主菜单上的编号进行操作即可,每输入一个编号后按回车即进入该子程序,然后按照提示输入或查询信息。结果说明:
3.存在的问题
本程序在新生入住时将宿舍号限定在101,,12,201,202.当输入的宿舍号不符合要求时只是重复出现“请输入宿舍号”而没有明确的文字提示。而且在修改入住学生信息时对宿舍号没有限制。还需进一步完善。
四、总结与体会
当看到课程设计任务时,完全找不着头绪,由于对C语言的认识和了解只是停留在表面,所以不知道从何下手。后来在不停的复习课本,在老师和同学的帮助下,逐渐找到了方向,也对设计中需要用到的方法和结构有所了解和认识,学会了如何使用,之后的一次课又经过仔细的思考了解了这个程序的基本框架,确定了程序的流程图,为程序的完成奠定了基础,接下来在写代码的过程中仍然遇到了很多问题,经过不断的查阅课本和网络,逐步解决了代码问题,在实现整个程序功能方面,有些结构和方法不会用,最后在老师的帮助下才得以顺利解决。做出来的程序在执行过程中仍然有一些问题,比如在上述“存在的问题”中提到的。设计过程确实让我认识到了自己技术上的不足,在以后的学习中应该加强这方面的学习和重视。为以后的毕业设计和就业做准备。
第二篇:酒店管理系统课程设计报告
课程设计报告
课程名称: 项目名称: 院 系: 专 业: 姓 名: 班 级: 学 号: 指导教师: 设计地点:
基于ASP.net 2.0的Web应用开发
酒店管理系统
计算机科学与工程学院
计算机科学与技术
王晨光 计科121 090312114 王剑
九章楼 N6-109
开课时间: 2014 至 2015 学年第 1 学期
常熟理工学院计算机科学与工程学院 制
目录
一、前言.........................................................................................................................1 1.1、系统开发背景...................................................................................................1 1.2、研究目的及意义................................................................................................1 1.3、系统开发工具...................................................................................................1
二、系统分析..................................................................................................................1 2.1、需求分析..........................................................................................................1 2.1.1、系统主要功能.........................................................................................1 2.1.2、系统实现目标.........................................................................................2 2.1.3、系统性能需求.........................................................................................2 2.2、可行性分析......................................................................................................2 2.2.1、技术可行性............................................................................................2 2.2.2、经济可行性............................................................................................2 2.2.3、操作可行性............................................................................................2
三、系统设计..................................................................................................................2 3.1、系统功能结构设计............................................................................................2 3.2、数据库设计......................................................................................................3 3.2.1、数据库E-R图设计..................................................................................3 3.2.2、数据库的逻辑设计..................................................................................5
四、系统详细设计与实现..................................................................................................7 4.1、用户登录..........................................................................................................7 4.2、系统主界面......................................................................................................7 4.3、客房类型管理...................................................................................................8 4.4、客房经营管理...................................................................................................9 4.5、客户信息检索.................................................................................................12 4.6、客房经营状况分析..........................................................................................12
五、课程设计小结..........................................................................................................13
一、前言 1.1、系统开发背景 随着当今世界经济和计算机的飞速发展,酒店在内部实现用户通过电话预约或亲自前往酒店预订客房,服务员人工填写客房预订表进行客房预订的传统模式已经十分落后,满足不了现代人的需要。一个成功的酒店,其经营者不仅要提供高质量的服务水平和服务质量,还要提供最完善的设备和先进的技术。从而提高客房的占有率和回头率,还要有好的工作效率,并严格的控制住成本。在现如今的信息化时代,更重要的是还必须要有一个完善的管理信息系统,便于方便客人和更好的管理酒店。1.2、研究目的及意义 随着计算机网络的发展,Internet技术越来越广泛的应用,网络覆盖的区域不断扩大,给酒店业计算机应用带来了蓬勃发展的机遇。采用全新的计算机网络和管理系统将成为提高酒店管理效率,改善服务水准的重要手段之一。所以酒店入住信息管理系统是酒店经营不可或缺的现代工具。而本系统就是为了实现酒店高效管理而设计的。1.3、系统开发工具 Visual Studio 2013、SQL Server2008、PhotoShop CC Visual Studio 2013是一套完整的开发工具集,用于生成ASP.NET Web应用程序、XML Web Services、桌面应用程序和移动应用程序。Visual Basic、Visual C++和Visual C#全部都是用相同的集成开发环境(IDE)。SQL Server 2008是一个分布式的关系数据库管理系统,具有客户机/服务器体系结构,具有易用性、适合分布式组织的可伸缩性、用于决策支持的数据库仓库功能、与许多其他服务器软件紧密关联的集成性、良好的性价比等优点,是一种应用广泛的数据库管理系统。PhotoShop CC是Adobe公司出品的一个二维图像处理软件,主要用于对图像进行编辑和绘制,对用到的图片进行美工,使系统界面更加美观友好。
二、系统分析 2.1、需求分析 2.1.1、系统主要功能 该系统以酒店订房业务为基础,提供科学有效的管理模式。系统主要功能设计有客房类型管理、客房信息管理、客房经营管理、客房信息检索、经营状况分析等五个部分。1 2.1.2、系统实现目标 系统界面友好美观,操作简单易行; 业务管理信息化,可随时掌握客户入住、客户退租、客房信息等情况; 采用流行的C/S方式,响应速度快,安全性高,扩充方便; 该软件应尽可能地降低使用者的劳动强度,同时提高工作质量和效率。2.1.3、系统性能需求 本着“简单易用”的原则,方便各层次人员的使用; 系统必须稳定可靠,保证营业高峰期时不出现故障。2.2、可行性分析 2.2.1、技术可行性 系统采用了C/S技术结构,使用Microsoft Visual Studio 2013开发软件,数据库服务器使用Microsoft SQL Server 2008数据库,该数据库是目前最方便的流行数据库,能够处理大量的数据。它的活动性、安全性和易用性为数据库编程提供了良好的条件。2.2.2、经济可行性 对于酒店这样的企业来说,开发一个这样的系统是非常必要的,他们完全有能力和资金来负担系统的开发成本。而且,系统开发完成投入使用之后,将大大提高工作效率,减少成本,增加收益。2.2.3、操作可行性 该系统拥有非常简洁的图形界面,并且在某些操作中附有操作说明,即使是对系统毫不了解的人来说,也是很容易接受的。因此,该酒店管理系统在技术、经济、技术上都是可行的。
三、系统设计 3.1、系统功能结构设计 采用本系统可大大减少前台服务人员(系统管理人员)的人数,前台服务员直接掌控整个系统。由于采用计算机操作,可以大大提高操作速度。本酒店管理系统主要包括以下五个模块,分别是:客房类型管理、客房信息管理、客房经营管理、客房信息检索、经营状况分析。图3.1为酒店管理系统功能结构: 2
图3.1 酒店管理系统功能结构
3.2、数据库设计 关系模型是目前应用最广泛、技术最成熟的一种数据库模型,其特点是概念简单清晰、易于被用户掌握和接受,有严格的数学基础和关系数据理论,能极大的简化数据库开发和维护工作,深受广大用户的欢迎,是现代计算机信息系统和计算机应用系统的基础和核心。3.2.1、数据库E-R图设计 酒店管理系统的核心功能主要设计7个表,分别是:RoomsCategory(客房类型表)、RoomsInfo(客房信息表)、CustomerInfo(客户信息表)、RoomOperation(客房操作表)、RoomsStatus(客房状态表)、History(历史记录表)、UserInfo(用户信息表)。RoomsCategory(客房类型):主要存储房间编号、房间名、大小、床的数量、价格、空调数、电视数。其E-R图设计如图3.2所示: 图3.2 客房类型E-R图
RoomsInfo(客房信息): 主要存储房间编号、房间类型、房间位置、房间描述。其E-R图设计3 如图3.3所示: 图3.3 客房信息E-R图 图设计如图3.4所示:
CustomerInfo(客户信息):主要存储客户身份证号、客户姓名、客户电话、客户住址。其E-R图3.4 客户信息E-R图
RoomsStatus(客房状态):主要存储房间编号、房间状态。其E-R图设计如图3.5所示: 图3.5 客房状态E-R图 E-R图设计如图3.5所示:
History(历史记录):主要存储入住时间、退租时间、房间编号、总消费、客户身份证号。其
图3.5 历史记录E-R图
RoomOperation(客房操作):主要存储房间编号、入住时间、客户身份证号、房间状态标记。其E-R图设计如图3.6所示:
图3.6 客房操作E-R图
UserInfo(用户信息):主要存储用户编号、姓名、密码、邮箱、地址、电话。其E-R图设计如图3.7所示:
图3.7 用户信息E-R图 3.2.2、数据库的逻辑设计 RoomsCategory(客房类型表)如表1所示:
表1 客房类型表
RoomsInfo(客房信息表)如表2所示: 5
表2 客房信息表 CustomerInfo(客户信息表)如表3所示:
表3 客户信息表
RoomOperation(客房操作表)如表4所示: 表4 客房操作表
RoomsStatus(客房状态表)如表5所示: 表5 客房状态表 History(历史记录表)如表6所示:
表6 历史记录表 UserInfo(用户信息表)如表7所示:
表7用户信息表 6
四、系统详细设计与实现 4.1、用户登录 用户通过输入用户编号和密码登录系统,如果密码不正确,则不允许用户登录到系统。图4.1为用户登录流程图,图4.2为用户登录界面。
图4.1 用户登录流程图
图4.2 用户登录主界面
4.2、系统主界面 用户登录成功后,进入系统主界面,主界面分为三个部分:顶端酒店照片页面、左侧导航栏和右侧显示操作界面。当点击左侧导航栏名称的时候,不需要重新打开新的窗口,而是在右侧的显示栏中显示内容。图4.3为系统主界面。7
图4.3 系统主界面
4.3、客房类型管理 用户在成功登录系统后,点击【客房经营管理】,在右侧显示栏中就会显示客房的信息和对客房进行修改的操作,有添加、编辑和删除客房信息的操作。点击【编辑】按钮,可以对客房的信息进行修改;点击【删除】按钮,可以将选中的客房从数据库中删除掉;点击【添加房间】可以添加数据库中不存在的客房类型。图4.4为客房类型管理流程图,图4.5为客房类型管理界面,图4.6为添加客房界面。图4.4 客房类型管理流程图
图4.5 客房类型管理界面
图4.6 添加客房界面
4.4、客房经营管理 系统登录成功后,点击导航栏中的【客房经营管理】,根据客户的需求,查询相应的客房是否有入住信息。如果有,则告知客户本客房已满,请选择其它的客房;如果没有,则进行订房操作。当用户接收到客户的退房申请时,用户根据客户的信息查找入住的客房,登记结算并进行退房。图4.7为客房经营管理流程图,图4.8为客房经营管理界面,图4.9为订房界面,图4.10为退房界面。
图4.7 客房经营管理流程图
图4.8 客房经营管理界面
图4.9 订房界面 10
图4.10 退房界面
当用户点击【退房】时,系统会弹出【确定要退房?】对话框进行验证,点击【取消】则不会执行退房操作;点击【确定】后,则执行退房操作,系统弹出【退房成功】对话框,点击【确定】,则退房成功,并显示消费总金额。图4.11为【确定要退房】对话框,图4.12为【退房成功】对话框,图4.12为退房信息结算界面。图4.11 【确定要退房】对话框 图4.12 【退房成功】对话框
图4.12 退房信息结算界面 11
4.5、客户信息检索 系统登录成功后,点击左侧导航栏中的【客户信息检索】,右侧显示出检索客户信息界面,可以利用“姓名”、“房间号”、“时间段”等关键字对客户入住的信息进行查询。图4.13为客户信息检索流程图,图4.14为按姓名查询客户信息,图4.15为按时间段查询客户信息。图4.13为客户信息检索流程图
图4.14 按姓名查询客户信息
图4.15 按时间段查询客户信息
4.6、客房经营状况分析 系统登录成功后,点击左侧导航栏中的【客房经营状况分析】,右侧显示出客房经营状况的界面,选择相应的时间段,点击【总收入】按钮,就可以显示出选定时间段内的收入,点击【客流量】按钮,12 就可以显示出选定时间段内的入住人数。点击【收入显示】按钮,可以显示出【标准间】、【商务套房】、【情侣套房】三种客房类型各自的收入和在总收入所占的比例。图4.16为客房经营状况分析流程图,图4.17为客房经营状况分析界面。图4.16 客房经营状况分析流程图
图4.17 客房经营状况分析界面
五、课程设计小结 本次课程设计是基于ASP.net进行Web程序开发,开发的项目系统是酒店管理系统。本次的课程设计,由于自身能力有限,难免会有一些遗漏和疏忽的地方,系统有时也不稳定,有些功能还没有真正的实现,测试运行的时候也有一些问题的存在。通过这次对酒店管理系统的设计与开发,让发更加认识到了自身学习的不足之处,但也让我对Web编程语言的了理解和应用有了更深的认识。课程设计之后,感受到了动手能力有所提高,并能够结合实际存在的问题在专业领域内进行更深人的学习。同时,通过本次的课程设计让我了解到,仅学习书本上的知识是不够的,还要有较强的实践动手能力。因为我们学习知识就是为了实践。而只有多实践,多编写程序,才能更好地理解与掌握书本上的知识。
第三篇:仓库管理系统课程设计报告
仓库管理系统课程设计报告
一、概述
项目背景:
仓库管理在企业的整个供应链中起着至关重要的作用,如果不能保证正确的进货和库存控制及发货,将会导致管理费用的增加,服务质量难以得到保证,从而影响企业的竞争力。传统简单、静态的仓库管理已无法保证企业各种资源的高效利用。如今的仓库作业和库存控制作业已十分复杂化多样化,仅靠人工记忆和手工录入,不但费时费力,而且容易出错,给企业带来巨大损失。使用仓库管理系统 , 对仓库各环节实施全过程控制管理,并可对货物进行货位、批次、保质期、配送等实现系统列号管理,对整个收货、发货、补货、集货、送货等各个环节的规范化作业 , 还可以根据客户的需求制作多种合理的统计报表。仓库管理系统能帮助企业合理有效地利用仓库空间,以快速、准确、低成本的方式为客户提供最好的服务。
系统特点: 本系统是采用面向对象的设计思想进行编制,整个系统由若干个表单、报表及一个主菜单组成,由项目管理器统一管理全部程序的编写和调试.用户在操作中可以通过主菜单调用系统的各个功能.在表单设计方面尽量考虑方便用户,简化操作,绝大部分操作只需点击鼠标即可完成,力求突出系统的便利性、实用性.设计环境与工具: 在现有的DBMS(Visual FoxPro)支持下进行。
二、需求分析
问题陈述:
需完成的功能: 产品入库管理,可以填写入库单,确认产品入库;
产品出库管理,可以填写出库单,确认出库;
借出管理,凭借条借出,然后能够还库;
初始库存设置,设置库存的初始值,库存的上下警戒限;
可以进行盘库,反映每月、年的库存情况;
可以查询产品入库情况、出库情况、当前库存情况,可以按出库单、入库单,产品、时间进行查询;
三、系统结构设计
(1)系统功能结构设计(包括主要功能模块及功能模块的细化。)
本系统应能够方便的实现仓库货物存储信息的录入、修改、编辑和浏览等功能,高效地完成企业的各种产品信息的统计功能,打印出各种产品入库出库和盘库查询的信息表格,系统的各主要功能的要求如下: 信息录入功能: 仓库产品基本信息、产品入库信息、产品出库信息、产品清单资料等.浏览功能: 浏览仓库产品基本信息,浏览产品入库情况、出库情况、当前库存情况.查询功能: 产品标号,或者按验收时间查询库存设置等.报表打印功能: 打印仓库产品货单表,空白产品登记表和各种统计表.(2)数据库设计
一个数据库中包含许多表,表之间又有关联,所以设计数据库的步骤为:第一步,确定所需要的表;第二步,确定每个表所需要的字段;第三,确定各个表之间的关联关系;最后形成表的结构.定义表(包括表中的字段)、视图、索引、主关键字、确定表间的联系。
数据库要求:在数据库中至少应该包含下列数据表:
出库单表(chjy): 记录产品出库状况。
入库单表(cgdd):记录产品入库状况。
产品供应商表(gys):记录产品提供者。
公司雇员表(gy):记录来仓库存取产品的人员名单。产品表(cp):记录仓库现存状况。
库存情况表;出库台帐; 入库台帐;
借条信息表(反映借出人,借出时间,借出产品,借出数量,还库时间等)。
(3)系统流程结构图
数据流图的基本目的是利用它作为交流信息的工具,利用它将对现有系统的认识或对目标系统的设想用数据流图描绘出来,供有关人员审查确认: 数据流图的另一个主要用途是作为分析和设计的工具,帮助分析员实现总结现有系统的目标,对更详细的设计步骤提供帮助.数据流图是描绘系统的逻辑模型,以图形的形式表示出来,以下是仓库管理系统的数据流图.四、系统详细设计
(1)描述每一个功能所完成的任务,指明实现该功能的表单、菜单、报表等。
系统的功能模块设计
图1-1
系统功能模块
(2)说明主要功能的设计思想和方法(包括涉及到的数据源、关键的属性和代码等。)
设计思想分析:
将管理系统分为进库操作、出库操作、损耗操作、查询操作、报表操作、维护操作六部分。
1、入库时根据商品的具体情况进行处理,如果库中已存在此商品,就在原来的数量基础上加上进货数量,如果没有则自动新增此产品,并提醒管理员在最新报价表中加上此商品的最新报价(为了出库的正确性,某商品的最新报价的存在是其出库的前提)。如果商品已以入库,则自动在商品进出表中加上相关记录,以便于以后的核对。
2、为了达到出库价格的正确性,出库时系统自动将此商品的售价和最新报价里的价格进行比较,如果不相等则出现提示信息。另外,程序还有其他服务功能,比如如果商品数量不足或没有相关商品则出现提示信息。
3、商品的查询专门提供给广大客户使用,客户可以按商品编号和商品名称、数量、单价、进库出库信息、对库中的具体商品进行查询,查询有商品代号和商品名称两种方法,这样,客户可以轻松掌握仓库的库存情况,便于交易。
4、核对措施也是此系统中必备的,为了便于以后核对,出库的记录也将存储起来。出库单打印默认为2份,其一用交给交易对方,另一份管理员自己保存。便于核对。同样,本系统还会自动对入库情况进行记录,这样,用户能轻松掌握仓库的变化,可以随时对库存进行分析核对。
5、保密性是作为一个企业或者机构所十分重视的,给用户一个安全的环境是优秀的管理软件所必须做到做好的,本软件也做到了安全性,就是说登录时要有正确的密码,这样一来,只有系统管理员才有权更改系统里面的数据了。
6、本系统还带有自动清除测试记录功能(课本是本系统的测试数据),如果用户要正式使用仓库,只要选择操作菜单下的正式使用命令。这样就不需要用记一条条去删记录了。
(3)界面设计要合理、简明。
五、实施及测试 指出已实现的每个功能,附上运行、测试结果。
六、结束语
心得体会:
经过了这次仓库管理系统的课程设计我从中学到了很多,同时明白了做一个小型软件的步骤和流程.如何让自己设计的软件运用到具体的实际工作中,这是一个关键的环节.还有就是程序设计和运行测试中遇到的问题该如何解决,从解决问题中我也学到了许多平时课本上所没有的知识.当然,能够完成这个仓库管理系统我自己也感觉很有成就感.运用到的开发工具和软件技术: 此系统结合货物仓库管理的要求,对Visual FoxPro(VFP)数据库管理系统、SQL语言的学习和应用,主要完成货物仓库管理系统的需求分析,系统的数据库设计和实现,系统的表单设计,主控程序设计,并由此设计了数据库结构和应用程序。系统运行结果证明,本人设计的货物仓库管理系统可以满足仓库管理者完成仓库管理的日常工作,包括材料的入库,出库以及库存材料信息的管理维护等
软件还需要哪些改进:
在编写源程序代码的过程中对语言的运用还需要提高,应使写出来的程序更加简洁,易读懂,更加满足实际工作的需要.要想使做出来的程序更好的利用还需根据实际需要在今后的运用中不断的改进和完善.七、参考资料
1.Visual FoxPro 程序设计及其应用系统开发
李作纬 等
中国水利水电出版社 2.数据库应用系统开发技术
刘军
等
机械工业出版社 3.其它资料若干
第四篇:仓库管理系统课程设计报告
《软件工程》课程设计报告
仓库信息管理系统
专业班级: 学生学号: 学生姓名: 指导教师姓名:
2016年月
目录
一、系统可行性研究.......................................2
二、系统的需求分析.......................................5
三、系统概要设计........................................14
四、系统的详细设计......................................17
五、系统的实现和测试....................................20
六、实验总结............................................26
仓库信息管理系统一、系统可行性研究
1.1引言 1.1.1编写目的
为了以最小的代价在最短的时间内确定仓库管理系统项目是否值得去开发,其中的关键和技术难点是什么,问题能否得到解决,怎样达到目的?我们编写了可行性报告以对这些问题进行分析。
除此之外,经过对此项目进行详细调查研究,我们初步拟定了系统实现报告,对软件开发中将要面临的问题及其解决方案进行初步设计及合理安排。明确开发风险及其所带来的经济效益。以便于中小规模工厂的仓库管理人员阅读及理解整个项目。1.1.2项目背景
开发的软件系统的名称:仓库信息管理系统 项目提出者: 项目开发者:
项目使用者:仓库管理人员 1.2可行性研究的前提 1.2.1要求
A.功能:极大提高仓库工作人员的工作效率,大大减少以往入货、出库流程繁琐,杂乱,周期长的弊端;基于仓库管理的全面自动化,减少入库管理、出库管理及库存管理中的漏洞,节约不少管理开支,增加企业收入;实现仓库的管理操作自动化和信息的电子化,全面提高仓库的管理水平。
B.性能:系统的存货信息必须保持更新状态,客户的产品出入库信息必须无差错,及时的 保存到仓库管理系统的服务器上,对服务器上的数据必须定时的检查并与仓库中存放的货物进行核对。
C.本系统要求输出的数据有:数据完整,详实,及时。
在此方面,若此项目投入使用,将给企业带来丰厚的经济效益社会效益。并且,此项目开发成本低,占用资源少,在经济方面可行。1.5操作可行性分析
本系统设计思路清晰,操作简捷,具有良好的用户界面,和较为完善的异常处理机制及信息处理机制,一般仓库管理者稍加培训即可使用。在操作方面可行。
二、系统的需求分析
2.1功能描述
本软件主要有以下几方面的功能:
(1)信息管理:可对商品进行查询,删除,修改操作,完成对商品信息管理的功能;
(2)库存管理:对商品入库,出库的管理。2.2数据流图 2.2.1数据流分析
数据流图是组织中信息运动的抽象,是管理信息系统逻辑模型的主要形式。它可以综合的反映出信息在系统中的流动、处理和存储情况,具有良好的抽象性
商品入库请求商品入库管理入库商品信息更新商品信息出库商品信息商品出库请求商品出库管理库存商品信息更新后的商品信息修改商品请求删除商品请求商品信息管理商品信息库存商品信息表商品清单查询商品请求图2-2 二层数据流图
对每一个功能模块的分解图
(1)对第一个模块“商品入库管理”的细分图
商品入库管理子系统包含两个功能模块:“商品入库”、“处理商品”; 一个文件存储:“入库商品信息表”
入库请求1商品入库商品编号1.11.21.31.4商品名称商品数量商品价格输入商品编输入商品名输入商品数输入商品价号称量格商品信息入库商品信息表入库商品信息
图2-3 “商品入库管理”分解图
(2)对“商品出库管理”的细分图
商品出库管理子系统包含两个功能模块:“商品出库”、“处理商品”;
一个文件存储:“出库商品信息表”
入库请求1商品入库商品编号1.1输入商品编号商品名称商品价格1.21.31.4商品数量输入商品名输入商品数输入商品价称量格商品信息商品商品出库信息出库商品信息表入库商品信息表出库商品信息出库请求2商品出库商品名称2.1输入商品名称商品数量2.2输入出库数量入库商品信息6更新商品信息3删除商品输入商品编号3.1输入商品编号输入商品名称3.2输入商品名称商更新后的商品品信息信息输入编号4.1.1输入商品编号输入名称4.1.2输入商品名称商品信息库存商品信息删除商品请求管理员查询商品信息请求44.1请求分类查询商品信按条件查询息商品信息请求分类4.2查询所有商品信息库存商品信息表查询所有商品信息请求库存商品信息5.2输入新的编号修改后的商品信息输出信息修改商品信息请求修改编号商品名称5修改商品信息5.1输入商品名称管理员修改数量修改后的商品信息5.3输入新的数量
图2-6 底层数据流图
2.3 数据字典
数据字典是各类数据描述的集合,它是进行详细的数据收集和数据分析后所获得的主要成果。该系统的数据字典如下: 2.3.1 数据流
数据字典是各类数据描述的集合,它是进行详细的数据收集和数据分析后所获得的主要成果。该系统的数据字典如下:
1.数据源点和终点描述(1)名称:商品
加工编号:1.4 输入数据流:商品数量
输出数据流:商品信息
加工逻辑:输入商品价格,输出商品信息(6)加工名:商品出库
加工编号:2 输入数据流:出库请求
输出数据流:商品名称
加工逻辑:接收出库请求(7)加工名:输入商品名称
加工编号:1.2 输入数据流:商品名称
输出数据流:商品数量
加工逻辑:输入商品名称(8)加工名:输入出库数量
加工编号:2.2 输入数据流:商品数量
输出数据流:商品出库信息
加工逻辑:输入出库数量(9)加工名:更新商品信息
加工编号:6 输入数据流:出库商品信息,入库商品信息,库存商品信息
输出数据流:更新后的商品信息
加工逻辑:接收修改的商品信息进行修改(10)加工名:删除商品
加工编号:3 输入数据流:删除商品请求
输出数据流:输入商品编号
加工逻辑:接收删除请求
0 加工逻辑:修改商品信息
3.文件存储
(1)文件名称:入库商品信息表
简述:存放入库的商品信息
输入数据:商品信息
输出数据:入库商品信息
文件组成:商品的编号、名称、数量、价格(2)文件名称:出库商品信息表
简述:存放出库的商品信息
输入数据:商品的出库信息
输出数据:出库商品信息
文件组成:出库商品数量(3)文件名称:库存商品信息表
简述:存放所有商品信息
输入数据:更新后的商品信息,修改后的商品信息,删除后的商品信息
输出数据:库存商品信息
文件组成:商品的编号、名称、数量、价格
4.数据流
(1)数据流名字:入库请求 描述:对商品进行入库 组成:入库命令
(2)数据流名字:入库商品信息 描述:对入库商品信息处理
组成:入库商品信息=商品编号+名称+数量+价格(3)数据流名字:商品编号 描述:输入商品编号 组成:商品编号
三、系统概要设计
3.1总体结构和模块设计 3.1.1总体结构设计
模块是软件结构的基础,软件结构的好坏完全由模块的属性体现出来,把软件模块化的目的是为了降低软件复杂性,使软件设计,测试,调试,维护等工作变得简易,但随着模块数目的增加,通过接口连接这些模块的工作量也随之增加。1.总体结构框图
仓库信息管理系统库存管理信息管理商品入库商品出库删除商品修改商品查询商品信息按条件查询商品信息查询所有商品信息
图3-1系统总体结构图
2.模块说明
信息管理系统删除请求修改请求输入名称输入商品名称输入标号输入新编号商品信息查询请求删除商品信息删除商品信息接收信息查询商品信息反馈信息请求分类请求分类修改商品信息输入编号反馈输入名称反馈接收信息按条件查询商查询所有商品品信息接商收品信信息息输入商品编号及名称输入商品编号输入商品名称反馈输入数量反馈输入新数量
图3-3信息管理子系统结构图
(3)库存管理子系统结构图如图3-4所示
库存管理系统入库请求出库请求入库商品信息商品入库出库商品信息商品出库输入编号反馈输入名称输入反数馈量反馈反馈输入价格输入商品价格输入名称反馈信息输入商品名称输入数量反馈信息输入商品编号输入商品名称输入商品数量输入商品数量
图3-4 库存管理子系统结构图
四、系统的详细设计
4.1总体结构和模块设计
6储在入库商品信息表中。
商品出库模块模块:输入出库商品的编号以及出库的数量,把出库后的商品信息保存在出库商品信息表中。
删除商品模块:先输入商品的编号及名称,再删除该商品在库存商品信息表中的信息。
修改商品信息模块:先输入商品的编号及名称,在库存商品信息表中查询到该商品信息,再修改其对应信息。
查询商品信息模块:输入编号查询商品在库存商品信息表中的信息或查询库存商品信息表中的所有商品的信息。4.1.2各个模块设计
(1)根据数据画出的结构图如图3-2所示
仓库信息管理系统商品信息商品信息请求处理库存管理系统请求处理信息管理系统
图4-2 仓库信息管理系统结构图
(2)信息管理子系统结构图如图3-3所示
8商品入库操作
商品出库操作
出库后的商品信息
出库数量多余商品数量时
0
当删除的商品不存在是
修改商品操作
修改商品界面
商品信息查询界面
所有商品信息
六、实验总结
包括实验问题中遇到问题,解决过程的分析;实验心得体会等,不得抄袭!
第五篇:宿舍管理系统
附件B:宿舍管理系统源代码
#include “stdio.h” #include “stdlib.h”
#define SIZE 1000
char grade;
typedef struct StuNode{
char num[11];
char name[20];
char sex[2];
char birth[11];
char hometn[13];
char dorNum[7];
char dorTel[8];
struct StuNode *next;}StuNode,*StuList;
int readToList(StuList sl,FILE *fp){
StuList p;
int i=0;
while(1){
p=(StuList)malloc(sizeof(StuNode));
if(fread(p,sizeof(StuNode),1,fp)!=1)break;
p->next=sl->next;
sl->next=p;
i++;
}
fclose(fp);
return i;}
void addNode(){
FILE *fp;
StuList sl,p,q;
if((fp=fopen(“stu_list”,“rb”))==NULL){ /*the file doesn't exist*/
p=(StuList)malloc(sizeof(StuNode));
printf(“Please enter the student's information:n”);
scanf(“%s%s%s%s%s%s%s”,&p->num,&p->name,&p->sex,&p->birth,&p->hometn,&p->dorNum,&p->dorTel);
getchar();
p->next=NULL;
if((fp=fopen(“stu_list”,“wb”))==NULL){
printf(“cannot open filen”);
return;
}
else{
if(fwrite(p,sizeof(StuNode),1,fp)!=1){
printf(“file write errorn”);
return;
}
}
fclose(fp);
}
else{
sl=(StuList)malloc(sizeof(StuNode));
sl->next=NULL;
readToList(sl,fp);
p=(StuList)malloc(sizeof(StuNode));
printf(“Please enter the student's information:n”);
scanf(“%s%s%s%s%s%s%s”,&p->num,&p->name,&p->sex,&p->birth,&p->hometn,&p->dorNum,&p->dorTel);
getchar();
q=sl->next;
while(q){
if(strcmp(q->num,p->num)==0){
printf(“This student %s existed!Press Enter to continue....”,p->num);
getchar();
clrscr();
return;
}
else q=q->next;
}
p->next=sl->next;
sl->next=p;
p=sl->next;
if((fp=fopen(“stu_list”,“wb”))==NULL){
printf(“cannot open filen”);
return;
}
else{
while(p){
if(fwrite(p,sizeof(StuNode),1,fp)!=1){
printf(“file write errorn”);
return;
}
p=p->next;
}
}
fclose(fp);
}
printf(“nSuccess!
Press Enter to continue....”);
getchar();
clrscr();}
void delNode(){
FILE *fp;
StuList sl,p,q;
char num[11];
int flag=1;
printf(“Please enter the student's num:”);
scanf(“%s”,&num);
getchar();
sl=(StuList)malloc(sizeof(StuNode));
sl->next=NULL;
if((fp=fopen(“stu_list”,“rb”))==NULL){
printf(“cannot open filen”);
return;
}
readToList(sl,fp);
p=sl;
while(p){
q=p->next;
if(strcmp(q->num,num)==0){
p->next=q->next;
free(q);
flag=0;
}
else p=p->next;
}
if(flag==1){
printf(“Not exist this student--%s!Press Enter to continue....”,num);
getchar();
clrscr();
return;
}
else if((fp=fopen(“stu_list”,“wb”))==NULL){
printf(“cannot open filen”);
return;
}
else{
p=sl->next;
while(p){
if(fwrite(p,sizeof(StuNode),1,fp)!=1){
printf(“file write errorn”);
return;
}
p=p->next;
}
fclose(fp);
}
printf(“nSuccess!
Press Enter to continue....”);
getchar();
clrscr();}
void editNode(){
FILE *fp;
StuList sl,p;
char num[11];
int flag=1;
printf(“Please enter the student's num:”);
scanf(“%s”,&num);
getchar();
sl=(StuList)malloc(sizeof(StuNode));
sl->next=NULL;
if((fp=fopen(“stu_list”,“rb”))==NULL){
printf(“cannot open filen”);
return;
}
readToList(sl,fp);
p=sl->next;
while(p){
if(strcmp(num,p->num)==0){
printf(“nThe student's old information is:n%s %s %s %s %s %s %snPlease enter the student's new information:n”,p->num,p->name,p->sex,p->birth,p->hometn,p->dorNum,p->dorTel);
scanf(“%s%s%s%s%s%s%s”,&p->num,&p->name,&p->sex,&p->birth,&p->hometn,&p->dorNum,&p->dorTel);
getchar();
flag=0;
break;
}
else p=p->next;
}
if(flag){
printf(“Not exist this student--%s!Press Enter to continue....”,num);
getchar();
clrscr();
return;
}
else if((fp=fopen(“stu_list”,“wb”))==NULL){
printf(“cannot open filen”);
return;
}
else{
p=sl->next;
while(p){
if(fwrite(p,sizeof(StuNode),1,fp)!=1){
printf(“file write errorn”);
return;
}
p=p->next;
}
fclose(fp);
}
printf(“nSuccess!
Press Enter to continue....”);
getchar();
clrscr();}
void sort(StuList sl[],int n,char key[]){
int i,j,k;
if(strcmp(key,“num”)==0){
for(i=1;i k=i; for(j=i+1;j<=n;j++) if(strcmp(sl[j]->num,sl[k]->num)<0)k=j; if(k!=i){ sl[0]=sl[i]; sl[i]=sl[k]; sl[k]=sl[0]; } } } if(strcmp(key,“name”)==0){ for(i=1;i k=i; for(j=i+1;j<=n;j++) if(strcmp(strlwr(sl[j]->name),strlwr(sl[k]->name))<0)k=j; if(k!=i){ sl[0]=sl[i]; sl[i]=sl[k]; sl[k]=sl[0]; } } } if(strcmp(key,“dorNum”)==0){ for(i=1;i k=i; for(j=i+1;j<=n;j++) if(strcmp(sl[j]->dorNum,sl[k]->dorNum)<0)k=j; if(k!=i){ sl[0]=sl[i]; sl[i]=sl[k]; sl[k]=sl[0]; } } } } void scan(char key[]){ FILE *fp; StuList sortary[SIZE],sl,p; int i,n; sl=(StuList)malloc(sizeof(StuNode)); sl->next=NULL; if((fp=fopen(“stu_list”,“rb”))==NULL){ printf(“cannot open filen”); return; } n=readToList(sl,fp); p=sl->next; for(i=1;i<=n;i++){ sortary[i]=p; p=p->next; } sort(sortary,n,key); printf(“n num name sex birth hometown dorNum dorTeln”); printf(“---------------n”); for(i=1;i<=n;i++){ printf(“%-11s %-19s%-2s %-11s %-13s %-7s %-8sn”,sortary[i]->num,sortary[i]->name,sortary[i]->sex,sortary[i]->birth,sortary[i]->hometn,sortary[i]->dorNum,sortary[i]->dorTel); } printf(“---------------n”); printf(“Press Enter to continue...”); getchar();} void search(char key[],char value[]){ FILE *fp; StuList sortary[SIZE],sl,p; int i,n,low,high,mid,flag=1; sl=(StuList)malloc(sizeof(StuNode)); sl->next=NULL; if((fp=fopen(“stu_list”,“rb”))==NULL){ printf(“cannot open filen”); return; } n=readToList(sl,fp); p=sl->next; for(i=1;i<=n;i++){ sortary[i]=p; p=p->next; } sort(sortary,n,key); low=1;high=n; while(low<=high){ mid=(low+high)/2; if(strcmp(value,sortary[mid]->num)==0){ printf(“The student's information is:n”); printf(“%-11s%-19s%-2s%-11s%-13s%-7s%-8sn”,sortary[mid]->num,sortary[mid]->name,sortary[mid]->sex,sortary[mid]->birth,sortary[mid]->hometn,sortary[mid]->dorNum,sortary[mid]->dorTel); flag=0; break; } else if(strcmp(strlwr(value),strlwr(sortary[mid]->name))==0){ printf(“Result set:n”); printf(“%-11s%-19s%-2s%-11s%-13s%-7s%-8sn”,sortary[mid]->num,sortary[mid]->name,sortary[mid]->sex,sortary[mid]->birth,sortary[mid]->hometn,sortary[mid]->dorNum,sortary[mid]->dorTel); for(i=mid+1;strcmp(strlwr(value),strlwr(sortary[i]->name))==0;i++) printf(“%-11s%-19s%-2s%-11s%-13s%-7s%-8sn”,sortary[mid]->num,sortary[mid]->name,sortary[mid]->sex,sortary[mid]->birth,sortary[mid]->hometn,sortary[mid]->dorNum,sortary[mid]->dorTel); for(i=mid-1;strcmp(strlwr(value),strlwr(sortary[i]->name))==0;i--) printf(“%-11s%-19s%-2s%-11s%-13s%-7s%-8sn”,sortary[mid]->num,sortary[mid]->name,sortary[mid]->sex,sortary[mid]->birth,sortary[mid]->hometn,sortary[mid]->dorNum,sortary[mid]->dorTel); flag=0; break; } else if(strcmp(value,sortary[mid]->dorNum)==0){ printf(“Result set:n”); printf(“%-11s%-19s%-2s%-11s%-13s%-7s%-8sn”,sortary[mid]->num,sortary[mid]->name,sortary[mid]->sex,sortary[mid]->birth,sortary[mid]->hometn,sortary[mid]->dorNum,sortary[mid]->dorTel); for(i=mid+1;strcmp(value,sortary[i]->dorNum)==0;i++) printf(“%-11s%-19s%-2s%-11s%-13s%-7s%-8sn”,sortary[i]->num,sortary[i]->name,sortary[i]->sex,sortary[i]->birth,sortary[i]->hometn,sortary[i]->dorNum,sortary[i]->dorTel); for(i=mid-1;strcmp(value,sortary[i]->dorNum)==0;i--) printf(“%-11s%-19s%-2s%-11s%-13s%-7s%-8sn”,sortary[i]->num,sortary[i]->name,sortary[i]->sex,sortary[i]->birth,sortary[i]->hometn,sortary[i]->dorNum,sortary[i]->dorTel); flag=0; break; } else if((strcmp(key,“num”)==0)&&(strcmp(value,sortary[mid]->num)<0))high=mid-1; else if((strcmp(key,“name”)==0)&&(strcmp(strlwr(value),strlwr(sortary[mid]->name))<0))high=mid-1; else if((strcmp(key,“dorNum”)==0)&&(strcmp(value,sortary[mid]->dorNum)<0))high=mid-1; else low=mid+1; } if(flag)printf(“No result!n”); printf(“Press Enter to continue...”); getchar(); clrscr();} void printMenu(){ printf(“ *********************< MENU >*********************n”); printf(“ 1.Add one student's record.n”); printf(“ 2.Delete one student's record.n”); printf(“ 3.Edit one student's record.n”); printf(“ 4.Scan all records ordered by num.n”); printf(“ 5.Scan all records ordered by name.n”); printf(“ 6.Scan all records ordered by dorNum.n”); printf(“ 7.Search one student's record.n”); printf(“ 8.Exit.n”); printf(“ **************************************************n”); printf(“Please enter your choice(1~8):”); grade=getchar(); getchar();} void main(){ char key[7],value[20]; while(1){ printMenu(); switch(grade){ case'1':addNode();break; case'2':delNode();break; case'3':editNode();break; case'4':clrscr();scan(“num”);break; case'5':clrscr();scan(“name”);break; case'6':clrscr();scan(“dorNum”);break; case'7':clrscr(); printf(“Please enter the key and value(eg:num 0606054230/name ZhangSan/dorNum 030615):n”); scanf(“%s%s”,&key,&value); while((strcmp(key,“num”)!=0)&&(strcmp(key,“name”)!=0)&&(strcmp(key,“dorNum”)!=0)){ printf(“Wrong key!It must be num/name/dorNum:n”); scanf(“%s%s”,&key,&value); getchar(); } getchar(); clrscr(); search(key,value); break; case'8':exit(0); default:clrscr(); printf(“n Have no this choice--%c!Press Enter to continue...”,grade); getchar(); clrscr(); } } }