




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、中国海洋大学青岛学院c语言课程设计报告书题 目汽车车票管理系统学生姓名指导教师学 院专业班级 组内分工姓名主要任务占系统比例主体框架、查询、票数变更40%信息的录入、浏览30%订票、退票30%目 录1 前言12 需求分析23 模块设计图34 ns流程图清单45 存储结构及函数说明176 课程设计结果207 实践心得体会261 前言1.1 课程设计题目:汽车车票管理管理系统1.2 课程设计目的:车票管理管理系统是车站对车票信息管理的工具。系统能够实现车票信息的录入,浏览,查询,订票,退票等功能.1.3 功能概述:车票管理系统主要分为管理员登录和普通用户登录两大部分。其中管理员登录后,可以录入、浏
2、览和查询车票信息。普通用户登录后可进行查询、退票和订票等操作。2 需求分析2.1 车次的信息包括 :班次、发车时间、起点站、终点站、行车时间、额定人数、已定票人数、票价等。2.2 系统能够完成车票信息的录入、浏览、查询、订票、退票等功能。(1)车次信息录入功能: 可进行车次信息的录入,并以文件保存。(2)车次信息浏览功能: 浏览所有班次信息,并可显示出所有班次当前状态,若某车次发车时间已过,则显示“车已开出”。(3)车次信息查询功能: 查询车次信息。可按班次号查询,也可按终点站查询。(4)车票订票功能:只有当已订票人数小于额定载客量且该班次未到发车时间时才能完成订票。(5)车票退票功能: 退票
3、时,输入退票班次,若此班次未发出则可能完成退票。(6)票数变更功能:当用户订票或退票成功后,票数会自动发生相应的改变。3 模块设计图汽车车票管理系统管理员登陆普通用户登录录入浏览查询查询订票退票按车次查询按起点站和终点站查询按班次查询按起点站和终点站查询4 ns流程图清单4.1录入(load())system(cls); printf(*欢迎使用车票管理系统*n);printf(当前时间:); system_time(); /调用系统时间函数file *fp; ticket train;t(fp=fopen(record,a+)=null f printf(file(record) open
4、error!n); fscanf(fp,%d,&record); fclose(fp);t(fp=fopen(ticket,a+)=null f printf(file(ticket) open error!n);fputs(n,fp); printf(请输入班次:n); scanf(%d,&train.number); fprintf(fp,%d,train.number); fputs(t,fp); printf(请输入发车时间:n); scanf(%d:%d,&train.ft.hour,&train.ft.minute); fprintf(fp,%02d:%02d,train.ft.h
5、our,train.ft.minute); fputs(t,fp); printf(请输入起始站:n); scanf(%s,&train.origin_station); fputs(train.origin_station,fp);exit(0);exit(0); fputs(t,fp); printf(请输入终点站:n); scanf(%s,&train.last_station); fputs(train.last_station,fp); fputs(t,fp); printf(请输入持续时间:n); scanf(%lf,&train.last_time); fprintf(fp,%.
6、2lf,train.last_time); fputs(t,fp); printf(请输入最大载客量:n); scanf(%d,&train.max_number); fprintf(fp,%d,train.max_number); fputs(t,fp); printf(请输入已售出票数:n); scanf(%d,&train.sold_ticket);fprintf(fp,%d,train.sold_ticket);fputs(t,fp);printf(请输入票价(远):n);scanf(%d,&train.price)fprintf(fp,%d,train.price); record+
7、; fclose(fp)t(fp=fopen(record,w+)=null fprintf(file(record) open error!n);fprintf(fp,%d,record);fclose(fp);printf(*录入成功,请继续选择*n); printf(* 1.继续录入 *n);printf(* 2.返回管理员菜单 *n);printf(*n);int n;printf(请输入您想做的操作: );scanf(%d,&n);exit(0);case n, n=1,2case 1: case 2:load(); break;glymenu();4.2 浏览(show())sys
8、tem(cls);printf(*欢迎使用车票管理系统*n); printf(当前时间:); system_time(); file *fp; ticket train;t(fp=fopen(ticket,r)=null fprintf(file(ticket) open error!n);exit(0);printf(n班次 发车时间 起点 终点 行车时间(小时) 额定载量 已定票人数 票价(元)状态n); 当(!feof(fp)为真fscanf(fp,%dt%d:%d,&train.number,&train.ft.hour,&train.ft.minute); fscanf(fp,%s%
9、s,&train.origin_station,&train.last_station); fscanf(fp,%lf%d%d%d,&train.last_time,&train.max_number,&train.sold_ticket,&train.price); printf(%dt%02d:%02dt ,train.number,train.ft.hour,train.ft.minute); printf(%st%st,train.origin_station,train.last_station);printf(%.2lft%dt%dt%dt,train.last_time,trai
10、n.max_number,train.sold_ticket,train.price);t(syshourtrain.ft.hour)|(syshour=train.ft.hour)&(sysminutetrain.ft.minute) fprintf(车已开出); printf(n); printf(n); fclose(fp)t(fp=fopen(record,r)=null fprintf(file(record) open error!n);exit(0);fscanf(fp,%d,&record);fclose(fp); printf(n共有%d条车次信息n,record); sys
11、tem(pause); glymenu()4.3 按班次查询(searsh1()) system(cls); printf(*欢迎使用车票管理系统*n); printf(当前时间:); system_time(); int m; int flag=1; file *fp;ticket train; printf(请您输入你要查询的班次:); scanf(%d,&m);t(fp=fopen(ticket,r)=null fprintf(file open error!n);exit(0); 当(! feof(fp)为真fscanf(fp,%dt%d:%d,&train.number,&train
12、.ft.hour,&train.ft.minute);fscanf(fp,%s%s,&train.origin_station,&train.last_station);fscanf(fp,%lf%d%d%d,&train.last_time,&train.max_number,&train.sold_ticket,&train.price); (m=train.number)&(flag=1)t f printf(n班次 发车时间 起点 终点 行车时间(小时) 额定载量 已定票人数t票价(元)状态n);continue;printf(%dt%02d:%02dt,train.number,tr
13、ain.ft.hour,train.ft.minute);printf(%st%st,train.origin_station,train.last_station);printf(%.2lft%dt%dt%dt,train.last_time,train.max_number,train.sold_ticket,train.price); t (syshourtrain.ft.hour)| (syshour=train.ft.hour)& (sysminutetrain.ft.minute) fprinf(车已开出);printf(n);printf(n); flag=0;fclose(fp
14、); flag=1t fprintf( n!没有此条车次记录!n);printf(n);printf(*查询完成,请继续选择*n);printf(* 1.继续按班次查询 *n);printf(* 2.按起点站和终点站查询 *n);printf(* 3.返回主菜单 *n);printf(*n);int n;printf(请输入您想做的操作: );scanf(%d,&n); case n, n=1,2,3case 1:case 2:case 3:searsh1(); break;searsh2();break;mainmenu();4.4按起点站和终点站查询(searsh2()) system(c
15、ls); printf(*欢迎使用车票管理系统*n); printf(当前时间:); system_time(); char a20; char b20; int flag=1; file *fp;ticket train; printf(请您输入你要查询的起始站:); scanf(%s,&a); printf(请您输入你要查询的终点站:); scanf(%s,&b);t(fp=fopen(ticket,r)=null fprintf(file open error!n);exit(0); 当(! feof(fp)为真fscanf(fp,%dt%d:%d,&train.number,&trai
16、n.ft.hour,&train.ft.minute);fscanf(fp,%s%s,&train.origin_station,&train.last_station);fscanf(fp,%lf%d%d%d,&train.last_time,&train.max_number,&train.sold_ticket,&train.price);(strcmp(a,train.origin_station)=0)& (strcmp(b,train.last_station)=0)&(flag=1)t fprintf(n班次 发车时间 起点 终点 行车时间(小时) 额定载量 已定票人数t状态n)
17、;continue;printf(%dt%02d:%02dt,train.number,train.ft.hour,train.ft.minute);printf(%st%st,train.origin_station,train.last_station);printf(%.2lft%dt%dt%dt,train.last_time,train.max_number,train.sold_ticket,train.price); t (syshourtrain.ft.hour)| (syshour=train.ft.hour)& (sysminutetrain.ft.minute) fpri
18、nf(车已开出);printf(n);printf(n); flag=0;fclose(fp); flag=1t fprintf( n!没有此条车次记录!n);printf(n);printf(*查询完成,请继续选择*n);printf(* 1.继续按起点站和终点站查询 *n);printf(* 2.按班次查询 *n);printf(* 3.返回主菜单 *n);printf(*n);int n;printf(请输入您想做的操作: );scanf(%d,&n); case n, n=1,2,3case 1:case 2:case 3:searsh2(); break;searsh1();brea
19、k;mainmenu();4.5 订票(buy_ticket())system(cls);printf(*欢迎使用车票管理系统*n); printf(当前时间:); system_time();int y=1; int x;int m; char a; int flag=1 file *fp;ticket train;printf(请输入您想买的班次:); scanf(%d,&m);t(fp=fopen(ticket,r)=null fprintf(file open error!n);exit(0);当(! feof(fp)为真fscanf(fp,%dt%d:%d,&train.number
20、,&train.ft.hour,&train.ft.minute);fscanf(fp,%s%s,&train.origin_station,&train.last_station);fscanf(fp,%lf%d%d%d,&train.last_time,&train.max_number,&train.sold_ticket,&train.price);t(syshourtrain.ft.hour)|(syshour=train.ft.hour)&(sysminutetrain.ft.minute) fx=1;x=0;t(m=train.number)&(x=1) fprintf(n!此车
21、已开出,订票失败!nn ); flag=0; break;t(m=train.number)&(x=0)& (train.max_numbertrain.sold_ticke) fprintf(n您确定要买%d:%d由%s到%s的车票(y/n):,train.ft.hour,train.ft.minute,train.origin_station,train.last_station);continue;scanf(%s,&a);ta=y fprintf( n$购买成功,请按时乘车$n );printf(n!售票失败!nn); save(y,m);system(pause);printf(nn
22、t);system(pause);flag=0; break;fclose(fp);tflag=1 fprintf(n !没有此车次信息,请确认后再购票! nn );printf(*请 继 续 选 择*n);printf(* 1.继续订票 *n);printf(* 2.返回普通用户菜单 *n);printf(*n);int n; printf(请输入您想做的操作: ); scanf(%d,&n);case n, n=1,2case 1:case 2:buy_ticket(); break;ptyhmenu();4.6 退票(back_ticket())system(cls);printf(*欢
23、迎使用车票管理系统*n); printf(当前时间:); system_time();int y=0; int x;int m; char a; int flag=1 file *fp;ticket train;printf(请输入您要退的班次: ); scanf(%d,&m);t(fp=fopen(ticket,r)=null fprintf(file open error!n);exit(0);当(! feof(fp)为真fscanf(fp,%dt%d:%d,&train.number,&train.ft.hour,&train.ft.minute);fscanf(fp,%s%s,&tra
24、in.origin_station,&train.last_station);fscanf(fp,%lf%d%d%d,&train.last_time,&train.max_number,&train.sold_ticket,&train.price);t(syshourtrain.ft.hour)|(syshour=train.ft.hour)&(sysminutetrain.ft.minute) fx=1;x=0;t(m=train.number)&(x=1) fprintf(n!此车已开出, 退票失败!nn ); flag=0; break;t(m=train.number)&(x=0)
25、&(train.sold_ticket0) fprintf(n您确定要退%d:%d由%s到%s的车票(y/n):,train.ft.hour,train.ft.minute,train.origin_station,train.last_station);continue;scanf(%s,&a);ta=y fprintf( n$退票成功$n );printf(n!退票失败!nn);save(y,m);system(pause);printf(nnt); system(pause);flag=0; break;fclose(fp);tflag=1 fprintf(n !没有此车次信息,请确认后
26、再退票! nn );printf(*请 继 续 选 择*n);printf(* 1.继续退票 *n);printf(* 2.返回普通用户菜单 *n);printf(*n);int n; printf(请输入您想做的操作: ); scanf(%d,&n);case n, n=1,2case 1:case 2:back_ticket(); break;ptyhmenu();4.7 票数变更(save(int y,int m))file *fp; ticket train100; int i=0; int y1; int m1; y1=y; m1=m;t(fp=fopen(record,r)=nul
27、l fprintf(file(record) open error!n);exit(0);fscanf(fp,%d,&record); fclose(fp);t(fp=fopen(ticket,r)=null fprintf(file(ticket)open error!n);exit(0);i=0;irecord;i+fscanf(fp,%dt%d:%d,&traini.number,&traini.ft.hour,&traini.ft.minute);fscanf(fp,%s%s,&traini.origin_station,&traini.last_station);fscanf(fp,
28、%lf%d%d%d,&train.last_time,&train.max_number,&train.sold_ticket,&train.price);fclose(fp);i=0;irecord;i+t(traini.number=m1)&(y1=1) ftraini.sold_ticket=traini.sold_ticket+1; (traini.number=m1)&(y1=0)t fbreak;traini.sold_ticket=traini.sold_ticket-1;continue;break;t(fp=fopen(ticket,w+)=null fprintf(file
29、 open error(ticket)!n);exit(0);i=0;irecord;i+fputs(n,fp);fprintf(fp,%d,traini.number);fputs(t,fp);fprintf(fp,%d:%d,traini.ft.hour,traini.ft.minute);fputs(t,fp); fputs(traini.origin_station,fp);fputs(t,fp); fputs(traini.last_station,fp);fputs(t,fp); fprintf(fp,%.2lf,traini.last_time);fputs(t,fp);fpri
30、ntf(fp,%d,traini.max_number);fputs(t,fp);fprintf(fp,%d,traini.sold_ticket);fputs(t,fp);fprintf(fp,%d,traini.price);fclose(fp);5 存储结构及函数说明5.1 存储结构系统中,车票信息主要采ticket结构体进行储存,ticket结构体中嵌入time结构体记录发车时间。系统还会建立ticket.txt文档和record.txt文档用来存储车次信息和车次记录的条数。struct time /定义记录时间的结构体 int hour; /小时 int minute; /分钟 ;s
31、truct ticket /定义记录车票信息的结构体 int number; /定义车次struct time ft ; /记录发车时间char origin_station20; /起始站名称数组char last_station20; /终点站名称数组double last_time; /持续时间int max_number; /车次最大运载量int sold_ticket; /已售车票 int price; /票价;5.2 系统的主要功能函数int system_time(); 显示系统时间函数。可以调用系统当前时间,并在屏幕上显示出当前时间(年、月、日、时、分、秒、星期)。另外,在判断
32、车次是否发出时还要用到系统时间小时和分钟。void mainmenu(); 主菜单显示及选择函数。运行程序后调用此函数显示主菜单,包括:1.管理员登陆,2.普通用户登陆,0.退出系统。用switch结构做出选择。void glymenu(); 管理员菜单显示及选择函数。管理员登陆后会调用此函数显示出管理员可进行的操作,包括:1.录入班次信息,2.浏览班次信息,3.查询班次信息,4.返回主菜单。用switch结构做出选择。void ptyhmenu(); 普通用户菜单显示及选择函数。管理员登陆后会调用此函数显示出管理员可进行的操作,包括:1.查询班次信息,2.订票,3.退票,4.返回主菜单。用s
33、witch结构做出选择。void load(); 录入功能函数。管理员录入车次信息时调用此函数。一次录入一条信息,每次录入完成后会给出选择1.继续录入,2.返回管理员菜单。录入后会将车次信息写入ticket.txt文档保存。将车次信息的条数写入record.txt文档保存。void show(); 浏览功能函数。管理员浏览车次信息时调用此函数。可将所有车次信息输出到屏幕上,还会输出共有几条车次信息。浏览完成后可按任意键返回管理员菜单。void searsh(); 查询菜单显示及选择函数。管理员和普通用户都可透过查询函数查找车次信息。分为1.按车次查询、2.按起点站和终点站查询、3.返回主菜单。用switch结构做出选择。void searsh1(); 按班次查
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 拆迁安置房产权交易合同及产权登记与过户服务协议
- 小升初备考试题及答案
- 植物人喉管护理
- 设备人员面试题及答案
- 家具项目投标方案
- 2026版《全品高考》选考复习方案生物0505 第16讲 基因在染色体上、伴性遗传和人类遗传病 含答案
- 化工园区封闭检查方案
- 伤口造口压疮护理
- 铁路职工培训大纲
- 企业门口硬化改造方案
- 中草药种植的土壤改良技术
- 尿脓毒症护理查房
- 生活垃圾清运投标方案(技术标)
- 安全绿十字看板(A4打印)
- 家长会课件:七年级暑假家长会课件
- CMK自动计算公式表格模板
- 急性中毒知识讲座课件
- 2023届广东省佛山市石门中学毕业升学考试模拟卷数学卷含解析
- 2023年应聘校长副校长面试题
- 代际领导力-用90后思维管理90后-完整版
- 建筑工程造价鉴定规范
评论
0/150
提交评论