范美鹏1.docx
《范美鹏1.docx》由会员分享,可在线阅读,更多相关《范美鹏1.docx(19页珍藏版)》请在冰豆网上搜索。
范美鹏1
计算机科学与技术学院
课程设计任务书
课程设计名称
《C高级语言程序设计》课程设计
课程设计题目
机房机位的预定系统
学生姓名
范美鹏
专业班级
132602
学号
201326040206
课程设计任务内容
[问题描述]
20台机器,编号1到20,从早八点到晚八点。
两小时一个时间段,每次预定一个时间段
[基本要求]
(1)系统以菜单方式工作;
(2)查询,根据输入时间输出机位信息;
(3)机位预定,根据输入的时间查询是否有空机位,若有则预约,若无则提供最近的时间段,另:
若用户在非空时间上机,则将用户信息列入等待列表;
(4)退出预定,根据输入的时间,机器号撤销该事件的预定;
(5)查询是否有等待信息,若有则提供最优解决方案(等待时间尽量短),若无则显示提示信息。
[测试要求]
(1)进行系统功能性测试,验证基本功能实现情况。
(2)进行边界测试试验及特殊数据用例测试,验证功能模块的逻辑分支流程。
指导教师:
李建伟
时间:
年月
1.设计问题描述与分析
由于机房在使用时存在着机位的查询,预定与退订过程,因此机房管理者在一定程度上须对机房进行有效的信息化管理并且使用者在机房预定机位时会出现许多,所以设计了此项程序旨在帮助机房更好的管理机位,以及是机房管理信息化的同时便于机房使用者更有效的节约信息。
2.算法设计与流程图
(1)总体设计
(2)主函数
(3)机位查询
(4)机位预定
(5)机位退订
(6)查询等待信息
3.程序设计编码与测试
#include
#include
#include
#defineN20·*9
#defineT(time-8)/2
intsum[6]={0};
intcomputer[6][20]={{1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,0,0,1,1,1},
{1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,0},
{1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1}};/*该数组表示假设某天某人查询时机房各个时间段机位数情况*/
voidMenu();
voidSituation();
voidBook();
voidCancel();
voidSearchWaiting();
voiddetail(inttime);
voidprione(inti);
structwaitlist/*等待列表*/
{
charnumber[3];
chartelephonenumber[11];
}wait[N];
voidprintone(inti);
intmain()
{
Menu();
return0;/*数*/
}
voidMenu()/*主界面*/
{
intn,w;
do
{
puts("\t\t****************机房机位预约系统************************\n");
puts("\t\t*************************菜单***************************\n");
puts("\t\t\t1.查询某时间段机位状态");/*查询某时间段机位状态*/
puts("\t\t\t2.预定空机位");/*预定空机位*/
puts("\t\t\t3.取消预订");/*取消预订*/
puts("\t\t\t4.查询等待信息");/*查询等待信息*/
puts("\t\t\t5.退出");/*退出*/
puts("\t\t********************************************************\n");
printf("选择菜单号(1-5):
");
scanf("%d",&n);
if(n<1||n>5)
{w=1;getchar();}
else
w=0;
}while(w==1);
switch(n)
{
case1:
Situation();break;
case2:
Book();break;
case3:
Cancel();break;
case4:
SearchWaiting();break;
case5:
exit(0);break;
}
}
/*时间查询*/
voidSituation()
{
inttime;
printf("输在(8-20)范围内的时间:
");
scanf("%d",&time);
if(time<8||time>20)
{printf("\t时间输入错误!
\n");
printf("输入在(8-20)范围内的时间:
");
scanf("%d",&time);
}
detail(time);/*函数调用*/
getchar();
Menu();
}
voidBook()
{inttime,i=0,x,y;
FILE*fp;
charc;
printf("在(8-20)时间范围内输入你想要预定的时间:
");
scanf("%d",&time);
if(time<8||time>20)
{
printf("\t时间输入错误!
\n");
printf("\t在(8-20)时间范围内输入你想要预定的时间:
");
scanf("%d",&time);
}
detail(time);/*函数调用*/
if(sum[T]>0)
{if((fp=fopen("waitlist.txt","a"))==NULL)
{
printf("\n无法打开文件!
\n");
exit(0);
}
printf("\n\t请输入你想要预定的机号,并且留下你的电话号码!
:
\n");
scanf("%s%s",wait[i].number,wait[i].telephonenumber);
for(i=0;i<1;i++)
fwrite(&wait[i],sizeof(structwaitlist),1,fp);
fclose(fp);/*向文本文档添加一个结构体单元*/
printf("\t再次输入你想要预定的时间!
\n");
scanf("%d",&x);
/*sum[T]--;/*预定后该时间段空机位数减1*/
/*computer[T][x]=1;/*预定后该机状态变为1*/
printf("\t预订成功!
\n");
getchar();
Menu();
}
else
{
printf("这是在这个时间段内未预定的电脑!
\n");
for(i=T+1;i<6;i++)
{time=9+2*i;
detail(time);/*函数调用*/
if(sum[T]>0)
printf("\t最近的空闲时间是%d,%d\n",2*i+8,2*i+10);break;
}
printf("\t你想要预定吗?
:
y/n?
");
scanf("%s",&c);
getchar();
if(c=='Y'||c=='y')
{
if((fp=fopen("waitlist.txt","r"))==NULL)
{
printf("\n无法打开文件!
\n");
exit(0);
}
else
{printf("waitlist:
numbertelephonenumber\n");
for(i=0;!
feof(fp);i++)
{
fscanf(fp,"%s%s",&wait[i].number,&wait[i].telephonenumber);
}
fclose(fp);
}
for(i=0;i<10;i++)
{prione(i);}
printf("\n\t请输入您想预定的机号并留下您的联系方式!
:
\n");
if((fp=fopen("waitlist.txt","a"))==NULL)
{
printf("\n无法打开文件!
\n");
exit(0);
}
scanf("%s%s",wait[i].number,wait[i].telephonenumber);
for(i=0;i<1;i++)
fwrite(&wait[i],sizeof(structwaitlist),1,fp);
fclose(fp);/*若等待,就用文件的方式列出当时的等待列表并提示输入你的等待序号和联系方式*/
printf("再次输入电脑的序号!
\n");
scanf("%d",&y);
sum[T]--;
computer[T][y]=1;
printf("\t好了,请等待我们的电话!
\n");
Menu();
}
elseMenu();
}
}
voidCancel()
{
inttime,number;
printf("在(8-20)时间范围内输入你已经预定的时间:
");
scanf("%d",&time);
if(time<8||time>20)
{
printf("\t输入时间错误!
\n");
printf("\t在(8-20)时间范围内输入你已经预定的时间:
");
scanf("%d",&time);
}
else
{printf("\t输入你预定的机号:
");
scanf("%d",&number);}
detail(time);
/*sum[T]++;
/*computer[T][number]=0;
printf("\t取消成功!
\n");
getchar();
Menu();
}
voidSearchWaiting()
{
inttime,i;
FILE*fp;
printf("\t在(8-20)之间输入您要搜索的时间:
");
scanf("%d",&time);
if(time<8||time>20)
{
printf("\t时间输入错误!
\n");
printf("\t在(8-20)之间输入您要搜索的时间:
");
scanf("%d",&time);
}
else
;
if((fp=fopen("waitlist.txt","r"))==NULL)
{
printf("\nCannotopenfile!
\n");
exit(0);
}
else
{printf("waitlist:
numbertelephonenumber\n");
for(i=0;!
feof(fp);i++)
{
fscanf(fp,"%s%s",&wait[i].number,&wait[i].telephonenumber);
}
fclose(fp);
}
for(i=0;i<10;i++)
{prione(i);}
Menu();
}
voiddetail(inttime)
{
inti,j=0,k,s=0;
intv[30];
for(i=0;i<20;i++)
{
if(computer[T][i]==0)
{s++;
v[j++]=i;
}
}
sum[T]=s;
printf("\t目前空置的电脑:
%d\n",sum[T]);
for(k=0;kprintf("\t空置的电脑是:
%d\n",v[k]);
}
voidprione(inti)
{
printf("\t\t%s%s\n",wait[i].number,wait[i].telephonenumber);}
测试
机位查询
机位预定
机位退订
查询等待信息
4.设计过程总结与分析
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在生活中可以说得是无处不在。
因此作为二十一世纪的大学来说掌握一些基本的软件开发技术是十分重要和必要的。
附录
题目:
小学生测验
问题描述与分析
1、问题描述
面向小学1~2年级学生,随机选择两个整数和加减法形成算式要求学生解答。
功能要求:
(1)电脑随机出10道题,每题10分,程序结束时显示学生得分;
(2)确保算式没有超出1~2年级的水平,只允许进行50以内的加减法,不允许两数之和或之差超出0~50的范围,负数更是不允许的;
(3)每道题学生有三次机会输入答案,当学生输入错误答案时,提醒学生重新输入,如果三次机会结束则输出正确答案;
(4)对于每道题,学生第一次输入正确答案得10分,第二次输入正确答案得7分,第三次输入正确答案得5分,否则不得分;
(5)总成绩90以上显示“SMART”
80-90显示“GOOD”,70-80显示“OK”,60-70显示“PASS”,60以下“TRYAGAIN”
。
2、分析
选择STUDENT:
:
add()函数for(inti=1;i<=10;i++)函数控制题10道题,for(a=rand()%51,b=rand()%51;a-b>50||a-b<0;a=rand()%51,b=rand()%51产生)随机数的函数rand,rand()%51是产生的随机数都小于50,a+b>50||a+b<0,a,b两数的和大于0小于50,确保算式没有超出1~2年级水平,只允许进行50以内的加减法,不允许两数之和或之差超出0~50的范围,负数更是不允许的;再用for(intj=1;j<=3;j++)控制三次答题机会,如果第一次学生答题错误系统会提示还有答题错误,还有俩次机会,否则就给出第一次答题正确的分数10分,如果第二次学生答题错误系统会提示还有答题错误,还有一次机会,否则就给出第二次答题正确的分数7分,如果第三次学生答题错误系统会提示还有答题错误,没有做题机会,系统给出正确的答案,否则就给出第三次答题正确的分数5分,实现这几部很简单采用了if,else语句判断score[i]!
=trueValue当输入值等于正确答案时,走else语句判断得分情况,否则给出答题机会;每次做对一题flag=1,统计做对题的个数zen=zen+flag;sum统计得分情况sum=sum+score[i];当第一次做对题则first=1表示仅一次做对题,first1=first1+first;统计仅一次做对题的个数,second表示俩次做对题,second1=second1+second统计俩次做对题的个数,third表示三次做对题third1=third1+third;统计三次做对题的个数,那么答错题的个数10-zen,而答题的正确率为得分除以100乘以100%
流程图
计算机科学与技术学院
课程设计成绩评审表
课程设计名称
《C高级语言程序设计》课程设计
课程设计题目
机房机位的预定系统
学生姓名
范美鹏
专业班级
132602
同组人
学号
201326040206
指导教师
设计成绩
评价内容
签字:
时间:
年月日