版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、中国海洋大学青岛学院c语言课程设计报告书题 目汽车车票管理系统学生姓名指导教师学 院专业班级1 组内分工姓名主要任务占系统比例主体框架、查询、票数变更40%信息的录入、浏览30%订票、退票30%目 录1 前言12 需求分析23 模块设计图34 ns流程图清单45 存储结构及函数说明176 课程设计结果207 实践心得体会26iiiiiic语言课程设计报告1 前言1.1 课程设计题目:汽车车票管理管理系统1.2 课程设计目的:车票管理管理系统是车站对车票信息管理的工具。系统能够实现车票信息的录入,浏览,查询,订票,退票等功能.1.3 功能概述:车票管理系统主要分为管理员登录和普通用户登录两大部分
2、。其中管理员登录后,可以录入、浏览和查询车票信息。普通用户登录后可进行查询、退票和订票等操作。2 需求分析2.1 车次的信息包括 :班次、发车时间、起点站、终点站、行车时间、额定人数、已定票人数、票价等。2.2 系统能够完成车票信息的录入、浏览、查询、订票、退票等功能。(1)车次信息录入功能: 可进行车次信息的录入,并以文件保存。(2)车次信息浏览功能: 浏览所有班次信息,并可显示出所有班次当前状态,若某车次发车时间已过,则显示“车已开出”。(3)车次信息查询功能: 查询车次信息。可按班次号查询,也可按终点站查询。(4)车票订票功能:只有当已订票人数小于额定载客量且该班次未到发车时间时才能完成
3、订票。(5)车票退票功能: 退票时,输入退票班次,若此班次未发出则可能完成退票。(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(fi
4、le(record) open 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
5、:%02d,train.ft.hour,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
6、); fprintf(fp,%.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
7、.price); record+; 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
8、.2 浏览(show())system(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
9、); 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); 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,trai
10、n.last_time,train.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条车次
11、信息n,record); system(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,&tra
12、in.number,&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); (m=train.number)&(flag=1)t f printf(n班次 发车时间 起点 终点 行车时间(小时) 额定载量 已定票人数t票价(元)状态n);continue;printf(%dt%02d:%02dt
13、,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) fprinf(车已开出);printf(n);printf(n);
14、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:searsh1(); break;searsh2();break;mainmenu();4.4按起点站和终点站查询(sea
15、rsh2()) system(cls); 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,&tr
16、ain.number,&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);(strcmp(a,train.origin_station)=0)& (strcmp(b,train.last_station)=0)&(flag=1)t fprintf(n班次 发车时间 起点 终点 行车时间(小时)
17、 额定载量 已定票人数t状态n);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
18、.ft.minute) fprinf(车已开出);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(); brea
19、k;searsh1();break;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:
20、%d,&train.number,&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
21、=1) fprintf(n!此车已开出,订票失败!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(
22、pause);printf(nnt);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())syste
23、m(cls);printf(*欢迎使用车票管理系统*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);fsc
24、anf(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!此车已开出, 退票失败!nn ); flag=0; break;t(m=tra
25、in.number)&(x=0)&(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
26、(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: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=fop
27、en(record,r)=null 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_sta
28、tion);fscanf(fp,%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+)=n
29、ull fprintf(file 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);
30、fputs(t,fp);fprintf(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; /小时 in
31、t minute; /分钟 ;struct 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.订票
33、,3.退票,4.返回主菜单。用switch结构做出选择。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福建龙岩市公安局永定分局招聘招聘警务辅助人员34人考试参考试题及答案解析
- 2026云南保山电力股份有限公司校园招聘50人考试参考试题及答案解析
- 2026北京中关村第三小学永新分校招聘考试备考试题及答案解析
- 2026青海智特安全环境技术服务有限公司招聘技术员6人考试备考题库及答案解析
- 人工关节:骨科植入领域的技术革命与临床实践
- 2026云南昭通市水富市文化馆城镇公益性岗位人员招聘1人考试参考题库及答案解析
- 2026年西安高新区第三初级中学校园招聘考试备考题库及答案解析
- 2026年德宏职业学院高职单招职业适应性测试备考试题带答案解析
- 2026年顺德区陈村镇青云小学招聘数学临聘教师备考题库及一套答案详解
- 2026年重庆双福农产品批发市场有限公司招聘备考题库及完整答案详解1套
- 山东省济南市2024年1月高二上学期学情期末检测英语试题含解析
- 供应链管理工作计划与目标
- 口腔门诊医疗质控培训
- (正式版)JBT 9229-2024 剪叉式升降工作平台
- HGT4134-2022 工业聚乙二醇PEG
- GB/T 15231-2023玻璃纤维增强水泥性能试验方法
- 小学教职工代表大会提案表
- ESC2023年心脏起搏器和心脏再同步治疗指南解读
- 《泰坦尼克号》拉片分析
- GB/T 2624.1-2006用安装在圆形截面管道中的差压装置测量满管流体流量第1部分:一般原理和要求
- 基层版胸痛中心建设标准课件
评论
0/150
提交评论