火车订票管理系统课程设计报告书
- 格式:doc
- 大小:852.50 KB
- 文档页数:44
延边大学工学院C语言课程设计报告书题目:火车票务系统(A)班级:学号:姓名:指导教师:二○○九年七月一.系统功能的总体描述本系统要求实现火车票务基本信息的查询,订票、售票、退票、车次查询等。
功能要求实现:火车票的基本信息:符合条件的车次名称、开时、到时、历时、里程、票价(硬座、软座、硬卧(上、中、下)软卧(上、中、下))车次类型、站名的查询显示,统计,添加(新加车次)、更改(售出票后需修改所剩票数)和删除(已发车次信息)等。
二、系统基本功能本系统可实现火车票务信息的管理和查询等功能。
它的基本功能是建立火车票信息链表,存储火车票的基本信息,实现对已有车次票务的查询、预订、售票、退票等业务的保存、修改等。
软件输出输入形式:软件提示信息丰富、容易理解,重点是依据火车票务的特点有明显的即时性和快速性。
测试数据要求:本系统的测试数据当输入想要到达的目的地信息时输出符合的车次、到站时间、开车时间以及终到站时间,车次名称、开时、到时、历时、车次类型、站名必须用字符串数据;里程、车票剩余情况、票价情况必须用整型数据。
对车票的基本信息进行查找时按目的地、时间和车次三种查找方式查找。
测试数据要有即事性、快速性。
三、系统具体分析(一)所需的功能1 输入功能:录入目的地信息2 输出功能:查看所查信息3 查询功能:查询符合车次及相关信息4修改功能:更新系统信息5 删除功能:对已发车辆信息删除6 票务功能:负责售票和退票业务7安全功能:负责管理员密码审核、修改等安全(二)系统功能模块划分(三)各模块的功能描述——主菜单模块功能————子菜单模块功能描述——(四)函数调用过程四、系统核心算法1、ccchanxun函数——通过车次查询列车信息输入:要查询车次输出:相关信息Step1:输入要查询的列车号char[6](在中国列车号有数字和字母组成,最长为5个字符,如:k8371因此为节省内存只需定义6字符长度的数组) Step2:用c与链表中的列车号(*p).lchao相比较判断strcmp((*p).lchao,c)是否等于零,否则进行step3,是则进行step4Step3:令p=p->next,判断p是否指向空节点NULL,若是则转到step2,否则进行step5Step4:显示相关信息(车次名称、开时、到时、历时、票价、车次类型等)Step5:显示未能找到所寻车次ccchanxun函数N-S流程图2、mddcharxun函数——通过目的地查询最终能到达目的地的全部车次,以及全部相关信息输入:要查询目的地输出:相关信息Step1:输入要查询的目的地char[20]Step2:用c与链表中的终到站(*p).zhongdaozhan相比较判断strcmp((*p).zhongdaozhan,m)是否等于零,否则进行step3,是则进行step4Step3:令p=p->next,判断p是否指向空节点NULL,若是则转到step2,否则进行step5Step4:显示相关信息(全部车次名称、开时、到时、历时、票价、车次类型等)Step5:显示未能找到所寻目的地。
程序设计报告( 2014 / 2015 学年第一学期)题目:火车票管理系统专业通信工程学生姓名班级学号指导教师指导单位计算机学院计算机软件教学中心日期火车票务管理系统一、课题内容和要求(一)课题内容该系统要求实现一个简单、实用的火车票管理程序,主要功能包括火车票数据的录入、查找、删除、显示、售票、退票等。
所有火车票数据都要利用文件系统保存,以备系统下次运行时使用。
通过此课题,熟练掌握文件、数组、指针的各种操作,以及一些基本算法思想的应用。
(二)课题要求(1)火车票数据由多条记录组成,其信息包括:车次,发车时间,起点站,终点站,行车时间,额定载量,已售票人数等。
(2)数据保存形式:所有火车票数据要以文本或二进制文件保存。
(3)需要实现的功能1)新增火车票数据记录。
2)查找火车票数据(可按车次,发车时间、起点站、终点站等查找)。
3)删除火车票数据记录(先查找,再删除。
若查找出多条记录,则进一步提示用户选择记录的车次,再删除)。
4)对火车票排序(可按车次、发车时间、起点站、终点站等排序。
)。
5)显示当前所有火车票信息列表。
6)售票(先查找,当确定车次后,根据售票张数对该车次的已售票人数进行修改)。
7)退票(售票的逆处理,过程与售票类似)。
8)保存火车票数据到文件中。
9)从文件中读入火车票数据。
(4)界面功能要求:1)采用友好的字符界面,实现一个功能控制菜单。
2)每次操作都从该菜单选择,利用循环结构使得一次运行程序可进行多次操作。
需求分析一、功能分析图二、录入班次信息:依次输入班次、起点站和终点站等信息同时保存在文件中,并可以随时增加新的班次信息。
三、浏览班次信息:输出保存在文件中的全部班次信息,并区分当前的车次是否已发出,如发出则标记“此车已发出”。
四、按班次号查询路线:以输入的班次号为依据进行查找,找到匹配项则输出该项完整的班次信息;未找到则显示“未找到该车次信息!”五、按起点站查询路线:输入的起点站为依据进行查找,找到匹配项则输出该项完整的班次信息;未找到则显示“未找到该车次信息!”六、按终点站查询路线:输入的终点站为依据进行查找,找到匹配项则输出该项完整的班次信息;未找到则显示“未找到该车次信息!”七、排列发车时间表:按照发车时间从早到晚的顺序逐条显示车次信息。
火车订票系统课程设计一、课程目标知识目标:1. 让学生掌握火车订票系统的基本原理和功能模块;2. 帮助学生了解数据库在火车订票系统中的应用;3. 引导学生理解火车票的查询、预订、支付等业务流程。
技能目标:1. 培养学生运用所学知识设计简单的火车订票系统功能模块;2. 提高学生分析问题、解决问题的能力;3. 培养学生团队协作和沟通表达的能力。
情感态度价值观目标:1. 激发学生对计算机科学与技术学科的兴趣和热情;2. 培养学生关注社会热点问题,关注信息技术在生活中的应用;3. 引导学生树立正确的价值观,认识到科技改变生活的重要性。
课程性质:本课程为信息技术与学科整合的实践性课程,结合实际生活中的火车订票系统,让学生在实践中掌握计算机科学与技术的基本知识和技能。
学生特点:六年级学生对计算机有一定的基础,具备一定的操作能力和逻辑思维能力,对新鲜事物充满好奇心。
教学要求:注重理论知识与实践操作相结合,以学生为主体,教师为主导,鼓励学生积极参与讨论和实践活动,提高学生的动手能力和创新能力。
通过本课程的学习,使学生能够将所学知识应用于实际问题的解决中。
二、教学内容1. 火车订票系统概述:介绍火车订票系统的基本概念、发展历程和在我国的应用现状。
相关教材章节:第三章 计算机网络应用2. 火车订票系统功能模块:分析火车订票系统的功能模块,包括用户注册、登录、查询、预订、支付、改签、退票等。
相关教材章节:第四章 数据库应用3. 数据库在火车订票系统中的应用:讲解数据库的基本概念,以及如何在火车订票系统中设计数据库表、实现数据存储和查询。
相关教材章节:第五章 数据库设计4. 火车票查询与预订:详细介绍火车票查询与预订的业务流程,包括车次查询、余票查询、预订车票等。
相关教材章节:第六章 互联网编程5. 火车订票系统设计与实现:引导学生运用所学知识,设计并实现一个简单的火车订票系统。
相关教材章节:第七章 网络编程实践教学进度安排:第一课时:火车订票系统概述第二课时:火车订票系统功能模块第三课时:数据库在火车订票系统中的应用第四课时:火车票查询与预订第五课时:火车订票系统设计与实现教学内容确保科学性和系统性,注重理论与实践相结合,使学生在掌握基本知识的基础上,能够运用所学技能解决实际问题。
课程设计课程名称SQL数据库系统课程设计题目名称火车订票管理系统专业班级学生姓名学号指导教师年月日火车订票管理系统摘要:本文针对火车站的订票实际情况,按照软件工程的结构化设计思想,经过项目的可行性研究和需求分析、总体设计、详细设计,以及编码实现和调试等步骤设计开发了火车订票管理系统。
并运用数据流图和数据字典、E-R图和数据库逻辑结构、层次图、系统流程图、以及程序流程图,对该系统的数据需求、数据库、系统软件结构、系统流程、以及处理过程等进行了分析和设计。
工具软件利用Visual Studio 2010软件和SQL Server 2008数据库来设计这个火车订票管理系统,并用C#语言设计后台代码。
该系统要解决的是火车订票工作所要解决的问题,可以满足火车订票的基本要求,包括用户查询、订票、退票和管理员增加车票等几个方面的功能。
关键词:订票管理;火车订票;SQL Server 2008Ordering Tickets Management SystemAbstract:After a long time observation of booking a train ticket and feasibility research ofa online train ticket booking system,i have build a online ticket bookingsystem in the following software cycle:requirement analysis,architecture anddetail design,coding and testing.In the design phase,i present the system withdata follow chart,data dictionary,E-R graphic,database logical structure,andtypical UML modeling facility such as Class diagram,Activity diagram,Usecase diagram and Sequence diagram.This product is developed in java(thelatest jdk 1.6),and the DBMS is sql server 2005 express edition.it's build to helpyou to book a train ticket online.On this website ,you can inquire ticketinformation,book a ticket and refund your ticket.For the supervisor,it providesadditional right(protected by admin priviledge) to maintain the systemincluding train data creating,importing and cleaning upKeywords: Ticketing management ;Ticket selling system;SQL Server2008目录蚌埠学院计算机科学与技术系课程设计任务书 (1)蚌埠学院计算机科学与技术系本科课程设计成绩评定表 (2)1 系统总体方案 (3)1.1开发背景 (3)1.2意义 (3)1.3系统相关知识介绍 (3)2 设计思路与主要步骤 (5)2.1系统需求 (5)2.2功能需求 (5)2.2.1查询 (5)2.2.2.购票 (5)2.2.3.退票 (6)2.3数据库逻辑结构 (6)2.4数据库中的约束 (7)2.4.1主键约束 (7)2.4.2外键约束 (7)2.4.3 CHICK约束 (7)2.4.4 DEFAULT约束 (8)2.4.5长度约束 (8)3 各功能模块和流程图 (9)3.1系统软件结构设计 (9)3.2系统流程图 (9)4 系统的详细设计 (14)4.1登录界面 (14)4.2游客模块 (14)4.2.1列车信息查询 (14)4.2.2网上用户注册 (15)4.3用户模块 (16)4.3.1购票 (17)4.3.2退票 (19)4.3.3查看用户信息 (21)4.3.4用户修改密码 (21)4.3管理员模块 (22)5 设计代码 (24)总结 (34)谢辞 (35)参考文献 (36)蚌埠学院计算机科学与技术系课程设计任务书蚌埠学院计算机科学与技术系本科课程设计成绩评定表火车订票管理系统1 系统总体方案1.1开发背景现在人们更多的使用火车作为出行交通工具,因此车票票务市场也在快速发展。
设计名称:VC++课程设计题目:火车票管理系统学生姓名:黄壹戴开翼王飞梅专业:计算机科学与技术班别:计科本081学号:0804402132 0804402119 0804402108 指导老师:黄东日期:2010 年 6 月 2 日黄壹、戴开翼、王飞梅课程设计报告目录第一章概述 (2)1.1课程设计题目 (2)1.2设计目的 (2)1.3设计内容 (2)1.4系统测试要求 (3)第二章需求分析 (3)2.1需求分析的任务 (3)2.2需求分析的过程 (3)2.3数据字典与流程图 (3)2.4系统框架 (4)第三章概念结构设计 (6)3.1概念结构设计的方法与步骤 (6)3.1.1概念结构设计的方法 (7)3.1.3概念结构设计的步骤 (7)3.2数据抽象与局部视图设计 (7)3.3视图的集成 (8)第四章数据库逻辑设计 (9)4.1数据库的结构设计 (9)第五章软件功能设计 (10)5.1软件模块划分 (10)5.2软件功能结构图 (11)课程设计报告第六章界面设计 (11)第一章概述1.1课程设计题目开发一个火车票定票系统主要实现以下功能:1、用户基本信息的管理。
2、用户购票的基本信息。
3、购票以后的分发管理。
4、能实现退票功能。
5、能进行信息的统计和查询6、操作员管理1.2设计目的应用本学期对数据库系统原理的理论学习,通过上机实践的方式将理论知识与实践更好的结合起来,巩固所学知识。
实践和巩固在课堂教学中学习的关于关系数据库原理的有关知识和数据库系统的建立方法,熟练掌握对于给定实际问题,为了建立一个关系数据库信息管理系统,必须得经过系统调研、需求分析、概念设计、逻辑设计、物理设计、系统调试、维护以及系统评价的一般过程,为毕业设计打下基础。
1.3设计内容对于所选择的题目必须对课题的相关信息有一定的了解,对于这个火车票定票系统来说,必须了解火车票预定系统的基本雏形以及购票人的信息还有火车票的相关信息。
沈阳工程学院课程设计设计题目:火车票管理系统系别信息工程系班级网络本101学生姓名刘雨娇金兆宁姚宇夏林学号02 13 19 24指导教师孙宪丽、杨弘平职称副教授、副教授起止日期:2012年12月3日起——至2012年12月7日止沈阳工程学院课程设计任务书课程设计题目:火车票管理系统系别信息工程系班级网络本101 学生姓名刘雨娇金兆宁姚宇夏林学号02 13 19 24指导教师孙宪丽、杨弘平职称副教授、副教授课程设计进行地点:实训F任务下达时间:2012 年12 月 3 日起止日期:2012年12月3日起—至2012年12月7日止教研室主任年月日批准1.设计的原始资料及依据查阅有关数据库设计、Java语言程序设计以及案例分析等资料,进一步熟悉面向对象程序设计基本理论以及基本思想。
本设计要求按照软件工程、数据库设计思想及设计步骤设计一个实用程序,并采用Java开发该系统。
通过本设计可以加深对面向对象程序设计基本思想的理解,加强学生研发、调试程序的能力,培养学生分析、解决问题的能力,提高学生的科技写作能力。
2.设计的主要内容及要求(1)写出系统的需求分析。
(2)写出系统的数据库设计过程,包括概念结构设计、逻辑结构设计、物理结构设计。
(数据库应用程序管理系统类设计详细写,其它类设计可以略)(3)写出系统设计思路—工作原理、功能规划。
(4)详细设计—数据分析、算法思路、类设计、功能实现(包括程序流程图、主要代码及注释)、界面等。
(5)运行调试与分析讨论--给出运行屏幕截图,分析运行结果,有何改进等。
3.对设计说明书撰写内容、格式、字数的要求(1)学生应撰写的内容为:中文摘要和关键词、目录、正文、参考文献等。
课程设计说明书(论文)的结构及各部分内容要求参照《沈阳工程学院毕业设计(论文)撰写规范》执行。
应做到文理通顺,内容正确完整,书写工整,装订整齐。
(2)装订格式:封面、任务书、成绩评审意见表、中文摘要和关键词、目录、正文、结论、致谢、参考文献。
课程设计报告实习名称课程设计报告设计题目火车票订票系统实习时间2012年3月 12日-3月18日专业班级计算机科学与技术目录一.实验目的 -------------------------------------------------------- 1二.需求分析 -------------------------------------------------------- 1三.概要设计 -------------------------------------------------------- 2四.详细设计 -------------------------------------------------------- 2五.调试与测试结果分析----------------------------------------------- 6六.使用说明 -------------------------------------------------------- 7七.感想总结 -------------------------------------------------------- 8八.参考文献 -------------------------------------------------------- 9九.附录 ------------------------------------------------------------ 9德州学院计算机系 c语言课程设计报告一.实验目的当今计算机在各行各业领域中其重要作用,不仅代替人力物力财力也节省了大量的时间,提高了工作的效率。
生活中,银行的存款取款转账等各种系统、超市中的物品录入系统、中国13亿人口的信息管理系统、校园中学生信息的管理等等,都离不开计算机的应用。
现今,乘坐火车也成为一种流行的交通工具,方便舒适快捷。
课程设计报告课程设计题目: Linux下的火车系统专业:软件工程班级:姓名:学号:指导教师:20 16年 7月 1日(一)实验题目Linux下的火车售票系统(二)实验时间,地点2016.6.27到2016.6.30,软件楼506(三)实验目的在linux下做一个火车售票系统(四)实验要求要求采用多线程编程,实现车票信息的查询,录入,更新,车次的修改;实现用户注册登录,订票查询、火车票预订、退票申请以及后台方面的列车车次信息发布更新、车票生成、提供取票服务。
(五)实现思路该算法用c语言编写,再在linux下用vi建立文档,gcc后生成可行文件后,./运行。
C语言实现思路为1.把ticket,user,定义为结构,其中ticket中有四个数据。
User1和user2一开始都是为空2.定义开始地点四个,终点4个3. 定义数组c1.c2,daaress.uname1,pass1.uname1,uname24.写个选择页面,共有5个页面。
5. 如果用户选择1购票,下面for循环控制路线。
如果用户选择2注册,把输入的数据存入数组如果用户选择3查询,建立for循环如果用户选择4购票,用if判断语句判断用户输入的是否在数组里如果用户选择5购票.用exit退出流程图:实现过程:定义结构,再加while if等循环实现代码#include <stdio.h>Struct ticket /*定义火车票为结构体 */ {char* starName;char* endName;int number;};struct user /*定义用户为结构体*/{char* userName;char* passWord;};struct ticket tickets[4] ;/* 火车票里有4个对象 */ struct user user1={NULL,NULL};/* 用户初始为空*/ struct user user2={NULL,NULL} ;int lq_index();/*定义数组*/void gotolq_Index();void main(){int i =0 ;char* starNames[4]={"南昌","深圳","广州","九江"};/*4个起点*/char* endNames[4]={"深圳","南昌","九江","广州"};/*4个终点*/for(i=0;i<4;i++){tickets[i].starName=starNames[i];tickets[i].endName=endNames[i];tickets[i].number=rand()%21+30; }/*for(i=0;i<4;i++){printf("%s-%snumber:%d\n",tickets[i].starName,tickets[i].endName,tickets[i]. number);}*/printf("\t**********欢迎使用火车票系统**********\n");/*输出主页面*/while(1==1){if(lq_index()==5)break;}}int lq_index(){int i=0,j=0;char yn;char c1[20];/*2个数组*/char c2[20] ;charaddress[20],uname1[20],pass1[20],uname2[20],pass2[20];printf("\n [1] 购票 [2] 注册 \n" );printf(" [3] 查询 [4] 登录 \n" );printf(" [5] 退出 \n" );printf("请输入编号");scanf("%d",&i);if(i==1) {printf("输入目的地和出发地:");scanf("%s %s",c1,c2); /*接受用户输入的数据*/j=0;for(i=0;i<4;i++){j++;if(strcmp(tickets[i].starName,c1)==0&&strcmp(tickets[i].endN ame,c2)==0)/*判断是否有票*/{if(tickets[i].number>0){printf("您的选择的线路%s-%s 还剩%d张票是否确定购买(y/n) : ",c1,c2,tickets[i].number);scanf(" %c",&yn);if(yn=='y'||yn=='Y'){if(erName!=NULL){tickets[i].number -- ;printf("恭喜您购票成功! ");}else{printf("登录后才能购票! ");}/*如果没登录显示用户登录*/gotolq_Index();/*选择路线*/}else if(yn=='n'||yn=='N'){gotolq_Index();}else{printf("输入有误!\n");i--;j--;continue;}return 1;}else{printf("抱歉您的选择的线路%s-%s 已无票出售!",c1,c2);/*如果无票就提示*/gotolq_Index();return 1;}}else if(j==4)/*路线不存在提示*/{printf("您的选择的线路%s-%s 系统中不存在!",c1,c2);gotolq_Index();return 1;}}}else if(i==2){printf("输入账号:");/*注册账号*/ scanf("%s",uname1) ;erName=uname1;printf("输入密码: ");scanf("%s",pass1);user1.passWord=pass1;printf("恭喜%s用户注册成功!",erName);gotolq_Index();}else if(i==3){printf("输入要查询的地点:"); /*查询车票*/scanf("%s",address);printf("始发站\t终点站\t票数\n");i=0;for(i=0;i<4;i++){if(strcmp(tickets[i].starName,address)==0){printf(" %s\t %s\t %d\n",tickets[i].starName,tickets[i].endN ame,tickets[i].number);}else{j++;}if(j==4){printf("未找到相应数据!\n");}}gotolq_Index();return 1;}else if(i==4){printf("输入账号:");/*用户登录与已经注册的判断*/scanf("%s",uname2) ;erName=uname2;printf("输入密码: ");scanf("%s",pass2);user2.passWord=pass2;if(erName!=NULL){if(strcmp(erName,erName)==0&&strcmp(user1.pa ssWord,user2.passWord)==0){printf("欢迎%s用户使用本系统!",erName);}else{erName=NULL;user2.passWord=NULL;printf("输入账号或者密码不一致!");}}else{printf("请先注册用户!");/*不一致提示注册*/ }gotolq_Index();}else if(i==5){printf("欢迎再次使用本系统!");return 5 ;}return 1 ;}void gotolq_Index(){printf("任意键返回首页!");/返回*/printf("\n**************************************\n"); }。
设计题目:火车订票管理系统班级:姓名:学号:2015年1月4日1.课程设计目的和要求火车订票管理系统的主要功能包括:1. 火车线路查询功能,乘客输入终点站名称或输入车次,输出相应的火车线路信息。
2. 订票功能。
乘客输入车次和订票数,先查询该车次的余票数,若余票数大于等于订票数,则为乘客办理订票手续,要求乘客输入姓名、身份证号码,计算出总票价,产生一个新结点,将该结点添加到对应车次的链表中,然后修改该车次的余票数。
若余票数小于订票数,则输出提示信息“余票数不足,订票失败!”。
3. 退票功能。
乘客输入车次和身份证号码,在该车次对应的链表中查找该乘客,若找到,询问乘客退票数量,若退票数小订票数,则只需修改结点的订票数;若退票数等于订票数,则将该乘客对应的结点删除,然后修改该车次的余票数;若没找到,则应提示“未找到相应信息”,要求乘客重新输入车次和身份证号码,再进行查找,如果仍未找到,则输出提示信息“输入信息错误,退票失败!”。
4. 其他查询功能。
(1) 输入车次,输出该车次的全部订票信息。
(2) 输入车次,输出该车次的订票数和余票数。
(3) 输入终点站名称,输出相关火车线路的信息。
(4) 输入日期(年.月.日),输出发车时间为该天的火车线路的信息。
(5) 输出余票数为0的火车线路的信息。
2.系统总体设计2.1 系统功能模块图2.2 数据结构设计假设有5条火车线路(起点均为济南),每条线路所涉及的信息有:终点站、车次、发车时间(年.月.日.时.分)、票价、余票数(假设火车总票数为300)。
乘客订票信息包括:乘客姓名、乘客身份证号码、订票数,总票价。
本系统要求用结构体数组和链表实现,将火车线路信息存放在结构体数组中,每条线路对应一个链表,乘客订票就是在链表中插入结点,乘客退票就是在链表中删除结点。
链表的结点类型和结构体类型定义如下:typedef struct node{char name[10]; //乘客姓名char IDcard[20]; //乘客身份证号码int TicketNum; //订票数float FareSum; //总票价struct node *next; //指针成员}SN;typedef struct Dtime{short year;short month;short day;short hour;short minute;}SD;typedef struct train{char terminal[10]; //终点站char sequence[10]; //车次struct Dtime StartTime; //发车时间float fare; //票价int SpareTicketNum; //余票数struct node *head; //指针成员,指向该线路第一个订票乘客}ST;系统整体结构见图9.3所示图9.3 系统结构示意图全局变量如下:#define N1 5 //火车线路数ST b[N1]; //火车信息结构体数组#define LEN1 sizeof(ST)//火车信息结构体数据块大小#define LEN2 sizeof(SN)//乘客信息结构体数据块大小3.系统详细设计3.1 函数说明#include<stdio.h>#include<stdlib.h>#include<string.h>#define N1 5 //*************************火车线路数//**************************************************结构体类型的定义typedef struct node{char name[20];char IDcard[20];int TicketNum;float FareSum;struct node *next;}SN;typedef struct Dtime{short year;short month;short day;short hour;short minute;}SD;typedef struct train{char terminal[20];char sequence[20];struct Dtime StartTime;float fare;int SpareTicketNum;struct node *head;}ST;ST b[N1];#define LEN1 sizeof(ST)#define LEN2 sizeof(SN)//***********************************************函数声明int Menu1(void); //*************************火车订票管理系统界面int Menu2(void); //*************************其他查询功能界面int Menu3(void); //*************************第一界面void creat1(void); //*************************管理员录入信息SN* creat2(float k); //**************************录入乘客信息void find0(void); //*************************查询void dingpiao(void); //*************************订票void tuipiao(void); //**************************退票void find1(void); //*************************查找功能1void find2(void); //*************************查找功能2void find3(void); //*************************查找功能3void find4(void); //*************************查找功能4void shuchu(void); //**************************输出0票数线路功能void LIST(SN *head); //**************************输出链表void READ(void); //**************************将数据读出生成文件void WRITE(void); //**************************将链表写入文件//************************************************************主函数int main(){int a,b,c;char m[20];b=Menu3();switch(b){case 0:printf("\n\t谢谢使用,再见!\n");exit(0);case 1:printf("\n请输入密码:");scanf("%s",m);if(strcmp(m,"666")==0) creat1();else printf("\n密码输入错误!\n\n");break;case 2:while(1){c=Menu1();switch(c){case 1:find0();break;case 2:dingpiao();break;case 3:tuipiao();break;case 4:a=Menu2();switch(a){case 1:find1();break;case 2:find2();break;case 3:find3();break;case 4:find4();break;case 5:shuchu();break;case 6:break;case 0:printf("\n\t谢谢使用,再见!\n");exit(0);default:printf("\n\t您的按键有误,请重新选择!\n");}break;case 0:printf("\n\t谢谢使用,再见!\n");exit(0);default:printf("\n\t您的按键有误,请重新选择!\n");}}}}//*********************************************************各函数定义int Menu1(void){int sel;printf("\n");printf("\t--------------------------------------------\n");printf("\t* *\n");printf("\t* 欢迎进入火车订票管理系统*\n");printf("\t* *\n");printf("\t--------------------------------------------\n");printf("\n");printf("\t请选择您要使用的功能:\n\n");printf("\t 1.火车路线查询\n");printf("\t 2.订票\n");printf("\t 3.退票\n");printf("\t 4.其他查询\n");printf("\t 0.退出系统\n\n");printf("\t 请选择按键0~4\n");scanf("%d",&sel);return(sel);}int Menu2(void){int sel;printf("\n");printf("\t--------------------------------------------\n");printf("\t* *\n");printf("\t* 欢迎进入火车订票管理系统*\n");printf("\t* *\n");printf("\t--------------------------------------------\n");printf("\n");printf("\t请选择您要使用的功能:\n\n");printf("\t 1.输入车次,查询该车次的全部订票信息\n");printf("\t 2.输入车次,查询该车次的订票数和余票数\n");printf("\t 3.输入终点站名称,查询相关火车线路的信息\n");printf("\t 4.输入日期(年·月·日),查询发车时间为该天的火车线路的信息\n");printf("\t 5.查询余票数为0的火车线路信息\n");printf("\t 6.返回上一界面\n");printf("\t 0.退出系统\n\n");printf("\t 请选择按键0~6\n");scanf("%d",&sel);return(sel);}int Menu3(void){int sel;printf("\n");printf("\t--------------------------------------------\n");printf("\t* *\n");printf("\t* 欢迎进入火车订票管理系统*\n");printf("\t* *\n");printf("\t--------------------------------------------\n");printf("\n");printf("\t 1.管理员入口\n");printf("\t 2.乘客入口\n");printf("\t 0.退出系统\n\n");printf("\t 请选择按键0~2\n");scanf("%d",&sel);return(sel);}void creat1(){SN *p1;int i,j;for(i=0;i<N1;i++){printf("\n\n");printf("请输入火车终点站:");scanf("%s",b[i].terminal);printf("请输入火车车次:");scanf("%s",b[i].sequence);printf("请输入火车发车时间(年_月_日_时_分_):");scanf("%hd%hd%hd%hd%hd",&b[i].StartTime.year,&b[i].StartTime.month, &b[i].StartTime.day,&b[i].StartTime.hour,&b[i].StartTime.minute);printf("请输入火车票价:");scanf("%f",&b[i].fare);printf("请输入火车余票数:");scanf("%d",&b[i].SpareTicketNum);b[i].head=creat2(b[i].fare);}WRITE();}SN *creat2(float k){SN *p1,*p2,*head;head=NULL;int n=0,i,m;printf("请输入您要录入的乘客人数:");scanf("%d",&m);for(i=0;i<m;i++){n++;if(n==1){p1=(SN*)malloc(LEN2);if(p1==NULL) { printf("\n No enough memory!\n"); exit(0); }printf("请输入乘客姓名:");scanf("%s",p1->name);printf("请输入乘客身份证号码:");scanf("%s",p1->IDcard);printf("请输入乘客订票数:");scanf("%d",&p1->TicketNum);p1->FareSum=p1->TicketNum*k;head=p1;}else{p1=(SN*)malloc(LEN2);if(p1==NULL) { printf("\n No enough memory!\n"); exit(0); }printf("请输入乘客姓名:");scanf("%s",p1->name);printf("请输入乘客身份证号码:");scanf("%s",p1->IDcard);printf("请输入乘客订票数:");scanf("%d",&p1->TicketNum);p1->FareSum=p1->TicketNum*k;p2->next=p1;}p2=p1;}p2->next=NULL;printf("\n输入成功!\n\n");return(head);}void find0(void){int x=0;SN *p1,*p2;int i=0,n=0,m=0,j;char ch[20];FILE *fp;READ();while(!x){printf("\n请输入您要查找的火车终点站或者车次:");scanf("%s",ch);for(i=0;i<N1;i++){if(strcmp(ch,b[i].terminal)==0||strcmp(b[i].sequence,ch)==0){printf("终点站:%s 车次:%s 发车时间:%hd年%hd月%hd日%hd 时%hd分火车票价:%.2f 火车余票数:%d\n\n",b[i].terminal,b[i].sequence,b[i].StartTime.year,b[i].StartTime.month,b[i].StartTime.day,b[i].StartTime.hour,b[i].StartTime.minute,b[i].fare,b[i].SpareTicketNum);n++;}}if(n==0){printf("\n对不起,您查找的火车信息不存在!\n\n");}printf("\n继续查找请选0,退出查询请选1\n\n");printf("请选择:");scanf("%d",&x);}}void dingpiao(void){SN *p1,*p2,*p0;char ch[20];int s,i,n=0;FILE *fp;READ( );printf("\n请输入您要订购的火车车次:");scanf("%s",ch);printf("请输入您要订购的车票数:");scanf("%d",&s);for(i=0;i<N1;i++){if(strcmp(b[i].sequence,ch)==0){n++;if(s>b[i].SpareTicketNum){printf("\n余票数不足,订票失败!\n\n");break;}else{p0=(SN*)malloc(LEN2);if(p0==NULL) { printf("\n No enough memory!\n"); exit(0); }printf("\n请输入乘客姓名:");scanf("%s",p0->name);printf("请输入乘客身份证号码:");scanf("%s",p0->IDcard);p0->TicketNum=s;p0->FareSum=p0->TicketNum*b[i].fare;p0->next=b[i].head;b[i].head=p0;b[i].SpareTicketNum=b[i].SpareTicketNum-p0->TicketNum;printf("\n订票成功!\n\n");}}}if(n==0) printf("\n对不起,您的输入有误!\n\n");WRITE();}void tuipiao(void){SN *p1,*p2,*p0;char ch[20],sh[20];int t,s=0,i,j,n=0;READ();for(j=0;j<2;j++){printf("\n请输入您要退票的车次:");scanf("%s",ch);printf("请输入身份证号码:");scanf("%s",sh);for(i=0;i<N1;i++){if(strcmp(ch,b[i].sequence)==0){s++;p0=b[i].head;while(p0!=NULL){n++;if(strcmp(sh,p0->IDcard)==0){printf("请输入您要退票的数量:");scanf("%d",&t);if(t<(p0->TicketNum)){p0->TicketNum=p0->TicketNum-t;b[i].SpareTicketNum=b[i].SpareTicketNum+t;printf("\n退票成功!\n\n");goto end;}elseif(t==(p0->TicketNum)){b[i].SpareTicketNum=b[i].SpareTicketNum+p0->TicketNum;if(n==1)b[i].head=p0->next;elsep1->next=p0->next;printf("\n退票成功!\n\n");goto end;}else{printf("\n输入退票数有误!\n\n");goto end;}}p1=p0;p0=p0->next;}}}if(j==1) printf("\n未找到相应信息,请重新查找\n\n");if(s==0) {printf("\n输入信息错误,退票失败!\n\n");} }end:WRITE();}void find1(void){char ch[20];int i,n;READ();printf("\n请输入您要查询订票信息的车次:");scanf("%s",ch);for(i=0;i<N1;i++){if(strcmp(ch,b[i].sequence)==0){LIST(b[i].head);}}if(n==0) printf("\n您查找的信息不存在,请重新查找\n\n");printf("\n谢谢您的使用\n\n");}void find2(void){char ch[20];SN *p1;int i,n=0,sum=0;READ();printf("\n请输入您要查询订票信息的车次:");scanf("%s",ch);for(i=0;i<N1;i++){if(strcmp(ch,b[i].sequence)==0){p1=b[i].head;while(p1!=NULL){sum=sum+p1->TicketNum;p1=p1->next;}printf("\n该车次的订票数为:%d 该车次的余票数为:%d\n\n",sum,b[i].SpareTicketNum);n++;}if(n==0) printf("\n未找到相应信息!\n\n");}}void find3(void){char ch[20];int i,n=0;READ();printf("\n请输入您要查询订票信息的终点站:");scanf("%s",ch);printf("\n");for(i=0;i<N1;i++){if(strcmp(ch,b[i].terminal)==0){printf("终点站:%s 车次:%s 发车时间:%hd年%hd月%hd日%hd 时%hd分火车票价:%.2f 火车余票数:%d\n\n",b[i].terminal,b[i].sequence,b[i].StartTime.year,b[i].StartTime.month,b[i].StartTime.day,b[i].StartTime.hour,b[i].StartTime.minute,b[i].fare,b[i].SpareTicketNum);n++;}}if(n==0){printf("\n您查找的信息不存在,请重新查找\n\n");}}void find4(void){char ch[20];short a,d,c;int i,n=0;READ();printf("\n请输入您要查询的日期:");scanf("%hd%hd%hd",&a,&d,&c);printf("\n");for(i=0;i<N1;i++){if(a==b[i].StartTime.year)if(d==b[i].StartTime.month)if(c==b[i].StartTime.day){printf("终点站:%s 车次:%s 发车时间:%hd年%hd月%hd 日%hd时%hd分火车票价:%.2f 火车余票数:%d\n\n",b[i].terminal,b[i].sequence,b[i].StartTime.year,b[i].StartTime.month,b[i].StartTime.day,b[i].StartTime.hour,b[i].StartTime.minute,b[i].fare,b[i].SpareTicketNum);n++;}}if(n==0) printf("\n未找到相应信息!\n\n");}void shuchu(void){int i,n=0;READ();for(i=0;i<N1;i++){if(b[i].SpareTicketNum==0){printf("\n终点站:%s 车次:%s 发车时间:%hd年%hd月%hd日%hd 时%hd分火车票价:%.2f 火车余票数:%d\n\n",b[i].terminal,b[i].sequence,b[i].StartTime.year,b[i].StartTime.month,b[i].StartTime.day,b[i].StartTime.hour,b[i].StartTime.minute,b[i].fare,b[i].SpareTicketNum);n++;}}if(n==0) printf("\n未找相应信息!\n\n");}void WRITE(void){SN *p1;//***************写入文件a[N1]*****************管理员存入数据***** FILE *fp;if((fp=fopen("file0.dat","wb+"))==NULL){ printf("Can not open file!\n") ; exit(0) ; }fwrite(b,LEN1,N1,fp);fclose(fp);//***********************************************第1个文件*******if((fp=fopen("file1.dat","wb+"))==NULL){ printf("Can not open file!\n") ; exit(0) ; }p1=b[0].head;while(p1!=NULL){fwrite(p1,LEN2,1,fp);p1=p1->next;}fclose(fp);//************************************************第2个文件******if((fp=fopen("file2.dat","wb+"))==NULL){ printf("Can not open file!\n") ; exit(0) ; }p1=b[1].head;while(p1!=NULL){fwrite(p1,LEN2,1,fp);p1=p1->next;}fclose(fp);//***********************************************第3个文件********if((fp=fopen("file3.dat","wb+"))==NULL){ printf("Can not open file!\n") ; exit(0) ; }p1=b[2].head;while(p1!=NULL){fwrite(p1,LEN2,1,fp);p1=p1->next;}fclose(fp);//********************************************第4个文件*********if((fp=fopen("file4.dat","wb+"))==NULL){ printf("Can not open file!\n") ; exit(0) ; }p1=b[3].head;while(p1!=NULL){fwrite(p1,LEN2,1,fp);p1=p1->next;}fclose(fp);//*********************************************第5个文件*******if((fp=fopen("file5.dat","wb+"))==NULL){ printf("Can not open file!\n") ; exit(0) ; }p1=b[4].head;while(p1!=NULL){fwrite(p1,LEN2,1,fp);p1=p1->next;}fclose(fp);}void READ(void){SN *p1,*p2;int i=0,j;FILE *fp;//*******读出第0个文件*********************查找数据***************** if((fp=fopen("file0.dat","rb"))==NULL){printf("Can not open the file !\n");exit(0);}fread(b,LEN1,N1,fp);fclose(fp);//***********************************************读出第1个文件******if((fp=fopen("file1.dat","rb"))==NULL){printf("Can not open the file !\n");exit(0);}j=0;p1=(SN*)malloc(LEN2);if(p1==NULL){printf("No enough memory !\n");exit(0);}fread(p1,LEN2,1,fp);while(!feof(fp)){j++;if(j==1) b[0].head=p1;else p2->next=p1;p2=p1;p1=(SN*)malloc(LEN2);if(p1==NULL){printf("No enough memory !\n");exit(0);}fread(p1,LEN2,1,fp);}p2->next=NULL;free(p1);fclose(fp);//*********************************************读出第2个文件****** if((fp=fopen("file2.dat","rb"))==NULL){printf("Can not open the file !\n");exit(0);}j=0;p1=(SN*)malloc(LEN2);if(p1==NULL){printf("No enough memory !\n");exit(0);}fread(p1,LEN2,1,fp);while(!feof(fp)){j++;if(j==1) b[1].head=p1;else p2->next=p1;p2=p1;p1=(SN*)malloc(LEN2);if(p1==NULL){printf("No enough memory !\n");exit(0);}fread(p1,LEN2,1,fp);}p2->next=NULL;free(p1);fclose(fp);//**************************************************读出第3个文件**** if((fp=fopen("file3.dat","rb"))==NULL){printf("Can not open the file !\n");exit(0);}j=0;p1=(SN*)malloc(LEN2);if(p1==NULL){printf("No enough memory !\n");exit(0);}fread(p1,LEN2,1,fp);while(!feof(fp)){j++;if(j==1) b[2].head=p1;else p2->next=p1;p2=p1;p1=(SN*)malloc(LEN2);if(p1==NULL){printf("No enough memory !\n");exit(0);}fread(p1,LEN2,1,fp);}p2->next=NULL;free(p1);fclose(fp);//**********************************************读出第4个文件***** if((fp=fopen("file4.dat","rb"))==NULL){printf("Can not open the file !\n");exit(0);}j=0;p1=(SN*)malloc(LEN2);if(p1==NULL){printf("No enough memory !\n");exit(0);}fread(p1,LEN2,1,fp);while(!feof(fp)){j++;if(j==1) b[3].head=p1;else p2->next=p1;p2=p1;p1=(SN*)malloc(LEN2);if(p1==NULL){printf("No enough memory !\n");exit(0);}fread(p1,LEN2,1,fp);}p2->next=NULL;free(p1);fclose(fp);//************************************************读出第5个文件***** if((fp=fopen("file5.dat","rb"))==NULL){printf("Can not open the file !\n");exit(0);}j=0;p1=(SN*)malloc(LEN2);if(p1==NULL){printf("No enough memory !\n");exit(0);}fread(p1,LEN2,1,fp);while(!feof(fp)){j++;if(j==1) b[4].head=p1;else p2->next=p1;p2=p1;p1=(SN*)malloc(LEN2);if(p1==NULL){printf("No enough memory !\n");exit(0);}fread(p1,LEN2,1,fp);}p2->next=NULL;free(p1);fclose(fp);}void LIST(SN *head){ SN *p ;p=head ;while ( p!=NULL ){printf("\n乘客姓名:%s 乘客身份证号码:%s 订票数%d 总票价%.2f\n\n",p->name,p->IDcard,p->TicketNum,p->FareSum);p=p->next;}}3.2 函数调用关系4.系统存在的问题与不足管理员输入密码时是有可能被别人看见,安全性没有做好。
设计题目:火车订票管理系统班级:姓名:学号:2015年1月4日1.课程设计目的和要求火车订票管理系统的主要功能包括:1. 火车线路查询功能,乘客输入终点站名称或输入车次,输出相应的火车线路信息。
2. 订票功能。
乘客输入车次和订票数,先查询该车次的余票数,若余票数大于等于订票数,则为乘客办理订票手续,要求乘客输入姓名、身份证号码,计算出总票价,产生一个新结点,将该结点添加到对应车次的链表中,然后修改该车次的余票数。
若余票数小于订票数,则输出提示信息“余票数不足,订票失败!”3. 退票功能。
乘客输入车次和身份证号码,在该车次对应的链表中查找该乘客,若找到,询问乘客退票数量,若退票数小订票数,则只需修改结点的订票数;若退票数等于订票数,则将该乘客对应的结点删除,然后修改该车次的余票数;若没找到,则应提示“未找到相应信息”,要求乘客重新输入车次和身份证号码,再进行查找,如果仍未找到,则输出提示信息“输入信息错误,退票失败!”4. 其他查询功能。
(1) 输入车次,输出该车次的全部订票信息。
(2) 输入车次,输出该车次的订票数和余票数。
(3) 输入终点站名称,输出相关火车线路的信息。
(4) 输入日期(年.月.日),输出发车时间为该天的火车线路的信息。
(5) 输出余票数为0的火车线路的信息。
管理员入口输入系统信息火车订票管理系其他查询2.系统总体设计2.1系统功能模块图乘客入口 火车线路查询查询票数为零的火车线路信息查询发车时间为某天的火车线路信息查询终点站为某地的火车线路信息查询某车次的订票数和余票数查询某车次的全部订票信息2.2数据结构设计假设有5条火车线路(起点均为济南),每条线路所涉及的信息有:终点站、 车次、发车时间(年•月•日.时.分)、票价、余票数(假设火车总票数为 300)。
乘客订票信息包括:乘客姓名、乘客身份证号码、订票数,总票价。
本系统要求用结构体数组和链表实现,将火车线路信息存放在结构体数组 中,每条线路对应一个链表,乘客订票就是在链表中插入结点, 乘客退票就是在 链表中删除结点。
课程设计课程名称SQL数据库系统课程设计题目名称火车订票管理系统专业班级学生姓名学号指导教师年月日火车订票管理系统摘要:本文针对火车站的订票实际情况,按照软件工程的结构化设计思想,经过项目的可行性研究和需求分析、总体设计、详细设计,以及编码实现和调试等步骤设计开发了火车订票管理系统。
并运用数据流图和数据字典、E-R图和数据库逻辑结构、层次图、系统流程图、以及程序流程图,对该系统的数据需求、数据库、系统软件结构、系统流程、以及处理过程等进行了分析和设计。
工具软件利用Visual Studio 2010软件和SQL Server 2008数据库来设计这个火车订票管理系统,并用C#语言设计后台代码。
该系统要解决的是火车订票工作所要解决的问题,可以满足火车订票的基本要求,包括用户查询、订票、退票和管理员增加车票等几个方面的功能。
关键词:订票管理;火车订票;SQL Server 2008Ordering Tickets ManagementSystemAbstract:After a long time observation of booking a train ticket and feasibility research of a online train ticket booking system,i havebuild a online ticket booking system in the following softwarecycle:requirement analysis,architecture and detail design,codingand testing.In the design phase,i present the system with datafollow chart,data dictionary,E-R graphic,database logicalstructure,and typical UML modeling facility such as Classdiagram,Activity diagram,Use case diagram and Sequencediagram.This product is developed in java(the latest jdk 1.6),andthe DBMS is sql server 2005 express edition.it's build to help youto book a train ticket online.On this website ,you can inquireticket information,book a ticket and refund your ticket.For thesupervisor,it provides additional right(protected by adminpriviledge) to maintain the system including train datacreating,importing and cleaning upKeywords: Ticketing management ;Ticket selling system;SQL Server2008目录蚌埠学院计算机科学与技术系课程设计任务书 (1)蚌埠学院计算机科学与技术系本科课程设计成绩评定表 (2)1 系统总体方案 (3)1.1开发背景 (3)1.2意义 (3)1.3系统相关知识介绍 (4)2 设计思路与主要步骤 (5)2.1系统需求 (5)2.2功能需求 (5)2.2.1查询 (5)2.2.2.购票 (5)2.2.3.退票 (6)2.3数据库逻辑结构 (6)2.4数据库中的约束 (8)2.4.1主键约束 (8)2.4.2外键约束 (8)2.4.3 CHICK约束 (8)2.4.4 DEFAULT约束 (8)2.4.5长度约束 (9)3 各功能模块和流程图 (10)3.1系统软件结构设计 (10)3.2系统流程图 (10)4 系统的详细设计 (15)4.1登录界面 (15)4.2游客模块 (15)4.2.1列车信息查询 (15)4.2.2网上用户注册 (16)4.3用户模块 (17)4.3.1购票 (18)4.3.2退票 (20)4.3.3查看用户信息 (22)4.3.4用户修改密码 (22)4.3管理员模块 (23)5 设计代码 (25)总结 (35)谢辞 (36)参考文献 (37)蚌埠学院计算机科学与技术系课程设计任务书蚌埠学院计算机科学与技术系本科课程设计成绩评定表火车订票管理系统1 系统总体方案1.1开发背景现在人们更多的使用火车作为出行交通工具,因此车票票务市场也在快速发展。
人们希望车票销售手段也能相应地有所调整,并对如何能经济、方便和及时地购买到自己所需要的车票表现出极大的关注。
随着社会的不断进步,国内外铁路运输事业的飞速发展,各国铁路运营部门对票务管理的要求也在不断的提高,本系统就是针对这种日益增长的需求而进行开发的。
1.2意义随着铁路客运量大幅度的提高,国内列车专线的增加,这些都对铁路的订票管理系统提出了更高的要求,所以要不断的完善更新铁路订票系统,提高铁路订票系统的工作效率。
铁路运输系统中,订票系统是很重要的一个环节,要想提高整个铁路运营部门的工作效率,就要先提高订票系统的工作效率和安全性,故而研发此系统,此系统能够为订票工作提供方便快捷的订票服务,广大的客以得到更好的票务服务。
1.3系统相关知识介绍(1)Visual Studio是微软公司推出的开发环境。
是目前最流行的Windows平台应用程序开发环境。
Visual Studio 2010版本其集成开发环境(IDE)的界面被重新设计和组织,变得更加简单明了。
(2)SQL Server 2008 在Microsoft的数据平台上发布,可以组织管理任何数据。
可以将结构化、半结构化和非结构化文档的数据直接存储到数据库中。
可以对数据进行查询、搜索、同步、报告和分析之类的操作。
数据可以存储在各种设备上,从数据中心最大的服务器一直到桌面计算机和移动设备,它都可以控制数据而不用管数据存储在哪里。
(3)C# (C sharp)是一种最新的、面向对象的编程语言。
它使得程序员可以快速地编写各种基于Microsoft .NET平台的应用程序。
使用简单的C#语言结构,这些组件可以方便的转化为XML 网络服务,从而使它们可以由任何语言在任何操作系统上通过Internet进行调用。
最重要的是,C#使得C++程序员可以高效的开发程序,而绝不损失C/C++原有的强大的功能。
因为这种继承关系,C#与C/C++具有极大的相似性,熟悉类似语言的开发者可以很快的转向C#。
2 设计思路与主要步骤2.1系统需求对于一个火车票订票管理系统,准确快捷的车次信息查询功能和方便简单的订票操作是十分必要的,因此系统必须为用户提供准确的车次信息和当前的车票状况,这也是火车票订票管理系统的最基本要求。
客户端后台管理员要能够及时添加车票。
所以结合实际情况,火车订票管理系统应满足以下需求:(1)客户端界面清晰友好,达到一目了然的效果。
(2)客户端能够方便的查询系统及简单明了的订票、退票操作。
(3)防止用户重复订票、退票操作,影响系统数据的正确性。
(4)服务器端提供信息完全可靠,时效性强。
能够保证数据与信息的安全性。
2.2功能需求本网上售票系统应该具备如下功能:2.2.1查询分为用户对个人登录信息的查询,列车信息的查询和用户对已订车票信息的查询。
要求:(1)用户登录该系统后,可以查询到自己的个人信息和已经预定的车票信息。
(2)对车次的查询,可以按照出发地和目的地对列车信息进行查询;(3)车次信息只允许用户查询,不能修改。
2.2.2.购票通过查询系统,客户根据自己的需求找到满意的车次,登录系统后,便可以通过该系统购票。
2.2.3.退票用户通过登录该系统,查询到自己已经预定的火车票,通过退票模块退去已购车票。
2.3数据库逻辑结构火车订票管理系统数据库中各个表格的设计结果如表2-1到2-4所示。
表2-1 车票信息表字段名 数据类型 是否为空出发地 nchar(10) 否 出发时间 目的地 到达时间 车票数量 车票价格 出发日time(7) nchar(10) time (7)intfloat date否 否 否 否 否 否表2-2 车票预订表字段名 数据类型 是否为空 姓名nchar(10)否身份证号 出发日 车次 出发地 出发时间 目的地 到达时间 车票价格char(18) date char(10)char(10) time (7) char(10) time (7) float否 否 否 否 否 否 否 否表2-3 管理员表字段名 数据类型 是否为空 密码nchar(10) 否表2-4 用户表字段名 数据类型 是否为空 用户号 姓名 性别 身份证号 nchar(10) char(4) char(2) char(18) 否 否 是 否 密码nchar(10)否2.4数据库中的约束2.4.1主键约束(1)在车票信息表中,定义车次,出发地,出发时间,目的地,到达时间,出发日这个整体作为车票信息表的主键。
相关代码如下:alter table 车票信息表add constraint pk primary key(车次,出发地,出发时间,目的地,到达时间,出发日)(2)在车票预订表中,定义用户号,姓名,身份证号这个整体作为车票预订表的主键。
(3)在管理员表和用户表中,分别将管理号和用户号作为各表的主键。
2.4.2外键约束在车票预订表中,定义车次,出发地,出发时间,目的地,到达时间,出发日这个整体作为车票预订表的外键,参考车票信息表中的主键。
相关代码如下:alter table 车票预订表add constraint fk1 foreign key(车次,出发地,出发时间,目的地,到达时间,出发日)references 车票信息表(车次,出发地,出发时间,目的地,到达时间,出发日)2.4.3 CHICK约束在用户表的性别字段,定义CHICK约束。
规定性别在男、女中选值。
相关代码如下:alter table 用户表add constraint CK_sex check(性别in ('女','男'))2.4.4 DEFAULT约束在用户表的性别字段,定义DEFAULT约束。
规定性别默认值为男。
相关代码如下:alter table 用户表add constraint df_sex default '男' for 性别2.4.5长度约束在车票预订表和用户表中,定义身份证长度为18位,相关代码如下:alter table 用户表add constraint CK_PID check(len(身份证号)=18)3 各功能模块和流程图3.1系统软件结构设计综合以上需求,本系统需要以下几个模块来支持:(1)用户模块:用于用户注册,用户登陆,订票,退票,修改登录密码。