课程设计报告-车票管理系统_第1页
课程设计报告-车票管理系统_第2页
课程设计报告-车票管理系统_第3页
课程设计报告-车票管理系统_第4页
课程设计报告-车票管理系统_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

1、湖南工业大学课程设计(实训)资料学 院 计算机学院 2018-2019 学年第 1 学期 课程名称 面向过程程序设计( C 语言)课程设计 指导教师 xxx 学生姓名 xxx专业班级 计算机类 xxx学号 xxx题 目车票管理系统起止日期 2019 年 12 月 23 日 2019 年 1 月 2 日目录清单序号材料名称资料数量备注1课程设计任务书12课程设计(实训)报告13设计文档和源程序(电子文档)1课程设计(实训)任务书学 院: 计算机学院 学生姓名: xxx 专业班级: xxx课程名称: 面向过程程序设计( C 语言)课程设计 设计题目: 车票管理系统 完成期限:自 2018 年 12

2、 月 23 日至 2019 年 1 月 2 日共 1 周内 容 及 任 务一、 设 计的主要技术参数1、文件基本的使用2、结构体定义以及使用3、 switch 开关和分支语句配合使用4数组存储字符串的简单应用5、指针与数组合并应用6、指针与结构体的应用二、设计任务1、设计主函数2、设计主操作界面和其余操作界面3、设计录入和增加车次功能函数 4、设计查询线路和浏览线路功能函数 5、设计售票和购票功能函数 6、设计按班次查询和按终点站查询功能函数进度安排起止日期工作内容第1天确定课程设计题目,计划各函数功能及其分工第2天编写各功能函数,并进行调试第3天进一步完善信息和功能,检查文档的使用第4天整体

3、程序调试运行,完成课程设计任务书主要参考 资料1 谭浩强 . C 语言程序设2 陈锐. C 语言从入门到精3 胡运玲 , 龚民 . C 语言4 黄明. C 语言课程设计5 谭浩强著 .C 程序设计教6 谭浩强编著 .C 程序设计计(第三版) . 北京:清华大学出版社, 2005 通 M. 电子工业出版社 , 2010.程序设计 M. 中国人民大学出版社 , 2012.M. 电子工业出版社 , 2006.程 .北京:清华大学出版社, 2007 题解与上机指导(第三版) . 北京:清华大学出版社, 2005同组 信息学号姓名分工负责的内容备注xxxxxx主要函数的编写组长xxxxxx部分函数的编写

4、指 导 教 师 (签字):系 ( 教 研 室 ) 主 任 ( 签字):课程设计(实训)报告课程名称:题 目:面向过程程序设计( C 语言)课程设计车票管理系统起止日期: 2018 年 12 月 23 日 至 2019 年 1 月 2 日学 学 班 学 成院 名 级 号 绩计算机学院xxx计 算 机 类 xxxxxx指 导 教 师 ( 签 字 )2019 年 1 月目录 TOC o 1-5 h z 课题简介 6系统简介 6开发环境及开发工具 6问题分析 7需求分析 7问题分析 8系统中涉及到的相关算法 9系统设计 11系统功能设计 11系统的功能分析 13 HYPERLINK l bookmar

5、k12 o Current Document 系统的实现 14 HYPERLINK l bookmark14 o Current Document 4.1 系统主函数设计 14 HYPERLINK l bookmark16 o Current Document 录入和增加班次模块 15 HYPERLINK l bookmark18 o Current Document 查询和浏览模块 19 HYPERLINK l bookmark20 o Current Document 售退票模块 25系统测试 295.1 软件测试 29系统有效性 29设计总结 29参考文献 29 课题简介系统简介通过这次

6、系统开发的经历,通过查询各种书籍以及网上视频去学会怎样 灵活地去运用 C语言设计编写一些小功能函数,并且结合课上所学的的知识, 将呆板的文字知识变成实际的动手能力,通过编写课程设计,去体会逻辑思维 和设计算法能力的重要性,并且要知道编写代码应该思路清晰,格式整齐,简 单易懂为主。我也需要去发现所学知识中的漏洞,并且及时翻找资料完善不足 以提高自身水平、完善自身。车票管理系统对于各大交通运输行业有着巨大的帮助,从数据上就 减轻了人员的负担,数据均由计算机统计,而人员只需对车次信息进行录 入以及增加,减少了错误机率,使交通运输更加快速可靠,售票与退票交 由计算机完成,无需人工办理,进一步减少了人员

7、的浪费,用户只需在系 统界面点击售票与退票即可进行相关业务办理。便捷人们的生活。开发环境及开发工具开发环境: windows 操作系统开发工具: dev c+原因: Windows 操作系统作为使用人数最多的操作系统,使用此操作 系统开发,对于程序的兼容性及可靠性有一定的确定性,使开发出来的程 序可控。选用 dev c+ 则是因为此工具易上手,界面简单明了,有益于开 发。问题分析需求分析 车票管理系统的需求来自于交通运输公司为用户提供的服务。在需求中涉 及如下相关的几个客体。(1)用户:用户的消费的主体,是交通运输公司服务的对象,他负责购票 和查询浏览班次以及付费。(2)交通工具:它是服务的核

8、心,因为有交通工具的运输才有本系统的诞 生。(3)售票员:他主要负责售票与退票。(4)信息管理员:他主要负责班次信息的录入及增加。在 4 个客体间存在一定的关系,它们是:(1)用户、交通工具:用户需要乘坐交通工具出行。(2)用户、交通工具、售票员:用户需要交通工具,售票员负责给用户购 票来乘坐交通工具。(3)售票员、用户、信息管理员:售票员需通过信息管理员所提供的信息 给用户办理相应的手续。相较于传统的服务消费流程,在利用现代计算机对交通运输企业做改造中, 尚需做进一步要求。(1)改变传统的运营模式,提高企业办公效率,减轻人员负担。2) 能对车次信息做随时统计、分析与记录,使企业心中有数。(3

9、)能对运输服务提供相关数据管理。(4)能让车次信息让用户知晓。用户出行流程:(1)首先用户在系统浏览车次信息;(2)接下来就是用户选中车次信息;(3)系统判断车次是否能够购票,通过判断结果反馈给用户相应信息;(4)用户成功购票,等待乘车;(5)用户乘做相应车次,发车,整个流程结束。问题分析数据流图数据字典(1)数据元素与数据项在数据字典中包含了 8 个数据元素及相关的数据项。班次编号、行车时间、已订票人数、额定载量、发车时间、起始站、终点站。系统中涉及到的相关算法1、主函数 :主函数中进入主操作界面, 利用 switch 进行选择,选择相应功能进入不同页面, 每个页面也是各个函数,输出选项,再

10、利用 switch 让用户选择信息,进行相应 功能的实现。2 、班次录入和增加函数: 这个函数的任务就是录入和班次信息,通过输入保存到相应的文件中,有利于 下次的信息的调用。增加函数中新建了已给存储班次数量的文件,通过该文件存储班次数量,在重 新打开程序时读入该文件获取已有的班次信息,为浏览,查询等函数的正常实 现做基础。、管理员密码判断函数: 这个功能主要是判断管理员密码是否正确,通过将输入的字符串与程序内部的 初始密码比较,如果正确则进入功能界面,否则输出密码错误,跳回程序主界 面。4、班次查询函数: 通过对指定文件的读取,获取班次信息,读取存储班次数量的文件的信息,获 取已存班次数量。按

11、照使用者的选择调用查询方式的函数 ( 按班次查询,按终点 站查询) 。并将所查询到的信息按照一定格式显示。5、按班次/ 终点站查询函数:通过对数据中班次信息的一个个便利,查找出与用户输入的班次编号 / 终点站相 符的班次信息,并将其按一定格式显示到用户界面。6、时间判断函数:调用 stdlib 库中的 time 函数获取系统时间。使用 string 库中的 atoi 函数将 结构体中的字符转化为整形,与系统时间作比较,小于系统时间时返回值与大 于系统时间的返回值不同,从而使在查询,浏览函数中显示的班次状态可以通 过调用时间判断函数,判断其返回值来确定打印“已发出”还是“未发出”。 时间判断函数

12、在购票和售票函数中也需要调用,当系统时间小于发车时间时不 能进行购票和售票的操作。7、保存函数:为了使程序更加简洁明了特意设置了一个保存函数,用于将要保存文件的数据 保存到文件中。为了提高 txt 文件的可读性使用的是 fprintf 语句。8、菜单函数:使用指针数组将菜单文件保存,在打印时通过 for 循环多次打印,直至打印出 完整的菜单。在每一个功能完成退出功能菜单之后,重新打印出主菜单函数。3 系统设计系统功能设计主函数:进入主使用界面,然后就是通过 switch 开关调用各个自定义函数以完 成各种功能。车 票 管 理 系 统录入线路1. 录入班次信息功能:运用结构体知识,利用文件函数操

13、作,将录入的数据存 入文件。2. 增加班次功能:与录入班次操作类似,把文件权限修改为了增加,并用一个 新文件记录了信息总数的变化。查询路线功能:利用对文件函数的操作,从指定文件中获取车次信息,按用 户要求显示对应的车次信息。浏览班次信息功能:利用对文件函数的操作,从指定文件中获取车次信息, 并将信息按一定格式显示出来。售票和退票功能:利用对文件函数的操作,实现售退票功能。管理员登陆功能:利用字符数组,验证输入的密码是否正确。系统的功能分析(1)录入班次信息使用该模块需要验证管理员密码, 模块运用结构体知识, 利用文件函数操作, 将已有文件中的数据清空,替换为新录入的数据。(2)增加班次信息与录

14、入班次操作类似,也需要验证管理员密码,把文件权限修改为了增加, 并用一个新文件记录了信息总数的变化。以便下次打开程序时直接读入文件数 据。(3)查询路线利用对文件函数的操作,从指定文件中获取车次信息,从信息总数文档中读 入班次数量信息,按用户要求显示对应的车次信息。(4)浏览班次信息利用对文件函数的操作,从指定文件中获取车次信息,并将信息按一定格式 显示出来。(5)售票和退票利用对文件函数的操作,对文件中的乘客人数进行修改实现售退票功能。6)管理员登陆利用字符数组,验证输入的密码是否正确4 系统的实现4.1 系统主函数设计系统主界面代码:/* 菜单枚举 指针数组 */char欢迎使用车票查询系

15、统nt 功能选项nntttt 1.录入班次信息 ,tt 2.增加班次 ,nntttt 3.查询路线 ,ttt 4.浏览班次信息nntttt 5.售票 ,ttt 6.退票nnttttt 0.退出 ,ntmenu10=;/* 菜单函数 */ int menu_select() char s5;int c,i,f=0; system(cls); system(color F0); 色为黑色) for(i=0;i10;i+) printf(%s,menui);/ 定义要输入的数字功能/ 清屏/ 改变颜色( F 为背景颜色为白色, 0 字体颜/ 输出菜单各项/ 清屏/ 菜单函数/ 录入/ 增加 / 查询

16、/ 浏览/ 售票/ 退票 / 退出 / 其他case 4:Look_through();break;case 5:sell_ticket();break;case 6:return_ticket();break;case 0:exit();return 0; default:printf( 输入错误 .);getch();printf(nnn 请选择 (0-6) : ); scanf(%d,&c);return c;int main()system(cls);while(1)switch(menu_select()case 1:entry_bata();break;case 2:add_bat

17、a();break; case 3:search_bata();break;录入和增加班次模块验证管理员密码代码:/* 密码判断 */int password()char password10=NULL;int i,f;printf(nnnntttt 请输入管理员密码 :n); for(i=0;i6;i+)passwordi=getch();printf(*);passwordi=0;printf(n);f=strcmp(password,123456);Sleep(100); return f;输入班次信息判断增加班次的数量代码:/* 增加班次 */void add_bata() int i

18、=0,j,t;环次数/i 控制退出, n 控制班次个数 ,j 控制循system(cls);if(password()=0)/ 调用密码函数,并判断密码是否正确printf( 验证成功,正在载入 .);Sleep(1000);system(cls);FILE *fp,*fp1;fp=fopen(input_data.txt,a+);/打开 input_data.txt 文件if(fp=NULL) printf(文件打开失败 );printf( 请输入要增加的班次个数: );scanf(%d,&t);system(cls);printf( *nnn);班次增加系统add_or_entry(0,t

19、);/调用录入与增加函数fp1=fopen(CAR_num.txt,r);/读入文件中保存的 CAR_num的数据fscanf(fp1,%d,&CAR_num);t=CAR_num+t;fclose(fp1);fp1=fopen(CAR_num.txt,w);/改写 CAR_num的数据fprintf(fp1,%d,t);/写入车次文件信息printf( 文件写入完成按任意键退出 .);getch();fclose(fp1);/ 关闭文件elseprintf( 密码错误 .n);getch();/* 信息录入与增加 */int add_or_entry(int h,int numb)int j

20、;文件FILE *fp;if(h=1) fp=fopen(input_data.txt,w+);/ 创建并打开 input_data.txtif(h=0) fp=fopen(input_data.txt,a+);/ 打开 input_data.txt 文件for(j=0;j=0&sumj.time0=0&sumj.time1=0&sumj.time_min0=9&sumj.time_min1=0)printf( 请输入起点站 :);scanf(%s,sumj.start);printf( 请输入终点站 :);scanf(%s,sumj.end);printf( 请输入行车时间 :);scanf

21、(%f,&sumj.hour);printf( 请输入额定载量 :);scanf(%d,&sumj.Bearer);printf( 请输入已订票人数 :);scanf(%d,&sumj.man); / 为了增强 txt 文件的可读性,运用了 fprintffprintf(fp,%d %s%s %s %s %.2f %d %dn,sumj.num,sumj.time,sumj.time_min,sumj.start,sumj.end,sumj.hour,sumj.Bearer,sumj.man);elseprintf( 输入格式错误 );fclose(fp);查询和浏览模块代码/* 搜索函数 *

22、/ void search_bata()int t;/ 选择变量system(cls);printf(nt 查询选项);printf(nntttt1. 按班次号查询 );printf(tttt2. 按终点站查询 );printf(ntttttt 0. 退出 );printf(nn 请选择: );scanf(%d,&t);switch(t)case 1:search_num();break;/ 按班次查询case 2:search_endstation();break;/ 按终点站查询case 0:break;输入查询班次信息的班次号查询结果代码:/* 按班次号查询 */ void search

23、_num()/ 读入车次数量文件FILE *fp,*fp1; int num,t,i,ti; system(cls);fp1=fopen(CAR_num.txt,r); if(fp1=NULL) printf( 文件打开失败 ); rewind(fp1);fscanf(fp1,%d,&CAR_num);CAR_num=CAR_num;if(fp=fopen(input_data.txt,r)=NULL)printf( 文件打开失败 , 按任意键返回 .);/ 退出getch();exit(0);rewind(fp);printf( 请输入要查询的班次号 :n);scanf(%d,&num);/

24、 输入查询班次号system(cls);menu_a(); / 加载搜索菜单 for(i=0;itm_hourtm_hour=atoi(sumi.time)&local-tm_minatoi(sumi.time_min) /atoi 将字符串转换成一个整数值return 1;/atoi 函数将字符转化为整形else/ 在时间之内返回 1,否则返回 0return 0;/* 浏览主函数 */ void Look_through_main()FILE *fp1,*fp;int i,ti;fp1=fopen(CAR_num.txt,r); / 读入车次数量文件 rewind(fp1);fscanf(

25、fp1,%d,&CAR_num);CAR_num=CAR_num;system(cls);if(fp=fopen(input_data.txt,r)=NULL)printf( 文件打开失败 , 按任意键返回 .);getch();exit(0); / 退出rewind(fp);menu_a(); / 加载搜索菜单 for(i=0;iCAR_num;i+)fscanf(fp,%d%s%s%s%f%d%d,&sumi.num,sumi.time,sumi.start, sumi.end,&sumi.hour,&sumi.Bearer,&sumi.man);printf(|n);printf(|%1

26、0d|%s%s |%s |%s |%2.f/ 输出班次|%10d|%10d|,sumi.num,sumi.time,sumi.time_min,sumi.start,sumi.end,sumi.hour,sumi.Bearer,sumi.man);ti=hour_judge(i); / 调用时间判断函数if(ti=1) printf( 未发出 |n);elseprintf(已发出 |n);fclose(fp);fclose(fp1);/ 关闭文件4.4 售退票模块退票代码:/* 售票 */ void sell_ticket()int t,j,u; /t 控制 输入车次的编号 j 控制便历编号

27、,u 等于时间函数返回的值out_or_buy_ticket(); / 调用退售票主函数printf(nn 请选择你要购票的车次编号: );scanf(%d,&t);for(j=0;jsumj.man)printf(|%10d|%s%s |%s |%s |%2.f |%10d|%10d|,sumj.num,sumj.time,sumj.time_min,sumj.start,sumj.end,sumj.hour,sumj.Bearer,sumj.man); / 输出 班次printf( 能购票 |n);printf(nnnttt 是否购票 (1/0)? );int check;scanf(%d

28、,&check); / 判断是否购票 getchar();if(check=1)sumj.man=sumj.man+1;save(); / 比较妥协的保存方式 printf( 购买完成 n);printf( 按任意键返回 .);getch();elseprintf(nnn 未找到能够购票的车次 .);getch();/* 退票 */void return_ticket()int j,t,u;out_or_buy_ticket();printf(nn 请选择你要退票的车次编号: );scanf(%d,&t);for(j=0;jCAR_num;j+) / 遍历车次编号,直至找到你所选的编号 if(t=sumj.num)system(cls);printf( 请你确认 nn);menu_a();/ 输出printf(|%10d|%s%s |%s |%s |%2.f |%10d|%10d|,sumj.num,sumj.time,sumj.time_min,sumj.start,sumj.end,sumj.hour,sumj.Bearer,sumj.man);班次

温馨提示

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

评论

0/150

提交评论