通过对数据中班次信息的一个个便利,查找出与用户输入的班次编号/终点站相符的班次信息,并将其按一定格式显示到用户界面。 6、 时间判断函数:
调用stdlib库中的time函数获取系统时间。使用string库中的atoi函数将结构体中的字符转化为整形,与系统时间作比较,小于系统时间时返回值与大于系统时间的返回值不同,从而使在查询,浏览函数中显示的班次状态可以通过调用时间判断函数,判断其返回值来确定打印“已发出”还是“未发出”。 时间判断函数在购票和售票函数中也需要调用,当系统时间小于发车时间时不能进行购票和售票的操作。 7、 保存函数:
为了使程序更加简洁明了特意设置了一个保存函数,用于将要保存文件的数据保存到文件中。为了提高txt文件的可读性使用的是fprintf语句。 8、 菜单函数:
使用指针数组将菜单文件保存,在打印时通过for循环多次打印,直至打印出完整的菜单。在每一个功能完成退出功能菜单之后,重新打印出主菜单函数。
3 系统设计
3.1系统功能设计
主函数:进入主使用界面,然后就是通过switch开关调用各个自定义函数以完成各种功能。
11
录入线路管理员密码验证录入或修改信息增加线路浏览线路按车次编号查询车票管理系统查询线路按终点站查询售票退票退出系统
1.录入班次信息功能:运用结构体知识,利用文件函数操作,将录入的数据存入文件。
2.增加班次功能:与录入班次操作类似,把文件权限修改为了增加,并用一个新文件记录了信息总数的变化。
3.查询路线功能:利用对文件函数的操作,从指定文件中获取车次信息,按用户要求显示对应的车次信息。
4.浏览班次信息功能:利用对文件函数的操作,从指定文件中获取车次信息,并将信息按一定格式显示出来。
5.售票和退票功能:利用对文件函数的操作,实现售退票功能。 6.管理员登陆功能:利用字符数组,验证输入的密码是否正确。
12
3.2系统的功能分析 (1)录入班次信息
使用该模块需要验证管理员密码,模块运用结构体知识,利用文件函数操作,将已有文件中的数据清空,替换为新录入的数据。 (2)增加班次信息
与录入班次操作类似,也需要验证管理员密码,把文件权限修改为了增加,并用一个新文件记录了信息总数的变化。以便下次打开程序时直接读入文件数据。
(3)查询路线
利用对文件函数的操作,从指定文件中获取车次信息,从信息总数文档中读入班次数量信息,按用户要求显示对应的车次信息。 (4)浏览班次信息
利用对文件函数的操作,从指定文件中获取车次信息,并将信息按一定格式显示出来。 (5)售票和退票
利用对文件函数的操作,对文件中的乘客人数进行修改实现售退票功能。 (6)管理员登陆
13
利用字符数组,验证输入的密码是否正确。
4 系统的实现
4.1系统主函数设计
系统主界面
代码:
/*菜单枚举 指针数组*/
char *menu[10]={\欢迎使用车票查询系统********************************************\\n\
\功能选项_____________________________________\\录入班次信息 \增加班次 \\查询路线 \浏览班次信息 \\售票 \退票 \\退出 \\
__________________________________________________________________________________\
/*菜单函数*/
int menu_select(){
char s[5]; //定义要输入的数字功能 int c,i,f=0;
system(\ //清屏
system(\ //改变颜色(F为背景颜色为白色,0字体颜色为黑色)
for(i=0;i<10;i++){
printf(\ //输出菜单各项 }
14
printf(\请选择(0-6):\scanf(\return c; }
int main(){
system(\ while(1){
switch(menu_select()) {
case 1:entry_bata();break; case 2:add_bata();break; case 3:search_bata();break; case 4:Look_through();break; case 5:sell_ticket();break; case 6:return_ticket();break; case 0:exit();return 0; default: printf(\输入错误...\ getch(); } } }
//清屏 //菜单函数 //录入 //增加 //查询 //浏览 //售票 //退票 //退出 //其他
4.2录入和增加班次模块
验证管理员密码
代码:
/*密码判断*/
15