用C语言写一个模拟火车票管理系统。

用C语言写一个模拟火车票管理系统。,第1张

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

#include<time.h>

#include<conio.h>

#define N 1000

typedef struct TICKET

{

char num[10]

char hour[3]

char min[3]

char from[10]

char to[10]

float hours

int max

int now

}CLASS

int class_num=0

CLASS records[N]

int system_time()

void NewMessage()

void ShowTable1()

void ShowTable2(int i)

void Display()

void add()

void save()

void load()

void search()

void change()

void quit()

void Ticketorder()

void Ticketdelete()

int menu_select()

int whether(int)

void find(char s1[],char s2[])

void deletemessage()

int findnum(char s1[])

void get(int,int)

char *menu[]={"*****************欢迎使用车票管理系统*****************",

"\n*******************MENU功能菜单***********************",

"\n 1. 录入班次 ",

"\n 2. 显示所有班次 ",

"\n 3. 查询班次 ",

"\n 4. 增加班次 ",

"\n 5. 售票 ",

"\n 6. 退票 ",

"\n 7. 修改班次 ",

"\n 8. 删除班次 ",

"\n 9. 退出 "}

/**主函数**/

void main()

{

system("cls")

while(1)

{

switch(menu_select())

{

case 1: NewMessage()break

case 2: Display()break

case 3: search()break

case 4: add()break

case 5: Ticketorder()break

case 6: Ticketdelete()break

case 7: change()break

case 8: deletemessage()break

case 9: quit()break

}

}

}

/**菜单函数**/

int menu_select()

{

char s[5]

int c,i

system("cls")

for(i=0i<11i++)

{

printf("%s",menu[i]))

}

i=0

printf("\n")

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

printf("\n请选择(1-9):")

scanf("%s",s)

c=atoi(s)

while(i<0||i>9)

{

printf("\n")

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

printf("\n请选择(1-9):")

scanf("%s",s)

c=atoi(s)

}

return c

}

void NewMessage()

{

int i=0,j=5,h

char s[5]

FILE *fp

system("cls")

if((fp=fopen("d:number.dat","rb"))!=NULL)

{

printf("车票信息已经存在请选择增加功能!\n")

printf("任意输入则返回菜单\n")

scanf("%s",s)

i=1//通过是1

}

if(i==0)

{

system("cls")

printf("请输入要录入班次总数:\n")

scanf("%d",&class_num)

system("cls")

for(i=0i<class_numi++)

{

system("cls")

printf("请输入第%d个班次信息:\n",i+1)

h=-1

for(h!=i)

{

printf("请输入班次:")

scanf("%s",records[i].num)

for(h=0h<ih++)

if(strcmp(records[h].num,records[i].num)==0)

//判断字符串比较是否相等,, 待比较的字符串

{

printf("输入错误!该班次已存在!\n")

break

}

}

get(i,j)

j=5

}

save()

}

}

void Display() //显示所有函数

{

int i,j

system("cls")//刷屏

load() // 调用按班次查询函数

ShowTable1() //线框调用1,,,不用每次输

for(i=0,j=0i<class_numi++,j+=2)/////按班次顺序输出

{

printf("\n|----------|----------|----------|----------|--------|--------|--------|\n")

if(whether(i))

printf("|%10s|%5s:%-4s|%10s|%10s|%8.1f|%8d|%8d|",records[i].num,records[i].hour,

records[i].min, records[i].from,records[i].to,records[i].hours,

records[i].max,records[i].now)

else

printf("|%10s| 已发车 |%10s|%10s|%8.1f|%8d|%8d|",records[i].num,

records[i].from,records[i].to,records[i].hours,records[i].max,records[i].now)

}

ShowTable2(j) //线框调用2

printf("\n按任意键继续....\n")

getch() /////从控制台读取一个字符,但不显示在屏幕上

}

/**打印表头**/

void ShowTable1()

{

int i=2

system("cls")

printf("**************************车票信息系统**********************************\n")

printf("\n|----------|----------|----------|----------|--------|--------|--------|\n")

printf("\n| 班次 | 发车时间 | 起点站 | 终点站 |行车时间|额定载量| 已售票 |\n")

}

void ShowTable2(int i)

{

printf("\n|----------|----------|----------|----------|--------|--------|--------|\n")

}

void search()

{

int i

char s1[10]={'\0'},s2[10]={'\0'}

system("cls")

printf("1. 按班次查询\n")

printf("2. 按终点站查询\n")

printf("3. 退出\n")

printf("请选择(1-3):\n")

scanf("%d",&i)

load()

switch(i)

{

case 1: printf("请输入要查询的班次:")

scanf("%s",s1)

find(s1,s2)

break

case 2: printf("请输入要查询终点站:")

scanf("%s",s2)

find(s1,s2)

break

case 3: break

default : printf("输入错误!\n")

break

}

printf("按任意键继续....\n")

getch()

}

void find(char s1[],char s2[])

{

int i,h=0,m

ShowTable1()

if(s2[0]=='\0')

m=1

else m=0

for(i=0i<class_numi++)

if(strcmp(s1,records[i].num)==0||strcmp(s2,records[i].to)==0)

{

printf("\n|----------|----------|----------|----------|--------|--------|--------|\n")

printf("|%10s|%5s:%-4s|%10s|%10s|%8.1f|%8d|%8d|",records[i].num,records[i].hour,records[i].min,

records[i].from,records[i].to,records[i].hours,records[i].max,records[i].now)

h+=1

if(m==1)

break

}

ShowTable2(h)

if(h==0)

printf("要查找的班次不存在!\n")

}

/**增加函数**/

void add()

{

int i,j=5

load()

system("cls")

printf("1. 增加班次")

printf("2. 返回\n")

printf("请选择(1-2)\n")

scanf("%d",&i)

if(i==1)

{

system("cls")//刷屏

printf("1. 请输入要增加的班次:")

scanf("%s",records[class_num].num)

for(i=0i<class_numi++)

if(strcmp(records[class_num].num,records[i].num)==0)

//判断字符串比较是否相等,待比较的字符串,判断车次没重复

{

printf("输入错误!\n")

getch() /////从控制台读取一个字符,但不显示在屏幕上

break

}

if(i==class_num)

{

get(i,j) ////修改及增加班次*

class_num++ ///使班次数加1

save() //调用保存函数

}

}

}

/**售票函数**/

void Ticketorder()//*售票函数

{

int i

char num[10]

system("cls")//刷屏

printf("1. 售票\n")

printf("2. 返回\n")

printf("请选择(1-2):\n")

scanf("%d",&i)

if(i==1)

{

load() // 加载函数

search() //查找函数

printf("请输入要订票的班次(若无请输入0):")

scanf("%s",num)

for(i=0i<class_numi++)

if(strcmp(num,records[i].num)==0)//判断字符串比较是否相等,, 待比较的字符串

if(records[i].max>records[i].now&&whether(i)==1)

//判断时间是否超出函数并且没超出最大客量

{

records[i].now++ ///使已售票加1

printf("通向%s班次为%s的票订票成功!\n",records[i].to,records[i].num)

save()//调用保存函数

getch() /////从控制台读取一个字符,但不显示在屏幕上

break

}

else

{

printf("该班次已满或已发出!\n")

getch() /////从控制台读取一个字符,但不显示在屏幕上

}

}

}

/**退票函数**/

void Ticketdelete() //删除函数*

{

int i

char num[10]

system("cls")//刷屏

printf("1. 退票\n")

printf("2. 返回\n")

printf("请选择(1-2)\n:")

scanf("%d",&i)

if(i==1)

{

system("cls")//刷屏

load() // 调用按班次查询函数

printf("请输入要退票的班次:\n")

scanf("%s",num)

i=findnum(num) //调用班次查询函数

if(strcmp(num,records[i].num)==0) //判断字符串比较是否相等 待比较的字符串

if(whether(i)) //判断时间是否超出函数***

{

printf("确定(Y/N)?")

scanf("%s",num)

if(num[0]=='y'||num[0]=='Y')

{

records[i].now-- //使已售票减1

printf("退票成功!\n")

save()//调用保存函数

getch() //从控制台读取一个字符,但不显示在屏幕上

}

}

else

{

printf("该班车已发出,无法退票!\n")

getch() /////从控制台读取一个字符,但不显示在屏幕上

}

if(i==class_num)

{ printf("输入错误!\n")

getch() /////从控制台读取一个字符,但不显示在屏幕上

}

}

}

字数超了。。。。

一、课程设计的内容

车票管理系统

一车站每天有n个发车班次,每个班次都有一班次号(1、2、3…n),固定的发车时间,固定的路线(起始站、终点站),大致的行车时间,固定的额定载客量。如

班次 发车时间 起点站 终点站 行车时间 额定载量 已定票人数

1 8:00 郫县 广汉2 4530

2 6:30 郫县 成都0.5 4040

3 7:00 郫县 成都0.5 4020

4 10:00 郫县 成都0.5 402

(一)功能要求:用c/c++设计一系统,能提供下列服务:

(1)录入班次信息(信息用文件保存),可不定时地增加班次数据

(2)浏览班次信息,可显示出所有班次当前状总(如果当前系统时间超过了某班次的发车时间,则显示“此班已发出”的提示信息)。

(3)查询路线:可按班次号查询 ,可按终点站查询

(4)售票和退票功能

A:当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自动更新已售票人数

B:退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数

二、课程设计的要求与数据

1、进一步掌握和利用C语言进行程设计的能力;

2、进一步理解和运用结构化程序设计的思想和方法;

3、初步掌握开发一个小型实用系统的基本方法;

4、学会调试一个较长程序的基本方法;

5、学会利用流程图或N-S图表示算法;

6、掌握书写程序设计开发文档的能力。

三、课程设计应完成的工作

1、编写完成相应题目的程序;

2、编写课程设计报告,课程设计报告的内容应包括以下6个部分:

设置一个数组

unsigned

char

ticket[10][一列车的站点总数]={0}

1.卖票系统每卖一张票,将相应的站点,列车赋值为1,

比如:列车1的前3站卖出票,那么把ticket[1][0],ticket[1][1],ticket[1][2]设为1.

2.卖票前先检查要到的站点是否被赋值为1。按照列车对数组进行遍历即可。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11117156.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存