MFC剧院票务管理和查询系统代码.docx

上传人:牧羊曲112 文档编号:4886511 上传时间:2023-05-21 格式:DOCX 页数:12 大小:181.97KB
返回 下载 相关 举报
MFC剧院票务管理和查询系统代码.docx_第1页
第1页 / 共12页
MFC剧院票务管理和查询系统代码.docx_第2页
第2页 / 共12页
MFC剧院票务管理和查询系统代码.docx_第3页
第3页 / 共12页
MFC剧院票务管理和查询系统代码.docx_第4页
第4页 / 共12页
MFC剧院票务管理和查询系统代码.docx_第5页
第5页 / 共12页
亲,该文档总共12页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《MFC剧院票务管理和查询系统代码.docx》由会员分享,可在线阅读,更多相关《MFC剧院票务管理和查询系统代码.docx(12页珍藏版)》请在三一办公上搜索。

1、一. 主要类与算法剧目类class CDramachar m_name20;剧名char m_type10;类型char m_long10;时长char m_dire10;/导演char m_act10;主演int m_hall;/演出厅/int m_seat812;/座位号char m_date10;日期int m_price;/票价char m_starttime10;开始时间eg.14:59/int m_all;总票数int m_left;/剩余票数CDrama *next;/指向下一剧目的指针public:friend class CDramaList;CDrama(const cha

2、r *a,const char *b,const char *c,const char *d,const char *e,const char *f,const char *g,int h,int j,int k) 构造函数,依次对上面声明的变量初始 化strcpy(m_name,a);strcpy(m_type,b);strcpy(m_long,c);strcpy(m_dire,d);strcpy(m_act,e);strcpy(m_date,f);strcpy(m_starttime,g);m_price=k;/m_all=i;m_left=j;m_hall=h;CDrama();剧目链表

3、类class CDramaListCDrama *head;int CurDrama;public:CDramaList();CDramaList();AddDrama(const char *nm,const char *ty,const char *lg,const char *dr,const char *at,const char *dt,const char *st,int ha,int lf,int pr); 增加剧目int DeleteDrama(const char *nm,const char *dt,const char *st,int ha); /删除剧目int Save

4、DramaListToFile(const char *FileName); /保存汽车链表到文件(文件名)char* GetName(int id);/返回第id个剧目的名称char* GetType(int id);/返回第id个剧目的类型char* GetLong(int id); /返回第id个剧目的时长char* GetDire(int id);/返回第id个剧目的导演char* GetAct(int id);/返回第id个剧目的主演char* GetDate(int id);/返回第id个剧目的日期char* GetStartTime(int id); /返回第id个剧目的开始时间

5、int GetHall(int id); 返回第id个剧目的演出厅int GetLeft(int id);/返回第id个剧目的剩余票数int GetPrice(int id);/返回第id个剧目的票价int GetCurDramaNum();获得当前列表中的车数int GetIdOfDrama(const char *nm); 返回某剧目首次出现的id号int LoadDramaListFromFile(const char *FileName);从文件中读剧目信息到链表(文件名)int GetIdOfDrama1(const char *nm,const char *dt,const cha

6、r *st,int ha); /返回某剧目的 id 号int ShouPiao(const char *nm,const char *dt,const char *st,int ha);/售票int TuiPiao(const char *nm,const char *dt,const char *st,int ha);/退票/int GetStartTimeH(CString bc); 得到某班次发车时间的小时/int GetStartTimeM(CString bc); 得到某班次发车时间的分钟 ;实现增加剧目的算法int CDramaList:AddDrama(const char *n

7、m,const char *ty,const char *lg,const char *dr,const char *at,const char *dt,const char *st,int ha,int lf,int pr) 增加剧目CDrama *check=head;while(check!=NULL)if(!strcmp(check-m_name,nm)&!strcmp(check-m_date,dt)&!strcmp(check-m_starttime,st)&check-m_hall=ha) return -1;/有相同剧目check=check-next; if (head=NU

8、LL) head = new CDrama(nm,ty,lg,dr,at,dt,st,ha,lf,pr);head-next=NULL;CurDrama=1;return 0;CDrama *last=head;while(last-next !=NULL)last=last-next;last-next=new CDrama(nm,ty,lg,dr,at,dt,st,ha,lf,pr);last-next-next = NULL;CurDrama+;return 0;实现删除剧目的算法int CDramaList:DeleteDrama(const char *nm,const char *

9、dt,const char *st,int ha) /删除剧目CDrama *pre=head,*del;if(!strcmp(pre-m_name,nm)&!strcmp(pre-m_date,dt)&!strcmp(pre-m_starttime,st)&pre-m_hall=ha)head=head-next;delete pre;CurDrama-;return 0;int i;for(i=1;inext)-m_name,nm)&!strcmp(pre-next)-m_date,dt)&!strcmp(pre-next)-m_starttime,st)&(pre-next)-m_hal

10、l=ha)del=pre-next;pre-next=del-next;delete del;CurDrama-;return 0;pre=pre-next;return -1;售票算法int CDramaList:ShouPiao(const char *nm,const char *dt,const char *st,int ha) / 售票 int id;id=GetIdOfDrama1(nm,dt,st,ha);int i;CDrama *drama=head;for(i=1;im_left=0)return -1;else drama-m_left-;return 0; drama=

11、drama-next;return -1;退票算法int CDramaList:TuiPiao(const char *nm,const char *dt,const char *st,int ha) int id;id=GetIdOfDrama1(nm,dt,st,ha); int i;CDrama *drama=head;for(i=1;im_left+;return 0; drama=drama-next;return -1;将信息存入txt文档的算法int CDramaList:SaveDramaListToFile(const char *FileName) /文件名 ofstrea

12、m fout(FileName); if(!fout) return -5;fout居目表nendl;fout剧目名称t 类型 时长 导演 主演 日期 时间 演出厅剩余票数票价;if (CurDrama = 0) fout.close();return -2; 没有剧目,不输出回车直接返回 foutendl;int outputendl=1;让最后一行不输出回车的变量CDrama *drama=head;while(drama!=NULL) foutm_nametm_typet m_longtm_diret m_acttm_date m_starttimet m_hallt m_leftt m

13、_price;if (outputendl CurDrama) foutnext;fout.close();return 0;/从txt文档将信息读入的算法int CDramaList:LoadDramaListFromFile(const char *FileName)/先调用与析构函数相同的代码删除整个链表(略有修改)if(head!=0) CDrama *last=head,*del=last-next;while(head-next!=NULL)while(last-next-next!=NULL) last=last-next;del=last-next;delete del;las

14、t-next=NULL;last=head;delete head;head=0;/析构函数代码引用至次ifstream fin(FileName,ios:in|ios:nocreate);if (!fin) return -1;返回一1表示读取文件失败char temp50;for (int i=1;itemp;/跳过前面的表头汉字char nm10,char ty10,char lg10 ,char dr10,char at10,char dt10,st10;int ha,int lf,int pr;while (!fin.eof()finnmtylgdratdtsthalfpr;AddD

15、rama(nm,ty,lg,dr,at,dt,st,ha,lf,pr);/bus=head;/while( bus-next !=NULL )bus=bus-next;/bus-CurSeats=cs;return 0;主界面类(大部分功能算法都在主界面类中实现)主界面的初始化BOOL CTTMSSDlg:OnInitDialog()CDialog:OnInitDialog();/ Add About. menu item to system menu./ IDM_ABOUTBOX must be in the system command range. ASSERT(IDM_ABOUTBOX

16、 & 0xFFF0) = IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX AppendMenu(MF_SEPARATOR);pSysMenu-AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);/ Set the icon for this dialog. The framework does this automatically / when the applications main window is not a dialog SetIcon(m_hIcon, TRUE);/ Set big iconSetIcon(m_

17、hIcon, FALSE); / Set small icon/ TODO: Add extra initialization here ifstream fin(config.ini); 打开配置文件 dramalist.LoadDramaListFromFile(剧目信息.txt);剧目信息列表初始化m_listdrama.InsertColumn(0,剧目名称,LVCFMT_RIGHT,76);m_listdrama.InsertColumn(1,类型,LVCFMT_CENTER,90);m_listdrama.InsertColumn(2,时长,LVCFMT_CENTER,90);m_

18、listdrama.InsertColumn(3,导演,LVCFMT_CENTER,70);m_listdrama.InsertColumn(4,主演,LVCFMT_CENTER,90);m_listdrama.InsertColumn(5,日期,LVCFMT_CENTER,124);m_listdrama.InsertColumn(6,时间,LVCFMT_CENTER,124);m_listdrama.InsertColumn(7,演出厅,LVCFMT_CENTER,124);m_listdrama.InsertColumn(8,剩余票数,LVCFMT_CENTER,124);m_listd

19、rama.InsertColumn(9,票价,LVCFMT_CENTER,124);ListView_SetExtendedListViewStyle(m_listdrama.m_hWnd, LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);flushdrama();return TRUE; / return TRUE unless you set the focus to a control 点击查询按钮后执行的函数(查询功能的实现)void CTTMSSDlg:OnButton1()/ TODO: Add your control notification

20、handler code here int nRetCode=dlg.DoModal(); /打开查询窗口if (nRetCode=IDOK) /添加点击查询窗口的确定后的代码在这儿!CResultDlg rdlg;CString temp_name;temp_name=dlg.m_name;if (temp_name.IsEmpty() return;if ( dramalist.GetIdOfDrama(temp_name) = -1) MessageBox(您所要查询的 剧目不存在!请检查剧目名称”,”系统提示);return;dlg.m_name=temp_name;rdlg.m_ke

21、yword=dlg.m_name;rdlg.DoModal();点击交易按钮后执行的函数void CTTMSSDlg:OnButtonExc()/ TODO: Add your control notification handler code here CExchangeDlg dlg;int nRetCode1=dlg.DoModal();if(nRetCode1=IDOK)switch(dlg.m_choice)case 0:if(IDOK=MessageBox(确定要买这张票吗?,系统提示,MB_OKCANCEL ) intOKORNOT=dramalist.ShouPiao(dlg.

22、m_name,dlg.m_date,dlg.m_time,atoi(LPCSTR)dlg.m_hall); if(OKORNOT=0)MessageBox(买票成功!广系统提示); dramalist.SaveDramaListToFile(剧目信息.txt); flushdrama();if(OKORNOT=-1)MessageBox(该场次已经没有票了,请购买其他场次!,系统提示break; case 1: if(IDOK=MessageBox(确定要退这张票吗?,系统提示,MB_OKCANCEL ) dramalist.TuiPiao(dlg.m_name,dlg.m_date,dlg.

23、m_time,atoi(LPCSTR)dlg.m_hall); MessageBox(退票成功!,系统提示); dramalist.SaveDramaListToFile(剧目信息.txt); break; 点击设置按钮后执行的函数 void CTTMSSDlg:OnButtonSet() / TODO: Add your control notification handler code here CSetDlg dlg; int OkOrNot; dlg.m_answer=0;int nRetCode1=dlg.DoModal(); if (nRetCode1=IDOK) switch(d

24、lg.m_answer)/添加还是删除的判断 case 0: int left; if(atoi(LPCSTR)dlg.m_hall)=1)left=80; if(atoi(LPCSTR)dlg.m_hall)=2)left=48; if(atoi(LPCSTR)dlg.m_hall)=3)left=24; OkOrNot=dramalist.AddDrama(dlg.m_name,dlg.m_type,dlg.m_long,dlg.m_dire,dlg.m_act,dl g.m_date,dlg.m_starttime,atoi(LPCSTR)dlg.m_hall),left,atoi(LP

25、CSTR)dlg.m_price); if (OkOrNot = -1) MessageBox(已存在该剧目,请填入其他剧目。, 系统提示);if (OkOrNot = 0) MessageBox(添加成功!,系统提示); break; case 1: OkOrNot=dramalist.DeleteDrama(dlg.m_name,dlg.m_date,dlg.m_starttime,atoi(LPCSTR)dlg .m_hall);if (OkOrNot = 0) MessageBox(删除成功!厂系统提示);else MessageBox(该剧目不存在,请检查剧目信息!,系统提示); b

26、reak;/the end of switch(sz1dialog.m_answer)dramalist.SaveDramaListToFile(剧目信息.txt);/保存剧目信息flushdrama();二. 开发背景随着人民生活水平的提高,居民文化生活也日趋丰富。戏剧作为一种相对高雅的艺术形 式受到越来越多高学历背景、高收入人群的欢迎,成为他们日常休闲和访亲会友的一种常见 的娱乐方式。在北京,像国家大剧院、保利剧院、梅兰芳大剧院等高档次的剧院经常因为一 部好剧而整场爆满。对于大大小小的剧院来说,一款功能完善,系统稳定的票务软件可以使 日常的票务管理和查询工作更加方便、准确和快捷。本系统具有

27、基本的票务设置、信息储存、买票、买票以及票务查询等功能,系统运行稳 定,可以大大提高剧院管理系统的工作效率。本剧院票务管理与查询系统采用微软公司的 Visual C+ 6.0作为主要的开发工具。三. 软件使用说明1.进入主界面后,主界面的列表中将显示全部存储的剧目信息,双击列表中的某一项将出现 该剧目的详细信息,并有买票和退票按钮。右边为操作选项。醺巨幕各昔理与查询亲统应剧目列表剧目名称时长导演 主演 日期新暗恋桃花源 新白殖子传奇 马可波罗 做骨贤妻 新暗恋桃花源BWWWB lBBJi土 台灰舌舌台 莽部舞120张阳180刘易阳180 汉密尔.170Alicia120张阳磊瞬顿chM黄诵巴z

28、a黄2011-0 2011-7 2011-E 2011-0 2011-7查询交易票务设置帮助退出rrr2.查询功能1)点击主界面右侧的查询按钮,出现查询对话框,输入要查询的剧目名称 查询剧目信息请输入剧目名称剧目名称:|新暗恋桃花源I确定 返回2)点击右侧的确定按钮,出现查询结果界面,列出全部该剧的信息,双击某一项仍然可以显示详细信息并可以买票或退票。进行买票或者退票。四. 设计说明1)功能结构图2)数据字典属性名储存代码类型剧目名称m_nameCString导演m_direCString主演m_actCString类型m_typeCString时长m_longCString日期m_dateCString开始时间m_starttimeCString演出厅m_hallCString剩余票数m_leftCString票价m_priceCString五. 需求分析通过对剧院票务系统的分析,发现剧院票务系统需要完成以下几个方面的任务1)查询剧目信息:包括剧目名称、类型、时长、导演、主演、日期、开始时间、演出厅、 剩余票数、票价等的查询。2)买票和售票:实现买票和退票的功能,剩余票数会根据命令的不同进行相应的调整。3)票务设置:可以增加或删除剧目信息。

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号