ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:118.37KB ,
资源ID:11396105      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-11396105.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言课程设计报告34661497.docx)为本站会员(b****2)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

C语言课程设计报告34661497.docx

1、C语言课程设计报告34661497(此文档为word格式,下载后您可任意编辑修改!)二一二一一 学年第 二 学期信息科学与工程学院课程设计报告书课程名称: C语言课程设计 班 级: 自动化1006 学 号: 姓 名: 孙 逊 指导教师: 尉 宇 二一一 年 九 月目 录1 题目及要求 1 1.1题目内容 31.2设计要求 31.3设计报告及书写内容要求 42 程序分设计说明 52.1概要设计 52.2流程图 52.3详细设计 63 调试与测试 83.1相关界面显示 83.2数据测试103.3问题及思考113.4指导老师的建议13 4 总结145 附件:源程序代码151. 题目及要求1.1 题目

2、内容题目一:汽车售票系统任务:自学C语言中相关知识,设计出汽车售票系统。要求如下所述:每天“武汉火车站天河机场”有5个班次的汽车(假设),具体的数据格式如下:班次 发车时间 载客量 已售票数1 06:40 50 02 09:30 40 03 12:00 40 04 14:30 40 05 16:00 50 0为售票员开发一个小程序,以完成每天的“火车站植物园”的售票业务。要求如下:1. 能够售票和退票。以文件(myfile.txt)的形式保存当天各个车次的售退票情况。 售票功能当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自动更新已售票人数。 退票功能退票时,输入退票的班

3、次,当本班车未发出时才能退票,自动更新已售票人数。 查询显示功能可以随时显示当前售票现状(如:班次 发车时间 载客量 已售票数 余票等信息)。2. 用户界面中的菜单至少应包括“售票”、“退票”、“显示当前售票情况”、“保存当天数据”、“退出”5项。可适当增加其他附加功能。1.2设计要求 为了保证所有的数据可以长期被使用,要求程序能将相关数据存储在外部数据文件中,具体数据格式和文件名、路径等自定; 根据所设计的算法,定义相应函数分别实现系统的各子功能模块,同时由主程序提供友好的用户界面,使用户可通过选择主菜单来调用课程设计中要求完成的各个功能模块,子程序执行完后可返回到主菜单,继续选择其他功能执

4、行。源程序要求书写规范,结构清晰。重点函数的重点变量,重点功能部分均要求给出清晰的程序注释。 程序编译、链接成功后,自己设计实现程序功能的一组或多组测试数据,并严格按照此测试数据进行测试,然后分析测试结果。如果程序不能正常运行或结果不正确,则需对程序进行单步调试,在调试过程中认真查找算法实现中存在的问题,并加以分析和1.3设计报告及书写内容要求 课程设计和上机调试任务完成之后,每位同学必须独立书写一份课程设计报告,注意:不得抄袭他人的报告(或给他人抄袭),一旦发现,成绩为零分。课程设计报告的内容应包括以下五个部分:1) 需求分析:包括设计题目、设计要求以及系统功能需求分析;2) 概要设计:包括

5、系统总体设计框架和系统功能模块图;3) 详细设计:包括主要功能模块的算法设计思路以及对应的工作流程图;4) 主要源程序代码:完整源程序清单及关键注释;5) 调试分析过程描述:包括测试数据、测试输出结果,以及对程序调试过程中存在问题的思考;6) 课程设计小结:包括课程设计过程中的学习体会与收获、对C语言和本课程设计的认识以及自己的建议等内容。2.程序分析及设计说明2.1概要设计 初看题目不难发现这是一个主函数调用三个子函数从而实现售票、退票、查询的功能,调用完毕返回主函数由此可以确定大致的框架。设计之初,根据题目要求需要用到结构体,函数、指针文件等相关知识,事先对其进行回顾。 设计之时,应该明确

6、:是用结构体去存放同一班车的相关信息;用“while(1)”实现程序的不断循环,即相关售退票函数结束可以回到主函数实现下一以为顾客的操作而不出现程序结束的现象;用switch case实现不同的函数入口。 这样一个大致的模型就已经构建。2.2流程图2.3详细设计主程序关键部位1. 由于车次的各个信息,以及系统时间变量在许多子函数有调用,所以对于各车次的结构体变量,系统时间变量要再最前面以全局变量的形式定义,以便作用域的范围满足程序需求。2. 对于主菜单下的选择1,2,3都是通过调用子函数实现,而选择0是退出程序,所以在用switch之前就应该判断输入内容是否为0,是,则直接进入退出。当然这应该

7、包含在while(1) 语句内。3. 如果是选择售票或退票应先提示选择车次,并以参数的形式带入函数。4. 对于主函数和子函数中篇幅比较长而且需要多次使用的打印语句,判断语句应该在库函数的引用后进行宏定义,比如说主菜单的输出,车次信息的打印,系统时间与发车时间的比较。5. 系统时间的获取运用“curr =time(NULL);date =localtime(&curr);”语句子程序关键部位1. 每个子程序都需要清屏处理system(cls);使得用户产生由主菜单点击进入选项的感觉,增强界面的友好性。2. 子程序中出现的新界面在完成相关售票,退票,查询后应该予以停留,方便用户确认信息,否者完成后

8、一闪而过回到主菜单,并不能确认是否已经成功完成操作。因此运用两次“getchar();”,达到屏幕停滞的效果,再按任意键返回。3. 在售票和退票的界面应该再次打出当前的各个车次信息,以便用户做出选择,并不是每个用户都知道要买什么车次的车子,这样也是为了增强了程序的友好性。辅助函数设计1. 对于主菜单【void menu()】、车次信息【表头void printheader(),内容void printdata()】、信息保存【void save()】等内容会在程序的许多部位出现,因此单独使用函数予以实现,使得程序更加清晰。2. 由于每次输入需要检查输入信息是否合格,如果不合格应该报错,并重新输

9、入,因此定义一个void wrong() 来输出按键错误信息。3.调试与测试3.1相关界面显示主界面售票界面退票界面查询界面(注:由于版面限制,在此只出现了部分情况的界面)3.2数据测试本次报告的内容为其中一次测试,测试时间13:41,其他不一一给出,由于涉及到系统时间问题所以每天需要分时段进行测试或是修改系统时间。(1) 售票系统 车次 发车时间 载客量 已售车票 测试结果1 06:40 50 0 超过时间无法购票2 09:30 40 0 超过时间无法购票3 12:00 40 0 超过时间无法购票4 14:30 40 3 可以购票(购3票)5 16:00 40 4 可以购票(购4票)(2)

10、退票系统车次 发车时间 载客量 已售车票 测试结果1 06:40 50 0 超过时间无法购票2 09:30 40 0 超过时间无法购票3 12:00 40 0 超过时间无法购票4 14:30 40 2 可以退票(退1票)5 16:00 40 3 可以退票(退1票)(3)查询系统正常输出3.3问题及思考问题一:系统时间的获取问题二:发车时间的打印问题问题三:发车时间与系统时间的比较问题四:屏幕停滞问题问题解决:1.系统时间的获取通过对于网上资料的查询,获得了系统时间的调用方式,先引用库函数tm_)=(q+c)-min)即先比较hour,再比较hour相同时min的大小。问题四:屏幕停滞问题 由于

11、知识的有限,对于很多功能知识了解大概,通过网上的查询,得知getchar()有停滞界面的功能。3.4指导老师的建议与改进指导老师在程序的调试过程中提到了,购票的连续性,也就是一位客户完成一张票的购买后可以重复购票,并给出了“封装函数”的建议。要想达到要求也就是要把sell()函数再次拆分,并且要想重复购票还要构造循环,直至输入项为0(代码中输入为0时退出当前界面,退回主界面)。4 总结 本次C语言课程设计从暑假就开始收集资料,学习相关知识,一些上课未涉及的内容也做了些了解和掌握,直至开学的第一周陆续完成。 在实验的设计的过程中出现了许多上课、作业中没有遇到过的问题,这就是理论与实践的区别,知道

12、知识却不能很好的运用,说明自己没有真正的掌握C语言,学习的只是皮毛,使我认识到了实践、动手编译的重要性。以下本次C语言课程设计的几点小结:(1) 通过上网学习和参阅参考资料陆续解决了系统时间的定义及调用、菜单形式界面的形成、屏幕停滞问题等问题。(2) 在编译的过程中大大提高了编程的逻辑性,在语言清晰、简洁方面有了较好的提高。在程序查错的过程中也学会了设置断点,分块检查,逐渐提高了判断错误的速度和准确性。(3) 通过在上课时间与老师的交流了解到了函数模块化的重要性。把程序的总目标分成一个个模块,提高清晰度和可读性。(4) 本次试验是个自主学习的机会,通过本次试验也增强了自己的信息获取能力和自学能

13、力。5 附件:源程序代码#includenum,(q+i)-,(q+i)-busload,(q+i)-sold#define END n #define STOP getchar();getchar();return;#define JUDGE (date-tm_)=(q+c)-min)*判断即时时间已大于发车时间*struct tm *date; *定义系统时间为全局变量*time_t curr;struct information *标记为information* int num; *车次* int ; *发车时间* int busload; *载客量* int sold; *已售车票*i

14、nf5= ,; *初始化结构体*FILE *k; *定义文件指针全局变量*void menu() *主菜单* system(cls); *清屏* cprintf(nnnn 公交车自动服务系统 nn); cprintf( * M e n u *nn); cprintf( * 1.购票 *nn); cprintf( * 2.退票 *nn); cprintf( * 3.查询 *nn); cprintf( * 0.退出 *nn); cprintf( *nn);void wrong() *输出按键错误信息*printf(n*Error:input );getchar();void save(struct

15、 information *q) *保存当前信息* k=fopen(file.txt,w+); *打开文件* if(fwrite(q,sizeof(struct information),1,k)!=1) *记录当日数据* printf(file write errorn) ; *报错* fclose(k); *关闭文件* printf(n=已成功保存当前信息!);void printheader() *格式化输出表头* printf(HEADER1); printf(HEADER2); printf(HEADER3);void printdata(struct information *q)

16、 *格式化输出表中数据* int i; for(i=0;isold,j=(q+c)-busload; if(f=j) *判断已售量完* printf(n=对 不 起 ,此 票 已 售 完n); STOP else if(JUDGE) printf(n=对 不 起,此 班 车 已 发 车 , 无 法 售 票n ); STOP else int d; printf(n=您 选 择 的 是 第 % d车,(c+1); printf(nn=确 认 购 票 请 按 1,取 消 请 按 0 , 请 输 入:); scanf(%d,&d); while(1) if(d=1) (q+c)-sold)+; *已

17、售量加一* printf(n 完成购票!); break; else if(d=0) *取消售票* printf(已经取消售票); break; else wrong(); STOP void returnson(int c,struct information *q) c-; if(JUDGE) *判断当时时间是否已经大于发车时间* printf(n=对 不 起,此 班 车 已 发 出 ,无 法 退 票n); STOP else if(q+c)-sold=0) printf(n=对 不 起, 售 票 量 为 0 ,无 法 退 票n); STOP else *退票* int d; printf

18、(n=您 选 择 的 是 第 % d车,(c+1); printf(nn=确 认 退 票 请 按 1,取 消 请 按 0 , 请 输 入:); scanf(%d,&d); if(d) (q+c)-sold)-; *已售量减一* printf( 完成退票!n); STOPvoid sell(struct information *q) *售票函数* int bus_num; while(1) system(cls); printheader(); printdata(q); printf(nn); while(1) printf(请选择车次(15) 退出选择“0” 请输入:); scanf(%d

19、,&bus_num); switch(bus_num) *子函数入口* case 0 :break; case 1 :sellson(1,q);break; case 2 :sellson(2,q);break; case 3 :sellson(3,q);break; case 4 :sellson(4,q);break; case 5 :sellson(5,q);break; default : wrong();continue; if(bus_num=0) return; printf(若继续购票,); void returns(struct information *q) *退票函数*

20、curr =time(NULL); date =localtime(&curr); *获取即时系统时间* int bus_num; while(1) system(cls); printheader(); printdata(q); printf(nn); while(1) printf(nn 请选择车次(15) 选择“0”退出 请输入:); scanf(%d,&bus_num); switch(bus_num) *子函数入口* case 0 :break; case 1 :returnson(1,q);break; case 2 :returnson(2,q);break; case 3 :

21、returnson(3,q);break; case 4 :returnson(4,q);break; case 5 :returnson(5,q);break; default : wrong();continue; if(bus_num=0) return; printf(若继续购票,); void inquire(struct information *q) *查询函数* system(cls); printheader(); *格式化输出表头* printdata(q); *格式化输出表中数据* printf(nn press any key to return to the menu

22、); STOP void main() *主菜单* struct information *p; *指针域* int select; char ch; *ch用来保存y,n* p=inf; k=fopen(E:file.txt,ab+); *以追加方式打开一个二进制文件,可读可写,若此文件不存在,会创建此文件* if(k=NULL) printf(n=can not open file!n); exit(0); while(1) system(cls); menu(); printf( 请 输 入 ( 0 3 ) : ); scanf(%d,&select); if(select=0) *退出

23、系统* getchar(); printf(n=Whether save the modified record to file?(yn):); scanf(%c,&ch); if(ch=y|ch=Y) save(p); printf(n=thank you for useness! ); getchar(); break; switch(select) *判断并由相应的函数处理* case 1:sell(p);break; *购票* case 2:returns(p);break; *退票* case 3:inquire(p);break; *查询* default: wrong();getchar();break; *按键有误,必须为数值0-3* curr =time(NULL); date =localtime(&curr); *获取即时系统时间* if(date-tm_hour)=16) *判断是否已经过16点* save(p);

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2