影院订票系统实验报告.docx_第1页
影院订票系统实验报告.docx_第2页
影院订票系统实验报告.docx_第3页
影院订票系统实验报告.docx_第4页
影院订票系统实验报告.docx_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

综 合 实 验 报 告课程名称 面向对象综合实验 实验名称_影院订票系统的设计与实现 实验类型 综合性 实验地点 304机房 实验日期 2017.6.196.25 指导教师 徐华 专 业_软件工程_班 级_软件1601_学 号_1611030102_姓 名_寇春雷_成 绩 _辽宁石油化工大学计算机与通信工程学院44目录一、综合实验的目的1二、综合实验的内容和要求1三、实验原理2三、实验截图2四、实验分析6五、实验总结10六、实验源码11七、参考文献44一、综合实验的目的巩固和加深C+课程的基本知识的理解和掌握,提高综合运用c+知识解决实际问题的能力。二、综合实验的内容和要求实现下列功能要求的程序, 并写出实验报告, 报告内容包括:题目、目的、内容和要求、 原理与技术、程序清单、运行情况 ( 输入、输出 )、总结。. 定义用户信息类User_class:( 数据成员: 用户名char *name(初始化为个人,即管理员),用户密码 char *posword,联系电话char* tel, 联系地址char *addr成员函数: 用户注册, 用户登录(验证登录信息是否与为个人, 是,即为管理员, 否则为是一般用户 ). 定义时间类Time_class:( 数据成员: int year,month,day) ( 成员函数, 自己自己根据需要确定 ). 定义影片信息类Film_class:( 数据成员: 片名 char *moviename,主要演员char *mactor, 上映时间Time_class time,票价double price, 剩余票数 int ticknum)成员函数, 自己根据需要设置 ) . 定义影票订单类 Torder_class:( 用户名 *char username, 影片名 *char moviename, 放映时间Time_class ptime, 座号char *seat( 如 “3排4号”), 订票时间Time_class dtime 票价double price ). 实现用户 和 系统管理员的注册功能, 界面可如下:输入用户名:输入密码: 联系电话: 联系地址: ( 保存以上信息, 到用户信息表 ). 实现用户 或 系统管理员 登录功能, 界面可如下:输入用户名: 输入密码: ( 验证 用户输入信息是否正确, 正确, 登陆成功 ). 若是管理员登录, 显示如下菜单, 并实现如下功能:1. 输入影片信息 2. 显示影片信息 3. 增加影片信息 4. 查找影片 5. 删除影片 6. 显示用户信息 7. 显示用户订单 8. 查找某用户订单 9. 删除某用户订单. 若是用户登录, 显示如下菜单, 并实现相应的功能: 1. 显示影片信息 2. 查找影片信息 3. 订票 4. 查看订单三、实验原理本实验使用vs2012开发环境,使用C+窗口程序设计。先定义Time_class时间类,User_class用户信息类,Film_class影片信息类, Torder_class订单类,其中影片信息类,订单类,调用时间类,实现放映时间以及订单时间的使用,这4个实体类都有相应的get(),set()函数。Manage控制类,执行逻辑Boundary边界类,与用户实现信息的输入与输出,边界类调用控制类对象,控制类对象调用控制类中的函数,实现相应的功能。主程序有两个功能,一个是注册,一个是登录。两个功能进入边界类。三、实验截图用户注册页面用户登录界面用户功能菜单查看影片信息用户订票管理员功能菜单查看订单列表订票信息修改影片信息用户信息,影片信息,订单信息储存在当前文件下users_information.txtadministrators_information.txttorder_information.txtfilms_information.txt四、实验分析类Time_class成员数据定义成员数据作用描述int year;年份int month;月份int day;日期成员函数定义成员函数功能描述Time_class(void);无参构造函数Time_class(void);析构函数Time_class(int year,int month,int day);含参构造函数int getyear();取年份int getmonth();取月份int getday();取日期void setyear(int year);设置年份void setmonth(int month);设置月份void setday(int day);设置日期类User_class成员数据定义成员数据作用描述char name30; 用户或管理员姓名char posword20; 用户密码char tel20; 用户电话char addr50; 用户住址成员函数定义成员函数功能描述User_class(void);无参构造函数User_class(void);析构函数User_class(char *name,char *posword);含参构造函数User_class(char *name,char *posword,char *tel,char *addr);含参构造函数char *getname();取用户姓名char *getposword();取用户密码char *gettel();取用户电话号码char *getaddr();取用户地址void setname(char *name);设置用户姓名void setposword(char *posword);设置用户密码void settel(char *tel);设置用户电话号码void setaddr(char *addr);设置用户地址类Film_class成员数据定义成员数据作用描述char moviename30; 片名char mactor30; 主要演员Time_class time; 上映时间double price; 票价int ticknum; 剩余票数int position121; 座位信息,position0不用成员函数定义成员函数功能描述Film_class(void);无参构造函数Film_class(void);析构函数Film_class(char *moviename,char *mactor,Time_class time,double price,int ticknum,int position);含参构造函数char* getmoviename();取片名char* getmactor();取主要演员Time_class gettime();取上映时间double getprice();取票价int getticknum();取剩余票数void setmoviename(char *moviename);设置片名void setmactor(char *mactor);设置主要演员void settime(Time_class time);设置上映时间void setprice(double price);设置票价void setticknum(int ticknum);设置剩余票数void setposition_point(int number);标记用户订单信息int* getposition();取影片座位信息类Torder_class成员数据定义成员数据作用描述char username20; 用户名char moviename30; 影片名Time_class ptime; 放映时间char seat20;座号(如3排4号)Time_class dtime; 订票时间double price; 票价成员函数定义成员函数功能描述Torder_class(void);无参构造函数Torder_class(void);析构函数Torder_class(char *username,char *moviename,Time_class ptime,char *seat,Time_class dtime,double price);含参构造函数char *getusername();取用户名char *getmoviename();取影片名Time_class getptime();取放映时间char* getseat();取座号(如3排4号)Time_class getdtime();取订票时间double getprice();取票价void setusername(char *username);设置用户名void setmoviename(char *moviename);设置影片名void setptime(Time_class ptime);设置放映时间void setseat(char seat20);设置座号(如3排4号)void setdtime(Time_class dtime);设置订票时间void setprice(double price);设置票价类Manage成员数据定义成员数据作用描述vector users; /用户容器vector administrators;/管理员容器vector films;/电影信息容器vector torders; /订单容器成员函数定义成员函数功能描述Manage(void);无参构造函数Manage(void);析构函数void enroll_user(User_class a);用户注册函数void enroll_administrator(User_class a);管理员注册函数void load();从文件加载用户和管理员信息到两个容器中读取文本信息到程序中void save_user_info();把信息保存到文件中void save_film_info();保存影片信息void save_torder_info();保存订单信息int login_user(User_class a); 用户登录int login_administrator(User_class a); 管理员登录void add_film_info(Film_class a); 添加影片信息void add_torder_info(Torder_class a); 添加订单信息Film_class* search_film_info(char *moviename);搜索电影信息Torder_class* search_torder_info(char *username);搜索订单信息bool del_film_info(char *moviename); 删除影片信息bool del_torder_info(char *tordername); 删除订单信息vector& getFilms();返回films引用,使边界类可以调用管理类中的对象vector& getUsers();返回users引用vector& getTorders();返回torder引用void change_film_info_moviename();修改影片信息void change_film_info_mactor();修改影片信息void change_film_info_time();修改影片信息void change_film_info_price();修改影片信息类Boundary成员数据定义成员数据作用描述Manage manage; 控制类管理对象成员函数定义成员函数功能描述Boundary(void);无参构造函数Boundary(void);析构函数void enroll_menu();注册菜单void enroll_user();用户注册void enroll_administrator();管理员注册void login_menu();登录菜单void login_user();用户登录void login_administrator();管理员登录void user_function_menu(User_class* a); 用户功能菜单void admin_function_menu(User_class* a); 管理员功能菜单void add_film_info();添加影片信息void add_torder_info();添加订单信息void display_film_info();显示影片信息void search_film_info();查找影片信息void search_torder_info();查找某用户订单信息void del_film_info();删除影片信息void del_torder_info();删除订单信息void display_user_info();显示用户信息void display_torder_info();显示订票信息void user_booking_film();用户订票void change_film_info();添加影片信息void change_film_info_moviename();修改影片信息void change_film_info_mactor();修改影片信息void change_film_info_time();修改影片信息void change_film_info_price();修改影片信息五、实验总结题目序号实现情况与掌握程度是否独立完成代码是否规范编写存在问题如何改进1掌握了边界类,控制类函数的实现代码独立完成代码基本按照要求编写在取系统时间时,未能正确取出。t=localtime_s(&t);查询有关知识,使用不同的方式,取系统时间题目序号实践经验经典代码1边界类直接调用控制类中的容器,那么就得在控制类添加返回容器的引用Film_class *film=manage.search_film_info(moviename);system(pause);/暂停vector:iterator pos;for(pos=films.begin();pos!=films.end();pos+)if(strcmp(pos-getmoviename(),moviename)=0) films.erase(pos);/删除save_film_info();/保存影片信息Manage控制类,执行逻辑Boundary边界类,与用户实现信息的输入与输出,边界类调用控制类对象,控制类对象调用控制类中的函数,实现相应的功能。主程序有两个功能,一个是注册,一个是登录。两个功能进入边界类。如果边界类直接调用控制类中的容器,那么就得在控制类添加返回容器的引用六、实验源码/stdafx.h文件#pragma once#include targetver.h#include #include #include using namespace std;#include #include #include #include #include #include /:/Time_class.h文件#pragma onceclass Time_class/时间类int year;int month;int day;public:Time_class(void);Time_class(void);Time_class(int year,int month,int day);int getyear();int getmonth();int getday();void setyear(int year);void setmonth(int month);void setday(int day);/:/Time_class.cpp文件#include StdAfx.h#include Time_class.hTime_class:Time_class(void)Time_class:Time_class(void)Time_class:Time_class(int year,int month,int day)this-year=year;this-month=month;this-day=day;int Time_class:getyear()return year;int Time_class:getmonth()return month;int Time_class:getday()return day;void Time_class:setyear(int year)this-year=year;void Time_class:setmonth(int month)this-month=month;void Time_class:setday(int day)this-day=day;/:/User_class.h文件#pragma once/用户信息类class User_classchar name30;/用户或管理员姓名char posword20;/用户密码char tel20;/用户电话char addr50;/用户住址public:User_class(void);User_class(void);User_class(char *name,char *posword);User_class(char *name,char *posword,char *tel,char *addr);char *getname();char *getposword();char *gettel();char *getaddr();void setname(char *name);void setposword(char *posword);void settel(char *tel);void setaddr(char *addr);/:/User_class.cpp文件#include StdAfx.h#include User_class.hUser_class:User_class(void)User_class:User_class(void)User_class:User_class(char *name,char *posword)strcpy_s(this-name,name);strcpy_s(this-posword,posword);User_class:User_class(char *name,char *posword,char *tel,char *addr)strcpy_s(this-name,name);strcpy_s(this-posword,posword);strcpy_s(this-tel,tel);strcpy_s(this-addr,addr);char* User_class:getname()return name;char* User_class:getposword()return posword;char* User_class:gettel()return tel;char* User_class:getaddr()return addr;void User_class:setname(char *name)strcpy_s(this-name,name);void User_class:setposword(char *posword)strcpy_s(this-posword,posword);void User_class:settel(char *tel)strcpy_s(this-tel,tel);void User_class:setaddr(char *addr)strcpy_s(this-addr,addr);/:/Film_class.h文件#pragma once#include Time_class.h/影片信息类class Film_classchar moviename30;/片名char mactor30;/主要演员Time_class time;/上映时间double price;/票价int ticknum;/剩余票数int position121;/座位信息,position0不用public:Film_class(void);Film_class(void);Film_class(char *moviename,char *mactor,Time_class time,double price,int ticknum,int position);char* getmoviename();char* getmactor();Time_class gettime();double getprice();int getticknum();int* getposition();void setmoviename(char *moviename);void setmactor(char *mactor);void settime(Time_class time);void setprice(double price);void setticknum(int ticknum);void setposition_point(int number);/:/Film_class.cpp文件#include StdAfx.h#include Film_class.h#include Time_class.hFilm_class:Film_class(void)Film_class:Film_class(void)Film_class:Film_class(char *moviename,char *mactor,Time_class time,double price,int ticknum,int position)strcpy_s(this-moviename,moviename);strcpy_s(this-mactor,mactor);this-time=time;/拷贝构造函数赋值this-price=price;this-ticknum=ticknum;for(int i=0;ipositioni=positioni;char* Film_class:getmoviename()return moviename;char* Film_class:getmactor()return mactor;Time_class Film_class:gettime()return time;double Film_class:getprice()return price;int Film_class:getticknum()return ticknum;int* Film_class:getposition()return position;void Film_class:setmoviename(char *moviename)strcpy_s(this-moviename,moviename);void Film_class:setmactor(char *mactor)strcpy_s(this-mactor,mactor);void Film_class:settime(Time_class time)this-time=time;void Film_class:setprice(double price)this-price=price;void Film_class:setticknum(int ticknum)this-ticknum=ticknum;void Film_class:setposition_point(int number)this-positionnumber=1;/:/Torder_class.h文件#pragma once#include Time_class.hclass Torder_class/影票订单类char username20;/用户名char moviename30;/影片名Time_class ptime;/放映时间char seat20;/座号(如3排4号) Time_class dtime;/订票时间double price;/票价public:Torder_class(void);Torder_class(void);Torder_class(char *username,char *moviename,Time_class ptime,char *seat,Time_class dtime,double price);char *getusername();char *getmoviename();Time_class getptime();char* getseat();Time_class getdtime();double getprice();void setusername(char *username);void setmoviename(char *moviename);void setptime(Time_class ptime);void setseat(char seat20);void setdtime(Time_class dtime);void setprice(double price);/:/Torder_class.cpp文件#include StdAfx.h#include Torder_class.h#include Time_class.hTorder_class:Torder_class(void)Torder_class:Torder_class(void)Torder_class:Torder_class(char *username,char *moviename,Time_class ptime,char *seat,Time_class dtime,double price)strcpy_s(this-username,username);strcpy_s(this-moviename,moviename);this-ptime=ptime;strcpy_s(this-seat,seat);this-dtime=dtime;this-price=price;char* Torder_class:getusername()return username;char* Torder_class:getmoviename()return moviename;Time_class Torder_class:getptime()return ptime;char* Torder_class:getseat()return seat;Time_class Torder_class:getdtime()return dtime;double Torder_class:getprice()return price;void Torder_class:setusername(char *username)strcpy_s(this-username,username);void Torder_class:setmoviename(char *moviename)strcpy_s(this-moviename,moviename);void Torder_class:setptime(Time_class ptime)this-ptime=ptime;void Torder_class:setseat(char* seat)strcpy_s(this-seat,seat);void Torder_class:setdtime(Time_class dtime)this-dtime=dtime;void Torder_class:setprice(double price)this-price=price;/:/Manage.h文件#pragma once#include User_class.h#include Film_class.h#include Torder_class.hclass Managevector users; vector administrators;vector films;vector torders;/订单容器public:Manage(void);Manage(void);void enroll_user(User_class a);void enroll_administrator(User_class a);void load();/从文件加载用户和管理员信息到两个容器中 void save_user_info();/把信息保存到文件中void save_film_info();/保存影片信息void save_torder_info();/保存订单信息int login_user(User_class a);/用户登录int login_administrator(User_class a);/管理员登录void add_film_info(Film_class a);/添加影片信息void add_torder_info(Torder_class a);/添加订单信息Film_class* search_film_info_moviename(char *moviename);Film_class* search_film_info_mactor(char *mactor);Film_class* search_film_info_time(Time_class time);Film_class* search_film_info_price(int high_price,int low_price);Torder_class* search_torder_info(char *username);bool del_film_info(char *moviename);/删除影片信息bool del_torder_info(char *tordername);/删除订单信息vector& getFilms();/返回films引用vector& getUsers();/返回users引用vector& getTorders();/返回torder引用void change_film_info_moviename();/修改影片信息void change_film_info_mactor();/修改影片信息void change_film_info_time(); /修改影片信息void change_film_info_price(); /修改影片信息;/:/Manage.cpp文件#include StdAfx.h#include Manage.h#include User_class.h#include Film_class.h#include Torder_class.h#include Boundary.hManage:Manage(void)load();Manage:Manage(void)void Manage:enroll_user(User_class a)users.push_back(a);save_user_info();void Manage:enroll_administrator(User_class a)administrators.push_back(a);save_user_info();void Manage:save_user_info()ofstream oFile(users_information.txt,ios:out|ios:binary);vector:iterator pos;for(pos=users.begin();pos!=users.end();pos+)oFile.write(char*)&(*pos),sizeof(User_class);oFile.close();oFile.open(administrators_information.txt,ios:out|ios:binary);for(pos=administrators.begin();pos!=administrators.end();pos+)oFile.write(char*)&(*pos),sizeof(User_class);oFile.close();void Manage:load()ifstream iFile(users_information.txt,ios:in|ios:binary);if(!iFile) return; /如果文件不存在就返回User_class p;iFile.read(char*)&p,sizeof(p);while(!iFile.eof()users.push_back(p);iFile.read(char*)&p,sizeof(p);iFile.close();iFile.open(administrators_information.txt,ios:in|ios:binary);if(!iFile) return; /如果文件不存在就返回iFile.read(char*)&p,sizeof(p);while(!iFile.eof()administrators.push_back(p);iFile.read(char*)&p,sizeof(p);iFile.close();iFile.open(films_information.txt,ios:in|ios:binary);if(!iFile) return; /如果文件不存在就返回Film_class k;iFile.read(char*)&k,sizeof(k);while(!iFile.eof()films.push_back(k);iFile.read(char*)&k,sizeof(k);iFile.close();iFile.open(torders_information.txt,ios:in|ios:binary);if(!iFile) return; /如果文件不存在就返回Torder_class m;iFile.read(char*)&m,sizeof(m);while(!iFile.eof()torders.push_back(m);iFile.read(char*)&m,sizeof(m);iFile.close();int Manage:login_user(User_class a)int flag=0;system(cls);/清屏vector:iterator pos;for(pos=users.begin();pos!=users.end();pos+)if(strcmp(pos-getname(),a.getname()=0 & strcmp(pos-getposword(),a.getposword()=0) flag=1;Boundary boundary;boundary.user_function_menu(&(*pos);if(flag=0) return 0;/匹配错误返回0else return 1;int Manage:login_administrator(User_class a)int flag=0;system(cls);/清屏vector:iterator pos;for(pos=administrators.begi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论