c语言课设电影院售票系统.docx
《c语言课设电影院售票系统.docx》由会员分享,可在线阅读,更多相关《c语言课设电影院售票系统.docx(15页珍藏版)》请在冰豆网上搜索。
c语言课设电影院售票系统
C语言课设电影院售票系统
沈阳航空航天大学
课程设计
学号153********4
班级1534070203
姓名李蕴琪
指导教师孙玉霞
2015年9月21E)
沈阳航空航天大学
课程设计任务书
学院:
自动化学院
1534070203
学号:
153********4
1.课程设计时间
2.课程设计内容
用c语言编写软件完成以下任务:
某电影院共有A、B、C、D四个场次在
放映,具体的数据如下:
场次
电影名称
放映时间
座位数量
已售票数
A
钢铁侠3
18:
30
150
0
B
致青春
19:
30
150
0
C
姜戈
20:
00
150
0
D
生化危机4
20:
20
100
0
请写程序模拟这个售票过程(电影开场
10分钟内允许退票,时间函数见参考资料),
将所有的信息保存到文件中。
三、课程设计要求
程序质量:
◊贯彻结构化的程序设计思想。
◊用户界面友好,功能明确,操作方便。
◊用户界面中的菜单至少应包括“售票”、“退票”、"统计满座率”、“退出”4项。
◊代码应适当缩进,并给出必要的注释,
以增强程序的可读性。
课程设计说明书:
◊课程结束后,上交课程设计说明书和源
程序O课程设计说明书的内容参见提供的模板。
4.指导教师和学生签字
指导教师:
学生签名:
5.成绩
沈阳航空航天大学设计用纸
一、需求分析2
二、设计分析3
三、主要界面截图8
四、技术要点10
五、个人总结11
六、参考文献12
七、源程序12
沈阳航空航天大学设计用纸
一、需求分析
根据任务书给定的“课程设计内容”和“课程设计要求”
作如下的需求分析。
该系统是一个较典型的售票操作系统,其使用者为工作人
员和广大消费者,系统应该具有安全、稳定、功能齐全的特点。
1.安全性分析
该系统管理的数据直接对电影院的收入产生影响,数据量
较大且是一种基础性数据,能够为电影院管理提供重要参考,该程序简洁明了,无赘余语句,增加了程序运行的安全性。
2.稳定性分析
指系统比较健壮,只要是用户的合理操作,系统都应给出合理正确的回应,而不是出现令用户感到意外的系统错误或系统崩溃。
3.主要功能分析
(1)显示售票系统:
这个程序可以模拟电影院售票系统,可以供顾客参考,另外这个系统简单明了,可以让顾客在选择
沈阳航空航天大学设计用纸
看电影时更容易。
(2)显示满座率:
这个系统可以统计电影院的满座率,给管理人员提供了方便,可以更快的计算利润。
(3)显示退票系统:
这个程序可以模拟电影院退票系统,可以供顾客参考,另外这个系统方便快捷,可以让顾客在退票时更加容易方便。
二、设计分析
主要有四个功能模块,每个模块对应一个C语言自定义函数。
这些函数原型及其功能简述如下:
(1)添加票据信息函数:
将各个场次的电影名称.放映时间、总票数以及剩余票数添加到函数中,用户在进行买票时对当前数
据进行参考,最后决定自己购买哪场电影,为顾客
带来方便。
(2)售票函数:
在该功能模块中,顾客可根据提示信息,选择自己想要
沈阳航空航天大学设计用纸
购买的电影票,选择适合自己的时间段,自己喜欢的电影以及购买的数量,同时,系统会根据当前票据信息对所买的票数进行判断,如不符合实际情况,会给出提示。
(3)退票函数:
在该功能模块中,顾客可根据提示信息,选择自己想要退掉的电影票,选择退票的电影以及退票的数量,同时,系统会根据当前票据信息及时间信息对所退的票据进行
判断,如不符合实际情况,会给出提示不予退票。
(4)计满座率函数:
该部分里,每场电影售出票时都会进行累加,得出总票数,用售出的票数除上总座位数,即可得出该场的满场率。
1.程序总体结构图(N-S框图)
输入要观看的电影名称
■5g((4「
县木
«H
it
lLida
rfa34土收
否
输出
■■
剩余座位数减
園9
沈阳航空航天大学设计用纸
三、主要界面截图
■*•OXLKe'fi\83^43\D€slcto
现左的时间是2016年09月26日8:
41:
46
率
亲票座岀
买退W退
*1
*2
*3
*1
读取成功!
输入你要选择的选项:
.
图1菜单界面
■•-C:
\lKefi\83643\Documenu\rencentFilei\3171175142\FileRecv\%9^SWW^f\Debug\®RKT»W^exe'现在的时间杲2016年09月26日9:
6:
34
林斗窑斗木林*4*4*床2咖nu*c*4*4*4***
*1买票
*2退票
*3满座率
«4退出
适取成功!
输入你要选择的选项?
1
诸输入你要观看劣电影名称,钢快侠3
您想要观看的电畛侍息如下I
A啊铁侠318:
301500
诺输入你旻购买的票数x3
数55保存気年!
输入你要选择的选项:
图2买票界面
■'•C:
\lKef4\83643\Documenti\TencentFBei\3171175142\F«leRecv\
B?
^\Debug\©RKtWW^%exe,现左的时间是2016年09月26日9:
8:
10
率
亲票座岀
买退淀退
僻斗*斗*林皿仙站******4*4*4*杠
«4
渎取成功!
漳入你要选於的选项:
1
漬瀚入你要观看豹电彩名称:
钢铁侠3您担養观看的电影信息如下:
丄钢铁侠318:
301500
港藏入你要购买的票数:
3
数据保存完毕1
饼入你要选择的选项,2
谴输入你退象电影名称,钢扶侠3请魏入你旻退票的数目'2退票成功!
退票后的电影(6息如下:
A钢鉄陕318:
301491
藪据保存元毕!
褊入你要远摂的选项:
图3退票界面
■2•C:
\lKefi\83643\Documenu\TencentFilei\3171175142\FileRecv\^^SWW^f\Debug\^RJS■班農宪wx3-□X
K2
K3
*4
塗取成功!
饬入你要选挂的选项,1
请输入你要观看的电影名称;钢铁供3
您想妾观看的电話佑息如下:
A爾安侠318:
301500
漬输入你要购买的票敛:
3
喷据保存完毕【
需入你要坛摂的选项:
2
漬瑜入你退亲电彭名称:
钢钱侠3
谊输入你耍退寡的畝目:
2
退疾成功!
退疾后的电影信息如下,
勺啊铁侠318:
301491
数涼保存気年!
输入你要远择的选项3
电形钢铁侯3的滿座率为0.020000:
电够致青吞的漏座率为0.000000:
电影矣戈的満座率为0.000000:
电形生化危机4的満座率为0.000000
•
討入你要远摂的选项:
沈阳航空航天大学设计用纸
四、技术要点
(对本程序贡献较大的C语言知识点;重要算法的设计与
实现)
1•结构体的应用:
定义了结构体用来描述电影票的放映时间、座位数量、已
售票数.满场率、票价,具体定义如下:
structinf
{
charrate[20];
charname[20];
inttime_hour;
int
intseat;
intsell;
所定义的结构体主要用于定义数组
沈阳航空航天大学设计用纸
2.部分函数的说明:
售票函数buy():
在该函数部分,加了一个判断语句,判断顾客所输入的
购买票数是否符合当前情况,若不符合,将给出相应的
提示具体程序如下:
printfC请输入你要观看的电影名称:
");
for(i=0;i
if(strcmp(inf[i].name,s)==0)
五、个人总结
通过一周课设,我的课程设计基本达到要求。
在这为期一星期的C程序课程设计中,让我学到了很多,
了解到了自身的不足。
我深刻的体会到细心的重要性。
C语言
沈阳航空航天大学设计用纸
程序设计是一个繁琐,需要投入很多的心思和精力的活。
有时
它会因为一个标点符号,让所有的心血白费。
因而我们需要的不仅仅是平日知识的积累,还要养成良好的习惯,才能保证我们的路可以越走越远!
同时我也明白,当我们面临困难时,我们应该正面迎击!
让我增加了对c语言的兴趣和对程序的了解,同时增加了
我的自信。
让我更熟练的编写程序和理解程序。
C语言程序也算是对我们耐心的考验,只有不懈的追求,才能迎向胜利的曙光!
六、参考文献
1谭浩强.C程序设计.北京:
清华大学出版社,20052刘成等.C语言程序设计实验指导与习题集.北京:
中国铁
道出版社,2006
七、源程序
#include沈阳航空航天大学设计用纸#include
#include
#include
#include
#include
struetinf
{
charrate[20];
charname[20];
inttime_honr;
inttime_min;
intseat;
intsell;
沈阳航空航天大学设计用纸}inf[10];
charn[20];
intp;
struettm*ptr;
voidmenu()printf(”*******************menu******
\平平平平平于千平于不平平\nj
—_〜
pr1Mb1I¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥
沈阳航空航天大学设计用纸
\“、
平平平平平平千不于不平平\nj
voidread()
inti,re;
FILE*fp;
fp=fopen("movie_information.txt","r");
if(fp==NULL)
printfC文件打开失败!
0exit(0);
沈阳航空航天大学设计用纸for(i=0;;i++)
re二fscanf(fp,"%s%s%d%d%d%d\n",inf[i].rate,inf[i].name,&inf[i]・time_hour,&inf[i]・time_min,&inf[i]・seat,&inf[i].sell);
if(re==E0F)break;
}
P=i;
for(i=0;i<10;i++)
{
辻(inf[i].rate==,\0')
break;
沈阳航空航天大学设计用纸printfC读取成功!
\n〃);
fclose(fp);
}
voidbaocun()
{
inti;
FILE*fp;
fp=fopen(^file08.txt","w");
if(fp=NULL)
printfC文件打开失败!
〃);
exit(0);
}
for(i=0;i
沈阳航空航天大学设计用纸
fprintf(fp,"%s%s%d%d%d%d\n",inf[i]・rate,inf[i]・name,&inf[i]・time_hour,&inf[i]・time_min,&inf[i]・seat,&inf[i].sell);
}
printfC数据保存完毕!
\n〃);
fclose(fp);
}
voidstime()
it;
it=time(NULL);
沈阳航空航天大学设计用纸
ptr=localtime(&it);
printfC现在的时间是%4d年%02d月%02d
日%d:
%d:
%d\n",ptr->tm_year+1900,ptr->tm_mon+l,ptr->tm_mday,ptr->tm_hour,ptr->tm_min,ptr->tm_sec);
}intminate(intq,intp)//将时间全部转
换为分餅
inttime_sum;
time_sum=60*q+p;
returntimesum;
沈阳航空航天大学设计用纸
voidbuy_tieket()
inti,a;
chars[20];
printf("请输入你要观看的电影名称:
);
scanf(〃%s〃,s);
for(i=0;i
if(strcmp(inf[i]・name,s)=0)
printfC您想要观看的电影信息如
沈阳航空航天大学设计用纸
printf(*%s%s%d:
%d%d%d\n",inf[i]•rate,inf[i].name,inf[i].time_hour,inf[i]・time_min,inf[i]if(minate(inf[i]・time^hour,inf[i].timejmin)>
minate(ptr->tm_hour,ptr->tm_min))
{
printfC请输入你要购买的票数:
“);
scanf("%d",&a);
inf[i].seat-二a;
inf[i]・sell+=a;
沈阳航空航天大学设计用纸
else
printf(”此电影在今日%d:
%d已经开始播放,已经无票\n",inf[i].time_hour,inf[i]・timejmin)
}
baocun();
voidquit_tieket()
inti,m;chars[20];
printff请输入你退票电影名称:
“);
scanf("%s",s);
沈阳航空航天大学设计用纸
printf(〃请输入你要退票的数目:
〃);
scanf("%d",&m);
for(i=0;i
if(strcmp(inf[i]・name,s)==0)
printf("退票成功!
\n退票后的电
影信息如下:
\n3;
printf(,z%s%s%d:
%d%d%d\n",inf[i]•rate,inf[i].name,inf[i].time_hour,inf[i]・time_min,inf[i]}
baocun();
}
沈阳航空航天大学设计用纸
voidmanzuo()
{
inti;
doublem;
for(i=0;i
{
m=inf[i].sell*l.0/(inf[i].seat+inf[i].sell)*l.0;
printff电影%s的满座率为%f:
“,inf[i].name,m);
}
沈阳航空航天大学设计用纸voidmain()
intchoice;
stime();
menu();
read();
system("colorf5");
wh订e
(1)
{
printfC\n输入你要选择的选项:
”);scanf("%d",&choice);
switch(choice)case1:
buy_tieket();break;
沈阳航空航天大学设计用纸
case2:
quit_tieket();break;
case3:
manzuo();break;
case4:
exit(0);break;
}
}
}