版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、程式設計-期末專題電影院售票系統 指導老師:林泉成 老師 組長:電機三 章詠松 90323008 組員: 陳麒竹 90323005 胡名發 90323009 王韜維 90323012 林彥江 90323019【電影院售票系統的由來】 電影在娛樂休閒活動裡,佔了很大的比例現在人人都看去看電影當作休閒,而電影院就要處理龐大的資料,現在網路發達,因而衍生出線上訂票的功能,線上電影售票帶來了大家很多的方便,我們就想試試這是如何處理以及展現出簡潔便利的售票系統【目的】買票排隊的經驗大家都有,人少的的話還可接受,人一多排隊浪費時間又浪費體力,為了便利大眾,可以節約大家的時間,所以開發出線上訂票這一個系統。
2、它的功能將大大的方便我們的生活,避免大排長龍只為了買一張票的情形減少。【預期目標】這一個線上訂票系統共分兩部分,會員登入、新增會員第一. 會員登入:可以做查詢正在上映的的電影,用現有的金額(會員的金額)線上訂票或退票及查詢訂票情形,並以後希望能加入能夠更改電影資料的功能。第二. 新增會員不是原會員,但是想加入會員的行列,可以用此公用加入會員,作新增的動作,但目前不能刪除會員資料。【流程圖】程式開始載入所需的檔案輸入0,1,2以外其他數字:離開:會員登入:新增會員新增會員會員登入離開離開會員登入輸入密碼選擇功能4查詢訂票狀況2訂票1查詢電影0離開回功能選單離開新增會員輸入新增id密碼不同輸入密碼
3、再輸入一次輸入會員資料離開新增會員程式【使用者介面程式發展】我們以發展使用者介面為主要目的,所以以下有關讀檔案的方都是以使用者介面為主,一開始在主程式的介面下會先進行載入檔案資料,我們預設的資料檔為.txt檔,分別有三個,分別是活動資料檔.使用者資料檔.管理者資料檔.這三個檔案.1. 活動資料檔的資料結構:struct SHOW int num; /*編號*/ char day5; /*日期*/ char movie15; /*放映電影*/ int seat_com; /*種類:普通的座位*/ int max_com; /*種類:普通座位的上限*/ int price_com; /*種類:普通
4、的票價*/ int seat_vip; /*種類:VIP的座位*/ int max_vip; /*種類:VIP座位的上限*/ int price_vip; /*種類:VIP的票價*/;內建電影資料:編號日期放映電影名稱普通的座位普通座位的上限普通的票價VIP座位VIP座位的上限VIP的票價10601明天過後06421005031020602祕窗06421005031030603哈利波特3064210050310struct USER int id; /*會員編號*/ char name10; /*使用者名稱*/ int code; /*密碼*/ int ticketMAX_show+13; i
5、nt money;/*訂票情形,第一個欄位表示放映電影的編號,第二個欄位的第一個數代表普通座位,第二個數表vip座位*/; 內建使用者資料:編號使用者名稱密碼金額1章詠松1002100002胡名發0000100003陳麒竹33335000放映電影的編號普通座位Vip座位100200321這代表著 陳麒竹會員 有定了第三部電影的普通座位2張、VIP1張 電影票本程式特別的地方有加入座位表的功能預定的場次有三場,當然就有三個座位表,在都還未定票之前,全部都是,座位被預定的話,會被覆蓋,代表此位已經被預定座位表如下:0 1 2 3 4 5 6 7 8 1 9 9 0 0 0 0 0 0 2 0 0
6、0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0n 此程式主要在於售票功能n 程式開始前先建立電影資料檔 n 編號 日期 放映電影 座位/上限 票價 VIP/上限 票價n 1 0601 明天過後 0 64 210 0 50 310 n 2 0602 祕窗 0 64 210 0 50 310n 3 0603 哈利波特3 0 64 210 0 50 310n 程式開始前先建立會員資料檔n 範例使用者名稱密碼金額
7、NEPTUNE100210000普通VIPA廳00B廳00C廳00程式初始畫面n 1.登入會員=輸入會員編號:1=密碼:1002=進入選擇1:查詢電影院相關訊息選擇 訂購電影票:2=訂購的電影編號:1=選普通區區號:1=訂購電影張數:1 =選定位置(排:個)=訂票成功選擇4.查詢個人訂票情形=顯示(票與金額)=回到使用者選單查詢個人訂票情形=訂到的位置用”9”表示=回到使用者選單新增會員=輸入name=輸入密碼=輸入儲值金額=新增成功=回到初始畫面程式碼#include#define MAX_show 10#define MAX_club 20struct SHOW int num; /*編號
8、*/ char day5; /*日期*/ char movie15; /*放映電影*/ int seat_com; /*種類:普通的座位*/ int max_com; /*種類:普通座位的上限*/ int price_com; /*種類:普通的票價*/ int seat_vip; /*種類:VIP的座位*/ int max_vip; /*種類:VIP座位的上限*/ int price_vip; /*種類:VIP的票價*/;struct USER int id; /*會員編號*/ char name10; /*使用者名稱*/ int code; /*密碼*/ int ticketMAX_show
9、+13; int money;/*訂票情形,第一個欄位表示放映電影的編號,第二個欄位的第一個數代表普通座位,第二個數表vip座位*/; struct MANAGE int num; /*編號*/ char name10; /*管理者名稱*/ int code; /*密碼*/; int loadSHOW(struct SHOW show, FILE *movie); /讀取活動資料檔,並回傳活動數目int loadUSER(struct USER user, FILE *users, int show_num);/*讀取使用者資料檔,並回傳使用者數目*/void startmenu(void);
10、/*近版畫面*/void members(struct USER users, int user_id, struct SHOW act, int show_num,int seat_a9,int seat_b9,int seat_c9);/*會員副程式*/void adduser(int club_num,int movie_num,struct USER user);/*新增會員*/void addticket(struct USER users, int user_id,struct SHOW act,int show_num,int A9,int B9,int c9);/*訂票副程式*
11、/ void cancelticket(struct USER users,int user_id,struct SHOW act,int show_num);/*取消訂票副程式*/void save_SHOW(struct SHOW show,FILE *movie, int show_num); /*儲存活動資料*/void save_USER(struct USER user,FILE *users, int user_num, int show_num); /*儲存使用者資料*/void loadSITE(int site9,FILE *fp);/*讀電影院座位資料*/void sav
12、eSITE(int site9,FILE *fp);/*存電影院座位資料*/void print_seatA(int site19);/*顯示A廳座位*/void print_seatB(int site29);/*顯示B廳座位*/void print_seatC(int site39);/*顯示C廳座位*/*/*主程式MAIN*/*/int main(void)FILE *fp_site1;FILE *fp_site2;FILE *fp_site3;FILE *fp_movie;FILE *fp_user; struct SHOW movieMAX_show+1;struct USER us
13、erMAX_club+1; fp_site1=fopen(site1.txt,r);fp_site2=fopen(site2.txt,r);fp_site3=fopen(site3.txt,r);fp_movie=fopen(movie.txt,r); fp_user=fopen(user.txt,r);int site199=0;int site299=0;int site399=0;int show_num;int user_num;int user_id;int user_pass; int choice;show_num=loadSHOW(movie,fp_movie);user_nu
14、m=loadUSER(user,fp_user,show_num);loadSITE(site1,fp_site1);loadSITE(site2,fp_site2);loadSITE(site3,fp_site3);fclose(fp_movie);fclose(fp_user);fclose(fp_site1);fclose(fp_site2);fclose(fp_site3);startmenu();do printf(nn歡迎來到EE電影城n); printf(本電影城提供的服務有:n); printf(1)使用者(2)新增使用者(0)離開:n); printf(請輸入您所需要的服務:
15、); scanf(%d,&choice);switch(choice) case 0 : break; case 1 : printf(nn*使用者登入*n); printf(請輸入會員號碼:); scanf(%d,&user_id); if(user_id=user_num) printf(%s會員你(妳)好,請輸入密碼:,useruser_); scanf(%d,&user_pass); if(user_pass=useruser_id.code)members(user,user_id,movie,show_num,site1,site2,site3); elseprint
16、f(n密碼錯誤!n); else printf(n無此號碼n); break; case 2 :printf(nn*新增使用者*n);if(user_num%dn,user_num+1);adduser(user_num+1,show_num,user);user_num+=1;elseprintf(*sorry,會員已滿*);break; default : printf(nn輸入錯誤.n); break; while(choice!=0);fp_site1=fopen(site1.txt,w); fp_movie=fopen(movie.txt,w); /開啟活動資料檔 fp_user=f
17、open(user.txt,w); /開啟使用者資料檔 saveSITE(site1,fp_site1); save_SHOW(movie,fp_movie,show_num); /儲存活動資料 save_USER(user,fp_user,user_num,show_num); /儲存使用者資料 fclose(fp_site1); fclose(fp_movie); /關閉檔案 fclose(fp_user); /關閉檔案 return 0;/*近版畫面*/void startmenu(void)printf( eeeeeeeeee eeeeeeeeee n);printf( eeeeeee
18、eee eeeeeeeeee n);printf( ee ee n);printf( ee ee n);printf( eeeeeeeee eeeeeeeee n);printf( eeeeeeeee eeeeeeeee n);printf( eee eee n);printf( eee eee n);printf( eeeeeeeeee eeeeeeeeee n);printf( eeeeeeeeee eeeeeeeeee nnn);/*使用者副程式*/void members(struct USER user, int user_id, struct SHOW movie,int show
19、_num,int seat_a9,int seat_b9,int seat_c9) int choice; int i; printf(n%s,您好,歡迎使用本訂票系統n,useruser_); do printf(nn-使用者選單-n); printf(1.查詢熱門院線片相關訊息n); printf(2.訂購電影票n); printf(3.退票n); printf(4.查詢個人訂票情形n); printf(0.離開n); printf(nn請選擇需要幫助的選項:); scanf(%d,&choice); switch(choice) case 1: printf(n編號t日期t
20、電影名稱 普通座位/最大值 金額 VIP座位/最大值 金額n); for(i=1;i=show_num;i+) printf(%dt%st%-15st %d/%d %d元 %d/%d %d元 n ,moviei.num, moviei.day, moviei.movie, moviei.seat_com, moviei.max_com,moviei.price_com,moviei.seat_vip, moviei.max_vip,moviei.price_vip); printf(nn); print_seatA(seat_a); print_seatB(seat_b); print_sea
21、tC(seat_c); break; case 2: addticket(user,user_id,movie,show_num,seat_a,seat_b,seat_c); break; case 3: cancelticket(user,user_id,movie,show_num); break; case 4: printf(nn-訂票情形-n); for(i=1;i=show_num;i+) printf(第%d個活動:普通坐席%d張,VIP坐席%d張n,i, useruser_id.ticketi1, useruser_id.ticketi2 ); printf(n你(妳)的會員金
22、額剩餘:%d元n,useruser_id.money); break; case 0: break; default: printf(n無此選項n); break; while(choice!=0);/*訂票副程式*/void addticket(struct USER user,int user_id,struct SHOW movie,int show_num,int A9,int B9,int C9)int i,choice,show_id,zoom,ticket;int row,line;do printf(nn=訂購電影票=n); printf(1.訂購電影票n); printf(2
23、.離開n); printf(請選擇:); scanf(%d,&choice); switch(choice) case 1: printf(想訂票的電影編號:); scanf(%d,&show_id); if(show_id=show_num) if(show_id=1) printf(n=A廳座位=); print_seatA(A); if(show_id=2) printf(n=B廳座位=); print_seatB(B); if(show_id=3) printf(n=C廳座位=); print_seatC(C); printf(n=分區訂票=n); printf(1.普通區 %d元n,
24、movieshow_id.price_com); printf(2.VIP區 %d元n,movieshow_id.price_vip); printf(請選擇區號:); scanf(%d,&zoom); switch(zoom) case 1: printf(預訂電影票張數:); scanf(%d,&ticket); if(ticket+movieshow_id.seat_com=movieshow_id.max_vip) for(i=1;i=ticket;i+) printf(請選擇座位); printf(請輸入第幾排(19):); scanf(%d,&line); printf(請輸入第幾
25、個(19):); scanf(%d,&row); if(line=9 & line!=0 & row=9 & row!=0) if(Alinerow=0 ) Alinerow=9; else printf(*sorry,此座位已有人,請從選*n); i-=1; else printf(*無此座位,請從選*n); i-=1; movieshow_id.seat_com+=ticket; useruser_id.ticketshow_id1+=ticket; printf(n訂票成功n); useruser_id.money-=ticket*movieshow_id.price_com; else
26、 printf(n訂票失敗n); break; case 2: printf(預訂電影票張數:); scanf(%d,&ticket); if(ticket+movieshow_id.seat_vip=movieshow_id.max_vip) movieshow_id.seat_vip+=ticket; useruser_id.ticketshow_id2+=ticket; printf(n訂票成功n); useruser_id.money-=ticket*movieshow_id.price_vip; else printf(n訂票失敗n); break; default: printf(
27、n查無此區n); break; else printf(無此部電影); break; case 2: break; default: printf(n無此功能n); break; while(choice!=2);/*取消訂票程式*/void cancelticket(struct USER user,int user_id,struct SHOW movie,int show_num)int choice,show_id,zoom,ticket;do printf(=取消訂電影票程式=n);printf(1.取消訂電影票n);printf(2.離開n);printf(請選擇:);scanf(
28、%d,&choice);switch(choice)case 1: printf(n想取消訂票的電影編號:); scanf(%d,&show_id); if(show_id=0) movieshow_id.seat_com-=ticket; useruser_id.ticketshow_id1-=ticket; printf(n取消成功n); useruser_id.money+=ticket*movieshow_id.price_com; break; else printf(n取消失敗n); break; case 2: printf(想取消的票數:); scanf(%d,&ticket)
29、; if(useruser_id.ticketshow_id2-ticket=0) movieshow_id.seat_vip-=ticket; useruser_id.ticketshow_id2-=ticket; printf(n取消成功n); useruser_id.money-=ticket*movieshow_id.price_vip; break; else printf(n取消失敗n); break; default: printf(n查無此區n); break; else printf(無此電影n); break; case 0: break; default: printf(
30、n無此功能n); break; while(choice!=2);/*新增使用者副程式*/void adduser(int club_num,int movie_num,struct USER user)int i;printf(請輸入你(妳)的會員名子:);scanf(%s,&userclub_);printf(請輸入你(妳)的新密碼:);scanf(%d,userclub_num.code);printf(請輸入你(妳)要儲值的金額:);scanf(%d,userclub_num.money);for(i=1;i=movie_num;i+)userclub_num.tick
31、eti1=0; userclub_num.ticketi2=0;/*讀電影資料*/int loadSHOW(struct SHOW show, FILE *movie)int counter=0;while(!feof(movie)counter+;fscanf(movie,%d %s %s %d %d %d %d %d %dn,&showcounter.num,&showcounter.day,&showcounter.movie,&showcounter.seat_com,&showcounter.max_com,&showcounter.price_com,&showcounter.se
32、at_vip,&showcounter.max_vip,&showcounter.price_vip);return counter;/*讀使用者資料*/int loadUSER(struct USER user, FILE *users, int show_num)int counter=0,i;while(!feof(users) counter+;fscanf(users,%d %s %d %d n,&usercounter.id,&,&usercounter.code,&usercounter.money);for(i=1;i=show_num;i+)fscanf(users,%d %dn,&usercounter.ticketi1,&usercounter.tic
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO/PAS 8235:2024 EN Road vehicles - Ergonomic aspects of human vehicle interactions - Taxonomy for the classification of adaptive interactive vehicle systems
- 年度智能安防系统设计与施工合同04
- 2024年度工程建设项目钢筋采购合同2篇
- 员工住宿免责的协议书
- 锅炉合同范本范本完整版 2篇
- 装修包工包料简易合同
- 二零二四年度保险代理居间协议3篇
- 2024版建筑工程给排水劳务分包合同3篇
- 二零二四年度文化艺术公司艺术品买卖合同2篇
- 《输血管理制度》课件
- 销售罗盘精髓-课件
- 借调通知函(模板)
- 《诗意中国》朗诵稿
- 第四章-技术美-(《美学原理》课件)
- 2021版《安全生产法》培训课件
- 小学数学二年级上册认识时间练习课3市公开课一等奖省名师优质课赛课一等奖课件
- 最新人教版三年级英语上册课件(完美版)Unit 1 Part B 第1课时
- 航站楼管理部《机场使用手册》实施细则
- 城市医疗集团管理制度
- 金坛区苏科版二年级上册劳动《08不倒翁》课件
- 三级安全教育培训课件(项目级)
评论
0/150
提交评论