湖北工业大学
工程技术学院
课程设计报告书
课程名称: C语言课程设计
班 级: 物联网一班
小组成员: 范立恒、陈根、聂俊豪、麦灿文、黄文康
组 长: 范立恒
指导教师: 楚惟善
二○一三 年 六 月
1 课程题目及要求及要求
题目一:火车售票系统
任务:结合C语言中相关知识,设计出火车售票系统。
1 录入北京西站车次信息;
2 旅客按车次买票;
3 统计某日火车票销售金额。
程序要求:
⏹贯彻结构化的程序设计思想。
⏹用户界面友好,功能明确,操作方便。
⏹用户界面中的菜单至少应包括“车次信息录入”、“旅客买票”、“统计某 日销售 金额”、“退 出”4项。
⏹代码应适当缩进,并给出必要的注释,以增强程序的可读性
⏹为了保证所有的数据可以长期被使用,要求程序能将相关数据存储在外部数据文件中,具
体数据格式和文件名、路径等自定;
⏹根据所设计的算法,定义相应函数分别实现系统的各子功能模块,同时由主程序提供友好的用户界面,使用户可通过选择主菜单来调用课程设计中要求完成的各个功能模块,子程序执行完后可返回到主菜单,继续选择其他功能执行。源程序要求书写规范,结构清晰。重点函数的重点变量,重点功能部分均要求给出清晰的程序注释。
⏹程序编译、链接成功后,自己设计实现程序功能的一组或多组测试数据,并严格按照此测试数据进行测试,然后分析测试结果。如果程序不能正常运行或结果不正确,则需对程序进行单步调试,在调试过程中认真查算法实现中存在的问题,并加以分析和
2 程序分设计说明
经过对程序设计题目的分析可知,整个程序的设计实现大致分为八个模块,每一个模块对应一个函数。在这些函数当中,添加车次数据函数,售票函数,查询总额函数的实现严格按照题目的要求,而显示时间函数和显示车次函数属于附加功能。读取文件函数和保存信息函数对其它函数的实现起辅助作用,主函数及菜单函数控制程序的整体运行。
1. 添加车次函数 主要实现程序最初运行时车次的录入;
fopen函数失败2. 旅客买票函数 实现的功能是按照旅客所需车次几所购买车票的数目;
3. 查询车票总额 按照题目的具体要求实现的是总额的查询;
4. 显示函数 实现的是显示目前所有的有效车次信息。
除上面介绍的功能之外,程序还具有显示当地时间,以及退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。
每一个车次都包含车次、日期,始发、终点以及所受票数和所需费用,在程序当中,将车次类型定义为结构体类型,添加的车次信息直接写入E盘的文件中,其它函数每次对车次记录的访问,其数据来源都是文件,这样做不但可以保证的一致性,而且可以对车次数据进行永久保存,保证每次运行程序都可以采用原来的数据。
3程序流程图
1. 程序总体结构图
图1程序总体结构图
2. 具体功能框图
(1)添加函数add
图2 添加函数
(2)读取函数reads
图3读取
(3)删除学生记录函数del
图4 删除学生记录
(4)按总分排序函数sort
图5按总分排序
4.程序清单
本程序主要由九个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其它函数来
实现要求的所有功能。在这些函数当中,添加函数、删除数据函数和排序函数是程序中较为核心的部分,下面分别进行说明。
1.录入车次信息函数
录入车次信息,首先由程序创建一个新文件,并将录入的车次信息写入该文件(e:\\)当中。具体的程序段如下:
if((fp=fopen("e:\\","a"))==NULL) //如果文件已经存在,可以追加车次信息
{
if((fp=fopen("e:\\","w"))==NULL) // 文件不存在时,创建新文件,输入车次信息
{
printf("文件打开失败!\n");
return;
}
}
printf("请输入要车次的数量,按回车键确认:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
printf("\n请输入第%d个车的车次,日期,始发,终点,用空格分开,并按回车键确认:\n",i);
scanf("%d%d%s%s",&tra.num,&tra.date,tra.);
printf("\n请输入第%d个卖出的数量,车次所需的费用,用空格分开,并按回车键确认:\n",i);
scanf("%d%f",&tra.maipiao,&tra.tickeprice);
fprintf(fp,"%d %d %s %s %d %f\n",tra.num,tra.date,tra.,tra.maipiao,tra.tickeprice);
}
fclose(fp);
}
2.旅客买票函数
对于买票,这部分程序然调用了reads函数,首先应输入旅客所买车次,然用if函数进行比较,如果成立就进行一下售票以及金额运算,最后调用save函数进行更新。
具体程序如下:
n=reads(tra);
printf("\n请输入待查询的车次号,按回车键确认:\n");
scanf("%d",&num);
for(i=0;i<n;i++)
if(num==tra[i].num) break;
if(i>=n)
{
printf("没有到该车次信息!\n");
return;
}
else
printf("\n请输入所买票数,按回车键确认:\n");
scanf("%d",&j);
tra[i].maipiao=tra[i].maipiao+j;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论