课程设计报告-车票管理系统

更新时间:2023-05-20 21:45:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

C语言课程设计 车票管理系统

1

课程设计报告

(C语言程序设计)

题目 车票信息管理系统

的设计与实现

二级学院 数学与统计 专 业 信息与计算科学

班 级 112010102 学生姓名 郭双红

学 号 11201010209 指导教师 陈媛 时 间

20130619

C语言课程设计 车票管理系统

1 需求分析

1.1 课程设计题目

要求设计并实现一个车票销售管理系统,系统实现以下功能。 (1) 系统以菜单方式工作:要求界面清晰,友好,美观,易用。 (2) 车次信息导入功能:要求可从磁盘文件导入车次信息。

(3) 查询功能:可按班车号、起点站或终点站查找班车信息,并将查询结果输出。 (4) 售票功能:只有当某班车已定票人数小于额定载量,且当前系统时间小于发车时间

才能售票。售票显示收费信息;售票后更新已定票人数,并实现信息存盘。

(5) 退票功能:输入退票的班次,当本班车未发出时才能退票。退票后自动更新已定票

人数,并实现信息存盘。

(6) 信息浏览功能:能输出所有班车的信息;要求输出格式清晰、美观。 (7) 信息修改:要求能修改某一指定班次的信息,并在修改后将信息存盘。

1.2 系统功能需求

(1) 系统以菜单方式工作:要求界面清晰,友好,美观,易用。 (2) 车次信息导入功能:要求可从磁盘文件导入车次信息。

(3) 查询功能:可按班车号、起点站或终点站查找班车信息,并将查询结果输出。 (4) 售票功能:只有当某班车已定票人数小于额定载量,且当前系统时间小于发车时间

才能售票。售票显示收费信息;售票后更新已定票人数,并实现信息存盘。

(5) 退票功能:输入退票的班次,当本班车未发出时才能退票。退票后自动更新已定票

人数,并实现信息存盘。

(6) 信息浏览功能:能输出所有班车的信息;要求输出格式清晰、美观。 (7) 信息修改:要求能修改某一指定班次的信息,并在修改后将信息存盘。

2 系统设计

2.1 功能模块图

本系统的功能模块图如图2-1所示。

C语言课程设计 车票管理系统

图2-1 系统功能模块图

2.2 数据定义

本系统的数据可采用结构数组来处理。可必要的设置全局变量。因此本系统的主要数据定义如下:

struct Train_Ticket {

char cn[15]; //车量班次 char lp[15]; //left place 起点 char ap[15]; //arrive place 终点 char lt[15]; //left time 发车时间 char rt[15]; //running time 行车时间 float price; // 票价

int rl; //Rated load 额定载量

C语言课程设计 车票管理系统

int bn; //booking number 已定票人数 }T[N];

int n=0,i=0;// 全局变量

2.3 关键技术分析

⑴ 在程序开始运行时,应调用自定义的INPUT()函数,将所有需要的数据导入到结构数组中,然后保存。

⑵ 调用load()函数,从磁盘导入车票信息。由于第一次应用INPUT()函数磁盘中已有数据,因此不必要再进行重新导入,所以在INPUT()函数中先询问是否重新导入,然后再进入主菜单,或者在调用一次后,以后运行时不再调用。

⑶ .买票和退票都涉及到时间的问题,这源于要比较发车时间与当前的时间,判断这班车到底有没有发车,和能不能订票与退票,这时用了一个时间函数,输出了当前的时间,但那边有年月日,不好进行提取和比较,于是采用输出了时间,然后看着那个时间手动的提取。

⑷ 系统中应编写存盘函数save(),在进行买票或者退票功能后都需要调用save()函数进行数据的更新。

⑸ 采用循环结构生成主菜单,在数据输入时应该有清晰的提示信息,以方便用户的操作,对输出数据进行格式控制,以使界面更加美观,清晰。

3 系统实现

3.1 功能模块设计

根据系统分析的结论,将本系统需完成的功能模块划分如下: #include<stdio.h> #include<stdlib.h> #include<string.h> #include<conio.h> #include<time.h> #define N 4

void main_menu(); //主菜单模块

void load(); //导入信息 void INPUT(); //输入模块 void scan(); //浏览模块 void tuipiao(); //退票 void buy(); //买票 void change(); //修改函数

C语言课程设计 车票管理系统

void save(); //保存函数 void prna(int pos); //打印记录 void searchmenu(); //查询菜单函数 int s_cn(); //按班次查询 int s_lp(); //按起点站查询 int s_ap(); //按终点站查询 struct Train_Ticket {

char cn[15]; //车量班次 char lp[15]; //left place 起点 char ap[15]; //arrive place 终点 char lt[15]; //left time 发车时间 char rt[15]; //running time 行车时间 int price; // 票价

int rl; //Rated load 额定载量 int bn; //booking number 已定票人数 }T[N];

int n=0,i=0;// 全局变量

3.2 源代码

//******************************************************** //主菜单

//******************************************************** void main_menu() {

system("cls"); system("color E");

printf("**********************************************************************\n");

printf("*************************欢迎来到车票查询系统

*************************");

printf("\n");

C语言课程设计 车票管理系统

printf("| ★★★ 1: 进入班次浏览 ★★★

|\n");

printf("| ★★★ 2: 进入查询班次 ★★★

|\n");

printf("| ★★★ 3: 售票 ★★★

|\n");

printf("| ★★★ 4: 退票 ★★★

|\n");

printf("| ★★★ 5: 班次信息修改 ★★★

|\n");

printf("| ★★★ 0: 退出 ★★★

|\n");

printf("*********************************************************

**************\n"); }

void load() //从磁盘文件导入班次信息 { int i; FILE *fp;

if((fp=fopen("c:车票管理系统.dat","rb"))==NULL) {

printf("文件打开错误\n"); printf("\n请选择(0-5):☆☆☆");

exit(0); }

for(i=0;i<N;i++)

fread(&T[i],sizeof(struct Train_Ticket),1,fp); fclose(fp); system("cls"); }

void save() //将班次信息保存到磁盘文件 {

C语言课程设计 车票管理系统

FILE *fp;

if((fp=fopen("c:车票管理系统.dat","wb"))==NULL) {

printf("无法创建文件!\n\n"); exit(0);

}

for(i=0;i<N;i++)

fwrite(&T[i],sizeof(struct Train_Ticket),1,fp);

fclose(fp); }

int time() //当前系统时间 {

struct tm *f;

time_t now;

now=time(NULL);

time(&now); f=gmtime(&now);

printf(ctime(&now));

return 0; } void scan() {

system("cls"); /*清屏*/

printf("\n

===========================================================================\n");

printf(" 车次 额定载量 起点 终点 开车时间 行车时间 票价 已定票人数\n");

for(i=0;i<N;i++)

printf( " %s%13d%10s%10s%12s%8s%f%6d\n",T[i].cn,T[i].rl,T[i].lp

,T[i].ap,T[i].lt,T[i].rt,T[i].price,T[i].bn);

C语言课程设计 车票管理系统

printf("

===========================================================================\n"); }

void INPUT() //键入所有信息 {

char ch; do {

system("cls");

printf("\n\n ====================欢迎进入 录入汽车时刻信息 printf("请按任意键返回主菜单\n"); getch();

界面====================\n");

do {

printf("\n 新建汽车信息?(y/n) "); scanf("%c",&ch); if(ch!='y'&&ch!='n')

printf("输入错误,请重新输入!!!");

}while(ch!='y'&&ch!='n'); if(ch=='n')

break;

printf(" ---------------------"); printf("\n 录入第%d趟列车信息\n",n+1); printf(" 车次 ");

fflush(stdin);

gets(T[i].cn);

printf(" 额定载量 "); fflush(stdin);

scanf("%d",&T[i].rl);

printf(" 起点 ");

C语言课程设计 车票管理系统

fflush(stdin);

gets(T[i].lp);

printf(" 终点 "); fflush(stdin); gets(T[i].ap);

printf(" 开车时间 "); fflush(stdin); gets(T[i].lt);

printf(" 行车时间 "); fflush(stdin); gets(T[i].rt);

printf(" 票价 "); fflush(stdin);

scanf("%f",&T[i].price);

printf(" 已定票人数 "); fflush(stdin); scanf("%d",&T[i].bn); n++;

i++; }while(i<N); save(); system("cls"); }

void prna(int pos) // 打印一条记录 {

printf("\n

===========================================================================\n");

printf(" 车次 额定载量 起点 终点 开车时间 行车时间 票价 已定票人数\n");

printf( " %s%13d%10s%10s%12s%8s%f%6d\n",T[pos].cn,T[pos].rl,T[pos].

C语言课程设计 车票管理系统

lp,T[pos].ap,T[pos].lt,T[pos].rt,T[pos].price,T[pos].bn); printf("

===========================================================================\n"); }

void searchmenu() // 查询主菜单 {

system("cls");

printf("\n\n ====================欢迎进入 查询汽车时刻信息

界面====================\n");

printf("\n ++++++++++++++++++请选择查找方式

++++++++++++++++++\n\n");

printf("| ★★★ 1: 按班次查询 ★★★ |\n");

printf("| ★★★ 2: 按起点站查询 ★★★ |\n");

printf("| ★★★ 3: 进终点站查询 ★★★

|\n");

printf("| ★★★ 4: 返回主菜单 ★★★

|\n");

printf("*********************************************************

**************\n");

printf("\n请选择(1-4):☆☆☆"); }

int s_cn() //按班次查询 {

char name1[15]; int j;

system("cls");

printf("请输入要查询的班次号:\n "); fflush(stdin);

C语言课程设计 车票管理系统

gets(name1); for(j=0;j<N;j++) {

printf( " %s%13d%10s%10s%12s%8s%f%6d\n",T[j].cn,T[j].rl,T[j].lp

if(strcmp(T[j].cn,name1)==0)

,T[j].ap,T[j].lt,T[j].rt,T[j].price,T[j].bn);continue;

return 0;

}

return 1; }

int s_lp() //按起点站查询 {

char name2[15]; int j;

system("cls");

printf("请输入要查询的起点站名: \n"); fflush(stdin); gets(name2); for(j=0;j<N;j++) {

printf( " %s%13d%10s%10s%12s%8s%f%6d\n",T[j].cn,T[j].rl,T[j].lp

if(strcmp(T[j].lp,name2)==0)

,T[j].ap,T[j].lt,T[j].rt,T[j].price,T[j].bn);continue;

return 0;

}

return 1; }

int s_ap() //按终点站查询 {

char name3[15];

C语言课程设计 车票管理系统

int j;

system("cls");

printf("请输入要查询的终点站名: \n"); fflush(stdin); gets(name3);

for(j=0;j<N;j++)

{

if(strcmp(T[j].ap,name3)==0)

printf( " %s%13d%10s%10s%12s%8s%f%6d\n",T[j].cn,T[j].rl,T[j].lp,T[j].ap,T[j].lt,T[j].rt,T[j].price,T[j].bn);continue;

return 0;

}

return 1; }

void search() //查询函数 {

int select; int n; while(1) {

searchmenu(); scanf("%d",&select); switch(select) { case 1:

if(n)

printf("没找到相关记录\n");printf("按任意键返回

n=s_cn();

\n");getch();

break;

case 2: n=s_lp();

if(n)

C语言课程设计 车票管理系统

printf("没有找到相关记录\n");printf("按任意键返回

\n");getch();

break;

case 3: n=s_ap();

if(n)

printf("没有找到相关记录\n");printf("按任意键返回

\n");getch(); }

void buy() //买票 {

system("cls"); int m,log; char t[10]; }

{ }

break;main_menu();

}

if(select==4)

break;

printf("请输入您需要购买票的班次(1-4):\n"); scanf("%d",&m); load();

printf("\n

===========================================================================\n");

printf(" 车次 额定载量 起点 终点 开车时间 行

车时间 票价 已定票人数\n");

printf( " %s%13d%10s%10s%12s%8s%f%6d\n",T[m-1].cn,T[m-1].rl,T[m

-1].lp,T[m-1].ap,T[m-1].lt,T[m-1].rt,T[m-1].price,T[m-1].bn);

C语言课程设计 车票管理系统

printf("

===========================================================================\n");

if(T[m-1].bn>=T[m-1].rl) { }

if(T[m-1].bn<T[m-1].rl) {

printf("当前时间为:\n");

printf("该班次票已满!请选择其他班次\n"); printf("按任意键返回\n");

time(); printf("\n");

printf("请再手动输入上述时间,只需要输入时辰与分钟(例如 08:00): \n");

scanf("%s",t);

printf("\n");

if(strcmp(t,T[m-1].lt)>0)

printf("该班次已发车,请选择其他班次\n"); else if(T[m-1].bn==T[m-1].rl)

printf("该班次未发车但是该班次票已售完\n"); if

(T[m-1].bn!=T[m-1].rl&&strcmp(t,T[m-1].lt)<0&&T[m-1].bn<T[m-1].rl) {

printf("\n",(T[m-1].rl-T[m-1].bn));

printf("请输入您要订票数量"); scanf("%d",&log); printf("\n");

while(log>(T[m-1].rl-T[m-1].bn))

%d

{

printf("订票错误,数量不能超过余票

C语言课程设计 车票管理系统

数!!!\n");

printf("请重新输入:"); scanf("%d",&log); }

if(log<=(T[m-1].rl-T[m-1].bn)) {printf("一共需

要%d元\n",log*T[m-1].price);printf("订票成功,祝您旅途愉快!\n");} }

T[m-1].bn+=log;

printf("按任意键返回主菜单\n");getchar(); }

void tuipiao()//退票 {

system("cls"); int x,log; char t[10];

printf("请输入您要退票的班次: \n"); scanf("%d",&x); i=x;int m=i; load(); printf("\n } save();

===========================================================================\n");

printf(" 车次 额定载量 起点 终点 开车时间 行

车时间 票价 已定票人数\n");

printf( " %s%13d%10s%10s%12s%8s%f%6d\n",T[m-1].cn,T[m-1].rl,T[m

-1].lp,T[m-1].ap,T[m-1].lt,T[m-1].rt,T[m-1].price,T[m-1].bn);

printf("

===========================================================================\n");

printf("当前时间为:\n");

C语言课程设计 车票管理系统

time(); printf("\n");

printf("请再手动输入上述时间,只需要输入时辰与分钟(例如 08:00):

\n");

scanf("%s",t);

if(strcmp(T[i-1].lt,t)>0) {

printf("可以退票\n");

printf("请问你真的要退票吗? \n"); printf("确认退票请按1,否则返回主菜单\n"); scanf("%d",&log); if(log==1) { } else {

printf("您选择不退票\n");printf("按任意键返回主菜单printf("退票成功!\n"); T[i-1].bn--;

save();printf("按任意键返回主菜单\n");getch();

\n");getch(); }

void change() {

}

}

if(strcmp(T[i-1].lt,t)<0) { }

printf("此班次已发车不能退票!!!\n"); printf("按任意键返回主菜单\n"); getch();

C语言课程设计 车票管理系统

system("cls"); int k,select; char banci[100];

char mima[10];//假设密码为aaa

printf("这个是工作人员所进,请输入密码:\n"); scanf("%s",mima);

while(strcmp(mima,"aaa")!=0) { }

printf("进入成功!\n"); printf("密码错误!\n"); printf("请重新输入:\n"); scanf("%s",mima);

printf("输入所要修改班次号:\n"); scanf("%s",banci);

for(k=0;k<N;k++) { }

printf("\n

if(strcmp(T[k].cn,banci)==0)

break;

===========================================================================\n");

printf(" 车次 额定载量 起点 终点 开车时间

行车时间 票价 已定票人数\n");

printf( " %s%13d%10s%10s%12s%8s%f%6d\n",T[k].cn,T[k].rl,T[k].lp

,T[k].ap,T[k].lt,T[k].rt,T[k].price,T[k].bn);

printf("

===========================================================================\n");

printf("修改时间请按1\n");

C语言课程设计 车票管理系统

{

printf("修改终点站请按2\n"); printf("修改票价请按3\n"); scanf("%d",&select); switch(select)

case 1:

for(k=0;k<N;k++)

if(strcmp(T[k].cn,banci)==0) break;

printf("请输入修改后的时间(例如08:00)\n"); scanf("%s",T[k].lt); printf("修改成功!\n"); printf("\n

===========================================================================\n");

printf(" 车次 额定载量 起点 终点 开车时间

行车时间 票价 已定票人数\n");

printf( " %s%13d%10s%10s%12s%8s%f%6d\n",T[k].cn,T[k].rl,T[k].lp

,T[k].ap,T[k].lt,T[k].rt,T[k].price,T[k].bn);

printf("

===========================================================================\n");

printf("按任意键返回\n"); save(); getch(); break; case 2:

for(k=0;k<N;k++)

if(strcmp(T[k].cn,banci)==0) break;

printf("请输入修改后的终点站\n");

C语言课程设计 车票管理系统

scanf("%s",T[k].ap); printf("修改成功!\n");

printf("\n

===========================================================================\n");

printf(" 车次 额定载量 起点 终点 开车时间

行车时间 票价 已定票人数\n");

printf( " %s%13d%10s%10s%12s%8s%f%6d\n",T[k].cn,T[k].rl,T[k].lp

,T[k].ap,T[k].lt,T[k].rt,T[k].price,T[k].bn);

printf("

===========================================================================\n");

printf("按任意键返回\n"); save(); getch(); break; case 3:

for(k=0;k<N;k++)

if(strcmp(T[k].cn,banci)==0) break;

printf("请输入修改后的票价\n"); scanf("%d",&T[k].price); printf("修改成功!\n");

printf("\n

===========================================================================\n");

printf(" 车次 额定载量 起点 终点 开车时间

行车时间 票价 已定票人数\n");

printf( " %s%13d%10s%10s%12s%8s%f%6d\n",T[k].cn,T[k].rl,T[k].lp

,T[k].ap,T[k].lt,T[k].rt,T[k].price,T[k].bn);

C语言课程设计 车票管理系统

printf("

===========================================================================\n"); }

void main() {

} int select; load(); while(1) {

main_menu(); scanf("%d",&select); switch(select) {

case 1:scan();getchar();break; case 2:search();getchar();break; case 3:buy();getch();break; case 4:tuipiao();getchar();break; case 5:change();getchar();break; }

if(select==0)

{ printf("按任意键退出\n");printf("\n");break;}

printf("按任意键返回\n"); save(); getch(); default: }

printf("选择错误!");

printf("按任意键返回主菜单\n"); getch();break;

C语言课程设计 车票管理系统

}

4 系统测试

4.1 主界面

系统主界面如图4-1所示:

系统运行主窗口

4.2 车次信息浏览模块

在主菜单的提示下选择1,可显示所有车次信息。

4.3 查询车次信息

在主菜单的提示下选择

2,接着按提示进行各项查

本文来源:https://www.bwwdw.com/article/xw44.html

Top