程序设计报告

上传人:仙*** 文档编号:43743016 上传时间:2021-12-04 格式:DOC 页数:34 大小:723.01KB
返回 下载 相关 举报
程序设计报告_第1页
第1页 / 共34页
程序设计报告_第2页
第2页 / 共34页
程序设计报告_第3页
第3页 / 共34页
点击查看更多>>
资源描述
程序设计实践训练课程设计报告姓 名: 班 级: 13电信2班 学 号: 2013302 2013302 2013302 指导老师: 日期: 2015.12.142015.12.16 华南农业大学电子工程学院摘 要在现代社会,计算机已经进入社会生活的各个领域。计算机和互联网已经与老百姓的日常工作、学习和生活息息相关,人类社会现在又处于历史飞跃时期,由高度的工业化时代迈向计算机网络时代。作为新世纪的大学生,我们应当站在时代发展的前列,掌握现代科学技术知识,调整自己的知识结构和能力结构,通过实践巩固自己的知识。在这次的课程设计实践中,我们小组选择了车票管理系统这个课题。车票的管理系统包括班次信息的录入、浏览和查询、售票和退票等功能。随着计算机技术的发展,可视编程技术占有了越来越重要的作用。Visual C+6.0 是一种功能强大行之有效的可视化编程工具。因此此软件是在Visual C+6.0环境下编写的。对于我们,随着学习的深入,已经大体掌握了Visual C+6.0环境下的程序开发。为了将我们的编程能力提升到一个更高的水平,深化面向对象的编程思维和解决问题的能力,值此课程设计周期间,进行基于Visual C+6.0环境的软件开发,先以字符统计软件作为开始,对Visual C+6.0环境和面向对象程序设计进行回忆和熟悉,使得在此基础上的下一个员工培训系统软件的开发进行的更加顺利。 本文档详细叙述了基于Visual C+6.0环境下的车票管理系统的设计过程以及程序源代码。程序在编写的过程运用了子程序递归调用、头文件包含等编程方法,此次车票管理系统的开发目的是使我们用面向对象的方式来思考和解决问题的能力,并且可以掌握字符数组的使用、字符指针的使用、数据库的设计和文件使用以及C语言语法。设计程序的重要思想是模块化处理,自上而下,逐步精细;把一个复杂的问题分析为多个子问题,然后利用函数模块化把一个个小的问题解决。关键字:子程序、模块化、程序设计思路、结构体目 录1 课程设计目的12 课程准备阶段12.1 背景12.2 课程设计内容1 2.3系统总体设计框架13程序设计过程3 3.1主函数的设计3 3.2录入信息功能函数的设计4 3.3显示所有班次功能7 3.4查询班次功能9 3.5增加班次功能10 3.6售票功能11 3.7退票功能133.8修改班次功能153.9删除班次功能154程序测试175总结25Abstract26参考文献281 课程设计目的通过课程设计,加强对结构化程序设计思想的理解,能对系统功能进行分析,并设计合理的模块化结构,进一步掌握C语言中重要的数据结构,掌握并熟练运用指针、链表、结构体、文件等数据结构,掌握软件系统设计的基本步骤,提高程序开发能力,能运用合理的控制流编写清晰高效的程序,加强程序分析能力1。2课程准备阶段2.1背景一直以来,在人们的日常出行中,大巴以其方便实惠的优点吸引了大量的乘客乘坐。然而,随着时代的发展,传统的效率低下,速度慢的人工售票方式已经跟不上时代的潮流。为了方便人们的出行,开发出一款车票管理系统已经迫在眉睫。2.2设计内容一车站每天有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程序基本要求:(1)录入班次信息(信息用文件保存),可不定时地增加班次数据;(2)浏览班次信息,可显示出所有班次当前状总(如果当前系统时间超过了某班次的发车时间,则显示“此班已发出”的提示信息);(3)查询路线:可按班次号查询 ,可按终点站查询;(4)售票和退票功能:A:当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自动更新已售票人数B:退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数;(5)采用文本菜单界面。2.3系统总体设计框架程序总体的功能如下图所示:程序包含了8个功能,除了课程设计要求的录入数据、显示数据、查询数据、增加数据、售票服务、退票服务这6个功能,我们另外加入了修改程序已经录入的数据和删除数据。相应的的函数实现算法,在之后的篇幅中详细介绍。3程序设计过程根据程序设计的模块化思想,我们将程序进行功能的模块化,以下是我们的程序设计过程:31主函数的设计3.1.1主函数内部应该设计一个死循环,里面将有一个控制变量函数,由其返回值确定主函数调用哪种功能,这里我们选用switch语句,控制变量是menu_select的返回值,menu_select是菜单选择函数。void main() system(cls); while(1)/循环 /*int k; k=mimaa();if(k)*/ switch(menu_select() case 1:newmessage();break; /录入函数 case 2:display();break;/显示 case 3:search();break;/查找函数 case 4:add();break;/增加记录 case 5:ticketorder();break;/售票函数 case 6:ticketdelete();break;/删除函数 case 7:change();break;/修改函数 case 8:deletemessage();break;/选择调用删除函数 case 9:quit();break;/退出函数 3.1.2menu_select函数有校准功能,当输入无效字符时会显示提醒语句,程序如下:int menu_select() char s5; int c,i; /char menu20; system(cls); system(color 73);/改变颜色 for(i=0;i0|c9) printf(n); printf(&); printf(n请选择(1-9): ); scanf(%s,s); c=atoi(s);/转化为整数值 break; return c;32录入功能函数的设计3.2.1预约班次信息的录入录入的多个车票信息有多个数据类型,所以我们采用结构体数组为传递变量,每个结构体包含一个车次的信息,调用的函数为newmessage函数,结构体recordsN如下:#define N 1000typedef struct ticket char num10; /车次 char hour3; /发车时间 char min3; /起点 char from10; /终点 char to10; /目的地 float hours; /行车时间 int max; /载客量 int now; /已订票数CLASS;CLASS recordsN;3.2.2newmessage函数程序如下:void newmessage() int i=0,j=5,h; char s5; FILE *fp; system(cls); if(fp=fopen(车票管理系统0.txt,r)!=NULL) printf(车票信息已经存在请选择增加功能!n); printf(任意输入则返回菜单n); scanf(%s,s); i=1;/通过是1 if(i=0) system(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(%s,recordsi.num); for(h=0;hi;h+) if(strcmp(recordsh.num,recordsi.num)=0)printf(输入错误!该班次已经存在!n);break; get(i,j); /内部函数,存放到结构体j=5; save();/保存,若有错误,查看此处 3.2.3newmessage函数内部还有进行子函数get的嵌套处理,它把录入的数据存放到结构体,再通过文件指针函数save对输入的数据进行文件的保存。get函数程序如下:void get(int i,int j)for(;) printf(请输入发车时间(xx:xx);scanf(%s%s,recordsi.hour,recordsi.min); if(atoi(recordsi.hour)=0)&(atoi(recordsi.min)=0) break;else printf(输入错误!n);getch();/从控制台读取一个字符,但不显示在屏幕上 printf(请输入起点站:n);scanf(%s,recordsi.from);printf(请输入终点站:n);scanf(%s,recordsi.to);printf(请输入行车时间:n);scanf(%f,&recordsi.hours);printf(请输入载客量:n);scanf(%d,&recordsi.max);printf(请输入已售车票:n);scanf(%d,&recordsi.now);save函数程序如下:void save()FILE *fp3,*fp4;if(fp3=fopen(1车票管理系统.txt,w)=NULL)printf(文件打开错误!n);exit(0);if(fp4=fopen(1车票管理系统0.txt,w)=NULL)printf(文件打开错误!n);exit(0);fwrite(&class_num,sizeof(int),1,fp4);/写出一个整形数据class_num给fp2指向的 车票管理系统0.txtfwrite(records,sizeof(CLASS),class_num,fp3);/写出class_num这么多个CLASS类型的数据给fp1fclose(fp3);fclose(fp4);3.3显示所有班次功能调用的函数是display函数,在display函数里除了调用打印表头表尾函数,最主要的一个函数是load函数,它的功能是对已经录入数据的文件进行读入数据,是在完成第一步之后的下一个步骤,具体程序如下:3.3.1load函数程序如下:void load( ) /查找班次FILE *fp1,*fp2;if(fp1=fopen(1车票管理系统.txt,r)=NULL)system(cls);printf(文件打开错误!n);getch();exit(0);if(fp2=fopen(1车票管理系统0.txt,r)=NULL)system(cls);printf(文件打开错误!n);getch();exit(0);fread(&class_num,sizeof(int),1,fp2);fread(records,sizeof(CLASS),class_num,fp1);fclose(fp1);fclose(fp2);3.3.2display函数程序如下:void display()int i;system(cls);load();/会显示所有的班次 showtable1();for(i=0;i20;i+)/class_numprintf(n|-|-|-|-|-|-|-n);if(whether(i)printf(|%10s|%5s:%-4s|%10s|%10s|%8.1f|%8d|%8d|,recordsi.num,recordsi.hour,recordsi.min,recordsi.from,recordsi.to,recordsi.hours,recordsi.max,recordsi.now);elseprintf(|%10s|已经发车%10s|%10s|%8.1f|%8d|%8d|,recordsi.num,recordsi.from,recordsi.to,recordsi.hours,recordsi.max,recordsi.now);showtable2();printf(n按任意键继续n);getch();3.4查询班次功能查询班次功能search函数内部进行了子函数嵌套,嵌套的函数是find函数,它的两个形参分别代指“班次查询”和“终点站”查询,从而对结构体进行搜寻,之后返回输出。3.4.1 search函数程序如下:void search()int i;char s110=0,s210=0;system(cls);printf(1.按班次查询n);printf(2.按终点查询n);printf(3.退出n);printf(4.请选择(13):n);scanf(%d,&i);load();switch(i)case 1:printf(请输入要查询的班次:n);scanf(%s,s1);find(s1,s2);break;case 2:printf(请输入要查询的终点站:n);scanf(%s,s2);find(s1,s2);break;case 3:break;default: printf(输入错误!n);break;printf(按任意键继续。n);getch();3.4.2 find函数程序如下:void find(char s1,char s2)/int i,h=0,m;showtable1();if(s20=0)m=1;else m=0;for(i=0;iclass_num;i+)if(strcmp(s1,recordsi.num)=0|strcmp(s2,recordsi.to)=0)printf(n|-|-|-|-|-|-|-|n);printf(|%10s|%5s:%-4s|%10s|%10s|%10.1f|%10d|%10d|,recordsi.num,recordsi.hour,recordsi.min,recordsi.from,recordsi.to,recordsi.hours,recordsi.max,recordsi.now);h+=2;if(m=1)break;showtable2(h);if(h=0)printf(要查找的班次不存在n);3.5增加班次功能增加函数功能由add函数实现,嵌套了get函数和save函数进行新增的数据保存,由于get函数和save函数的代码在上面的部分已经给出,所以这里不重复展示。3.5.1add函数程序如下void add()int i,j=5;load();system(cls);printf(1.增加班次n);printf(2.返回n);printf(请选择(12)n);scanf(%d,&i);if(i=1)system(cls);printf(1.请输入要增加的班次:n);scanf(%s,recordsclass_num.num);for(i=0;iclass_num;i+)if(strcmp(recordsclass_num.num,recordsi.num)=0)printf(输入错误!n);getch();break;if(i=class_num)get(i,j);class_num+;save();3.6售票功能售票函数功能由ticketorder函数实现,其中嵌套了search函数、get函数和save函数进行新增的数据保存,由于get函数和save函数的代码在上面的部分已经给出,所以这里不重复展示。3.6.1ticketorder函数程序如下:void ticketorder()int i;char num10;system(cls);printf(1.售票n);printf(2.返回n);printf(请选择(12)n);scanf(%d,&i);if(i=1)load();search(); printf(请输入要订票的班次(若无请输入0):n);scanf(%s,num);for(i=0;i(int)recordsi.now&whether(i)=1)recordsi.now+;printf(通向%s班次为%s的票订票成功!n,recordsi.to,recordsi.num);save();getch();break;elseprintf(该班次已满或已经出发n);getch();3.6.2search函数程序如下:void search()int i;char s110=0,s210=0;system(cls);printf(1.按班次查询n);printf(2.按终点查询n);printf(3.退出n);printf(4.请选择(13):n);scanf(%d,&i);load();switch(i)case 1:printf(请输入要查询的班次:n);scanf(%s,s1);find(s1,s2);break;case 2:printf(请输入要查询的终点站:n);scanf(%s,s2);find(s1,s2);break;case 3:break;default: printf(输入错误!n);break;printf(按任意键继续。n);getch();3.7退票功能退票函数功能由ticketdelete函数实现,其中嵌套了load函数、findnum函数和save函数进行新增的数据保存,由于load函数和save函数的代码在上面的部分已经给出,所以这里不重复展示。3.7.1ticketdelete函数程序如下:void ticketdelete()int i;char num10;system(cls);printf(1.退票n);printf(2.返回n);printf(请选择(12)n);scanf(%d,&i);if(i=1)system(cls);load();/调用按班次查询函数printf(请输入要退票的班次:n);scanf(%s,num);i=findnum(num);if(strcmp(num,recordsi.num)=0)if(whether(i)printf(确定(Y/N)?);scanf(%s,num);if(num0=y|num0=Y)recordsi.now-;printf(退票成功!n);save();getch();elseprintf(该车已经发出,无法退票!n);getch();if(i=class_num)/又打问号,不确定if是否在这个大循环里面printf(输入错误!n);getch();3.7.2findnum函数程序如下:int findnum(char s1)int i,h=0;/char *k;/k=&s1;showtable1();for(i=0;iclass_num;i+)if(strcmp(s1,recordsi.num)=0)printf(n|-|-|-|-|-|-|-|n);printf(|%10s|%5s:%-4s|%10s|%10s|%8.1f|%8d|%8d|,recordsi.num,recordsi.hour,recordsi.min,recordsi.from,recordsi.to,recordsi.hours,recordsi.max,recordsi.now);h+=2;break;showtable2();return i;3.7修改班次功能退票函数功能由change函数实现,其中嵌套了load函数、findnum函数和save函数进行新增的数据保存,由于findnum函数、load函数和save函数的代码在上面的部分已经给出,所以这里不重复展示。3.7.2findnum函数程序如下:void change()char num10,s10;int h=0,j=13,i;load();system(cls);printf(请输入要修改的班次:n);scanf(%s,num);i=findnum(num);if(i=class_num)printf(输入错误,无此班次!n);getch();elseprintf(确定修改(Y/N)?n);scanf(%s,s);if(s0=y|s0=Y)get(i,j);save();3.8删除班次功能删除班次功能由deletemessage函数实现,其中嵌套了findnum函数和save函数进行新增的数据保存,由于findnum函数和save函数的代码在上面的部分已经给出,所以这里不重复展示。3.8.1deletemessage函数程序如下:void deletemessage()int i,h=0;char num10;system(cls);printf(1.删除班次n);printf(2.返回n);printf(请选择(12)n);scanf(%d,&i);if(i=1)system(cls);printf(请输入要删除的班次:n);scanf(%s,num);i=findnum(num);if(i=class_num)printf(输入错误,无此班次!n);getch();elseprintf(确定修改(y/n)?n);scanf(%s,num);if(num0=y|num0=Y)for(;iclass_num;i+)recordsi=recordsi+1;class_num-;save();printf(删除成功!);getch();以上是实现车票管理系统全部功能的函数代码,创新部分为最后两个功能(修改与删除车票信息),在最后程序运行之前,我们进行了各部分功能的检测,确保每个子函数逻辑思路无误、代码无误之后进行下一部分的程序测试。4. 程序测试(全文宋体,小四号,1.5倍行距)1、车票管理系统程序主界面2、录入信息功能函数的测试3、显示所有班次功能4、查询所有班次功能(示例查询4号班次)5、增加班次功能(实例增加6号班次)6、售票功能(示例买2号车票)7、退票功能(示例退2号车票)8、修改班次功能(修改4号车票)9、删除班次功能(删除3号车次)10、经过以上操作,可以显示所有车票情况如下:5.总结经过这一周的程序设计,我们对C程序设计的知识有了更深的理解,特别是对程序设计的基本步骤以及思想有了更具体、深刻的体会。而且这次课程设计也给予了我们锻炼自己能力,把知识与实践结合起来的机会。而通过一次次的解决遇到的难题,使我们在巩固了原有的理论知识上,培养了我们灵活运用和组合集成所学过知识来分析、解决实际问题的能力,使我们体会到自身知识和能力在实际中的运用。其次,激发了我们创新意识,开发创造以及团队协作的能力。在这次的课程设计中,我们也体会到了编程设计的辛苦,这么长的一段代码,敲写时难免会犯错。往往一个字母或者符号的错误,就需要用上几分钟的时间来查找。而且由于我们的实践经验还很浅薄,程序在测试时也出现了几次bug或者某些功能无法实现,我们只能重新返回到对应的代码段,通过查询书本和网络来一一排除错误。虽然这次的程序设计时间有点赶、过程有点枯燥,但当我们看着我们的作品日趋完善,需要的功能一一在屏幕上实现时,一切的辛苦仿佛都不算什么了。通过双手把冰冷的字母和字符变成智能的程序,这种成就感是难以形容的,这次我们终于领悟到了编程的魅力。在测试程序的过程里面,我们从实验现象中分析归纳问题的原因,根据已有的知识水平来推测实验再分析实验,在这个理论联系实际过程,我们的动手能力变得更加有目的性,问题解决的速率更加高。任何事情都需要实验,再高深的理论,如果不能融入实际,则没有任何实际意义,面向对象的c语言也不例外。在今后的学习之中,我们也会吸取教训,总结经验,刻苦钻研。 Ticket management systemAbstract:In modern society, the computer has entered into every field of social life. Computers and the Internet have is closely related to Peoples Daily work, study and life, human society is now undergoing a period of historical leap by highly industrialized era towards computer network era. As a new century of college students, we should stand in the forefront of The Times development, master modern science and technology knowledge, adjust their knowledge structure and ability structure, consolidate their knowledge through practice. In the course design practice, our group chose this subject ticket management system. Flight ticket management system includes information input, browse and query, the ticket and refund, and other functions.With the development of computer technology, visual programming technology has more and more important role. Visual c + + 6.0 is a powerful and effective Visual programming tools. This software is written in Visual c + + 6.0 environment. For us, with the deepening of the study, has been generally master the Visual c + + 6.0 programming environment. Order to upgrade our programming ability to a higher level, to deepen the object-oriented programming thinking and problem solving skills, on the occasion of the curriculum design during the week, based on Visual c + + 6.0 environment of software development, statistical software for a start, start with characters on the Visual c + + 6.0 environment and recall and familiar with object-oriented programming, made on the basis of a staff training system software development carried out more smoothly. This document is described in detail the ticket management system based on Visual c + + 6.0 environment design process and the program source code.Programs are written in the process of using recursive subroutine call and header file contains programming method, the ticket management system development goal is to make we use object-oriented way of thinking and problem solving skills, and can take the use of an array of characters, the use of character pointer, database design, and documentation and use of C language syntax.The important thought of design procedure is modular processing, from top to bottom, gradually fine; Analysis the problem of a complex multiple sub problems, and then use function modular small problems to solve.keywords : subprogram、modularity、programming idea、structural body参考文献 1. 朱鸣华 刘旭麟 杨徽等.C语言程序设计教程.机械工业出版社.2011.7.第二版.
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 压缩资料 > 基础医学


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!