高超群修复的.docx

上传人:b****8 文档编号:29664451 上传时间:2023-07-26 格式:DOCX 页数:38 大小:625.61KB
下载 相关 举报
高超群修复的.docx_第1页
第1页 / 共38页
高超群修复的.docx_第2页
第2页 / 共38页
高超群修复的.docx_第3页
第3页 / 共38页
高超群修复的.docx_第4页
第4页 / 共38页
高超群修复的.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

高超群修复的.docx

《高超群修复的.docx》由会员分享,可在线阅读,更多相关《高超群修复的.docx(38页珍藏版)》请在冰豆网上搜索。

高超群修复的.docx

高超群修复的

 

《C++程序设计》

课程设计说明书

 

题目

电影院售票管理系统的设计

学号

******

姓名

****

指导教师

孙涛

日期

2014-2015春学期第19周

内蒙古科技大学课程设计任务书

课程名称

C++语言课程设计

设计题目

电影院售票管理系统的设计

指导教师

孙涛

时间

2013-2014春学期第18、19周

一、教学要求

1.巩固和加深学生对C++语言课程的基本知识的理解和掌握

2.掌握C++语言编程和程序调试的基本技能

3.利用C++语言进行基本的软件设计

4.掌握书写程序设计说明文档的能力

5.提高运用C++语言解决实际问题的能力

二、设计资料及参数

用C++设计一个系统,能提供下列服务:

(1)录入放映信息,格式为:

放映日期

放映时间

场次

电影名称

票价

会员折扣

剩余座位

2011-11-2

10:

30

1

桃姐

30

8

78

2011-11-2

14:

00

2

桃姐

30

8

86

可不定时地增加放映数据。

(2)浏览放映信息,可显示出某日期所有放映信息,如果当前系统时间超过了某电影的放映时间,则显示“此电影放映结束”的提示信息。

(3)查询电影:

可按日期或电影名查询。

(4)售票和退票功能

A:

查询电影名。

当剩余座位数大于0,并且当前系统时间小于放映时间时才能售票,计算会员折扣,售票后自动更新剩余座位数。

B:

退票时,输入退票的电影名和场次,当电影未放映时才能退票,如果以会员折扣购买的电影票,退票按照折扣价退款,退票后自动更新剩余座位数。

三、设计要求及成果

根据系统功能要求,可以将问题解决分为以下步骤:

(1)分析系统中的各个实体之间的关系及其属性和行为;

(2)根据问题描述,设计系统的类层次;

(3)完成类层次中各个类的描述(包括属性和方法);

(4)完成类中各个成员函数的定义;

(5)完成系统的应用模块;

(6)功能调试;

(7)提交课程设计报告:

完成系统总结报告以及系统使用说明书

目录

第1章需求分析4

第2章总体设计5

第3章类的设计5

3.1ticket类的设计5

第4章详细设计6

4.1工程视图6

4.2类图视图7

4.3函数的调用关系7

4.4主要算法8

第5章测试12

第6章总结18

附录:

程序代码19

第1章需求分析

用C++设计一个系统,能提供下列服务:

1.录入放映信息,格式为:

放映日期放映时间场次电影名称票价会员折扣剩余座位

2011-11-210:

301桃姐30878

2011-11-214:

002桃姐30886

可不定时地增加放映数据。

(2)浏览放映信息,可显示出某日期所有放映信息,如果当前系统时间超过了某电影的放映时间,则显示“此电影放映结束”的提示信息。

(3)查询电影:

可按日期或电影名查询。

(4)售票和退票功能

(1:

查询电影名。

当剩余座位数大于0,并且当前系统时间小于放映时间时才能售票,计算会员折扣,售票后自动更新剩余座位数。

B:

退票时,输入退票的电影名和场次,当电影未放映时才能退票,如果以会员折扣购买的电影票,退票按照折扣价退款,退票后自动更新剩余座位数。

功能结构图如图1.1所示:

图1.1总体功能结构图

 

第2章总体设计

由设计题目知电影院售票管理系统主要可分为两个大模块:

1.管理界面

2.顾客界面。

根据题意,管理界面和售票界面的权限是不一样的,管理界面具有管理员权限,可以对所有数据的信息进行操作,比如:

电影信息录入(input)、电影信息显示(show)、查找(search)。

顾客界面则只可以进行售票(sell)和退票(refund)操作。

所以需要设计一个manager和customer函数来区分权限的函数。

所以,manager里包含了需要实现的input、show、search等函数来满足管理要求的功能。

Customer函数则包含sell和refund。

运行程序时,需要先输入数据,根据需要在对数据进行简单操作。

显示数据时,会先跟系统时间比较,如果小于系统当前时间,则输出提示“已播放”。

查找时满足要求的按名字查找和按日期查找。

找到之后与系统时间比较输出提示,如果没找到,输出提示。

售票系统设计较为简单,主要是订票和退票。

订票函数中会先给出可预订的提示,这样可以更有效订票。

输入之后会先检查是否播放,若播放则给出提示,退出。

若未找到,则同样给出提示。

如果票卖光了,仍然有提示,如果电影达到预定要求,则先给出现有座位的预订情况,方便用户高效率订票。

当客户输入一座位时程序会判断这个作为是否被预订,如果是,则给出提示;如果no就输出用户需要支付的金额,并记录在座位号对应的数组中。

方便退票时退款。

第3章类的设计

3.1ticket类的设计

Classticket{

数据成员:

nodetic[N];//储存电影信息的数组

intlen;//当前电影的数量

函数成员:

ticket();//构造函数

~ticket();//析构函数

voidinput();//输入

voidshow();//显示

voidsearch();//查找

voidsell();//售票

voidrefund();//退订

}

接口设计,如表3.1所示

表3.1:

函数列表

函数名

函数格式//即函数首部

函数功能

tick

class

创建类

input

void

信息输入

show

void

信息显示

search

void

查找信息

sell

void

售票

refund

void

退票

ticket

-

构造函数

~ticket

-

析构函数

 

第4章详细设计

4.1工程视图

4.2类图视图

4.3函数的调用关系

根据要求,作出如图4.1的函数调用关系图

图4.1函数调用关系图

4.4主要算法

timecmp函数是用来比较日期时间函数,它需要先把时间装入数组再传进来地址,然后从年月日时分与系统时间进行比较。

如果有大小区分,直接返回。

流程图见图4.2所示。

inttimecmp(inta[],intn)

{

time_tt;

structtm*tim;

t=time(NULL);//获取当前系统时间

tim=localtime(&t);

Intb[5]={tim->tm_year+1900,tim->tm_mon+1,tim->tm_mday,tim->tm_hour,tim->tm_min};

inti;

for(i=0;i

{

if(a[i]>b[i])

{

return1;

}

if(a[i]

{

return-1;

}

}

if(i==n)

{

return0;

}

}

N

Y

图4.2时间比较流程图

售票的函数算法,首先和系统时间比较,显示可预订的电影信息,输入预定电影的电影名,然后选择预定的座位,最后是否会员身份订票。

由于退票模块和订票模块流程差不多,所以下面就不再设计退票模块的流程图。

voidticket:

:

sell()

{

system("cls");//清屏

cout<<"\t\t\t\t《售票模块》"<

cout<<"可预订的电影信息如下:

"<

cout<<"日----期\t时-间\t场次\t电影名称\t票价\t折扣\t余票"<

ints,i;

s=timecmp(tick.tic[i].time,5);

intk=0;//标记可供预定的影片数量

for(i=0;i

{

if(s>0)

{

k++;

cout<

cout<

"<

cout<

cout<

}

}

if(i==tick.len&&k==0)

{

cout<<"\n\a\t\t\t\t暂无可供预定的影片!

"<

system("pause");//任意键继续

return;

}

stringna;

cout<

";

cin>>na;

k=0;//再次做标记

for(i=0;i

{

if(tick.tic[i].name==na&&s>0)//找到

{

k++;//找到的记录数

cout<<"\n查找结果如下:

"<

cout<<"日----期\t时-间\t场次\t电影名称\t票价\t折扣\t余票"<

cout<

cout<

"<

cout<

cout<

intm,n;

cout<

";

intseatnum;

cin>>seatnum;

m=(seatnum-1)/10;

n=(seatnum-1)%10;

if(tick.tic[i].seat[m][n]==0&&tick.tic[i].rest!

=0)

{

cout<

";

chara;

cin>>a;

if(a!

='N'&&a!

='n')

tick.tic[i].seat[m][n]=tick.tic[i].price*tick.tic[i].discount/10;

else

tick.tic[i].seat[m][n]=tick.tic[i].price;

tick.tic[i].rest--;

cout<

"<

"<

cout<

"<

cout<

";

cout<

system("pause");//任意键继续

return;

}

else

{

if(tick.tic[i].rest==0)

{

cout<

";

system("pause");//任意键继续

return;

}

elseif(tick.tic[i].seat[m][n]!

=0)

{

cout<

";

system("pause");//任意键继续

return;

}

}

}

}

if(i==tick.len&&k==0)

{

cout<<"\n\a\t\t\t\t没有找到您要预定的电影!

"<

system("pause");//任意键继续

return;

}

}

N

Y

YN

图4.3售票流程图

第5章测试

欢迎进入电影售票系统主界面,主界面包含需要输入密码的管理界面和顾客界面。

你想进入哪个模块,按数字1或2.。

如图5.1所示。

图5.1主界面

输入管理密码1234,进入管理界面。

管理界面包含录入信息,显示信息,查找信息

退出等模块,各模块相互依存,但又互不干涉,保证程序的安全性。

操作员想进入哪个模块,选择按键1234等进入下一模块。

如图5.2所示。

图5.2管理界面

在管理界面,选择按1键,进入信息输入模块,该模块包含影片的播放日期及时间,影片的场次,名称,影片的票价及会员身份的折扣。

而且此模块可以输入多部影片的信息。

如图5.3所示。

图5.3录入信息模块

在管理界面,按2键,能够对上一模块信息的输入进行显示,显示影片播放日期及时间,场次,名称,票价及其折扣,并能够显示剩余票数,最后能根据影片的播放日期和系统时间进行比较,判断该影片是否播放。

如图5.4所示。

图5.4显示影片信息

在管理界面,按3键进入查找模块,该模块包含按播放日期的查找和按按影片名查找,根据按键,选择你所需要进行查找的方式。

图5.5所示。

图5.5查找模块

按1键,按影片名进行查找,如图5.6所示。

图5.6按影片名查找

按2键,按播放日期进行查找。

如图5.7所示。

图5.7按日期查找

在主界面,按2键进入顾客界面。

该界面包含影片的预定和退订功能。

如图5.8所示。

图5.8顾客界面

在顾客界面,按1键进入影片预定模块,首先该模块显示可预订的影片的信息,输入你想要预定影片的名称,程序进行检索,显示符合要求的电影的信息,然后选择你要预定影片的座位号,并是否以会员身份进行订票。

最后显示出你所要支付的金额和座位号。

牢记你预定的座位号,以便退票时的方便。

如图5.9所示。

图5.9订票

在顾客界面,按2键进入退票模块,输入你要推定的影片的名称,显示出结果后,输入先前你预定的座位号,完成退票,否则就退票失败。

如5.10所示。

图5.11退票成功

第6章总结

在课程设计过程中,我学到了许多人生哲理,懂得了怎样去制定计划,怎样去实现这个计划,课程设计让我成长了不少。

1.课程设计是考验一个人的耐性与能力很强的作业,制作课程设计花费太长时间,在遇到问题时,没有头里,一头蛮干,没有达到细心,平静思考,不过在不断制作过程,慢慢发现自己的缺点,逐渐改进,有所收获。

2.自己也发现一个好的程序不仅要求代功能组件完善可用,还要清晰代码梳理,要清晰明确,还要一个考虑全面的头脑。

3.不足点与努力点:

(1)由于个人能力问题,在该程序中本想在每一个考虑到用户错误操作后,加入安保程序,现在无法实现。

功能不完善,在开始规划时,本想通过链表加入增添程序,由于对链表并没有掌握,无法添加,没有成功。

(2)正如所说该程序安全性不高,无法应对错误情况,需要进一步提高自己的能力。

4.自己起初对c++没有任何概念,在不断学习过程,渐渐的对它有了了解,也慢慢体验到c中能带给自己的快乐。

自己也不断在为自己找未来的路,我能干些什么。

在以后要努力进取了。

 

附录:

程序代码

#include

#include

#include

#include

#defineN50//可存电影总数

usingnamespacestd;

structnode

{

inttime[5];//装时间,方便比较

intnum;

stringname;

floatprice;

floatdiscount;

intrest;

floatseat[10][10];

};

classticket

{

private:

nodetic[N];

intlen;

public:

ticket();

~ticket();

voidinput();

voidshow();

voidsearch();

voidsell();

voidrefund();

}tick;

ticket:

:

ticket(){};

ticket:

:

~ticket(){};

inttimecmp(inta[],intn)

{

time_tt;

structtm*tim;

t=time(NULL);//获取当前系统时间

tim=localtime(&t);

intb[5]={tim->tm_year+1900,tim->tm_mon+1,tim->tm_mday,tim->tm_hour,tim->tm_min};

inti;

for(i=0;i

{

if(a[i]>b[i])

return1;

if(a[i]

return-1;

}

if(i==n)

return0;

}

voidticket:

:

input()//录入信息

{

system("cls");//清屏

charch,ch1;//接受日期中的字符-或:

cout<<"\t\t\t\t《录入模块》"<

for(inti=tick.len;i

{

cout<<"\n请输入日期(2014-6-30):

";

cin>>tick.tic[i].time[0]>>ch>>tick.tic[i].time[1]>>ch>>tick.tic[i].time[2];

cout<<"\n请输入放映时间(12:

30):

";

cin>>tick.tic[i].time[3]>>ch1>>tick.tic[i].time[4];

cout<<"\n请输入场次:

";

cin>>tick.tic[i].num;

cout<<"\n请输入电影名称:

";

cin>>tick.tic[i].name;

cout<<"\n请输入电影票价:

";

cin>>tick.tic[i].price;

cout<<"\n请输入会员折扣:

";

cin>>tick.tic[i].discount;

tick.tic[i].rest=100;

tick.len++;//个数加1

cout<<"是否继续录入?

(y/n):

";

cin>>ch;

if(ch=='n'||ch=='N')

break;

else

continue;

}

}

//

voidticket:

:

show()

{

system("cls");//清屏

cout<<"\t\t\t\t《显示模块》"<

cout<<"日----期\t时-间\t场次\t电影名称\t票价\t折扣\t余票"<

intr;

for(inti=0;i

{

r=timecmp(tick.tic[i].time,5);

cout<

cout<

"<

cout<

cout<

if(r<=0)

cout<<"\a(已播放!

)"<

else

cout<

}

}

//

voidticket:

:

search()

{

charflag;

inti;

intk=0;//标记找到的记录

system("cls");//清屏

cout<<"\n\n\n\t\t\t\t《查找模块》\n\n\n"<

cout<

cout<

cout<

";

cin>>flag;

if(flag=='1')

{

stringna;

cout<<"\n请输入影片名:

";

cin>>na;

for(i=0;i

{

if(tick.tic[i].name==na)//找到

{

k++;//找到的记录数

cout<<"\n查找结果如下:

"<

cout<<"日----期\t时-间\t场次\t电影名称\t票价\t折扣\t余票"<

cout<

cout<

"<

cout<

cout<

}

}

if(i==t

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1