火车票管理系统


    火车票理系统
    课题容求
    改系统求实现简单实火车票理程序功包括火车票数录入查找删显示售票退票等火车票数利文件系统保存备系统次运行时通课题熟练掌握文件数组指针种操作基算法思想应

    二 需求分析
    功框架图:(见图21)
    火车票理系统
    录入
    查找

    排序
    售票
    退票
    保存

    图21
    1 新增火车票数记录:预先建立txt文档存入数然程序中读取文档
    2 查找火车票数(车次发车时间起点站终点站等查找)
    3 删火车票数记录(先查找删查找出条记录进步提示户选择记录车次删)
    4 火车票排序(车次发车时间起点站终点站等排序)
    5 显示前火车票信息列表
    6 售票(先查找确定车次根售票张数该车次已售票数进行修改)
    7 退票(售票逆处理程售票类似)
    8 保存火车票数文件中
    9 文件中读入火车票数


    三概设计

    1)结构体:
    struct time
    {
    int hour
    int minutes
    }
    struct ticket
    {
    char SerialNumber[10]
    struct time SetOut
    char DeparturePoint[MAX]
    char TerminalPoint[MAX]
    float LastTime
    int FixNumber
    int FixedNumber
    }train[N]

    2)函数流程图:





    l 载入函数:文中载入信息(见图31)
    开文
    否开
    读入数
    否结束
    结束


    开始
    开始











    读入车次
    否符合



    输出信息

    结束




    图32





    图31



    l 查找函数:利输入车次站点进行序查找找信息输出(见图32)
    l 删函数:先查找出删信息删(见图33)



    法订票
    数加
    否超载

    图34

    结束
    开始
    读入车次
    否误点

    图33




    否符合
    读入车次
    开始
    记录标i
    ii+1i++
    i<车次总数1
    结束





















    l 售票退票函数:先判断该车否已发车未发车未满订票成功否法订票退票(见图34)
    l 备份文件函数:文件容存储户定址中(见图3—5)



    图35


    l 排序函数(见图36)







    图36


    四源程序代码
    #include
    #include
    #include
    #include
    #include
    #include
    const int MAX20
    const int N50
    const int MAXFILENAME100
    enum {FALSETRUE}
    struct time
    {
    int hour
    int minutes
    }
    struct ticket
    {
    char SerialNumber[10]
    struct time SetOut
    char DeparturePoint[MAX]
    char TerminalPoint[MAX]
    float LastTime
    int FixNumber
    int FixedNumber
    }train[N]
    int RecordNumber
    int FLAGFALSE
    **********************************************
    int ShowMessage(void) 载入原始数
    void mainmenu(void) 菜单
    void InsertMessage(void) 录入班次信息
    void SearchMenu(void) 查询路线子菜单
    void SearchByNumber(void) 班次号查询
    void SearchByAddress(void) 终点站查询
    void cancle(void)删数
    void selection(ticket *paint n)排序
    void TicketManagement(void) 车票售出退回
    void TicketOrder(void) 售票
    void TicketDelete(void) 退票
    void exit(void) 退出该系统
    void SaveRecord(ticket x) 储存信息文件中
    ********************************************
    int main(void)
    {
    do{
    mainmenu()
    }while(FLAGFALSE)
    return 0
    }
    void mainmenu(void)
    {
    system(mode con cols140 lines130)
    char functionNumber
    printf( 火车票理系统\n\n)
    printf(\n)
    printf( 1录入班次信息\t\n)
    printf( 2显示车票信息列表\t\n)
    printf( 3查询火车票数\t\n)
    printf( 4删火车票数记录\t\n)
    printf( 5行车时间排序\t\n)
    printf( 6售票退票系统\t\n)
    printf( 7退出该系统\t\n)
    printf(\n)
    printf(请选择需功)
    scanf(c&functionNumber)
    switch(functionNumber)
    {
    case '1'

    {

    InsertMessage()
    printf(\n意键回菜单\n)
    getchar()
    getchar()
    }
    break
    case '2'
    {
    RecordNumberShowMessage()
    printf(\n意键回菜单\n)
    getchar()
    getchar()
    }
    break
    case '3'
    {
    SearchMenu()
    printf(\n意键回菜单\n)
    getchar()
    getchar()
    }
    break
    case '4'
    {
    cancle()
    printf(\n意键回菜单\n)
    getchar()
    getchar()
    }
    break
    case '5'
    {
    selection(trainRecordNumber)
    printf(班次\t发车时间\t起点\t终点\t行车时间(时)\t额定载量\t已定票数\n)
    int i
    for(i0i {
    printf(s\tdd\t\ttrain[i]SerialNumbertrain[i]SetOuthourtrain[i]SetOutminutes)
    printf(s\ts\t\t1f\t d\t\td\ntrain[i]DeparturePointtrain[i]TerminalPointtrain[i]LastTimetrain[i]FixNumbertrain[i]FixedNumber)
    }
    printf(\n意键回菜单\n)
    getchar()
    getchar()
    }
    break
    case '6'
    {
    TicketManagement()
    getchar()
    getchar()
    }
    break
    case '7'
    {
    int i
    FLAGTRUE
    for(i0i {
    SaveRecord(*(train+i))
    }
    exit()
    }
    break
    default
    {
    printf(输入错误请确保输入17\n)
    printf(意键回菜单\n)
    getchar()
    getchar()
    }
    }switch ends
    FLAGFALSE
    }
    void InsertMessage(void)
    {
    FILE *fp
    char filename[MAXFILENAME]
    int i
    printf(请输入文件名者文件路径名)
    scanf(sfilename)
    if((fpfopen(filenamer))NULL)
    {
    printf(文件s读请确认文件s存者文件路径正确\n\nfilenamefilename)
    mainmenu()
    }
    for(iRecordNumberfeof(fp)&&ferror(fp)i++)
    {
    fscanf(fpsdd&train[i]SerialNumber&train[i]SetOuthour&train[i]SetOutminutes)
    fscanf(fpssfdd&train[i]DeparturePoint&train[i]TerminalPoint&train[i]LastTime&train[i]FixNumber&train[i]FixedNumber)
    }
    RecordNumberi
    *******************************输出更新订票记录************************************************************
    printf(班次\t发车时间\t起点\t终点\t行车时间(时)\t额定载量\t已定票数\n)
    for(i0i {
    printf(s\tdd\t\ttrain[i]SerialNumbertrain[i]SetOuthourtrain[i]SetOutminutes)
    printf(s\ts\t\t1f\t d\t\td\ntrain[i]DeparturePointtrain[i]TerminalPointtrain[i]LastTimetrain[i]FixNumbertrain[i]FixedNumber)
    }
    fclose(fp)
    }

    int ShowMessage(void)
    {
    int i
    FILE *fp
    if((fpfopen(addtxtr))NULL)
    {
    printf(读取数失败请检查文件addtxt否存\n)
    exit(1)
    }
    for(iRecordNumberfeof(fp)&&ferror(fp)i++)
    {
    fscanf(fpsdd&train[i]SerialNumber&train[i]SetOuthour&train[i]SetOutminutes)
    fscanf(fpssfdd&train[i]DeparturePoint&train[i]TerminalPoint&train[i]LastTime&train[i]FixNumber&train[i]FixedNumber)
    }
    int counti
    printf(班次\t发车时间\t起点\t终点\t行车时间(时)\t额定载量\t已定票数\n)
    for(i0i {
    printf(s\tdd\t\ttrain[i]SerialNumbertrain[i]SetOuthourtrain[i]SetOutminutes)
    printf(s\ts\t\t1f\t d\t\td\ttrain[i]DeparturePointtrain[i]TerminalPointtrain[i]LastTimetrain[i]FixNumbertrain[i]FixedNumber)
    printf(\n)
    }
    return count
    }
    void SearchMenu(void)
    {
    system(mode con cols140 lines130)
    char functionNumber
    printf( 查询子菜单\n)
    printf(\n)
    printf( 1班次号查询\t\n)
    printf( 2终点站查询\t\n)
    printf( 3返回菜单\t\n)
    printf(\n)
    printf(请选择需功)
    scanf(*cc&functionNumber)
    switch(functionNumber)
    {
    case '1'SearchByNumber()break
    case '2'SearchByAddress()break
    case '3'
    getchar()
    mainmenu()
    break
    default
    printf(输入错误请确保输入13\n)
    printf(意键回查询子菜单\n)
    getchar()
    getchar()
    SearchMenu()
    }
    }
    void SearchByNumber(void)
    {
    int i
    char Number[MAX]
    printf(请输入班次号)
    scanf(s&Number)
    printf(班次\t发车时间\t起点\t终点\t行车时间(时)\t额定载量\t已定票数\n)
    for(i0i {
    终点站记录找输出
    if((strcmp(Numbertrain[i]SerialNumber))0)
    {
    printf(s\tdd\t\ttrain[i]SerialNumbertrain[i]SetOuthourtrain[i]SetOutminutes)
    printf(s\ts\t\t1f\t d\t\td\ntrain[i]DeparturePointtrain[i]TerminalPointtrain[i]LastTimetrain[i]FixNumbertrain[i]FixedNumber)
    }
    }
    }

    void SearchByAddress(void)
    {
    int i
    char Address[MAX]
    printf(请输入终点站名称)
    scanf(s&Address)
    printf(班次\t发车时间\t起点\t终点\t行车时间(时)\t额定载量\t已定票数\n)
    for(i0i {
    终点站记录找输出
    if((strcmp(Addresstrain[i]TerminalPoint))0)
    {
    printf(s\tdd\t\ttrain[i]SerialNumbertrain[i]SetOuthourtrain[i]SetOutminutes)
    printf(s\ts\t\t1f\t d\t\td\ntrain[i]DeparturePointtrain[i]TerminalPointtrain[i]LastTimetrain[i]FixNumbertrain[i]FixedNumber)
    }
    }
    }
    void cancle(void)
    {
    SearchMenu()
    int ij
    char m[MAX]
    printf(请输入删班次)
    scanf(s&m)
    for(i0i {
    if(iRecordNumber)

    {
    printf(起没趟车\n)
    }
    }
    for(jij {
    train[j]train[j+1]
    }
    printf(删成功\n)
    }

    void selection(ticket *paint n)
    {
    int ikindex
    struct ticket temp
    for(k0k {
    indexk
    for(ik+1i if(pa[i]LastTime indexi
    if(indexk)
    {
    temppa[index]
    pa[index]pa[k]
    pa[k]temp
    }
    }
    }

    void TicketManagement(void)
    {
    char functionNumber
    system(mode con cols140 lines130)
    printf( 订票退票菜单\n)
    printf(\n)
    printf( 1订票\t\n)
    printf( 2退票\t\n)
    printf( 3返回菜单\n)
    printf(\n)
    printf(选择需功)
    scanf(*cc&functionNumber)

    switch(functionNumber)
    {
    case '1'
    {
    TicketOrder()
    getchar()
    getchar()
    }
    break
    case '2'TicketDelete()break
    case '3'
    {
    getchar()
    mainmenu()
    }
    break
    default
    {
    printf(输入错误请确保输入13\n)
    printf(意键回菜单\n)
    getchar()
    getchar()
    mainmenu()
    }
    }
    }
    void TicketOrder(void)
    {
    SearchMenu()
    int ij
    char a[MAX]
    printf(请输入订购车票班次)
    scanf(s&a)
    printf(请输入订购车票张数)
    scanf(d&j)
    for(i0i {
    if((strcmp(atrain[i]SerialNumber))0)
    {
    if(train[i]FixedNumber {
    (train[i]FixedNumber)+j
    printf(订票成功请时车谢谢\n)
    printf(班次\t发车时间\t起点\t终点\t行车时间(时)\t额定载量\t已定票数\n)
    printf(s\tdd\t\ttrain[i]SerialNumbertrain[i]SetOuthourtrain[i]SetOutminutes)
    printf(s\ts\t\t1f\t d\t\td\ntrain[i]DeparturePointtrain[i]TerminalPointtrain[i]LastTimetrain[i]FixNumbertrain[i]FixedNumber)
    }
    else printf(起票已卖完\n)
    }
    }
    }
    void TicketDelete(void)
    {
    SearchMenu()
    int ij
    char b[MAX]
    printf(请输入退购车票班次)
    scanf(s&b)
    printf(请输入退购车票张数)
    scanf(d&j)
    for(i0i {
    if((strcmp(btrain[i]SerialNumber))0)
    {
    if(train[i]FixedNumber>1)
    {
    train[i]FixedNumberj
    printf(退订车票成功谢谢\n)
    printf(班次\t发车时间\t起点\t终点\t行车时间(时)\t额定载量\t已定票数\n)
    printf(s\tdd\t\ttrain[i]SerialNumbertrain[i]SetOuthourtrain[i]SetOutminutes)
    printf(s\ts\t\t1f\t d\t\td\ntrain[i]DeparturePointtrain[i]TerminalPointtrain[i]LastTimetrain[i]FixNumbertrain[i]FixedNumber)
    }
    else printf(起天趟车票尚未卖出法完成退票\n)
    }
    }
    }
    void exit(void)
    {
    printf(\n\n*********************谢谢系统欢迎次继续***********************\n)
    exit(0)
    }
    void SaveRecord(ticket x)
    {
    FILE *fp
    if((fpfopen(addtxta))NULL)
    {
    printf(开文件s失败\naddtxt)
    exit(1)
    }
    fprintf(fp\ns\td\td\t\txSerialNumberxSetOuthourxSetOutminutes)
    fprintf(fps\ts\t\t1f\t d\t\tdxDeparturePointxTerminalPointxLastTimexFixNumberxFixedNumber)
    }

    五测试数结果分析
    显示菜单界面:
    火车票理系统


    1录入班次信息
    2显示车票信息列表
    3查询火车票数
    4删火车票数记录
    5行车时间排序
    6售票退票系统
    7退出该系统

    请选择需功

    1)录入班次信息
    输入:1
    输出:请输入文件名者文件路径名
    输入:D\\1txt
    输出:
    班次 发车时间 起点 终点 行车时间(时) 额定载量 已定票数
    k1111 830 南京 海 40 300 200
    k1234 1020 海 苏州 20 200 50
    t2222 1240 长沙 海 90 250 100
    k2323 1350 扬州 南京 15 200 70
    k1122 920 广州 南京 200 300 170

    意键回菜单
    2)显示车票信息列表
    输入:2
    输出:
    班次 发车时间 起点 终点 行车时间(时) 额定载量 已定票数
    k1111 830 南京 海 40 300 200
    k1234 1020 海 苏州 20 200 50
    t2222 1240 长沙 海 90 250 100
    k2323 1350 扬州 南京 15 200 70
    k1122 920 广州 南京 200 300 170

    意键回菜单

    3)查询火车票记录
    输入:3
    输出:
    查询子菜单

    1班次号查询
    2终点站查询
    3返回菜单

    请选择需功

    输入:1
    输出:请输入班次号:
    输入:k1111
    输出:
    班次 发车时间 起点 终点 行车时间(时) 额定载量 已定票数
    k1111 830 南京 海 40 300 200

    意键回菜单
    输入:2
    输出:请输入终点站名称:
    输入:海
    输出:
    班次 发车时间 起点 终点 行车时间(时) 额定载量 已定票数
    k1111 830 南京 海 40 300 200
    t2222 1240 长沙 海 90 250 100

    意键回菜单
    4)删火车票数
    输入:4
    输出:查询子菜单

    1班次号查询
    2终点站查询
    3返回菜单

    请选择需功
    (查找程)
    输出:请输入删班次:
    输入t2222
    输出:删成功

    意键回菜单

    5)行车时间排序:
    输入:5
    输出:
    班次 发车时间 起点 终点 行车时间(时) 额定载量 已定票数
    k2323 1350 扬州 南京 15 200 70
    k1234 1020 海 苏州 20 200 50
    k1111 830 南京 海 40 300 200
    t2222 1240 长沙 海 90 250 100
    k1122 920 广州 南京 200 300 170

    意键回菜单
    6)售票
    输入:6
    输出:
    订票退票菜单

    1.订票
    2.退票
    3.返回菜单

    选择需功:
    输入:1
    输出:
    查询子菜单

    1班次号查询
    2终点站查询
    3返回菜单

    请选择需功
    (查询程)
    输出:请输入需订购车票班次
    输入:k1111
    输出:请输入订购车票张数
    输入:10
    输出:
    您订票成功请时车谢谢
    班次 发车时间 起点 终点 行车时间(时) 额定载量 已定票数
    k1111 830 南京 海 40 300 210 7)退票
    输入:6
    输出:
    订票退票菜单

    1.订票
    2.退票
    3.返回菜单

    选择需功:
    输入:2
    输出:
    查询子菜单

    1班次号查询
    2终点站查询
    3返回菜单

    请选择需功
    (查询程)
    输出:请输入需退购车票班次
    输入:k1111
    输出:请输入订购车票张数
    输入:5
    退订车票成功谢谢
    班次 发车时间 起点 终点 行车时间(时) 额定载量 已定票数
    k1111 830 南京 海 40 300 195
    8)退出
    输入:7
    输出:****************谢谢系统欢迎次继续****************

    结果分析:(1)输入数字1——7间会提示错误
    (2)输入列车班次信息正确时会结果
    (3)文件录入正确时会结果

    六调试程中问题
    1)文件存储方式正确:应先定义文件存储函数函数中调方便效
    2)删时遇没班次程序出错应存输入列车班次时输出存提示
    3)保存次运行时出错问题:保存信息时应信息间加空格保存否文件次时读取会没分界点
    4)订票退票次张应户输入列车班次户输入需订购张数
    5)结构指针定义错误ticket前应加struct


    文档香网(httpswwwxiangdangnet)户传

    《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
    该内容是文档的文本内容,更好的格式请下载文档

    下载文档到电脑,查找使用更方便

    文档的实际排版效果,会与网站的显示效果略有不同!!

    需要 1 香币 [ 分享文档获得香币 ]

    下载文档

    相关文档

    火车票售票系统软件工程课程设计说明书

      成绩: 软件工程课程设计说明书专 业_ 网 络 工 程 班 级 _ ...

    1年前   
    308    0

    2018年火车票改签新规定

    火车票改签新规定  火车票改签新规定:针对梯次退票存在的“改签规避”漏洞,铁路部门发布新的火车票退改签规定,无论网上、窗口订票,都只能改签1次。改签车票上注明“始发改签”字样。这样的车票无法再...

    6年前   
    626    0

    成绩管理系统心得

    成绩管理系统心得  学生成绩管理系统是一功能十分大的管理系统,它集各种功用于一身,可以完成教学中的各种操作,如对学生的成绩的添加.删除等。学生成绩管理系统功能大,  程序编写也十分复杂,工作量...

    9年前   
    623    0

    公文流转管理系统

    公文流转管理系统 公文流转管理系统主要是指通过在政府部门间建立标准的、统一的公文交换和共享机制,将相关应用系统有机地连接在一起,实现上下级政府部门之间、平级政府部门之间快捷、便利的公文流转、...

    3年前   
    969    0

    工资管理系统

     题目:工资管理系统 摘要由于计算机技术的飞速发展,数据库技术作为数据管理的一个有效的手段,在各行各业中得到越来越广泛的应用。因...

    2年前   
    454    0

    图书管理系统

    毕业设计论文 毕业设计题目:图书管理系统 教 学 班: 学生姓名: 学 ...

    5年前   
    1708    0

    排污收费管理系统

    排污收费管理系统用户手册第一章 安装  将安装光盘放入光驱内,安装程序会自动运行,按提示操作即可完成安装。安装过程中,用户可改变系统的安装路径,默认安装路径为 C:\ProgramFiles\...

    2年前   
    349    0

    火车票背面广告发布合同

    火车票背面广告发布合同  合同编号:_______________  甲方:_____________________  乙方:_____________________  依据中国《合同法》...

    11年前   
    400    0

    2015年国庆节火车票预售时间

    2015年国庆节火车票预售时间   10月1日的火车票:   网络或电话购票最早在9月12日,临客票最早在9月7日;火车站或代售点购票最早在9月14日可以预订,临客票最早在9月9日;  ...

    8年前   
    578    0

    2015年国庆节火车票订票须知

    2015年国庆节火车票订票须知   根据铁路部门规定,不同的售票渠道火车票的起售时间也不一样的。火车站与火车票代售点最早可以提前18天售票,临客票最早提前23天;网上售票与电话售票最早可以提...

    9年前   
    652    0

    2017年火车票退票手续费新规定

    2017火车票退票手续费新规定  提前15天退票不收手续费  XX年11月30日12306官网发布消息,从XX年12月3日起,对开车前15天(不含)以上退票的,不收取退票费。  铁总表示,铁路...

    6年前   
    368    0

    校务通管理系统项目管理

    《校务通管理系统》项目管理1 .概述 《校务通管理系统》是对学校教务和教学活动进行综合管理的平台系统,是基于Internet环境的综合信息系统,满足学校管理层、教师、学生、家长等日常工...

    1年前   
    280    0

    图书管理系统项目管理文档

    XX学院图书管理系统项目管理文档目录1. 合同管理----------------------------------------------------------------------3...

    3年前   
    580    0

    自动化办公系统(OA系统)管理办法

    自动化办公系统(OA系统)管理办法(试行)第一章 总 则 第一条 为确保公司(以下简称“公司”)自动化办公系统(以下简称“OA系统”)安全、畅通运行,充分发挥OA系统的作用,提高工作效...

    4年前   
    2165    0

    门禁管理系统方案

    门禁管理系统方案目录1 概述 22 选型依据 23 系统遵循的主要技术指标及规范 34 设计原则 45 门禁系统组成 55.1 中央门禁管理系统组成 75.2 就地级设备组成 75.3 传输网...

    3年前   
    667    0

    科研信息管理系统

     摘 要 在作了充分的需求分析的基础上,采用ASP技术,结合Access数据库,开发了一个高校教职工发表论文情况的科研信息管理系统。 该系统能实现初始数据的录入、修改、删除...

    5年前   
    1496    0

    小区物业管理系统

     小区物业管理系统 摘 要 对于小区物业管理来说,其工作流程的繁杂性、多样化、管理复杂、收缴费用与设备维护繁琐。 计算机已完全能够胜任物业管...

    5年前   
    1640    0

    超市管理系统需求文档

    在现代化超市中,玲琅满目的商品让人们目不暇接。面对日益增加的商品数量和类型,动用人力管理商品的时候越来越麻烦。这个时候要是有一个软件系统代替人力管理超市的信息,那将使人们的生活越来越简易。

    3年前   
    861    0

    物料与采购管理系统

    物料与采购管理系统 (一) 材料分类编号 1.原料、物料的划分 2.常备料与非常备料划分 3.编号原则设定 (二) 存量控制 ...

    9年前   
    834    0

    公司管理系统开题报告

     毕业设计(论文)开题报告学生姓名: 学 号: 所在学院: 专 ...

    3年前   
    698    0