网站设计 培训,从事网站建设的工资,美橙网站建设,wordpress ajax评论图片需求描述#xff1a;
火车票订票系统以用户预定火车票的一系列流程为主线#xff0c;将火车票车次详细信息进行显示、保存#xff0c;同时提供火车的剩余票数#xff0c;以供用户查询决定是否预订#xff0c;当预订成功后#xff0c;提供保存用户的订票信息的功能。由于…需求描述
火车票订票系统以用户预定火车票的一系列流程为主线将火车票车次详细信息进行显示、保存同时提供火车的剩余票数以供用户查询决定是否预订当预订成功后提供保存用户的订票信息的功能。由于订票系统面向的人群主要分为两类:管理员和普通用户。他们对于该购票系统的需求不同使用方法也不同由此应该分成两个对象分别设计不同界面和用途该系统详细周到的操作流程满足了用户的需求也提高了铁路工作人员的工作效率。
火车售票系统介绍该系统分为管理员和用户两个角色
管理员的功能包含
1、录入火车票信息 2、显示火车票信息 3、查询火车票信息 4、修改火车票信息
用户顾客的功能包含
1、火车票区间查询
2、查询已购票信息 该C语言程序主要用到了以下数据结构的知识点 结构体struct 用于定义火车票信息的结构体 train_infor简称 train。结构体包括火车车次、始发地、终点站、发车时间、到达时间、票价等信息。 数组 使用一维数组 train info[10000] 保存所有的车次信息。使用二维数组 train users[100][100] 保存每个用户的购票信息。 字符串 结构体中包含字符数组如 number, start, end用于存储车次、始发地、终点站。使用 strcmp 函数进行字符串比较用于查询和修改车次信息。 多维数组 train users[100][100] 是一个二维数组用于记录用户的购票信息其中 users[no] 表示用户 no 的购票记录users[no][vcs[no]] 用于表示用户 no 的第 vcs[no] 张车票。 循环结构 使用 for 循环录入、显示和查询车次信息。使用 while 循环处理用户和管理员的选择输入确保可以多次进行操作。 条件结构 使用 if-else 判断条件确保操作的正确性例如判断是否有车次信息、用户是否有购票记录等。使用 switch-case 处理菜单选择便于管理不同操作。 函数 该程序定义了多个函数来实现不同功能如录入火车票信息 (Traininfo)、显示火车票信息 (showtrain)、查询火车票信息 (searchtrain)、修改火车票信息 (Modify)、购票 (bookticket)、区间查询 (look_up)、保存用户购票信息 (SaveTraininfo)、管理员界面 (admin)、用户界面 (user) 。
运行效果截图 管理员登录后录入车票信息 管理员查询已添加的车票信息 管理员单次查询车次 管理员修改车次信息中间都用英文状态下的空格 用户登录查询或实现订票 用户端查询车票 用户端购票 课设 源代码访问地址https://docs.qq.com/doc/p/71239d69a76f56cf1521717ae6b22c27cf876f10
结构体定义
//火车票信息模块 以结构体实现typedef struct train_infor
{char number[10];//火车车次char start[20];//始发地char end[20];//终点站int year1,month1,day1,h1,m1;//始发时间int year2,month2,day2,h2,m2;//到站时间int price;//票价
}train;int cnum0;//记录总共列车信息的数量
train info[10000];//以结构体类型的数组用来保存所有的车次信息
train users[100][100];//二维数组用来保存用户信息每一行可以用来表示一个用户的购票信息
int vcs[100]{0};//记录每一个用户自己账户的票数初始为0 主函数
int main()
{printf(提示整个输入过程请严格按照格式标点均为英文状态下输入\n);printf(-------------请选择身份-------------\n);printf(| 1、管 理 员 | 2、用 户 |\n);printf(| 0、结束程序 |\n);printf(------------------------------------\n);//输入1表示进入管理员界面2进入用户界面int choose1;while(~scanf(%d,choose1))//记录选择的序号多组测试{if(choose10)break;switch (choose1){case 1:admin();break;case 2:user();break;default :printf(请选择有效操作对应编号哦\n);break;}printf(-------------请选择身份-------------\n);printf(| 1、管 理 员 | 2、用 户 |\n);printf(| 0、结束程序 |\n);printf(------------------------------------\n);}return 0;
} 用户函数
//用户界面
void user()
{int no;printf(请输入你的用户编码);scanf(%d,no);//记录用户编码用来对应的保存其购票信息user_menu();int choose3;while(~scanf(%d,choose3))//记录用户选择的操作{switch(choose3){case 1:look_up(no);break;case 2:SaveTraininfo(no);break;case 0:return ;//输入0直接退出整个函数default :printf(请选择有效操作对应编号哦\n);break ;} 录入火车票信息
//录入火车票信息即添加模块
void Traininfo()
{int sum,i;printf(请输入要录入的列车信息条数:);scanf(%d,sum);printf(请依次输入火车车次 始发地 终点站 始发时间年/月/日 时:分 到站时间年/月/日 时:分 票价 \n);printf(每输入一项数据后以空格结束进行下一数据录入\n);for(icnum;icnumsum;i)/*录入信息从cnum开始录入信息,避免管理员先进行插入或添加、删除等操作后再来录入数据发生覆盖同时这样可以多次循环进行录入操作在之前的信息下继续添加*/ {scanf(%s %s %s %d/%d/%d %d:%d %d/%d/%d %d:%d %d,info[i].number,info[i].start,info[i].end,info[i].year1,info[i].month1,info[i].day1,info[i].h1,info[i].m1,info[i].year2,info[i].month2,info[i].day2,info[i].h2,info[i].m2,info[i].price);} printf(录入成功\n);cnumsum;return ;
}
修改火车票信息
//修改火车票信息
void Modify()
{int i;printf(请输入要修改的车次);char ch[10];//记录要修改的车次scanf(%s,ch);//和查询车票一样先找到该列车所在的位置,然后对其进行修改for(i0;icnum;i){if(strcmp(ch,info[i].number)0)//比较所有的列车信息一直到和输入的车次相同则找到并输出字符串的比较要是用strcmp()函数如果相等则为0{printf(该列车原信息\n);printf(车次\t始发地\t终点站\t发车时间\t\t到达时间\t\t票价\n);printf(%s\t%s\t%s\t%d/%02d/%02d %02d:%02d\t%d/%02d/%02d %02d:%02d\t%d\n,info[i].number,info[i].start,info[i].end,info[i].year1,info[i].month1,info[i].day1,info[i].h1,info[i].m1,info[i].year2,info[i].month2,info[i].day2,info[i].h2,info[i].m2,info[i].price);printf(请输入新的数据\n);printf(车次\t始发地\t终点站\t发车时间\t\t到达时间\t\t票价\n);scanf(%s %s %s %d/%d/%d %d:%d %d/%d/%d %d:%d %d,info[i].number,info[i].start,info[i].end,info[i].year1,info[i].month1,info[i].day1,info[i].h1,info[i].m1,info[i].year2,info[i].month2,info[i].day2,info[i].h2,info[i].m2,info[i].price);printf(修改成功\n);return ;//修改后直接结束无需再进行}}printf(无此列车信息\n);//如果找到前面就结束则不会运行到此处所以运行到此处只能是没有找到return ;
}
用户订票函数
//用户订票模块
void bookticket(int no)
{int i;printf(请输入你要购票的车次:\n);char che[10];scanf(%s,che);for(i0;icnum;i){if(strcmp(che,info[i].number)0){users[no][vcs[no]]info[i];vcs[no];//该用户的购票数加一printf(购票成功\n);return ;}}printf(无此列车信息\n);return ;