东华理工大学
C语言课程设计
题目名称 车票管理系统程序设计
姓 名 刘韬 学 号 ************ 班 级 1521501 指导教师 徐猛华 编写日期 2016年1月
0
目录
第一章、设计任务需求分析....................................................................................................... 2 1、目标;
2、要求; 3、学生成绩管理系统;
第二章、总体设计....................................................................................................................... 2 1、采用的基本思想及完成过程; 2、遇到的问题和解决的方法; 3、程序设的流程图;
第三章、所负责部分详细设计................................................................................................... 4 1、程序所需函数;
2、明确分工各组员所负责的模块 ; 3,函数功能及参数的意义; 4、模块功能说明;
第四章、程序运行结果测试....................................................................................................... 7 1、录入班车信息; 2、浏览班车信息; 3、按班次查询; 4、按终点站查询; 5、订票; 6、退票; 7、退出系统;
第五章、结论与心得................................................................................................................. 10
第六章、致谢............................................................................................................................. 10
第七章 、附录........................................................................................................................... 11
1
正文
第一章、设计任务需求分析
1、目标:
(1)掌握和利用C语言进行程序设计的能力。 (2)理解和运用结构化程序设计的思想和方法。 (3)学会调试一个较长程序的基本方法。
(4)掌握书写程序设计开发文档的能力(书写课程设计报告)。
2、要求:该系统需实现的功能有
(1)录入班次信息(信息用文件保存),可不定时地增加班次数据。
(2)浏览班次信息,可显示出所有班次当前状总(如果当前系统时间超过了某班次的发车
时间,则显示“此班已发出”的提示信息)。 (3)查询路线:可按班次号查询 ,可按终点站查询 (4)售票和退票功能:
A:当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自
动更新已售票人数。
B:退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数。 3、学生成绩管理系统:
程序执行出一个有好的人机界面,供人合理的操作,完成浏览查询、退订票以及自动 更新的功能。
第二章、总体设计 1、采用的基本思路:
改程序设计采用的思路是利用结构体存放车辆信息,车辆的信息有操作人员录入,
录入完成后,通过菜单的提示进行相应的操作,不同的模块采用不同的算法进行管理, 主要采用的头文件有:#include,#include,#include,#2
define size 4。 (1)录入信息:
录入信息时调用了void input( )函数通过循环依次输入车辆的信息,并利用 结构体{ int b; //班次
char f[5]; //发车时间 char q[20]; //起点 char z[20]; //终点 double x; //行车时间
int e; //额定载量 int y; //已订票人数 };
来存放它 (2)浏览信息:
通过函数void output( ) 可以显示各班次的详细信息。 (3)查询信息:
通过函数void check1( )和函数void check2( )可以通过两种不同的方式查询信息。 (4)退票预订票:
通过函数void rback ( )和函数void order ( ) 来实现。
2、遇到的问题和解决的方法:
在录入车次方面遇到建立文件保存车次问题,由于没学文件所以在这个地方遇到了困难,开始对录入的车次总是无法保存,后面通过借鉴网上的一些算法和从新学习文件一章以及书本的一些例程最后得以解决。
还用在调试过程中无法退出界面,最后通过对程序的整体分析发现在主函数内没有跳出语句,后面加上return 0 ;后得以解绝。
在人机友好界面处理方面,浏览班次时无法对齐,通过调位参得以解决。
在程序整体布局方面由于只是的欠缺,在与系统时间比较表示班次已发出方面没有得到实现,这个问题还没解决,希望通过以后的学习能够很好的解决它。
还有程序在执行时的稳定性方面还不够。
3
3、程序设计的流程图:
主菜单 录 浏查退退入 览询票出车车车与系次次次订统 信信信票 息 息 息 按按车终次点查站询 查询
第三章、所负责部分详细设计
1、程序所需函数: (1)录入车次信息函数; (2)浏览车次函数;
(3)按班次查询汽车信息函数; (4)按终点询车次信息函数; (5)订票函数; (6)退票函数;
4
(7)主函数(菜单函数)。 2、明确分工各组员所负责的模块:
小组经讨论将程序分为四大块
第一块:头文件、函数的声明和主函数,然后将声明的子涵交由组员完成,这一块由我负责。 第二块:录入和浏览函数实现录入和浏览的功能。 第三块:查询函数实现两种查询功能。 第四块:订票退票函数实现订退票功能。
3、函数功能及参数的意义:
(1)头文件
#include #include #include # define size 4struct t_type //声明一个结构体类型 {
int b; //班次 char f[5]; //发车时间 char q[20]; //起点 char z[20]; //终点 double x; //行车时间
int e; //额定载量 int y; //已订票人数 };
void input(); //声明录入车次信息 void output(); //声明浏览车次信息 void check1(); //声明查询 void check2(); //声明查询
5
void order () ; // 声明售票 void rback(); //声明退票 void menu(); //声明主菜单 FILE *fp; //文件指针 各参数及函数意义意见头文件后面注释。
(2)主函数
void main() { menu(); }
(3)主菜单 void menu() { int a;
printf(\" 欢迎使用车票管理系统 \\n\");
printf(\" 制作人 陈耀 刘韬 匡豪 吴宏杰\\n\");
printf(\" 制作日期2016年1月\\n\"); printf(\"\\n=======================================\\n\"); printf(\"1、录入班车信息\\n\"); printf(\"2、浏览班车信息\\n\"); printf(\"3、按班次查询\\n\"); printf(\"4 按终点站查询\\n\"); printf(\"5、订票\\n\"); printf(\"6、退票信息\\n\"); printf(\"7、 退出系统\\n\");
printf(\"\\n========================================\\n\"); do{
printf(\"请选择你所需要的功能:\\n\");
6
scanf(\"%d\ switch(a) {
case 1: input(); break; case 2: output(); break; case 3: check1(); break; case 4: check2(); break; case 5: order(); break; case 6: rback(); break; case 7 :return 0; } }while(1); }
在主菜单中运用了一个swich语句实现的一个多分支的选择结构,能够方便的在主菜单中选择所需功能,该菜单的流程图可参考第二章总体设计中的。
4、模块功能说明:
所负责的第一个模块主要行使的功能有给出一些定义的变量和声明的函数引导后面的子函数的编写,该模块的菜单函数为该系统提供一个方便快捷的选择功能的界面,方便使用者使用和了解系统功能。
第四章、程序运行结果测试与分析
7
1、菜单界面
2、录入班车信息
3、浏览班车信息
4、按班次查询
8
5、按终点站查询
6、订票
7、退票
8、退出系统
9
第五章、结论与心得
刘韬:在该实验中我主要负责头文件、声明所有所需函数以及编写主函数,通过这次程
序设计让我切身体会到了编程不易,程序没调试出来做梦都梦到在调试程序。当然这次的 程序设计也让我体会到了团队合作的重要性。
首先,分析需求非常重要,只有明确了需求才能编写出好的程序,否则只会事倍功半。还有在编程的过程中要有一个明确的思路和整体的规划这样会让编程更加高效。本小组就是在开始没有一个明确的思路和整体的规划导致半天没做出个屁来,后面听老师指导后于是就每个人名确和分配各自的任务,加紧对程序的编写、修改、调试最后才对任务有了部分实现,模块化为我们节省了不少时间。
其次,在编程中有许多不会的,比如文件,由于不会可能导致程序无法实现一些功能,所以为了克服只能上网查资料和查阅书籍。因此我觉得在解决问题的过程中,是一个锻炼自己和不断进步的过程,我收获了许多课本上学不到的东西.
最后,我觉得收货最大的是自己的心理,枯燥的重复调试,连吃饭都要待在电脑前很是消磨情绪,但是在枯燥中也有部分功能实现的喜悦。我想作为一个程序员一定得有一个好的心态和顽强的毅力和冷静思考分析问题的能力。
总之,这次试验不但让我巩固了书本所学知识,也让我更好的了解了如何编程,以及学到了一系列的课外知识。
第六章、致谢
为成功运行该程序,感谢小组成员的努力调试,感谢老师的指导和系统性的讲解,向所
有参与过的提供过帮助的人致谢!
第七章、附录
10
#include #include #include # define size 4struct t_type //声明一个结构体类型 {
int b; // char f[5]; // char q[20]; // char z[20]; // double x; // int e; // int y; //};
void input(); //void output(); //void check1(); //void check2(); //void order () ; // void rback(); //void menu(); //FILE *fp;
班次 发车时间 起点 终点 行车时间
额定载量 已订票人数 声明录入车次信息声明浏览车次信息 声明查询 声明查询
声明售票 声明退票 声明主菜单 11