车站售票管理系统设计毕设论文文档格式.docx
《车站售票管理系统设计毕设论文文档格式.docx》由会员分享,可在线阅读,更多相关《车站售票管理系统设计毕设论文文档格式.docx(34页珍藏版)》请在冰豆网上搜索。
查询班次信息:
分别根据发车时间、到站及其组合查询班次信息
售退票管理(售票员)
售票:
首先根据到站地点和发车时间查询班次及剩余票数,若存在并且剩余票数大于购票数,则售票并计算出票价,否则,给出提示信息
退票:
根据班次进行退票处理
统计:
统计输出当日到达各地的班次、售票数、金额
关于文件操作
系统运行时,自动读取用户数据文件和班次数据文件,若该文件不存在,则建立该文件;
若文件存在,则从中读取相关信息,根据提示选择添加、修改、删除记录,添加班次信息时,若该班次的记录已经存在,则应给出提示信息,并不能添加到文件中,当班次信息发生变化后应修改班次信息文件
系统采用模块化设计,并且程序中有适当的注释
2、我的任务
本次我的任务是负责管理员模块的制作,具体包括录入班次,修改班次,删除班次,查询班次,退出系统五个大模块。
在程序编写过程中,为达到预定目标以及方便小组成员间的资源共享,我们采取的是函数模块设计方式。
在此过程中,我书写了班次信息管理主菜单函数,录入判断函数,录入函数,修改及增加班次函数,修改函数,删除函数,增加函数,以及跟我组成员共同完成了退出函数,查询函数,班次查询函数,保存函数,打印表头函数,显示所有函数等。
第三章分析设计
一、设计要点
(1)、输入班次信息,包括要增加的班次数目,班次,发车时间,始发站,终点站,行车时间,额定载量,已售票量,票价;
(2)、输入班次号进行班次信息修改;
(3)、删除相应的班次信息;
(4)、对班次信息进行查询,包括全部浏览显示,按发车时间查询,按终点站查询;
二、设计总体流程图
三、分函数模块程序图
1、录入函数2、修改函数
是
3、
删除函数
第四章关键代码实现说明
1、结构体定义:
typedefstructTICKET////定义新结构体TICKET
{
charnum[10];
//车次编号
charhour[3];
//时间,,小时
charmin[3];
//分钟
charfrom[10];
//起始站
charto[10];
//终点站
floathours,price;
//车程实际时间、车票价格
intmax;
//最大车载容量
intnow;
//已售票数
}CLASS;
2、文件结构:
二进制文件
班次、发车时间、起点站、终点站、行车时间、总座位数、剩余数、票价
文本文件
姓名、密码、人员类型
3、函数定义:
(1)在进入相应菜单时要输入姓名跟密码进行身份验证;
charuserLogin()
(2)进入相应菜单选择所进行的操作;
voidbusMenu()
(3)录入相应班次信息;
voidaddBus()
(4)修改指定班次的班次、发车时间、起点站、终点站、行车时间、总座位数等信息;
voidchange()
(5)删除指定班次的基本信息;
voiddeletemessage()
(6)按照发车时间,发车班次查询相应班次信息;
voidsearch()
(7)录入增加的班次、发车时间、起点站、终点站、行车时间、总座位数等信息;
voidadd()
(8)读经保存后文档中的班次信息;
voidload()
(9)保存相应的班次信息;
voidsave()
(10)显示班次信息;
voidShowTable1()、voidShowTable2()
(11)退出学生信息系统;
voidquit()
4、关键函数体分析说明
1、voidbusMenu()
该模块功能为管理菜单能进入各个模块
分析主模块算法:
输出主菜单后键盘输入0-4并回车,进入相应应用;
分析主菜单模块的N-S图
输入选择z
Z=1?
2?
3?
4?
0?
Z=1
进入增加班次模块
Z=2
进入修改班次模块
Z=3
进入删除班次模块
Z=4
进入查询班次模块
Z=0
进入退出界面模块
2、voidaddBus()
该模块功能为按所提示的要求输入班次的各项基本信息;
分析输入班次信息模块的N-S图
输入要输入的班次数目
n=0p=class_num
依次按要求输入
班次各项信息
是y=1否
y=0
n++是否
p++输入完毕无效选项
y=1
保存路入班次的各项基本信息
3、voidchange()
修改指定班次的班次、发车时间、起点站、终点站、行车时间、总座位数等信息
分析修改学生信息模块的N-S图
请输入要修改的班次号
打开文档,调用相应班次信息
请输入班次号
请输入发车时间
请输入始发站
请输入终点站
请输入行车时间
请输入额定载量
请输入已售票数
符合数据类
型
是否
修改班次
无效输入
修改时间
修改地点
修改数量
修改价格
保存修改后的班次信息,返回修改菜单
4、voiddeletemessage()
该函数功能是删除多与学生信息
分析删除学生信息模块的N-S图:
输入待删除班次信息的班次号num
i<
n
Tstu[i].num==
numF
i=>
j
空
j!
=n-1
T
F
e<
n--
i-1=>
e
删除班次信息
e++
j++
p--
n--;
保存删除后班次信息文档
第五章总结
在短短五天的实习期间使我获取了不少新知识也巩固了许多老知识。
我体会到了老师和同学们的热心帮助,无论面对学习中多大的困难,同学们都会帮助你,老师也会帮助你,大家就像兄弟姐妹一样。
老师安排我们有具有的分工:
首先,在计算机机房里同学们积极的对C语言进行巩固与实习,老师热心的讲解同学们提出的问题和实习过程中应该注意的事项和同学们的任何。
老师把我们分为几组,每一组三个人,并且分配了具体的任务,在我们实习结束后每一组的同学都把自己组里的成果展示给大家一起分享,告诉大家编程的原理、方法等,使同学们既有动手能力,又能提高语言表达能力。
然后同学们把自到自己的小组里,大家具体分工,你编这道题,我编这道题……我们不会的地方就去问学习比较好一些的同学,或者去问老师,老师和同学们总是那么的热心,只要你还不明白,不论你问多少次,老师和同学们都会耐心地给你细心的讲解,直到讲会为止。
最后我们把每天收获到的知识和心得都以实习日志的形式写好,最后交给老师。
我们把自己的成果交给老师,就这样,这次实习圆满结束。
这次实习是有益的,它不仅让我们学习到了C语言的知识,更让我们学习到了同学们之间的那种团队精神,为我以后踏入社会工作准备了很多良好的知识与经验。
这次实训有很大的收获,让我对C语言有了更深的认识,平时在课堂上学到的东西可以自己动手编写,将其转化成一些实用的技能。
如果是一个程序写完一处错误也没有,会有种成就感,于是兴趣就来了,兴趣来了,自然学的东西也就多了,能把理论变成实际的技能,让我对C语言有了浓厚的兴趣和更深层的认识。
C语言是一个有序的学习,学了最基本的替换,然后扩展到循环,嵌套,条理很清楚,不是一个零散的知识,实际上所有的课程都如此,不过通过实训我也知道了自己的不足,存在的很多问题。
比如自己写的写的小程序出了问题,不会解决了就叫老师帮忙,虽然说一定意义上增加了师生之间的感情,但是会养成一种依赖的心理,碰到问题了第一个想到的是求助而不是自己独立解决,所以以后要多多锻炼自己的信心和增加自己的能力,争取做到老师不在身边的时候也可以完成一些简单的程序编写与错误排除。
还有自己的基础知识不扎实,遇到的问题,没有很好的逻辑思维,亲自编写一个陌生的程序的时候会有种无法下手的感觉,找不到突破口。
通过实训,逐渐理清了顺序,对于简单的程序和一些相对比较繁琐的嵌套,循环,不在是看着一头雾水。
其实只要理清了思路,把基础知识掌握了,然后有条不紊的分析,一步一步理解,C语言还是很有意思的课程。
自己亲自动手编写程序让我增加了对C语言程序开发环境的了解,在上课的时候老师就讲,学习C语言最重要的是学习C语言的逻辑思维,不管以后从事什么行业,学习C语言都对自己的职业很有帮助,如果是从事编程工程工作的话,就更有帮助了,即使以后的编程工作可能不用C语言,但是拥有扎实的C语言基础是对工作很有用的。
第六章附录(源程序代码)
#include<
stdio.h>
stdlib.h>
#include<
time.h>
string.h>
conio.h>
#defineN50
//声明用户数据类型
typedefstructTICKET////定义新结构体TICKET
//车程实际时间
intclass_num=0;
///初始班次总数为0
CLASSrecords[N];
intsystem_time();
intwhether(int);
voidbusMenu();
voidticketMenu();
voidShowTable1();
//线框调用1,,,不用没次输
voidShowTable2(inti);
//线框调用2,,,不用没次输
voidsave();
//保存函数
voidload();
//按班次查询函数
voidsearch();
//查询函数
voidchange();
//修改函数**
voidquit();
////////////退出函数******
voidTicketorder();
////*售票函数***
voidTicketdelete();
//删除函数*
////判断时间是否超出函数***
voidfind(chars1[],chars2[]);
//查询函数★//s1为班次//s2为终点站
voiddeletemessage();
//删除函数
intfindnum(chars1[]);
//班次查询函数
voidget(int,int);
/*******************************************************
*验证用户合法性*
*******************************************************/
charuserLogin()
{charuType;
FILE*fp;
inta=0,m=1,leap=0,i;
charnam[10],key[10],type[10],name[10],pass[10];
while(!
leap)
{i=0;
fp=fopen("
D:
\\user.txt"
"
rb"
);
if(a<
3)
{printf("
\n\n\t\t☆☆欢迎使用售票管理系统☆☆\n"
printf("
\n\t\t================================\n"
\n\t\t请输入用户名:
"
gets(name);
\n\t\t请输入密码:
while(i<
=9&
&
(pass[i++]=getch())!
='
\r'
)//使输入的密码字符显示为星号字符*
{putchar('
*'
}
pass[i-1]='
\0'
;
while(!
feof(fp))
{fscanf(fp,"
%s%s%s"
nam,key,type);
if(strcmp(name,nam)==0&
strcmp(pass,key)==0)
{leap=1;
uType=type[0];
break;
}
if(!
{a++;
输入有误,请重新输入!
\n"
system("
cls"
if(a==3){printf("
你的登录次数已达到三次,您无权继续登陆!
}}
fclose(fp);
returnuType;
/*******************************按班次查询函数*******************************/
voidload()//按班次查询函数
FILE*fp1,*fp2;
if((fp1=fopen("
d:
bus.txt"
))==NULL)
{
system("
//刷屏
printf("
文件打开错误!
getch();
///从控制台读取一个字符,但不显示在屏幕上
exit(0);
if((fp2=fopen("
bus0.txt"
{
//退出
fread(&
class_num,sizeof(int),1,fp2);
///读入信息
fread(records,sizeof(CLASS),class_num,fp1);
/////读入信息
fclose(fp1);
fclose(fp2);
///文件关闭
/*************************修改及增加班次*******************************/
//修改及增加班次*
voidget(inti,intj)
{
for(;
)
请输入发车时间(xxxx):
scanf("
%s%s"
records[i].hour,records[i].min);
if((atoi(records[i].hour)<
24&
atoi(records[i].hour)>
=0)&
(atoi(records[i].min)<
60&
atoi(records[i].min)>
=0))
break;
else
{
printf("
输入错误!
getch();
/////从控制台读取一个字符,但不显示在屏幕上
}
请输入起点站:
scanf("
%s"
records[i].from);
请输入终点站:
records[i].to);
请输入行车时间:
%f"
&
records[i].hours);
请输入额定载量:
%d"
records[i].max);
请输入票价:
records[i].price);
请输入已售票数:
scanf("
records[i].now);
if(records[i].now<
=records[i].max)
}
/**************************************保存函数*******************************/
voidsave()//////保存函数
//文件行指针
wb"
))==NULL)//打开文件、为输出打开一个二进制文件
fwrite(&
//写入文件信息
fwrite(records,sizeof(CLASS),class_num,fp1);
///关闭文件
/***********************增加函数****************************/
voidadd()////增加记录
inti,t,j=5,n;
load();
//调用按班次查询函数
system("
请输入要增加的班次数目:
n);
//指向班次指针
for(t=0;
t<
n;
t++)
请输入第%d个班次信息:
t+1);
请输入要增加的班次:
records[class_num].num);
for(i=0;
i<
class_num;
i++)
if(strcmp(records[class_num].num,records[i].num)==0)
//判断字符串比较是否相等,,待比较的字符串判断车次没重复
{
printf("
该班次已存在!
请安任意键继续输入\n"
getch();
system("
break;
}
if(i==class_num)
get(i,j);
////修改及增加班次*
class_num++;
///使班次数加1
save();
//调用保存函数
信息录入完毕,请按任意键返回管理界面\n"
getch();
busMenu();
//调用班次管理函数
voidNewMessage()//*录入函数******
inti,j=5,h;
////
FILE*fp;
////定义文件型指针变量
//刷屏
class_num);
for(i=0;
i++)
i+1);
h=-1;
for(;
h!
=i;
)///循环输出
请输入班次:
scanf("
records[i].num);
for(h=0;
h<
i;
h++)
if(strcmp(records[h].num,records[i].num)==0)
//判断字符串比较是否相等,,待比较的字符串
{
printf("
输入错误