课程设计报告参考副本副本.docx
- 文档编号:8576537
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:24
- 大小:252.22KB
课程设计报告参考副本副本.docx
《课程设计报告参考副本副本.docx》由会员分享,可在线阅读,更多相关《课程设计报告参考副本副本.docx(24页珍藏版)》请在冰豆网上搜索。
课程设计报告参考副本副本
课程设计说明书
课程名称:
高级语言程序设计
设计题目:
机房管理系统
院部:
2015年6月
课程设计任务书
设计题目
机房管理系统
学生姓名
所在院部
专业、班级
设计要求:
完成一个机房管理系统,具体要求如下:
1.输入学生信息
2.查询空机位
3.查询上机情况
4.修改上机信息
5.删除上机信息
6.显示学生上机费用
7.显示所有上机信息
8.上课模式
9.退出
学生应完成的工作:
1.学生应认真学习参考程序,理解每个文件、每个函数以及各个变量的作用和意义。
在此基础上进一步改进程序,最后正确地运行程序。
2.对程序进行测试,设计详细的测试计划,然后根据测试计划设计测试用例,对程序进行测试。
测试时应注意对各种边缘情况进行测试。
3.完成课程设计报告。
参考文献:
1.梁旭等C程序设计课程设计电子工业出版社2011
2.谭浩强C程序设计(第四版)清华大学出版社2010
工作计划:
1.小组审题,查阅资料,进行设计前的必要资料准备(3天)。
2.把程序完整运行出来(4天)。
3.增加改进程序(3天)。
4.写课程设计报告(3天)。
5.提交课程设计报告及答辩(1天)
任务下达日期:
2015年6月9日
任务完成日期:
2015年6月22日
指导教师(签名):
学生(签名)
目录
一前言1
二需求分析1
三概要设计1
四详细设计3
五改进或增加功能模块说明4
六程序测试4
七课程设计总结5
八致谢5
九参考文献5
十源程序6
机房管理系统
一前言
设计以菜单方式工作的机房管理系统,主要包括六个模块,分别是上机者信息输入模块,上机者信息查询模块,上机者信息修改模块,上机者信息删除模块,上机者上机费用计算模块,所有上机者信息显示模块。
每个模块由组员相应完成。
另外考虑到机房的特殊要求,新增一个上课模式,此模式功能是将所有机子开启,统一赋予上机者相关信息,避免管理员一个一个的给机子输入信息。
二需求分析
1要求
(1)用C语言实现程序设计;
(2)定义各个函数分别完成不同功能,如背景设计,判断等;
(3)画出查询空机号模块的流程图;
(4)系统的各个功能用函数调用的形式实现;
(5)界面友好(良好的人机互交),程序要有注释。
2任务
(1)定义各类头文件,变量及宏定义;
(2)写出详细设计过程;
(3)改进或增加模块;
(4)各个模块运行情况;
(5)编写代码;
(6)程序分析与调试。
3运行环境
(1)WINDOWS2000/XP系统
(2)TurboC2.0编译环境
(3)WINDOWS8/8.1系统
4开发工具
C语言
三概要设计
1模块组成图。
主要包括8个模块,分别是学生信息输入模块,空机号查询模块,查询上机情况模块,上机者信息修改模块,上机者信息删除模块,上机者上机费用计算模块,所有上机者信息显示模块,上课模式模块。
如图3-1。
图3-1功能模块图
2空机号查询函数流程图。
空机号检索是本程序的核心,本程序的其它几个模块皆是通过先对空机号的判断然后进行下去的(及先对StudentList[time]的值进行0或1的判断)。
例如“显示所有上机信息模块”,我们小组通过一个for循环语句,从机号0—79号逐一判断,符合条件则将其输出。
而判断的标准就是if(StudentList[i].time!
=0)。
如图3-2。
图3-2空机号查询流程图
四详细设计
在主函数之前,我们首先定义了一个结构体,同时进行了相关函数的声明。
其中,结构体包括:
姓名[name],机号[seat],学号[stu_num],上机时间[time]四个成员。
在主函数中,我们定义了一个变量j,通过一个for循环语句,从j=0到j=80,分别给所有机子编号,同时给所有机子的上机时间赋以初值0,从而为空机号的检索以及下面各个模块顺利的连接编译做下铺垫。
为美化菜单,我们加上相应的头文件#include
system("color3A"),从而成功使系统界面背景颜色与字体分别变成紫色与绿色。
代码如下。
#include
#include
#include
#defineMaxSize80
structstudent_info
{
charname[10];//姓名
intseat;//机号
longstu_num;//学号
inttime;//上机时间
}StudentList[MaxSize];
voidInsert();
voidEmpty();
voidSearch();
voidUpdate();
voidDelete();
voidDispallmoney();
voidShow();
voidClass();
intmain()
{
inti,j;
system("color3A");//字体和背景颜色
for(j=0;j<80;j++)
{
StudentList[j].time=0;//给所有机子上机时间赋值为0,代表空机
StudentList[j].seat=j;//给所有机子编号
}
printf("\t\t\t*****************************\n\n");//显示一个简易菜单
printf("\t\t\t欢迎使用机房管理系统\n\n");
printf("\t\t\t*****************************\n\n");
do
{printf("\n");
printf("\t\t\t1------输入学生信息(Insert)\n");
printf("\t\t\t2------查询空机位(Empty)\n");
printf("\t\t\t3------查询上机情况(Search)\n");
printf("\t\t\t4------修改上机信息(Update)\n");
printf("\t\t\t5------删除上机信息(Delete)\n");
printf("\t\t\t6------显示学生上机费用(Dispallmoney)\n");
printf("\t\t\t7------显示所有上机信息(Show)\n");
printf("\t\t\t8------上课模式(Class)\n");
printf("\t\t\t9------退出(Exit)\n");
学生信息输入模块和空机号查询模块
学生信息输入模块是本系统的第一个模块,亦是本系统尤为关键的一个模块。
下面的模块能够正常运行,皆离不开这一模块。
结合主函数,我们在输入上机者信息时,我们通过对StudentList[i].time进行0或1的判断,对整个机房进行一个空机号的检索,检查是否有空机号,有则执行输入功能,无则输出“机房已满”信息。
代码如下。
{
inti,k=0;
for(i=0;i<80;i++)
{
if(StudentList[i].time==0)//检测机房是否有空机位
k=1;
}
if(k==0)
{printf("机房已满!
");return;}
printf("请输入机号:
");
scanf("%d",&i);
if(i>=80)
{printf("请输入小于80的整数");return;}
if(StudentList[i].time!
=0)
{printf("已经有人正在操作此机:
");return;}
printf("请输入上机者姓名:
");
scanf("%s",StudentList[i].name);
printf("请输入上机者学号:
");
scanf("%ld",&StudentList[i].stu_num);
printf("请输入上机时间:
");
scanf("%d",&StudentList[i].time);
}
查询、修改、删除、显示上机信息模块
这四个模块采用的设计思路基本一致,皆通过对StudentList[i].time的值进行0或1的判断,达到功能的实现。
例如:
查询上机信息模块。
在此模块中,设计者通过一个if的判断语句(即:
if(StudentList[i].time!
=0)),对管理员所输入机号进行一个是否为空机号的判断,若检测到所输机号是空机号(即:
StudentList[i].time=0)时,则不输出相关信息,反之,输出相关上机者信息。
代码如下。
voidEmpty()
{
inti,k=0;
printf("空机号为:
\n");
for(i=0;i<80;i++)//检测空机号并将其输出
{
if(StudentList[i].time==0)
{printf("%d\t",i);
k=1;
}
}
if(k==0)
{printf("无空机位!
");return;}
}
voidSearch()
{inti;
printf("请输入要查询的机号:
");
scanf("%d",&i);
if(StudentList[i].time!
=0)//判断标准,检索到则输出
{printf("姓名:
%s\t",StudentList[i].name);
printf("学号:
%ld\t",StudentList[i].stu_num);
printf("上机时间:
%d\t",StudentList[i].time);
}
else
printf("没有查询到!
");
}
voidUpdate()
{inti;
printf("请输入要修改数据的机号:
");
scanf("%d",&i);
if(StudentList[i].time!
=0)//判断标准,检索到则输出
{
printf("请输入姓名:
");
scanf("%s",StudentList[i].name);
printf("请输入学号:
");
scanf("%ld",&StudentList[i].stu_num);
printf("请输入上机时间:
");
scanf("%d",&StudentList[i].time);
}
else
printf("没有查询到可以修改的数据!
");
}
voidDelete()
{inti;
printf("请输入要删除信息的机号:
");
scanf("%d",&i);
if(StudentList[i].time==0)
printf("无需修改!
");
StudentList[i].time=0;
strcpy(StudentList[i].name,"");
}
显示上机费用模块
此模块采用的是时间乘上每单位时间的费用的计费方式来进行计费的。
在本系统中,我们规定每小时上机费用是2元,通过调用在“学生信息输入模块”中所输入的上机时间(即:
StudentList[i].time)乘上此费用,从而得到上机者上机费用。
代码如下。
voidDispallmoney()
{inti,money;
printf("请输入结账机号:
");
scanf("%d",&i);
money=2*StudentList[i].time;//计费采用公式:
时间*每次的费用,简单计算
printf("您的上机费用为:
%d",money);
}
五改进或增加功能模块说明
上课模式模块
此模块为本系统新增模块,是根据机房某些时候的特殊需要设计的,旨在能够方便管理员一次性输入数据。
而为达到这一功能,我们采用了一个for循环语句,从0号机一直到79号机统一赋上相同的上机时间,学号。
代码如下。
voidClass()
{
inti,n;
printf("请输入上课时间:
\n");
scanf("%d",&n);
for(i=0;i<80;i++)//给所有机子上机时间统一赋值,所有机子开启
{
StudentList[i].time=n;
StudentList[i].stu_num=0;
strcpy(StudentList[i].name,"");
}
}
六程序测试
1测试系统能否正确显示菜单界面
执行程序后,显示本系统的界面,进行模块选择,如图3-3所示。
图3-3模式选择界面
2测试输入信息模块能否正确输入信息
该模块能正常输入信息,如图3-4所示。
图3-4信息输入
3测试查询空机位模块是否正常
查询空机位模块正常,如图3-5所示。
图3-5空机位查询
4测试查询上机情况模块是否正常
上机情况模块正常,如图3-6所示。
图3-6上机情况
5测试修改上机信息模块是否正常
修改上机信息模块正常,如图3-7所示。
图3-7修改信息
6测试删除信息模块是否正常
删除信息模块正常,如图3-8所示。
图3-8删除信息
7测试显示学生上机费用模块是否正常
学生上机费用模块正常,如图3-9所示。
图3-9上机费用
8测试显示所有上机信息模块是否正常
显示所有上机信息模块正常,如图3-10,3-11,3-12,3-13所示。
图3-10上机信息
图3-11上机信息
图3-12上机信息
图3-13上机信息
8测试上课模块是否正常
上课模块正常,如图3-14,3-15,3-16,3-17,3-18所示。
图3-14上课模块
图3-15上课模块
图3-16上课模块
图3-17上课模块
图3-18上课模块
9测试退出模块是否正常
退出模块正常,如图3-19所示。
图3-19退出模块
七课程设计总结
C语言程序这门课,虽然到现在已经告一段落,不过现在回想,觉得经过两个学期的学习,自己的确学到了不少东西,不过依然只是个入门者,以后还得靠自己继续学习,加强。
这次C语言课程设计,困难之处就是如何利用“结构体”。
说句实话,在我开始着手准备之时连结构体都弄不清楚,因为压根就没学会此部分。
但在自己查阅相关书籍以及上网搜索后,我终于在最后用结构体完成了此次课程设计。
此次的课程设计所编写的程序的核心就是空机号的判断,及上文所提到的StudentList[j].time值的判断。
(Student[i].time==0表示空机号,等于1则表示非空极号,有人正在操作此机)。
重要之处还有“显示所有上机信息模块”,就是通过一个for循环语句,通过逐一检查,遇到符合条件的则将其输出。
而判断标准就是Student[i].time的值为零则不输出,不为零则将其输出。
由于在这次C语言课程设计中,我可谓经历了一次“自学大作战”,因此我也逐渐感受到了自学的妙处,我想这必将会对我今后的学习产生一定的积极影响。
例如在我基本完成设计之后,我觉得主界面不够美观,是否可以改进一下呢?
于是我通过上网查阅了相关的资料,发现我其实可以给主界面以及字体加点背景颜色,而这项工作也并不是很难,只需要调用库函数中的颜色函数。
于是我在主函数中加上System("color3A"),并加上相应的头文件#include
于是我就成功实现了这一功能,给该程序主界面赋上了湖蓝色背景,字体也变为了淡绿色。
在课程设计中,收获知识,提高能力的同时,我也学到了很多人生哲理,懂得怎样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中如何去克服心理上的不良情绪,因此在以后的生活和学习过程中,我一定会把课程设计的精神带到生活中,不畏艰难,勇往直前!
八致谢
经过两个多星期的努力,终于把本程序改写出来,在这期间要感谢各同学对我帮助和支持,同时也感谢程序老师对我的教导。
九参考文献
[1]梁旭等C程序设计课程设计电子工业出版社2011.
[2]谭浩强C程序设计(第四版)清华大学出版社2010.
[3]张福祥.C语言程序设计[M].辽宁大学出版社,2008.1
[4]张福祥,王萌.C语言程序设计习题解答与实验实训[M].沈阳:
辽宁大学出版社,2008.
[5]牛莉,刘远军等.计算机等级考试辅导教程[M].北京:
中国铁道出版社,2008.
十源程序
#include
#include
#include
#defineMaxSize80
structstudent_info
{
charname[10];//姓名
intseat;//机号
longstu_num;//学号
inttime;//上机时间
}StudentList[MaxSize];
voidInsert();
voidEmpty();
voidSearch();
voidUpdate();
voidDelete();
voidDispallmoney();
voidShow();
voidClass();
intmain()
{
inti,j;
system("color3A");//字体和背景颜色
for(j=0;j<80;j++)
{
StudentList[j].time=0;//给所有机子上机时间赋值为0,代表空机
StudentList[j].seat=j;//给所有机子编号
}
printf("\t\t\t*****************************\n\n");//显示一个简易菜单
printf("\t\t\t欢迎使用机房管理系统\n\n");
printf("\t\t\t*****************************\n\n");
do
{printf("\n");
printf("\t\t\t1------输入学生信息(Insert)\n");
printf("\t\t\t2------查询空机位(Empty)\n");
printf("\t\t\t3------查询上机情况(Search)\n");
printf("\t\t\t4------修改上机信息(Update)\n");
printf("\t\t\t5------删除上机信息(Delete)\n");
printf("\t\t\t6------显示学生上机费用(Dispallmoney)\n");
printf("\t\t\t7------显示所有上机信息(Show)\n");
printf("\t\t\t8------上课模式(Class)\n");
printf("\t\t\t9------退出(Exit)\n");
scanf("%d",&i);//接受用户的选择
switch(i)
{case1:
Insert();//调用学生信息输入函数
break;
case2:
Empty();//调用空机号检索函数
break;
case3:
Search();//调用上机信息查询函数
break;
case4:
Update();//调用上机信息修改函数
break;
case5:
Delete();
break;
case6:
Dispallmoney();//调用计费函数
break;
case7:
Show();//调用上机信息全显示函数
break;
case8:
Class();//调用机房上课模式函数
break;
case9:
break;
default:
printf("错误选择!
请重选");break;
}
}while(i!
=9);
return0;
}
voidInsert()
{
inti,k=0;
for(i=0;i<80;i++)
{
if(StudentList[i].time==0)//检测机房是否有空机位
k=1;
}
if(k==0)
{printf("机房已满!
");return;}
printf("请输入机号:
");
scanf("%d",&i);
if(i>=80)
{printf("请输入小于80的整数");return;}
if(StudentList[i].time!
=0)
{printf("已经有人正在操作此机:
");return;}
printf("请输入上机者姓名:
");
scanf("%s",StudentList[i].name);
printf("请输入上机者学号:
");
scanf("%ld",&StudentList[i].stu_num);
printf("请输入上机时间:
");
scanf("%d",&StudentList[i].time);
}
voidEmpty()
{
inti,k=0;
printf("空机号为:
\n");
for(i=0;i<80;i++)//检测空机号并将其输出
{
if(StudentList[i].time==0)
{printf("%d\t",i);
k=1;
}
}
if(k==0)
{printf("无空机位!
");return;}
}
voidSearch()
{inti;
printf("请输入要查询的机号:
");
scanf("%d",&i);
if(StudentList[i].time!
=0)//判断标准,检索到则输出
{printf("姓名:
%s\t",StudentList[i].name);
printf("学号:
%ld\t",StudentList[i].stu_num);
printf("上机时间:
%d\t",StudentList[i].time);
}
else
printf("没有查询到!
");
}
voidUpdate()
{inti;
printf("请输入要修改数据的机号:
");
scanf("%d",&i);
if(StudentList[i].time!
=0)//判断标准,检索到则输出
{
printf("请输入姓名:
");
scanf("%s",StudentList[i].name);
printf("请输入学号:
");
scanf("%ld",&StudentList[i].stu_num);
printf("请输入上机时间:
");
scanf("%d",&StudentList[i].time);
}
else
printf("
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计报告参考 副本 课程设计 报告 参考