200704033014简单的汽车站售票系统

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

printf("%3s %10s %10s %8d %8d\n",buses[i].number,buses[i].starttime,buses[i].zai keliang,buses[i].sold,buses[i].remainder); } }
void sell() { int i,m; char b[15];
{printf("cannot open infile\n");
exit(0);
}
for(i=0;i<N;i++)
fwrite(&buses[i],sizeof(buses),1,fp);
/*fwrite—把数据项写到指定文件*/
fclose(fp);
/*fclose—文件关闭*/
printf("\n");
显示所有车次的售票情况
输入车次 scanf(“%s”,a)
输入买票数目 scanf(“%d”,&m)
for(i=0;i<K;i++)
if(strcmp(ST[i].NO,a)==0)

判断车次是否符合

时间是否符合


输出购买情况
再次显示售票情况
储存函数 save()
图 2 售票函数 sell 结构图
上面的程序中,指定了一个结构体 struct buses,它向编译系统生命这是一个“结
构体类型,它包括 number,starttime,zaikeliang,sold,remainder”等不同类型的数
据项。
(2)void save()
/*存储函数*/
{
FILE *fp;
int i;
if((fp=fopen("myfile.txt","w+"))==NULL) /*fopen—文件打开*/
50
0
2
09:30
40
0
3
13:00
40
0
4
16:00
40
0
5
20:00
50
0
请你为售票员开发一个小程序,以完成每天的“沈阳→植物园”的售票
业务。要求如下:
(1)售票: 应能够控制每人只允许买 5 张票,且不能购买已经发车的 车票(取当前时间函数由老师提供)。
(2)退票: 已经发车的车票不能退(取当前时间函数由老师提供)。
二、程序流程图
1、程序总体结构图
功能菜单
真 输入 1

真 输入 2
假wenku.baidu.com
search
输入 3
查寻 local 真

times
函数
真 输入 4

当地 sell
时间
输入 5
买票 return 真

函数 退票 save
输入 6
函数 储存 真

函数 exit
图 1 程序总体结构图
沈阳航院设计用纸
2、售票函数 sell()结构图
4、储存函数 save()结构图
fp=fopen(“myfile.txt”, "w+"))==NULL


文件无法读取
for(i=0;i<K;i++)
返回 return
输入数据
关闭文件 储存成功
图 4 储存函数 save 结构图
沈阳航院设计用纸
三、核心技术的实现说明及相应程序段
下面对程序做以详细介绍:
/*定义结构体*/
int menu() { int c;
printf("1.查询显示当前售票情况.\n"); printf("2.显示当前时间.\n");
/*定义菜单*/
沈阳航院设计用纸
printf("3.买票.\n"); printf("4.退票.\n"); printf("5.储存数据.\n"); printf("6.退出售票系统.\n"); do{ printf("\n 请选择(1-6)继续:"); scanf("%d",&c); }while(c<1||c>6); return (c); }
(3)可以随时显示售票现状,并以文件(myfile.txt)形式保存当天各个
车次的售票情况。
三、课程设计要求
1. 程序质量:
贯彻结构化的程序设计思想。 用户界面友好,功能明确,操作方便。 用户界面中的菜单至少应包括“售票”、“退票”、“显示当前售票情
况”、“保存当天数据”、“退出”5 项。 代码应适当缩进,并给出必要的注释,以增强程序的可读性。
{"02","09:30","40",0,40},
{"03","13:00","40",0,40},
{"04","16:00","40",0,40},
{"05","20:00","50",0,50}
};
关于结构体:在我的程序中需要使用结构体,将不同类型的数据(车次,
发车时间,载客量,售出票和剩余车票)组合成一个有机的整体,以便于引用
printf("||||***存储成功!***||||\n");
printf(" 请选择相应的数字进行下一步操作!\n");
沈阳航院设计用纸
} 用 fopen()函数来实现打开文件,fopen 函数的调用方式通常为: FILE *fp; fp=fopen(文件名,使用文件方式); 如上面的程序中:fp=fopen("myfile.txt","w+"); 在打开文件是,通知编译系统以下 3 个信息:(1)要打开的文件名,(2)
(1)struct buses
/*定义结构体*/
{
char number[10];
/*各结构体名称*/
char starttime[20];
char zaikeliang[20];
int sold;
int remainder;
}buses[N]={{"01","06:40","50",0,50},
/*对结构体输入数据*/
{"02","09:30","40",0,40}, {"03","13:00","40",0,40}, {"04","16:00","40",0,40}, {"05","20:00","50",0,50} }; /*声明各函数*/ void search(); void save(); void sell(); void localtimes(); void tuipiao(); int menu();
/*退票*/
{
沈阳航院设计用纸
printf("\n\n***-------当前情况--------******\n"); printf("班次 发车时间 载客量 已售票数 余票 \n"); for(i=0;i<N;i++) printf("%3s %10s %10s %8d %8d\n",buses[i].number,buses[i].starttime,buses[i].zai keliang,buses[i].sold,buses[i].remainder); } printf("请输入您要退的班次(格式如:02):\n"); scanf("%s",b); printf("请输入您要退的张数(格式如:3):\n"); scanf("%d",&m); for(i=0;i<N;i++) if(strcmp(buses[i].number,b)==0) if(buses[i].sold-m>=0)
五、个人总结
通过一周的C语言课设,我进一步熟悉了C语言的一些函数 的使用,能够通过看书懂得用文件的打开和关闭函数。另外,
也学会用结构体解决一些分块儿完成的题目要求。也知道了一
些以前都不知道的函数,可以说是拓宽了我的知识面。虽然在
这期间遇到了一些问题(比如,不会使用文件指针等),不过,
在上网查询和请教同学之后都解决了,总的来说在这一周的时
buses[i].remainder=buses[i].remainder-m;
printf("***---购买成功---***");
{
printf("\n\n***-------售票情况--------******\n");
printf("班次 发车时间 载客量 已售票数 余票 \n");
for(i=0;i<N;i++)
/*售票*/
{ int i; { printf("\n\n***-------售票情况--------******\n");
沈阳航院设计用纸
printf("班次 发车时间 载客量 已售票数 余票 \n"); for(i=0;i<N;i++) printf("%3s %10s %10s %8d %8d\n",buses[i].number,buses[i].starttime,buses[i].zai keliang,buses[i].sold,buses[i].remainder); } } printf("请输入您要购买的班次(格式如:02):\n");
沈阳航院设计用纸
3、退票函数 leave()结构图
显示当前售票情况
输入车次 scanf(“%s”,a)
输入退票数目 scanf(“%d”,&m) for(i=0;i<K;i++)
if(strcmp(ST[i].NO,a)==0)能否退票

判断车次是否符合

退票成功
输入错误
显示退票结果
储存函数 save() 图 3 退票函数 leave 结构图
printf("%3s %10s %10s %8d %8d\n",buses[i].number,buses[i].starttime,buses[i].zai
keliang,buses[i].sold,buses[i].remainder);
} save(); } }
void tuipiao() { int i,m; char b[15];
沈阳航院设计用纸
一、需求分析
通过对任务书内容的详细了解和深入的思考得知,整个程 序可以分为三大部分.定义变量,输入数据,输出数据。在整个程 序的执行过程当中,随处都体现了方便乘客购票、退票、查询售 票与车次的思想,并且结合结构体与文件的读写来储存数据,以 实现售票的数据化管理。用户界面友好,功能明确,操作方便。 信息表达清楚明确。
间里我也学到了不少的东西。
沈阳航院设计用纸
六、源程序
#include "stdio.h" #include "stdlib.h" #include "string.h" #include "conio.h" #include "time.h" #define N 5
struct buses {
char number[10]; char starttime[20]; char zaikeliang[20]; int sold; int remainder; }buses[N]={{"01","06:40","50",0,50},
1. 定义变量: 声明结构体,定义变量,为变量赋初值,为下一步工作
做好准备。 2.输入数据:
用户可以按自己意愿输入车次进行查询,进而根据 售票情况进行自主的选择够票。 3.输出数据:
根据用户的需要输出车次、时间、售票情况等数据,以 方便用户了解情况。程序结束后还有退出功能,增加了程序 的可操控性。
沈阳航院设计用纸
void search()
/*查询函数*/
{int i;printf("请输入要查询的班次\n");
scanf("%d",&i);
i=i-1;
{
printf("\n\n***-------查询结果--------******\n");
printf("班次 发车时间 载客量 已售票数 余票 \n");
沈阳航空工业学院
课程设计
学 号_200704033014 班 级 _7403301_____ 姓 名 _李振达____ 指导教师 ___王晓岩_____
2009 年 3 月 6 日
沈阳航院设计用纸 沈阳航空工业学院
课程设计任务书
院系:航空宇航工程学院 专业:飞行器设计与工程 班级: 7403301
使用文件的方式(这里为写);(3)让哪一个指针变量指向被打开的文件。常用 下面的方式打开一个文件:if((fp=fopen("myfile.txt","w+"))==NULL)
{printf("cannot open infile\n"); exit(0); }
四、参考文献
C 程序设计(第三版)--谭浩强 著 清华大学出版社
scanf("%s",b);
printf("请输入您要购买的票数(格式如:5):\n");
scanf("%d",&m);
for(i=0;i<N;i++)
if(strcmp(buses[i].number,b)==0)
/*判断班次是否符合*/
{
buses[i].sold=buses[i].sold+m;
学号:200704033014
题目:简单的汽车站售票系统
一、课程设计时间
2008~09 第 2 学期第 1 周,共计 1 周,20 学时。
二、课程设计内容
用 C 语言编写程序完成以下任务:
每天“沈阳→植物园”有 5 个班次的汽车(假设),具体的数据如下: 班次 发车时间 载客量 已售票数
1
06:40
2. 课程设计说明书:
课程结束后,上交课程设计说明书和源程序。课程设计说明书的格
式和内容参见提供的模板。
沈阳航院设计用纸
四、指导教师和学生签字
指导教师:________ 学生签名:________
五、说明书成绩 六、教师评语
沈阳航院设计用纸
目录
一、需求分析 。。。。。。。。。。。。。。。。。。。。。。。1 二、程序流程图 。。。。。。。。。。。。。。。。。。。。。。。2 三、核心技术的相关说明及相应程序段。。。。5 四、参考文献 。。。。。。。。。。。。。。。。。。。。。。。。。6 五、个人总结 。。。。。。。。。。。。。。。。。。。。。。。。。6 六、源程序 。。。。。。。。。。。。。。。。。。。。。。。。。。。7
相关文档
最新文档