课程设计报告书模板.docx
《课程设计报告书模板.docx》由会员分享,可在线阅读,更多相关《课程设计报告书模板.docx(13页珍藏版)》请在冰豆网上搜索。
课程设计报告书模板
任务要求:
编程模拟火车站售票大厅,售票厅内任何时刻最多可以容纳20名旅客进入购票,否则在售票厅外等候。
1.要求建立就绪等待队列和进程运行队列,售票员有一人
2.使用信号量相关知识编程,并且就绪队列与进程运行队列要动态更新。
)
内容摘要:
1、乘客购票时用菜单选择起点站和终到站。
如果选择的起点站和终到站为同一个站则报错,程序退出。
2、选好起点站和终到站之后,通过调用函数intBuyTicket()为之计算票价和里程,并在屏幕上显示出来。
3、售票大厅人数一旦到达20,就不能进入,等待。
4、要求采用数组、结构体等数据类型。
教师评语:
成绩
签名:
日期:
课程设计报告书
售票员与乘客
班级:
方0905-2
学号:
20095765
姓名:
刘康
指导教师:
焦小炜
石家庄铁道大学四方学院
2012年6月12日
一设计思想
一、编程实现车票订购统计系统:
下图是昆明——北京的沿途车站与票价:
请用C语言为之开发一个售票程序,要求如下:
1.乘客购票时用菜单选择起点站和终到站。
如果选择的起点站和终到站为同一个站则报错,程序退出。
2.选好起点站和终到站之后,通过调用函数intBuyTicket()为之计算票价和里程,并在屏幕上显示出来。
3.假设一天的业务量不超过1000张票,存储每一次售票记录,并统计一天的总售票金额,到各站的旅客流量。
4.要求采用数组、结构体等数据类型。
二系统完成功能及框图
系统完成功能:
三核心算法及说
1.主函数
voidmain()
{
if(count<1000)
{printf("***欢迎使用铁路售票系统***\n");/*约束售票上限,每天不超过1000张*/
control();
control();
control();
place();
choice();
BuyTicket(a,b,r);
}
elseprintf("对不起,票已售完!
\n");
}
voidplace()/*输出供选择的站名*/
{
printf("***您已进入买票程序***\n");
printf("以下为供选择站名:
\n");
for(i=0;i<5;i++)
printf("%d%s\n",sta[i].num,sta[i].place);
}
2.流量处理函数
voidliuliang()
{intcount1=0,count2=0;
intcount3;
for(i=0;i<4;i++)
{
for(j=0;j<100;j++)
{
if(strcmp(sells[j].starpl,sta[i].place)==0)
count1=count1+sells[j].number;
if(strcmp(sells[j].endpl,sta[i].place)==0)
count2=count2+sells[j].number;
}
count3=count1+count2;
printf("%s站的旅客流量为:
%d\n",sta[i].place,count3);
}
}
四界面设计
五结论
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在生活中可以说得是无处不在。
因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。
这次课程设计,开始感觉还是比较难的,因为我觉得自己上学期学的不够努力,没有掌握好老师课堂所讲内容,课后也没有认真的复习。
因此在完成这次课程设计过程中遇到了不少困难.但是,通过读课本、上网查资料,当然,更离不开老师和同学们的帮助,最终完成了本次设计!
在这里郑重的像他们表示感谢,谢谢大家!
参考资料
《C程序设计(第二版)》谭浩强著
《C程序设计(第三版)》谭浩强著
附录
程序代码如下:
#include/*文件包含处理*/
#include
#include
voidplace();/*函数声明*/
voidBuyTicket(intx,inty,intz);
voidcontrol();
voidrecords();
voidchoice();
voidliuliang();
inta,b,r;/*定义全局变量*/
inti,j=0,count=0;
structsta_Info/*定义结构体数组以存储车站信息*/
{
charplace[6];
intnum;
intdistance;
intprice;
}sta[5]={
{"昆明",0,700,68},
{"长沙",1,1100,90},
{"武汉",2,1000,85},
{"郑州",3,500,60},
{"北京",4,0,0}
};
structsell/*定义存储售票记录的结构体*/
{
charstarpl[6];
charendpl[6];
intnumber;
inttotalpri;
}sells[100];
voidmain()/*主函数*/
{
if(count<1000)
{printf("***欢迎使用铁路售票系统***\n");/*约束售票上限,每天不超过1000张*/
control();
control();
control();
place();
choice();
BuyTicket(a,b,r);
}
elseprintf("对不起,票已售完!
\n");
}
voidplace()/*输出供选择的站名*/
{
printf("***您已进入买票程序***\n");
printf("以下为供选择站名:
\n");
for(i=0;i<5;i++)
printf("%d%s\n",sta[i].num,sta[i].place);
}
voidBuyTicket(intx,inty,intz)/*购票函数,计算票价和里程并且输出*/
{
intd=0,p=0;
intt;
if(a>b)
{
t=a;
a=b;
b=t;
for(i=a;i
{d=d+sta[i].distance;
p=p+sta[i].price;
}
p=p*r;
printf("%s-->%s\n",sta[b].place,sta[a].place);
strcpy(sells[j].starpl,sta[b].place);/*把此次起始站存入结构体数组中*/
strcpy(sells[j].endpl,sta[a].place);/*把此次终点站存入结构体数组中*/}
else
{
for(i=a;i
{
d=d+sta[i].distance;
p=p+sta[i].price;
}
p=p*r;
printf("%s---%s\n",sta[a].place,sta[b].place);
strcpy(sells[j].starpl,sta[a].place);
strcpy(sells[j].endpl,sta[b].place);
}
printf("票价:
%d元\n",p);
printf("里程:
%dkm\n",d);
sells[j].number=r;/*把此次卖出票数存入结构体数组中*/
sells[j].totalpri=p;/*把此次起售票金额存入结构体数组中*/
count=count+sells[j].number;/*记录卖票张数*/
j++;
}
voidliuliang()/*流量处理函数*/
{intcount1=0,count2=0;
intcount3;
for(i=0;i<4;i++)
{
for(j=0;j<100;j++)
{
if(strcmp(sells[j].starpl,sta[i].place)==0)
count1=count1+sells[j].number;
if(strcmp(sells[j].endpl,sta[i].place)==0)
count2=count2+sells[j].number;
}
count3=count1+count2;
printf("%s站的旅客流量为:
%d\n",sta[i].place,count3);
}
}
voidchoice()/*选择起始站和终点站的函数*/
{
while(a<0||a>4);
{
printf("请输入起始站所对应的数字:
\n");
scanf("%d",&a);
if(a<0||a>4)
printf("您的输入有误,请重新输入!
\n");
}
while(b<0||b>4);
{
printf("请输入终点站所对应的数字:
\n");
scanf("%d",&b);
if(b<0||b>4)
printf("您的输入有误,请重新输入!
\n");
}
if(a==b)
{
printf("对不起,您的输入有误!
\n");
exit
(1);
}
else
{printf("请输入您想买的张数:
");
scanf("%d",&r);
}
}
voidrecords()/*输出售票情况信息*/
{
inttotal=0;
for(j=0;j<100;j++)
{
total=total+sells[j].totalpri;
}
printf("今天总共卖出%d张票\n",count);
printf("售票总金额为:
%d元\n",total);
}
voidcontrol()/*用户控制*/
{intc;
printf("请输入您的选择:
\n1.买票\n2.查看今天卖票情况\n3.查看各车站流量\n");
scanf("%d",&c);
if(c==1)/*进入买票函数*/
{
place();
choice();
BuyTicket(a,b,r);
}
else
{if(c==2)/*输出今天售票金额*/
records();
else
if(c==3)
liuliang();
}
}