1、0*实践教学*兰州理工大学计算机与通信学院2014 年春季学期C 程序设计 课程设计题 目: 班车信息管理系统 专业班级: 计算机科学与技术 6 班姓 名: 苏志飞 学 号: 13240623 指导教师: 唐建新 成 绩: _ 1摘 要随着信息技术在管理上越来越广泛的的应用,管理系统的实施在技术上已逐步成熟,管理系统是一个不断发展的学科,任何部门,服务系统的展开都离不开信息技术管理。鉴于此我们开发了一个采用语言编辑的基本班车信息管理查询服务系统,该系统具备了 1录入班车相关信息。2查询信息(按班车的发车时间及其车号查找) 。并输出班车当前所在信息。3信息的输出,显示所有班车信息,满足乘客的需求
2、。4删除班车信息,使班车服务流畅化。5状态转换。运用 c 语言,编写程序使得复杂的交通变得井然有序。就现在的交通设施,我们开展了此次 c 语言课程设计,从多方面提升自己的编译能力,为以后的专业开展奠定基础。关键词:信息管理,车票,班车0目 录一、前言 1二、需求分析 2三、总体设计 3四、详细设计 41、数据定义 42、算法流程图 4五、编码 6六、测试与分析 7七、设计总结 8参考文献 9致谢 10附 录 110一、 前言传统的班车信息管理存在着许多的弊端,比如计算方面的误差、整个系统的管理和班车信息的查询等。伴随着信息时代的来临,信息处理器计算机的应用于班车信息的日常管理为班车管理的现代化
3、带来了从未有过的动力和机遇,采用计算机管理信息系统已成为班车信息管理科学化和现代化的重要标志给班车服务行业带来了明显的经济效益和社会效益。利用班车信息系统管理整个运行的过程,可以节省大量的时间和精力,有助于及时了解各个环节中信息的变更,有利于提高工作人员的工作效率。在此背景下,本文论述了班车管理系统的设计和实现。我们学习程序设计课程的目的掌握设计程序的思路,学习会用计算机语言编写程序,以实现所需要处理的任务。要正确处理算法与语法的关系,算法是程序的核心、是灵魂,语法是外壳、是工具。不应把学习重点放在语法规则上,语法是重要的,不掌握语法规则就无法编写出正确的程序。一定要把重点放在解题的思路上,通
4、过思考,和大量的阅读,来构造一个完整的程序。因为:重要的是学会编程,而不是背语法。其次,主要是学习程序设计的方法,进行程序设计的基本训练,学生应该把精力放在最基本,最常用的内容上,学好基本功,在基础上加强自己。1二、需求分析2.1选题背景:随着计算机的普及,信息产业的发展,现在计算机已经被各个领域使用。传统班车信息管理存在着许多的弊端,比如计算方面的误差、整个系统的管理和班车信息的查询等。但是现在班车管理已经信息化、自动化,通过一些编程语言来实现,再经过实践来验证,最后就有一个完整的班车信息管理系统。它包括班车信息的录入、浏览和查询。2.2编写目的:通过对用户需求进行调查分析,做出需求分析文档
5、作为项目设计的基本准则要求,以及作为系统分析员进行系统分析和测试人员进行测试时的手册2.3需求概述:设计一个班车信息管理系统,使之能提供以下功能:1) 录入班车信息并保存,包括发车时间、班车车号、班车型号、车票价格2) 浏览全部车次信息,并按输入顺序显示3) 查询班车信息,可按车号和发车时间4) 班车信息的删除5)班车状态的转换6)班车信息管理系统的初始化 2.4需求说明:班车信息包括车号、发车时间、班车型号、车票价格录入的班车信息要求用文件形式保存,并可以对其进行浏览、查询、等操作;班车信息的显式要求有一定的规范格式所设计的系统应以菜单方式工作,应为用户提供清晰的使用提示,依据用户的选择来进
6、行各种处理,并要求在此过程中能够尽可能的兼容用户使用过程中的异常情况2三、总体设计根据需求分析,本人按照结构化程序设计的原则将整个系统划分若干个功能模块。 系统各子模块的设计如图 1 所示。图 1 班车信息管理系统功能模块图班车信息管理系统班车 信息输出班车信息录入班车 信息查询系统初始化班车 状态转换班车 信息删除退出3四、详细设计1、数据定义结构体类型typedef struct char number10;/*班车车号*/char time20; /*发车时间*/char model20; /*班车型号*/int price; /*车票价格*/int state; /*班车状态*/mbu
7、s;typedef structmbus bus1000;int count;mstop;mstop stop;指针变量 FILE *fp; /*定义 1 文件型指针变量,指针名叫 fp*/*fp 指向 file 类型结构体的指针*/fp=fopen(“stop.txt“,“wt“); /*以写的方式打开 stop*/fwrite(fwrite(stop.bus,sizeof(stop.bus1),stop.count+1,fp);fclose(fp); /*关闭文件*/2、主要算法流程图录入函数流程4查询函数流程图while(a!=0)printf(“录入班车信息n“)输入有误endstar
8、t满足指令endprintf(“tt2 发车时间查询n“); printf(“tt1 型号查询n“)对不起,输入有误显示所有班车信息void luru() /*车辆信息录入start5班车信息删除流程图状态转换函数流程图startvoid shanchu()已经修改的班车信息输入有误endstart请输入要删除的班车型号和发车时间满足要求endvoid setstate()printf(“请输入班车车号,转换班车的状态: “ );是否转换转换后的班车信息 原有的班车信息班车信息输出6五、编码只写步骤和思路,源代码见光盘(附录:6 号 New Roman, 行距固定 10 磅) 。void ma
9、in() int i;char ch=1;FILE *fp; /*定义 1 文件型指针变量,指针名叫 fp*/*fp 指向 file 类型结构体的指针*/ if(fp=fopen(“stop.txt“,“rt“)=NULL) /*以写的方式打开 stop*/stop.count=0;else fread(fread(stop.bus,sizeof(stop.bus1),stop.count+1,fp);fclose(fp);/*关闭文件*/printf(“nnnttt 欢迎使用班车管理系统! nt“); /*班车管理系统欢迎界面*/printf(“操作说明:n“);printf(“ 1.数据输
10、入完成后按 Enter 键确认.n“);printf(“ 2.班车信息当中车费价格,车号只能是整数.n“);printf(“ 3.班车信息状态栏中,1 表示未发车,0 表示已发车.n“);printf(“ 4.对于录入的班车信息的状态,系统默认为 1n“);printf(“ 5.请严格按照要求操作.n“);printf(“nnttt 请按任意键继续.“);getch();while(ch!=0)printf(“nnnnn“);printf(“ttttt 班车管理系统 n“); /*班车管理系统菜单选项 */for(i=0;i#include#include#includevoid save()
11、;void luru(); void search();void search_by_time();void search_by_model();void print();void shanchu();void initiate();void setstate();typedef struct char number10;/*班车车号*/char time20; /*发车时间*/char model20; /*班车型号*/int price; /*车票价格*/17int state; /*班车状态*/mbus;typedef structmbus bus1000;int count;mstop
12、;mstop stop;void main() int i;char ch=1;FILE *fp; /*定义 1 文件型指针变量,指针名叫 fp*/*fp 指向 file 类型结构体的指针*/ if(fp=fopen(“stop.txt“,“rt“)=NULL) /*以写的方式打开 stop*/stop.count=0;else fread(fread(stop.bus,sizeof(stop.bus1),stop.count+1,fp);fclose(fp);/*关闭文件*/system(“graftabl 936“); /*调用 Ms-Dos 中文支持 */ 18printf(“nnntt
13、t 欢迎使用班车管理系统!nt“); /*班车管理系统欢迎界面 */printf(“操作说明:n“);printf(“ 1.数据输入完成后按 Enter 键确认.n“);printf(“ 2.班车信息当中车费价格,车号只能是整数.n“);printf(“ 3.班车信息状态栏中,1 表示未发车,0 表示已发车.n“);printf(“ 4.对于录入的班车信息的状态,系统默认为 1n“);printf(“ 5.请严格按照要求操作.n“);printf(“nnttt 请按任意键继续.“);getch();while(ch!=0)printf(“nnnnn“);printf(“ttttt 班车管理系统
14、n“); /*班车管理系统菜单选项 */for(i=0;i80;i+ )printf(“*“);printf(“n“);printf(“tt1-班车信息录入n“);printf(“tt2-班车信息查询n“);printf(“tt3-班车信息输出n“);printf(“tt4-删除班车信息n“);printf(“tt5-系统初始化n“);19printf(“tt6-班车状态转换n“);printf(“tt0-退出n“);for(i=0;i80;i+ )printf(“*“);printf(“nn“);printf(“ t 请输入你的选择: “); /*班车管理系统各个选项及其后继步骤*/scan
15、f(“%c“,switch(ch)case 1:luru();break;case 2:search();break;case 3:print();break;case 4:shanchu();break;20case 5:initiate();break;case 6:setstate();break;default:break;printf(“nnnnnnnnntttt 谢谢使用 !“); /*班车管理系统关闭状态 */getch();void save() FILE *fp; /*定义 1 文件型指针变量,指针名叫 fp*/*fp 指向 file 类型结构体的指针*/fp=fopen(“
16、stop.txt“,“wt“); /*以写的方式打开 stop*/fwrite(fwrite(stop.bus,sizeof(stop.bus1),stop.count+1,fp);fclose(fp); /*关闭文件*/void luru() /*车辆信息录入 */21int a=1; while(a!=0)stop.count+;printf(“录入班车信息n“);printf(“请输入班车车号: “);scanf(“%s“,stop.busstop.count.number);printf(“请输入型号: “);scanf(“%s“,stop.busstop.count.time);pr
17、intf(“请输入发车时间: “);scanf(“%s“,stop.busstop.count.model);printf(“请输入车费标价: “);fflush(stdin);scanf(“%d“,stop.busstop.count.state=1;printf(“退出请按 0 ,继续请按 1 : “); /*班车信息录入结束*/scanf(“%d“,save();void search() /*车辆信息查询*/ int a=0;22printf(“-班车信息查询-n“);printf(“tt1- 型号查询n“);printf(“tt2-发车时间查询 n“);printf(“请选择查询方式
18、: “);scanf(“%d“,switch (a)case 1:search_by_time();break;case 2:search_by_model();break;default:break;void search_by_time() int n=1,i;char a20;printf(“请输入你要查找班车的型号: “);23scanf(“%s“,a);printf(“车号 t 型号 t 发车时间 t 车费 t 状态 n“);for(i=1;i=stop.count;i+)if(strcmp(a,stop.busi.time)=0)printf(“%stt%stt%stt%dtt%d
19、n“,stop.busi.number,stop.busi.time,stop.busi.model,stop.busi.price,stop.busi.state);/* 显示车号 型号 发车时间 车费 车辆状态*/n=0;if(n=1) /*如果没有数据显示对不起*/printf(“对不起,没有相应信息 “);getch();void search_by_model()char a20;int n=1,i;printf(“请输入你要查找班车的发车时间: “);scanf(“%s“,a);printf(“车号t 型号t 发车时间t 价格t 状态n“);for(i=1;i=stop.count
20、;i+)24if(strcmp(a,stop.busi.model)=0)printf(“%stt%stt%stt%dtt%dn“,stop.busi.number,stop.busi.time,stop.busi.model,stop.busi.price,stop.busi.state);/* 显示车号 型号 发车时间 车费 车辆状态*/n=0;if(n=1) /*如果没有数据显示对不起*/printf(“对不起,没有相应信息 “);getch();void print() int i,n;printf(“车号t 型号t 发车时间t 价格t 状态 n“);for(i=1;i=stop.co
21、unt;i+)printf(“%stt%stt%stt%dtt%dn“,stop.busi.number,stop.busi.time,stop.busi.model,stop.busi.price,stop.busi.state);/* 显示车号 型号 发车时间 车费 车辆状态*/getch();25void shanchu() /* 班车信息删除*/ int i,j,ch,n=0; char a20,b20;printf(“-班车信息删除-n“);printf(“请输入要删除的班车的车号和发车时间n“);printf(“t 车号:“);scanf(“%s“,a);printf(“t 发车时
22、间: “);scanf(“%s“,b);for(i=1;i=stop.count;i+)if(strcmp(a,stop.busi.time)=0printf(“车号t 型号t 发车时间t 价格t 状态n“);printf(“%stt%stt%stt%dttn“,stop.busi.number,stop.busi.time,stop.busi.model,stop.busi.price,stop.busi.state);/* 显示车号 型号 发车时间 车费 车辆状态*/printf(“是否删除信息 ? 1(是),0(否) “);scanf(“%d“,if(ch=1)for(j=i+1;j=s
23、top.count;j+)26stop.busj-1=stop.busj;stop.count-;Elsebreak;save();if(n=0)printf(“班车信息输入有误“);getch();void initiate() int i;FILE *fp; /*定义 1 文件型指针变量,指针名叫 fp*/*fp 指向 file 类型结构体的指针*/fp=fopen(“stop.txt“,“wt“); /*以写的方式打开 stop*/printf(“系统初始化后系统所有信息将全部丢失,n“);printf(“是否仍选择初始化?(是(1) ,否(0) )“);scanf(“%d“,if(i=1)stop.count=0;