用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() /////从控制台读取一个字符,但不显示在屏幕上

}

}

}

字数超了。。。。

模拟铁路售票窗口 *** 作方式的客户端软件。

二、系统的使用

01、 本系统仅用于学习及交流使用,不作它用。严禁将本系统用于非法用途,由于不当使用本系统而产生法律责任的,sTRS项目组不承担任何民事、刑事责任,并将配合行政、司法机关的调查取证工作。

02、 本系统需要工号登录后才能运行,用户可以在本网站下载客户端,并在本网站申请工号后使用本系统,在申请工号时,网站会要求您提交一些个人资料用于身份信息的核实,当无法核实时,项目组可能会联系您要求您线下补充其它资料,详见工号申请页的要求。

03、 工号仅限申请人本人使用,严禁将工号出借给他人使用,每个工号只能在一台电脑上登录,每个工号首次登录本系统时,本系统会将工号与计算机绑定,该工号只能在这台计算机登录。因此,您需要妥善保管您的工号和密码,以免被盗。以正确的工号和密码登录系统并进行的任何 *** 作,视同工号持有人所进行,并由其承担相应责任。

04、 sTRS项目内涉及的任何数据(包括但不限于列车时刻、编组、票额计划、旅客列车开行方案、线路基础数据等)均为虚构,项目组不承诺数据维护的准确性和实时性,亦不承诺这些数据与任何铁路运输企业的数据的相关性。

05、 本系统目前为免费授权给用户使用,但项目组不承诺将来不会更改本系统的运作模式。

06、 项目组不承诺本系统的 *** 作方式与其他任何铁路运输企业所使用的售票系统相似或一致,也不对本系统与其他铁路运输企业使用的售票系统的任何不同之处作出任何解释。

07 、用户有不当行为的,一经项目组发现,有权立即将该用户列入黑名单,并永久拒绝该用户使弊隐源用本系统。不当行为包括但不限于下列行为:

08、 将工号出借给他人使用的;

09、 利用本系统欺诈他人,或谋取不正当利益的;

10、 将本系统生成的样票图打印出纸质图片的;

11、 以本系统携亩为依据,强行要求铁路售票员按本系统的 *** 作方式及流程进行 *** 作的;

12、 从事其它违反中华人民共和国法律、法规及行政部门规范性文件的行为的;

13、用户因不当使用本系统而被项目组取消使用资格的,该用户付费购买的账户余额可以折算成相应金额退还给该用户,其他费用不予退还。

14、 用户违反2.7款规定,触犯法律法规、侵害他人租态合法权益的,项目组将依法报告公安机关,并配合行政、司法机关的调查取证工作。

package tmp

public class Test {

private static int k=0//售出票数

private static int count=1000//总票数

private static synchronized boolean 纤庆sell(int n){

if(k<count){

k++

System.out.println("第"+n+"售票点售出第"+k+"张票")

return true

}

return false

}

static class SellPot 毁郑握extends Thread{//售票点

int n//售丛汪票点编号

public SellPot(int n){

this.n=n

}

public void run(){

while(sell(n)){

try {

Thread.sleep(100)

} catch (InterruptedException e) {

e.printStackTrace()

}

}

}

}

public static void main(String[] args) {

for(int i=1i<=10i++){

new SellPot(i).start()

}

}

}

//银行汇款

public class Test2 {

private static int k=0//总汇款

private static synchronized void send(int m,int i,int n){

k+=m

System.out.println("第"+n+"个顾客进行第"+(i+1)+"次汇款,银行接收总汇款"+k)

}

static class Costum extends Thread{//售票点

int n//顾客编号

public Costum(int n){

this.n=n

}

public void run(){

for(int i=0i<3i++){

send(100,i,n)//汇款100

try {

Thread.sleep(100)

} catch (InterruptedException e) {

e.printStackTrace()

}

}

}

}

public static void main(String[] args) {

for(int i=1i<=3i++){

new Costum(i).start()

}

}

}


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存