2023年学生管理系统
客车管理系统
2023
学生
管理
系统
客车
C程序设计
[题目编号] C02
[题目名称] 客车票务管理
[设计目的]
1、熟悉结构体数组定义、使用、输入、输出等根本操作
2、掌握文件的根本操作
[题目内容]
假设每天从A市开往B市的客车有假设干个班次,数据格式如下:
班次 发车时间 载客量 已售票数
1 6:50 50 0
2 9:00 40 0
3 11:20 40 0
4 13:30 30 0
5 16:40 40 0
请按以下要求开发一个程序,完成每天的售票业务。
1.设计客车班次数据的存储格式。
2.实现键盘录入或从文件导入客车班次信息。
3.实现售票功能〔某个班次已经过了开车时间,或已无剩票,那么该班次今天不再售票〕。
4.显示当前售票情况。
5.保存当天数据。
6.设计简单的菜单界面。
7.在报告中画出程序流程图,说明程序设计的算法,附完整程序代码。
8.在报告中说明程序设计过程中出现的问题、解决方法及编程小结或体会。
客车票务管理程序:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct ticket
{
char number[4];
char time[10];
int otal;
int ver;
}tic[]={{"1","6:50",50,0},{"2","9:00",40,0},{"3","11:20",40,0},{"4","13:30",30,0},{"5","16:40",40,0}};
int N=5;
void input()//输入售车票的信息 //
{
int i;
char xp="ticket.txt";
FILE xfp;
if ((fp=fopen("ticket.txt","w"))==NULL)
{ printf("cannot Open file\n");
exit(0);
}
printf("从A到B班次 时间 总票数 已售票数:\n");
for(i=0;i<N;i++)
{
getchar();
printf("%s\t%s\t%d\t%d",tic[i].number,tic[i].time,tic[i].total,tic[i].over);
printf("\n");
}
for(i=0;i<N;i++)
fread(&tic[i],sizeof(struct ticket),1,fp);
fclose(fp);
}
void seek()//查寻售票的信息//
{
int i,flag;
char s[4];
printf("请输入查询的班次:\n");
scanf("%s",s);
for(i=0;i<N;i++)
if(strcmp(tic[i].number,s)==0)
{
flag=1;
printf("该班次的信息:\n");
printf("班次 发车时间 总票数 已售票\n");
printf("%s\t%s\t%d\t%d",tic[i].number,tic[i].time,tic[i].total,tic[i].over);
}
if(flag==0)printf("无此班次!\n");
}
void buy()//乘客售票//
{
int i,flag=0,n,b;
char s[4];
printf("请输入所购的班次:\n");
scanf("%s",&s);
for(i=0;i<N;i++)
if(strcmp(tic[i].number,s)==0)
{
flag=1;
b=tic[i].total-tic[i].over;
printf("剩余票数:\n");
printf("%d\n",b);
if(b==0)
{ printf("请重新选择!\n");
break;
}
printf("请选择购置的票数:\n");
scanf("%d",&n);
if(n>b)
{printf("选择票数超出,请重新输入!");
break;
}
else
{
printf(" 购置成功!祝您旅途愉快! \n\n");
printf("xxx以下是您所买票的信息xxx\n\n");
printf("班次%d 发车时间%s 购置票数 %d",b,tic[i].time,n);
}
tic[i].over+=n;break;
}
if(flag==0)printf("无此班次!请重新选择:\n");
}
void display()//显示当前售票情况//
{ int i;
printf("当前售票情况:\n");
printf("班次 发车时间 总票数 已售票\n");
for(i=0;i<N;i++)
printf("%s\t%s\t%d\t%d\n",tic[i].number,tic[i].time,tic[i].total,tic[i].over);
}
void save()//保存修改//
{ int i,flag=0;
FILE xfp;
fp=fopen("ticket.txt","w");
for(i=0;i<N;i++)
if(fwrite(&tic[i],sizeof(struct ticket),1,fp)!=1)
printf("file write error!");
fclose(fp);
printf("保存成功!");
}
void main()
{
int select,k;
while (k=1)
{
printf("\nxxxxxx客车售票管理菜单xxxxxx\n");
printf("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n");
printf(" xx1.显示车票信息xx \n");
printf(" xx2.查询车票信息xx \n");
printf(" xx3.乘客车票购置xx \n");
printf(" xx4.显示当前信息xx \n");
printf(" xx5.保存售票信息xx \n");
printf(" xx0.退出售票信息xx \n");
printf("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n");
scanf("%d",&select);
getchar();
switch(select)
{
case 1:input();break;
case 2:seek();break;
case 3:buy();break;
case 4:display();break;
case 5:save();break;
case 0:return;
default:printf("输入错误请重新输入!\n");
}
}
}
编程的问题和体会:
1. 没有熟练的掌握结构体定义和应用等,文件的输入和输出。文件的翻开与保存,以及指针的应用。
2. 编程序太少,没有对大一点的程序进行练习,缺少经验。
3. 欠缺程序总体结构的思考。
4. 以后对程序多进行练习,和对结构体,指针,文件多看,多练习,掌握这方面的知识。
客车票务管理程序:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct ticket
{
char number[4];
char time[10];
int otal;
int ver;
}tic[]={{"1","6:50",50,0},{"2","9:00",40,0},{"3","11:20",40,0},{"4","13:30",30,0},{"5","16:40",40,0}};
int N=5;
void input()//输入售车票的信息 //
{
int i;
char xp="ticket.txt";
FILE xfp;
if ((fp=fopen("ticket.txt","w"))==NULL)
{ printf("cannot Open file\n");
exit(0);
}
printf("从A到B班次 时间 总票数 已售票数:\n");
for(i=0;i<N;i++)
{
getchar();
printf("%s\t%s\t%d\t%d",tic[i].number,tic[i].time,tic[i].total,tic[i].over);
printf("\n");
}
for(i=0;i<N;i++)
fread(&tic[i],sizeof(struct ticket),1,fp);
fclose(fp);
}
void seek()//查寻售票的信息//
{
int i,flag;
char s[4];
printf("请输入查询的班次:\n");
scanf("%s",s);
for(i=0;i<N;i++)
if(strcmp(tic[i].number,s)==0)
{
flag=1;
printf("该班次的信息:\n");
printf("班次 发车时间 总票数 已售票\n");
printf("%s\t%s\t%d\t%d",tic[i].number,tic[i].time,tic[i].total,tic[i].over);
}
if(flag==0)printf("无此班次!\n");
}
void buy()//乘客售票//
{
int i,flag=0,n,b;
char s[4];
printf("请输入所购的班次:\n");
scanf("%s",&s);
for(i=0;i<N;i++)
if(strcmp(tic[i].number,s)==0)
{
flag=1;
b=tic[i].total-tic[i].over;
printf("剩余票数:\n");
printf("%d\n",b);
if(b==0)
{ printf("请重新选择!\n");
break;
}
printf("请选择购置的票数:\n");
scanf("%d",&n);
if(n>b)
{printf("选择票数超出,请重