课程设计案例-机票预订信息系统_第1页
课程设计案例-机票预订信息系统_第2页
课程设计案例-机票预订信息系统_第3页
课程设计案例-机票预订信息系统_第4页
课程设计案例-机票预订信息系统_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据库课程设计院别:信息科学与电气工程学院班级:计算181姓名:XXX学号:XXXXXXX指导教师:XXX设计地点:线上进行时间:2020年6月8日至2020年6月19日课程设计任务书题目机票预定信息系统系(部)信息科学与电气工程学院专业计算机科学与技术班级计算181学生姓名XXX学号XXXXXXXX6月8日至6月19日共2周指导教师(签字)XXX院长(签字)2019年6月7日一、设计内容及要求通过本次课程设计让学生能够综合运用所学的关系数据库原理知识解决并能设计一个实际问题,进一步掌握数据库原理的相关理论和数据库的设计实现过程,进一步提高学生的分析问题和解决问题的能力以及学生的动手能力。要求:1.对各个系统进行系统功能需求分析2.数据库设计分析阶段,进行详细的数据库需求分析,进行概念数据库的设计,画出数据库的E-R图(局部和整体E-R图)3.设计出详细的逻辑数据库结构,将各个实体和联系转化为相应的二维表即关系模式,指定各个关系的主关键字和外部关键字,并对各个关系的约束加以限定4.通过企业管理器或是查询分析器实现各个二维关系(建议最好用SQL代码实现),要求建立相关的索引5.根据系统功能需求设计相应的查询视图6.要求根据系统功能需求建立存储过程7.根据功能需求建立相应的触发器以保证数据的一致性8.通过建立用户和权限分配实现数据库一定的安全性,考虑数据库的备份与恢复(此内容选作)二、设计原始资料1、《数据库原理与应用》2、课程设计题目:机票预定信息系统、长途汽车信息管理系统、人事信息管理系统、超市会员管理系统、客房管理系统、药品存销信息管理系统、学生选课管理信息系统、学生成绩管理系统、网上书店管理信息、.教室管理信息系统、职工考勤管理信息系统、个人信息管理系统、办公室日常管理信息系统、轿车销售信息管理系统等。题目具体内容及要求见数据库课程设计题目,鼓励自选题目。三、设计完成后提交的文件和图表1.计算说明书部分2.图纸部分:课程设计报告格式(附后):封面、题目、时间地点、目的及要求、内容、详细的步骤和代码编写过程、总结。设计报告格式:设计题目设计时间、地点系统需求分析数据库概念结构设计数据库逻辑结构设计数据库结构实现系统功能模块实现设计总结(分析设计的得与失)心得体会封面格式如下(一定要有封面):四、进程安排教学内容学时地点备注分配任务与分组1天线上进行系统功能需求分析1天线上进行数据库需求分析1天线上进行逻辑数据库结构2天线上进行查询视图、存储过程、触发器1天线上进行编程2天线上进行程序测试和成果验收2天线上进行五、主要参考资料1.《数据库系统原理与应用》沈祥玖张岳中国水利水电出版社20162.《SQLServer数据库配置与管理指南》刘奎

清华大学出版社20103.《SQL与关系数据库理论》周成兴清华大学出版社2010信息科学与电气工程学院课程设计成绩评定用表平时成绩(30%)答辩成绩(50%)报告成绩(20%)总成绩注:本表可根据实际情况修改。

目录TOC\o"1-2"\h\u17444摘要 6215961系统需求分析 883301.1系统整体需求 8276271.2系统功能模块分析 8181031.3功能模块分析 8229062数据库概念结构设计 11271182.1各个部分数据库实体图 1119982.2数据库E-R图 1210633数据库逻辑结构设计 135463.1数据库表结构设计 1341733.2数据库其他逻辑结构设计 14271124数据库结构实现 15152224.1数据库表实现 15111674.2数据库其他逻辑结构设计 17278685功能模块实现 20295475.1数据库连接实现 20170565.2功能实现 20100586总结 2520892参考文献 25摘要航空业作为运输行业的基础,要提高我国运输行业的整体水平,必须从基础抓起。订票系统是航空业从事生产和管理的基层单位,加强订票系统是航空业基础地位的关键,也是保障航空业业可持续发展的重要基石。随着现在航空运输业的发展,机票预订系统也成为了航空运输业的软件副产品,目前的管理系统都是与数据库关联,故数据库的管理也成为很热门的研究对象。此项目是以数据库SQLSEVER为支撑,java(eclipse)为平台而开发的。在本文编写程序系统时,可将分为两大部分,一部分是在SQLSever中创建视图,触发器,存储过程以方便在JAVA设计中的使用。基本表:航班表(航班号,航班名称,航班等级,起飞时间,飞行时间,出发地,目的地)机票表(航班号,机票价格,机票折扣,机票数量,客户经理)订票表(编号,航班号,订单号,用户名,证件号)用户信息表(登录名,用户密码,用户姓名,证件号,性别,手机号,地址,邮箱)通过用户模块和管理员模块对模块信息进行增删改查。关键字:Java,SQLSever,存储过程,触发器

1系统需求分析1.1系统整体需求简单描述整个系统的需求。航班基本信息的录入,包括航班的编号、飞机名称、机舱等级等。机票信息,包括票价、折扣、当前预售状态及经手业务员等。客户基本信息,包括姓名、联系方式、证件及号码、付款情况等。按照一定条件查询、统计符合条件的航班、机票等;对结果输出。1.2系统功能模块分析描述本次设计的功能模块分析,简要描述即可。要包括功能模块图,及对每个模块的简要描述。具体由谁负责等信息。系统选择的具体数据库及开发语言。用户登录模块:验证用户账号密码进行软件的登录验证;用户模块:用户对某个航班进行查询,预定机票,个人信息查询,退订机票;管理员模式:管理员对航班信息进行增删改查;负责:个人单独完成整个项目数据库:SQLSever开发语言:JAVA1.3功能模块分析描述本人负责的功能模块的分析,可以将本人负责的模块的具体功能,如增、删、改、查、统计等进行具体描述。要求包括细分的功能模块图。对子功能进行简要描述。用户登录模块:该模块主要是对用户表进行操作,对用户信息表userinfo表进行增删改查操作,以及登录界面的实现。当前登录用户信息的查询也在此表。图1-3-1用户订票模块:该模块包含Fly和Flyinfo两个表,对于几排哦信息客户可以进行查询及其购买操作,购买成功是生成了订单信息,需要插入订单信息表(order_flight)管理员能够对航班信息进行增删改查,用户能够进行查询以及预定生成个人信息。管理员管理模块:该模块是对航班信息以及用户信息进行增删改查操作,图1-3-2图1-3-32数据库概念结构设计2.1各个部分数据库实体图画图并简单描述XXX实体,包括基本属性,特殊的数据要求(约束)。如果有多个实体,可以分节描述,每个实体1小节。1.航班信息实体图2.机票信息实体图3.用户信息实体图:2.2数据库E-R图画图并简单描述数据库的E-R图。描述清楚实体间的联系及联系的类型。3数据库逻辑结构设计3.1数据库表结构设计画表并简单描述表的结构,包括表名、数据类型、长度、是否非空、约束(主键、默认值、检查约束)、备注(描述列表示的含义)。其他项目可以根据自己的设计适当增删。航班信息:列名表名数据类型长度是否空约束备注航班号flight_idInt否主键航班名称flight_namevarchar20否机舱等级flight_gradeInt否起飞时间takeoff_timedatetime否飞行时长flytimeInt否起始地点start_placevarchar20否目的地点start_placevarchar20否机票信息:航班号flight_idInt否主键,外键机票价格flight_priceInt否机票折扣flight_discountInt否机票数量flight_ticketInt否客户经理flight_sellnamevarchar20否客户预定信息:编号idInt否主键航班号flight_idInt否外键订单编号orderidnchar10否用户姓名usernamevarchar20否证件号码useridentityvarchar18否外键用户信息:用户名loginnamenchar20否密码loginpsdnchar20否姓名Usernamenchar10否证件号UseridentityVarchar18否主键Check18位性别Sexnchar10否男,女手机号Phonenchar20否Check11位地址Useraddressnchar20否邮箱Emailnchar20否3.2数据库其他逻辑结构设计描述数据库中包含的视图、存储过程、触发器的结构或功能,在哪些模块中使用等。视图:orderquery视图:在用户进行查询预定信息时使用,把订单信息和用户信息联立成为虚拟表来进行临时表的信息查看。在用户管理模Info视图:在管理员进行对航班信息的查询是使用,把航班信息和机票信息联立成为虚拟表进行临时表的信息查看。触发器:ticket触发器,某机票被购买后实现机票数量减一,触发这个触发器的条件是order_flyticket插入了数据建立名为sexupins的触发器为了更新,触发这个触发器的条件是在这个用户信息表中的sex属性只能是男或女存储过程:1.vuserinfo的存储过程,功能是通过loginname查找userinfo表中用户的所有信息2.建立名为“searchorder”的存储过程,功能是通过loginname查找视图orderquery中用户的所有预订票信息4数据库结构实现4.1数据库表实现给出数据库表的创建语句。USE[AirView]GO/******Object:Table[dbo].[Fly]ScriptDate:2020/6/1910:51:55******/SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOCREATETABLE[dbo].[Fly]( [flight_id][int]NOTNULL, [flight_name][varchar](20)NOTNULL, [flight_grade][int]NOTNULL, [takeoff_time][datetime]NOTNULL, [flytime][int]NOTNULL, [start_place][varchar](20)NOTNULL, [end_place][varchar](20)NOTNULL,CONSTRAINT[PK_Fly]PRIMARYKEYCLUSTERED( [flight_id]ASC)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY])ON[PRIMARY]GOUSE[AirView]GO/******Object:Table[dbo].[FlyInfo]ScriptDate:2020/6/1910:52:10******/SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOCREATETABLE[dbo].[FlyInfo]( [flight_id][int]NOTNULL, [flight_price][int]NOTNULL, [flight_discount][int]NOTNULL, [flight_ticket][int]NOTNULL, [flight_sellname][varchar](20)NOTNULL,CONSTRAINT[PK_FlyInfo]PRIMARYKEYCLUSTERED( [flight_id]ASC)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY])ON[PRIMARY]GOALTERTABLE[dbo].[FlyInfo]ADDCONSTRAINT[DF_FlyInfo_flight_sellname]DEFAULT('陈肇哲')FOR[flight_sellname]GOUSE[AirView]GO/******Object:Table[dbo].[order_flyticket]ScriptDate:2020/6/1910:52:24******/SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOCREATETABLE[dbo].[order_flyticket]( [id][int]IDENTITY(1,1)NOTNULL, [flight_id][int]NOTNULL, [orderid][nchar](10)NOTNULL, [username][varchar](20)NOTNULL, [useridentity][varchar](18)NOTNULL,CONSTRAINT[PK_order_flyticket_1]PRIMARYKEYCLUSTERED( [id]ASC)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY])ON[PRIMARY]GOUSE[AirView]GO/******Object:Table[dbo].[userinfo]ScriptDate:2020/6/1910:52:39******/SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOCREATETABLE[dbo].[userinfo]( [loginname][nchar](20)NOTNULL, [loginpsd][nchar](20)NOTNULL, [Username][nchar](10)NOTNULL, [Useridentity][varchar](18)NOTNULL, [Sex][nchar](10)NOTNULL, [Phone][nchar](20)NOTNULL, [Useraddress][nchar](20)NOTNULL, [Email][nchar](20)NOTNULL,CONSTRAINT[PK_userinfo]PRIMARYKEYCLUSTERED( [Useridentity]ASC)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY])ON[PRIMARY]GO4.2数据库其他逻辑结构设计描述数据库中包含的视图、存储过程、触发器的实现语句。存储过程:建立名为’vuserinfo’的存储过程,功能是通过loginname查找userinfo表中用户的所有信息gocreateprocedurevuserinfo(@bloginnamenchar(20))asbegindeclare@loginname nchar(20),@loginpsd nchar(20),@Username nchar(10),@Useridentity varchar(18) ,@Sex nchar(10), @Phone nchar(20) ,@Useraddress nchar(20) ,@Email nchar(20)declaremycurcursorforselect*fromuserinfowhereuserinfo.loginname=@bloginnameopenmycurfetchmycurinto@loginname,@loginpsd,@Username,@Useridentity,@Sex,@Phone,@Useraddress,@Emailwhile(@@FETCH_STATUS=0)beginselect@loginname,@loginpsd,@Username,@Useridentity,@Sex,@Phone,@Useraddress,@Emailendclosemycurdeallocatemycurendexecvuserinfo'user2'建立名为“searchorder”的存储过程,功能是通过loginname查找视图orderquery中用户的所有预订票信息gocreateproceduresearchorder(@bloginnamenvarchar(20))asbegindeclare@flight_namevarchar(20),@flight_idint,@flight_gradeint,@takeoff_timedatetime,@start_placevarchar(20),@end_placevarchar(20) ,@usernamevarchar(20),@Useridentityvarchar(18),@flytimeintdeclaremycurcursorforselect*fromorderquerywhereorderquery.username=@bloginnameopenmycurfetchmycurinto@flight_name,@flight_id,@flight_grade,@takeoff_time,@flytime,@start_place,@end_place ,@username,@Useridentitywhile(@@fetch_status=0)beginselect@flight_name,@flight_id,@flight_grade,@takeoff_time,@flytime,@start_place,@end_place ,@username,@Useridentityfetchmycurinto@flight_name,@flight_id,@flight_grade,@takeoff_time,@flytime,@start_place,@end_place ,@username,@Useridentityendclosemycurdeallocatemycurendexecsearchorder'user1'触发器:1.建立名为’ticket’的触发器,某机票被购买后实现机票数量减一,触发这个触发器的条件是order_flyticket插入了数据createtrigger

ticketonorder_flyticketafterinsertasupdateFlyInfosetflight_ticket=flight_ticket-1whereFlyInfo.flight_id=flight_id2.建立名为’sexupins’的触发器为了更新,触发这个触发器的条件是在这个用户信息表中的sex属性只能是男或女createtriggersexupinsonuserinfoforinsert,updateasifexists(select*frominsertedwhereSexnotin('男','女'))rollback视图建立名为“info”的视图为了合并机票信息CreateviewinfoasSelectflight_discount,flight_gradeFromFLy,FlyInfoselect*frominfo建立名为“orderquery”的视图为了合并机票信息CREATEVIEW[dbo].[orderquery]ASSELECTdbo.Fly.flight_name,dbo.Fly.flight_id,dbo.Fly.flight_grade,dbo.Fly.takeoff_time,dbo.Fly.flytime,dbo.Fly.start_place,dbo.Fly.end_place,dbo.order_flyticket.username,dbo.order_flyticket.useridentityFROMbo.FlyINNERJOINdbo.order_flyticketONdbo.Fly.flight_id=dbo.order_flyticket.flight_idGO5功能模块实现5.1数据库连接实现publicstaticConnectionconnectdata(){//数据库的连接 try{ Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); }catch(ClassNotFoundExceptione1){ //TODO自动生成的catch块 e1.printStackTrace(); } Stringurl="jdbc:sqlserver://:1433;databaseName=AirView"; try{ conn=DriverManager.getConnection(url,"sa","Czz123456"); }catch(SQLExceptione){ //TODO自动生成的catch块 e.printStackTrace(); System.out.println("数据库连接失败\n"+e.toString()); } System.out.println("数据库连接成功"); returnconn; } publicstaticResultSetfindForResultSet(Stringsql){//执行sql语句函数 if(conn==null) returnnull; longtime=System.currentTimeMillis(); ResultSetrs=null;// try{ Statementstmt=null;//Statement对象用于将SQL语句发送到数据库中。 stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); rs=stmt.executeQuery(sql);//执行语句 second=((System.currentTimeMillis()-time)/1000d)+""; System.out.println("DBTIme:"+second); }catch(Exceptione){ e.printStackTrace(); } returnrs; }5.2功能实现根据1.3节的功能模块分析,分节描述每个子功能的具体实现。语言描述实现过程,并给出关键代码。对数据库的操作实现:packagecom.dao;importjava.sql.*;publicclassDatabaseTry{ staticStringsecond; staticConnectionconn; publicDatabaseTry(){ connectdata(); } publicstaticbooleancheckLogin(StringuserStr,StringpassStr)//登录检查 throwsSQLException{ ResultSetrs=findForResultSet("select*fromuserinfowhereloginname='" +userStr+"'andloginpsd='"+passStr+"'"); if(rs==null) returnfalse; returnrs.next();//rs光标刚开始在第一行之前如果新的当前行有效,则返回true;如果不存在下一行,则返回false } publicstaticResultSetuserinfo_t(Stringusername)throwsSQLException{ ResultSetrs=findForResultSet("select*fromuserinfo"+ "whereloginname='"+username+"'"); returnrs; } publicstaticResultSetFlight_Info(Stringshartplace,Stringendplace,intgrade)throwsSQLException{ ResultSetrs=findForResultSet("select*fromFly,FlyInfo" +"whereFly.flight_id=FlyInfo.flight_idandFly.flight_grade="+grade+ "andFly.start_place='"+shartplace+"'andFly.end_place='"+endplace+"'"); returnrs; } publicstaticResultSetList_Place_Start()throwsSQLException{ ResultSetrs=findForResultSet("selectdistinctstart_placefromFly,FlyInfowhereFly.flight_id=FlyInfo.flight_id"); returnrs; } publicstaticResultSetList_Place_End()throwsSQLException{ ResultSetrs=findForResultSet("selectdistinctend_placefromFly,FlyInfowhereFly.flight_id=FlyInfo.flight_id"); returnrs; } publicstaticResultSetList_(Stringstart,Stringend,intgrade,Stringtime)throwsSQLException{ ResultSetrs=findForResultSet("selectflight_name,takeoff_time,flytime,flight_price,flight_discount,flight_ticket,flight_sellname," +"FlyInfo.flight_idfromFly,FlyInfowhereFly.flight_id=FlyInfo.flight_idandstart_place='"+ start+"'andend_place='"+end+"'andflight_grade="+grade+"andtakeoff_time>='"+time+"'"); returnrs; } publicstaticvoidUserDpInfo(Stringid_f,Stringname,Stringident,inti){ if(conn==null) return; try{ Statementstmt=null;//Statement对象用于将SQL语句发送到数据库中。 stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); stmt.executeUpdate("insertintoorder_flyticket(flight_id,username,useridentity,orderid)values("+id_f+",'"+name+"','"+ident+"','"+i+"')");//执行语句 }catch(Exceptione){ e.printStackTrace(); } } publicstaticResultSetsearchorderinfo(Stringusername){ ResultSetrs=findForResultSet("execsearchorder'"+username+"'"); returnrs; } publicstaticResultSetinfo(){ ResultSetrs=findForResultSet("select*frominfo"); returnrs; } publicstaticvoidinfo(Stringflight_id,Stringflight_name,Stringflight_grade,Stringtakeoff_time,Stringflytime,Stringstart_place,Stringend_place,Stringflight_price,Stringflight_discount,Stringflight_ticket,Stringflight_sellname){ if(conn==null) return; try{ Statementstmt=null;//Statement对象用于将SQL语句发送到数据库中。 stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); stmt.executeUpdate("insertintoFly(flight_id,flight_name,flight_grade,takeoff_time,flytime,start_place,end_place)" +"values("+flight_id+",'"+flight_name+"',"+flight_grade+",'"+takeoff_time+"','"+flytime+"', '"+start_place+"', '"+end_place+"')");//执行语句 stmt.executeUpdate("insertintoFlyInfo(flight_id,flight_price,flight_discount,flight_ticket,flight_sellname)" +"values("+flight_id+","+flight_price+","+flight_discount+","+flight_ticket+",'"+flight_sellname+"')");//执行语句 }catch(Exceptione){ e.printStackTrace(); }} publicstaticvoidinfo_up(Stringflight_id,Stringflight_name,Stringflight_grade,Stringtakeoff_time,Stringflytime,Stringstart_place,S

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论