c语言课程设计车票管理系统方案_第1页
c语言课程设计车票管理系统方案_第2页
c语言课程设计车票管理系统方案_第3页
c语言课程设计车票管理系统方案_第4页
c语言课程设计车票管理系统方案_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

1、建筑工程学院课课 程程 设设 计计 报报 告告课程设计名称:C C 语言课程设计语言课程设计课程设计题目:车票管理系统车票管理系统院(系):理学院 专 业:信息与计算科学班 级:信142学 号:姓 名:嘉星指导教师:鸿强完成日期: 2015-6-17目目 录录前言前言.2 2第第 1 1 章章 概要设计概要设计.3 31.1 题目的容与要求.31.2 总体结构 .3第第 2 2 章章 详细设计详细设计.4 4主模块流程图.4车票管理系统软件详细设计.4第第 3 3 章章 调试分析调试分析.6 6第第 4 4 章章 使用说明与执行结果使用说明与执行结果 .7 7参考文献参考文献.1515附附 录

2、(程序清单)录(程序清单).1616致致.3232前言随着计算机技术的发展,可视编程技术占有了越来越重要的作用。Visual C+6.0 是一种功能强大行之有效的可视化编程工具。因此此软件是在Visual C+6.0环境下编写的。对于我们,随着学习的深入,已经大体掌握了Visual C+6.0环境下的程序开发。为了将我们的编程能力提升到一个更高的水平,深化面向对象的编程思维和解决问题的能力,值此课程设计周期间,进行基于Visual C+6.0环境的软件开发,先以字符统计软件作为开始,对Visual C+6.0环境和面向对象程序设计进行回忆和熟悉,使得在此基础上的下一个员工培训系统软件的开发进行

3、的更加顺利。本文档详细叙述了基于Visual C+6.0环境下的车票管理系统的设计过程以及程序源代码。本文档从概要设计,详细设计,参考源程序代码以及显示程序运行的截屏等方面详尽的介绍了软件开发过程。此次车票管理系统的开发目的是使我们用面向对象的方式来思考和解决问题的能力,并且可以掌握字符数组的使用、字符指针的使用、数据库的设计和文件使用以及C语言语法。程序在设计的过程中遇到的问题已及时更正,但由于编者的能力和水平有限,车票管理系统和文档中不免会出现一些不期待的错误,望文档读者能够理解和体谅,并欢迎提醒和纠正,在此表示感以及敬意。第 1 章 概要设计1.11.1 题目的容与要求题目的容与要求一车

4、站每天有 n 个发车班次,每个班次都有一班次号(1、2、3n) ,固定的发车时间,固定的路线(起始站、终点站) ,大致的行车时间,固定的额定载客量。如班次 发车时间 起点站 终点站 行车时间 额定载量 已定票人数1 8:00 郫县 广汉 2 45 302 6:30 郫县 0.5 40 403 7:00 郫县 0.5 40 204 10:00 郫县 0.5 40 2(一)功能要求:用 c/c+设计一系统,能提供下列服务:(1)录入班次信息(信息用文件保存),可不定时地增加班次数据(2)浏览班次信息,可显示出所有班次当前状总。(3)查询路线:可按班次号查询 ,可按终点站查询(4)售票和退票功能 A

5、:当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自动更新已售票人数B:退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数 (二)其它要求:(1) 只能使用 C/C+语言,源程序要有适当的注释,使程序容易阅读(2) 至少采用文本菜单界面(如果能采用图形菜单界面更好)(3) 学生可自动增加新功能模块(视情况可另外加分)(4)写出课程设计报告,具体要求见相关说明文档1.21.2 总体结构总体结构 图图 1-11-1 功能模块图功能模块图第 2 章 详细设计主模块流程图主模块流程图欢迎界面管理员菜单普通登录菜单增加信息查询信息订票保存信息查询信息删除信息退票信息

6、欢迎界面管理员菜单普通登录菜单增加信息查询信息订票保存信息查询信息删除信息退票密码验证按车次按终到站按车次按终到站图图 2.12.1 主模块流程图主模块流程图车票管理系统软件详细设计车票管理系统软件详细设计一个名Timetable的结构体进行定义,包括 int no;/班次int hour;/发车时间(时)int minute;/发车时间(分)char Starting_station10;/始发站char Last_station10;/终点站float time;/行车时间int max_number;/最大载客数int sold_number;/已售票数等结构体成员。然后对调用函数进行定

7、义。void add()增加记录,void Cipher()密码验证函数,void del()删除班次信息函数,void find(int s1,char s2) 查找函数,int findnum(int s1)查找班次函数,void Input() 信息录入函数,void huanying () 欢迎界面,void land() 登录选择界面,void menu1()管理员菜单界面,void menu2()普通菜单界面,void open() 调用数据函数,void save()保存函数,void searchesmenu()查询菜单,void ticketdelete()退票函数,void

8、 ticketorder()售票函数,int timee(int i) 判断时间是否超出函数,void timetable1显示车次函数该系统将这些信息均放在文件中。最后定义main()函数,利用函数调用,实现程序的各种功能。将其放在系统文件车中。第 3 章 调试分析1、程序陷入死循环解决办法:仔细分析程序间的关系,画程序流程图分析问题所在。利用break 命令跳出循环2、程序出现乱码解决办法:利用 VC6.0 本身的调试功能查找错误的所在,修改源程序。3、所学知识不能很好的完成程序解决办法:上网查找相关资料,进入一些开源论坛寻求一定的帮助。第 4 章 使用说明与执行结果 图 4-1欢迎界面图

9、 4-2登录菜单图 4-3管理员登录的密码机制图 4-4密码容错机制图 4-5管理员菜单图 4-6图 4-7班次录入界面图 4-8图 4-9班次增加界面图 4-10时刻表浏览界面图 4-11查询界面图 4-11注销班次界面图 4-12普通登录菜单图 4-13图 4-14售票窗口图 4-15图 4-16退票界面参考文献1、 C 程序设计(第四版) 作者:谭浩强 书号:ISBN64 :清华大学。2、 C 语言学习路线图 作 者:明日科技 书号:ISBN93:清华大学。3、 C 语言从入门到精通(第 2 版) 作者:明日科技 书号:ISBN 20:清华大学。4、 21 天学通 C 语言(第 7 版)

10、 作者:(美)琼斯等著,估译 书号:ISBN 79:人民邮电。5、 C Primer Plus(第五版)中文版 作者:美Stephen Prata 书号:ISBN 28:人民邮电。鸣:百度文库 百度贴吧 百度百科 C 语言之家 Linux 开源俱乐部网络资料来源:1、.xuexi111./2、snippets.dzone./tag/c/ 3、.hotscripts./category/c-cpp/scripts-programs/ Hotscripts 4、https:/.daniweb./software-development/cpp/code/_/8附 录(程序清单)代码/增加记录#in

11、clude#includenews.h#include#includevoid add() void open();int get();void save();void menu1();int i,j=5;open(); / 调用按班次查询函数system(cls); /清屏printf(1. 增加班次n);printf(2. 返回n);printf(请选择(1-2)n);scanf(%d,&i);if(i=1)system(cls); /清屏printf(1. 请输入要增加的班次:n);scanf(%d,&timetableclass_num.no);for(i=0;icla

12、ss_num;i+)if(timetableclass_num.no=timetablei.no)/比较是否相等,判断车次是否重复 printf(输入错误!n);getch(); /收集回车break;if(i=class_num) get(i,j); /修改及增加班次*class_num+; /使班次数加 1save(); /调用保存函数elsemenu1();#includevoid Cipher()/密码验证函数int m,n=123;/规定密码void menu1(); /上级菜单的声明;容错机制printf(请输入密码:);/输入提示scanf(%d,&m);/密码输入whi

13、le(1)/容错机制if(m=n)menu1();elseprintf(密码错误请重新输入:);scanf(%d,&m);/删除班次信息#include#include /system(cls)的声明#include /getch()的声明#includenews.hvoid del() void save(); int findnum(int s1);int i,h=0;int num;char or10;system(cls); /清屏printf(1. 删除班次n);printf(2. 返回n);printf(请选择(1-2):n);scanf(%d,&i);if(i=1

14、)system(cls); /清屏printf(请输入要删除的班次:n);scanf(%d,&num);i=findnum(num); /调用班次查询函数if(i=class_num) /全部匹配后但无匹配项printf(输入错误,无此班次!n);getch(); /收集回车del();elseprintf(确定?(y/n)n);/确认机制scanf(%s,or);if(or0=y|or0=Y)for(;iclass_num-1;i+) timetablei=timetablei+1;class_num-; /班次总数减 1save(); /调用保存函数/查找函数#include#in

15、cludenews.h#includevoid find(int s1,char s2)int i,h=0,m;if(s20=0)m=1; /1 为无条件执行else m=0;printf(n|-|-|-|-|-|-|-|n); printf(n| 班次 | 发车时间 | 起点站 | 终点站 |行车时间|额定载量| 已售票 |n);for(i=0;iclass_num;i+)if(s1=timetablei.no|strcmp(s2,timetablei.Last_station)=0) /判断字符串比较是否相等 printf(n|-|-|-|-|-|-|-|n);printf(|%10d|%

16、5d:%-4d|%10s|%10s|%8.1f|%8d|%8d|n,timetablei.no,timetablei.hour,timetablei.minute,timetablei.Starting_station,timetablei.Last_station,timetablei.time,timetablei.max_number,timetablei.sold_number);if(m=1)h+;break;printf(n|-|-|-|-|-|-|-|n); if(h=0)/不能 break 则执行printf(要查找的班次不存在!n);/查找班次 #include#includ

17、enews.hint findnum(int s1) int i;printf(n|-|-|-|-|-|-|-|n); for(i=0;iclass_num;i+)if(s1=timetablei.no) /判断字符串比较是否相等,如果符合则输出车次等信息 printf(|-|-|-|-|-|-|-|n);printf(|%10d|%5d:%-4d|%10s|%10s|%8.1f|%8d|%8d|,timetablei.no,timetablei.hour,timetablei.minute,timetablei.Starting_station,timetablei.Last_station

18、,timetablei.time,timetablei.max_number,timetablei.sold_number);break;printf(n|-|-|-|-|-|-|-|n); return i;/欢迎界面#include void huanying ()printf(nnnn);printf(t*n);printf(nnnn);printf(tttt 车票管理系统n);printf(nnnn);printf(ttt 设计人:嘉星;新月;田宇n);printf(nn);printf(tttt 感您的使用ntttt 按任意键继续n);printf(nn);printf(t*n);/

19、信息录入界面#include #include news.h#include#includevoid Input() int i=0,j=5,h; char s5;void save();void add();void get(int i,int j);FILE *fp; /定义文件型指针变量system(cls); /清屏if(fp=fopen(车票管理系统 0.dat,rb)!=NULL) /fopen 打开文件 printf(车票信息已经存在!n);printf(任意输入进入添加菜单n);scanf(%s,s); /收集任意输入i=1; /通过是 1add();if(i=0) syste

20、m(cls); /清屏printf(请输入要录入班次总数:n);scanf(%d,&class_num); /指向班次指针system(cls); /清屏for(i=0;iclass_num;i+) system(cls); /清屏printf(请输入第%d 个班次信息:n,i+1);h=-1;for(;h!=i;) /循环输出printf(请输入班次:n);scanf(%d,&timetablei.no);for(h=0;hi;h+)if(timetableh.no=timetablei.no) printf(输入错误!该班次已存在!n);break; /返回get(i,j)

21、; /修改及增加班次j=5;save(); /调用保存函数void get(int i,int j) / 修改及增加班次 for(;)printf(请输入发车时间(xx xx);scanf(%d %d,&timetablei.hour,&timetablei.minute);if(timetablei.hour=0&timetablei.minute=0)break;elseprintf(输入错误!n);getch(); /收集回车printf(请输入起点站:n);scanf(%s,timetablei.Starting_station);printf(请输入终点站:n

22、);scanf(%s,timetablei.Last_station);printf(请输入行车时间:n);scanf(%f,&timetablei.time);printf(请输入额定载量:n);scanf(%d,&timetablei.max_number);printf(请输入已售票数:n);scanf(%d,&timetablei.sold_number);/管理员菜单界面#include void menu1()void Input();void timetable1();void save();void del();void searchesmenu();v

23、oid land();void add();int n;printf(tttt1、车次信息录入ntttt2、增加车次信息ntttt3、时刻表浏览ntttt4、车辆信息查询ntttt5、注销车次ntttt6、保存ntttt7、返回n);printf(ttt 请输入需要运行的命令编号n); while(1)/死循环形成菜单scanf(%d,&n);switch(n)case 1:Input();break;/车辆信息录入case 2:add();break;/增加车次信息case 3:timetable1();break;/浏览时刻表case 4:searchesmenu();break;

24、/车辆信息查询case 5:del();break;/注销车次case 6: save();break;/保存命令case 7:land();break;/返回上级菜单default: printf(非法输入n);break;/普通登录菜单#include void menu2()void timetable1();void ticketorder();void ticketdelete();void land(); void searchesmenu();int n;printf(tttt1、时刻表浏览ntttt2、车辆信息查询ntttt3、购买车票ntttt4、退回车票ntttt5、返回n

25、);printf(ttt 请输入需要运行的命令编号n); while(1)scanf(%d,&n);switch(n)case 1:timetable1();break;/时刻表浏览case 2:searchesmenu();break;/车辆信息查询case 3:ticketorder();break;/购买车票case 4:ticketdelete(); break;/退回车票case 5:land();break;/返回上级菜单default: printf(非法输入n);break;#includevoid huanying ();void land();int main()c

26、har ch;huanying(); ch=getchar( );/收集回车land();return 0;#include #include #include news.h#includevoid open()FILE *fp1,*fp2;if(fp1=fopen(车票管理系统.dat,rb)=NULL)system(cls); /清屏printf(文件打开错误!n);getch(); /收集回车exit(0);if(fp2=fopen(车票管理系统 0.dat,rb)=NULL)system(cls); /清屏printf(文件打开错误!n);getch(); /收集回车 exit(0);

27、 /退出fread(&class_num,sizeof(int),1,fp2); /读入信息fread(timetable,sizeof(timetable0),class_num,fp1);/读入信息fclose(fp1);fclose(fp2); /文件关闭#include #include #include news.hvoid save() /保存函数void menu1();FILE *fp1,*fp2; /文件行指针if(fp1=fopen(车票管理系统.dat,wb)=NULL) /打开文件、为输出打开一个二进制文件printf(文件打开错误!n);exit(0);if(

28、fp2=fopen(车票管理系统 0.dat,wb)=NULL) /打开文件、为输出打开一个二进制文件printf(文件打开错误!n);exit(0);fwrite(&class_num,sizeof(int),1,fp2); /写入文件信息fwrite(timetable,sizeof(timetable0),class_num,fp1);fclose(fp1);fclose(fp2); /关闭文件 printf(保存成功);menu1();/查询菜单#include#include#includevoid searchesmenu()int i;void find(int s1,c

29、har s2);char s1=0,s210=0;void open();void land();system(cls); /清屏printf(1. 按班次查询n);printf(2. 按终点站查询n);printf(3. 退出n);printf(请选择(1-3):n);scanf(%d,&i);open(); / 调用按班次查询函数switch(i) /菜单 case 1: printf(请输入要查询的班次:n); /s1 为班次scanf(%d,&s1);find(s1,s2); /调用查找函数break;case 2: printf(请输入要查询终点站:n); /s2 为

30、终点站scanf(%s,s2);find(s1,s2); /调用查找函数break; case 3:land();break;/返回机制default : printf(输入错误!n);break;printf(按任意键继续.n);getch(); /收集回车/退票函数#include#includenews.h#include#includevoid ticketdelete() int i;int num;char or;int timee();void open(); int findnum(int s1);void save();void menu2();system(cls); /清

31、屏printf(1. 退票n);printf(2. 返回n);printf(请选择(1-2)n:);scanf(%d,&i);if(i=1)system(cls); /清屏open(); / 调用按班次查询函数printf(请输入要退票的班次:n);scanf(%d,&num);i=findnum(num); /调用班次查询函数if(num=timetablei.no) /判断字符串比较是否相等 待比较的字符串 if(timee(i) /判断时间是否超出函数scanf(%c,&or);if(or=y|or=Y)getch();timetablei.sold_number

32、-; /使已售票加 1printf(退票成功!n);save(); /调用保存函数getch(); /从控制台读取一个字符,但不显示在屏幕上elseprintf(该班车已发出,无法退票!n);getch(); /收集回车/售票函数#include#includenews.h#include#includevoid ticketorder() int i;int num;void save();int timee(int i);void open();void searchesmenu();void land();system(cls); /清屏printf(1. 售票n);printf(2.

33、返回n);printf(请选择(1-2):n);scanf(%d,&i);if(i=1)open(); / 调用 openprintf(请输入要订票的班次(若无请输入 0):n);scanf(%d,&num);for(i=0;itimetablei.max_number&timee(i)=1) /判断时间是否超出函数*并且*没超出最大客量timetablei.sold_number+; /使已售的票数+1printf(通向%s 班次为%d 的票订票成功!n,timetablei.Starting_station,timetablei.no);save(); /调用保存函

34、数getch(); /收集回车break;elseprintf(该班次已满或已发出!n);getch(); /收集回车land();else land();#include#include#includenews.hint timee(int i) /判断时间是否超出函数*struct tm *local; /时间结构体 time_t t; /把当前时间给 tt=time(NULL); /NULL 在 stdio.h 中定义为 0local=localtime(&t); /获取当前系统时间 if(local-tm_hourtm_hour=timetablei.hour&loca

35、l-tm_mintimetablei.minute) return 1; else return 0;#include #include news.h#include#includevoid timetable1() /显示车次函数int i,j;void open();int timee(int i);void land();system(cls); /清屏open();/ 调用 opensystem(cls); /清屏printf(*MESSAGE 车程信息*n);printf(n|-|-|-|-|-|-|-|n); printf(n| 班次 | 发车时间 | 起点站 | 终点站 |行车时间|额定载量| 已售票 |n);for(i=0,j=0;iclass_num;i+,j+=2) /按班次顺序输出 printf(n|-|-|-|-|-|-|-|n);if(timee(i)/判断时间是否超出printf(|%10d|%5d:%-4d|%10s|%10s|%8.1f|%8d|%8d|,timetablei.no,timetablei.hour,timetablei.minute,timetablei.Starting_s

温馨提示

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

评论

0/150

提交评论