旅行设管理系统.docx
《旅行设管理系统.docx》由会员分享,可在线阅读,更多相关《旅行设管理系统.docx(23页珍藏版)》请在冰豆网上搜索。
![旅行设管理系统.docx](https://file1.bdocx.com/fileroot1/2022-12/12/16c40461-d704-4fc2-9275-0dd16ed57a48/16c40461-d704-4fc2-9275-0dd16ed57a481.gif)
旅行设管理系统
旅行社管理系统
1.设计内容
1.1设计目的
随着人们生活水平的不断提高,人们的生活方式不再仅限于普通的衣、食、住、行。
人们不仅要在物质方面得到提高,而且在精神方面也追求有一个质的突变。
于是,人们越来越多的选择在周末或假期间外出旅游,享受旅游给自己带来的乐趣,扩展视野。
针对大众的这种需求,许许多多的旅行社就由此孕育而生,旅行社则需要由一个合适的管理系统来规范,所以旅行社管理系统的建立是十分必要的。
在计算机飞速发展的今天,将计算机这一信息处理利器应用于旅行社的日常管理已是势必所然,而且这也将为旅行社的管理带来前所未有的改变,它可以带来意想不到的效益,同时也会为旅游业的飞速发展提供无限潜力。
采用计算机管理信息系统已成为旅行社管理科学化和现代化的重要标志,它给旅行社管理带来了明显的经济效益和社会效益。
主要体现在:
极大提高了旅行社工作人员的工作效率,大大减少了以往人员冗余的问题。
基于旅行社管理的全面自动化,可以减少管理中的漏洞,可以节约不少管理开支,增加旅行社收入。
1.2数据流图
1.2.1顶层数据流图
如图1.2.1所示:
图1.2.1顶层数据流图
1.3数据字典
1.4系统ER图
图1.4系统ER图
2.概要设计
2.1需求规定
旅行社管理系统用户分为三种:
一种是客户,他们通过系统可以查看旅游线路信息和导游的信息。
一种是导游,他们通过系统可以查看旅游线路信息和导游的信息,修改导游信息,添加导游信息,删除导游信息。
另一种是线路管理员,他们可以通过系统可以查看旅游线路信息,添加线路信息,删除线路信息。
2.2故障处理要求
1提供丰富的出错提示信息
2提供一定的保密手段
2.3系1.1设计目的
1.2数据流图
1.3数据字典
1.4系统ER图
2.2故障处理要求
2.3系统功能模块图
统功能模块图
如图2.3所示:
图2.3系统功能模块图
2.4系统结构
本系统的基本结构有:
登陆:
登陆分为三种,一种是游客(不需要密码),导游和线路管理员(需
要账号和密码)。
查看线路信息:
游客,导游和线路管理员都可以查看线路信息
查看导游信息:
游客和导游可以查看导游信息
导游信息维护:
导游可以对自己的信息进行维护
线路信息维护:
线路管理员可以对线路的信息维护
2.5系统结构
2.5.1总体结构
主模块调用:
系统登陆模块
查询线路模块
查询导游信息模块
维护导游信息模块
维护线路信息模块
导游信息维护包括三个部分:
添加导游信息;修改导游信息;删除导游信息
线路信息维护包括三个部分:
添加线路信息;修改线路信息;删除线路信息
2.6运行设计
2.6.1运行模块的组合
程序启动后,进入主模块,用户的单击对话框按钮事件触发主模块调用各下层模块,进入对应的子对话框,同样由用户的输入触发这些模块调用其下层模块,完成相应操作。
2.6.2运行控制
本软件控制流程:
主程序运行,等待用户的输入,根据用户的输入调用各子模块。
3.详细设计
3.1处理流程
3.1.1主流程
1)建立与数据库的连接
2)获取系统设置
3)显示对话框(即主界面)
4)等待用户输入:
如为登陆:
登陆分为三种,一种是游客(不需要密码),导游和线路管理员(需要账号和密码)。
如为查看线路信息:
游客,导游和线路管理员都可以查看线路信息。
如为查看导游信息:
游客和导游可以查看导游信息。
如为导游信息维护:
导游可以对自己的信息进行维护。
如为线路信息维护:
线路管理员可以对线路的信息维护。
3.1.2导游信息维护流程
1)添加导游信息:
导游可以添加导游的相关信息
2)修改导游信息:
导游可以修改导游的相关信息
3)删除导游信息:
导游可以删除导游的相关信息
3.1.3线路信息维护流程
1)添加线路信息:
线路管理员可以添加新的线路信息
2)修改线路信息:
线路管理员可以修改已有的线路信息
3)删除线路信息:
线路管理员可以删除已经满员或过期的线路信息
3.2程序流程图
3.2.1游客流程图
如图3.2.1所示:
3.2.2导游流程图
如图3.2.2所示:
图3.2.2导游流程图
3.2.3线路管理员流程图
如图3.2.3所示:
图3.2.3线路管理员流程图
3.3数据库设计
3.3.1所生成的表
导游信息表
列名
含义
长度
类型
NULL
DEFAULT
ID
编号
8
Char()
no
no
name
姓名
8
Char()
no
no
sex
性别
2
Char()
no
no
age
年龄
8
Char()
yes
no
height
身高
8
Int
no
no
账号密码表
列名
含义
长度
类型
NULL
DEFAULT
password
密码
8
Char()
no
no
account
账户
8
Char()
no
no
线路信息表
列名
含义
长度
类型
NULL
DEFAULT
Inenumber
线路编号
8
Char()
no
no
attractions
旅游景点
8
Char()
no
no
starttime
出发时间
16
Char()
no
no
endtime
结束时间
16
Char()
no
no
costs
所需费用
8
Int
no
no
tourist
导游
8
Char()
no
no
3.3.2存储过程
通过软件实现
4.程序源码
4.1导游界面(部分代码)
importjava.awt.*;
importjava.sql.*;
importjavax.swing.*;
importjava.io.*;
importjava.io.IOException;
publicclassGuideShowextendsJFrameimplementsActionListener{
privateJButton
guideJb_1=newJButton("查看导游信息"),
guideJb_2=newJButton("查看线路信息"),
guideJb_3=newJButton("修改导游信息"),
guideJb_4=newJButton("添加导游信息"),
guideJb_5=newJButton("删除导游信息");
privateJTableguideJt_1=newJTable();
privateJLabel
id_jla=newJLabel("导游ID"),
name_jla=newJLabel("导游姓名"),
sex_jla=newJLabel("导游性别"),
age_jla=newJLabel("导游年龄"),
height_jla=newJLabel("导游身高");
privateJTextField
id_jtf=newJTextField(10),
name_jtf=newJTextField(10),
sex_jtf=newJTextField(10),
age_jtf=newJTextField(10),
height_jtf=newJTextField(10);
GuideShow(){
this.setBounds(50,50,700,300);
this.setTitle("导游窗口");
this.setVisible(true);
this.setLayout(newBorderLayout());
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
JPanelguideJp_1=newJPanel();
JPanelguideJp_2=newJPanel();
guideJp_1.setLayout(newGridLayout(5,2));
guideJp_2.setLayout(newGridLayout(1,5));
guideJp_1.add(id_jla);
guideJp_1.add(id_jtf);
guideJp_1.add(name_jla);
guideJp_1.add(name_jtf);
guideJp_1.add(sex_jla);
guideJp_1.add(sex_jtf);
guideJp_1.add(age_jla);
guideJp_1.add(age_jtf);
guideJp_1.add(height_jla);
guideJp_1.add(height_jtf);
this.add(guideJp_1,BorderLayout.WEST);
this.add(guideJt_1,BorderLayout.CENTER);
guideJp_2.add(guideJb_1);
guideJp_2.add(guideJb_2);
guideJp_2.add(guideJb_3);
guideJp_2.add(guideJb_4);
guideJp_2.add(guideJb_5);
this.add(guideJp_2,BorderLayout.SOUTH);
guideJb_1.addActionListener(this);
guideJb_2.addActionListener(this);
guideJb_3.addActionListener(this);
guideJb_4.addActionListener(this);
guideJb_5.addActionListener(this);}
@OverridepublicvoidactionPerformed(ActionEvente){
if(e.getSource()==guideJb_1){
String[]col={"导游编号","姓名","性别","年龄","身高"};
DefaultTableModelmm=newDefaultTableModel(col,0);
Connectionconn=DB.getInstance().getConn();
Statementstmt=DB.getInstance().getStmt(conn);
try{java.sql.ResultSetrs=stmt.executeQuery("SELECT*FROMguideinformation");
while(rs.next()){tringguideid=rs.getString("ID");
Stringguidename=rs.getString("name");
Stringguidesex=rs.getString("sex");
Stringguideage=rs.getString("age");
Stringguideheight=rs.getString("height");
String[]str_row={guideid,guidename,guidesex,guideage,guideheight};mm.addRow(str_row);}
guideJt_1.setModel(mm);
}catch(SQLExceptione1){//TODOAuto-generatedcatchblock
e1.printStackTrace();}}
elseif(e.getSource()==guideJb_2){
String[]col={"线路编号","旅游景点","开始时间","结束时间","花费","导游"};
DefaultTableModelmm=newDefaultTableModel(col,0);
Connectionconn=DB.getInstance().getConn();
Statementstmt=DB.getInstance().getStmt(conn);
try{java.sql.ResultSetrs=stmt.executeQuery("SELECT*FROMlinemanegerinformation");
while(rs.next()){
Stringlineid=rs.getString("linenumber");
Stringlineattractions=rs.getString("attractions");
Stringlinestarttime=rs.getString("starttime");
Stringlineendtime=rs.getString("endtime");
Stringlinecosts=rs.getString("costs");
Stringlineguide=rs.getString("tourist");String[]str_row={lineid,lineattractions,linestarttime,lineendtime,linecosts,lineguide};mm.addRow(str_row);}
guideJt_1.setModel(mm);
}catch(SQLExceptione1){
e1.printStackTrace();}}
elseif(e.getSource()==guideJb_3){
Connectionconn=DB.getInstance().getConn();
Statementstmt=DB.getInstance().getStmt(conn);
Stringguideid=id_jtf.getText();
Stringguidename=name_jtf.getText();
Stringguidesex=sex_jtf.getText();
Stringguideage=age_jtf.getText();
Stringguideheight=height_jtf.getText();
try{java.sql.ResultSetrs=stmt.executeQuery("SELECT*FROMguideinformationwhereID='"+guideid+"'");
if(rs.next()){StringM_id=rs.getString("ID");
if(M_id!
=null&&M_id.equals(guideid)){
stmt.executeUpdate("DELETEFROMguideinformationWHEREID=('"+guideid+"')");
stmt.executeUpdate("INSERTINTOguideinformationVALUES('"+guideid+"','"+guidename+"','"
+guidesex+"','"+guideage+"','"
+guideheight+"')");}
else{NoInformationno=newNoInformation();}return;}
NoInformationno=newNoInformation();
}catch(SQLExceptione1){//TODOAuto-generatedcatchblock
e1.printStackTrace();}}
elseif(e.getSource()==guideJb_4){
Connectionconn=DB.getInstance().getConn();
Statementstmt=DB.getInstance().getStmt(conn);
Stringguideid=id_jtf.getText();
Stringguidename=name_jtf.getText();
Stringguidesex=sex_jtf.getText();
Stringguideage=age_jtf.getText();
Stringguideheight=height_jtf.getText();
try{java.sql.ResultSetrs=stmt.executeQuery("SELECT*FROMguideinformationwhereID='"+guideid+"'");
if(!
rs.next()){
stmt.executeUpdate("INSERTINTOguideinformationVALUES('"+guideid+"','"+guidename+"','"
+guidesex+"','"+guideage+"','"
+guideheight+"')");}
else{RepeatInformationri=newRepeatInformation();}
}catch(SQLExceptione1){
e1.printStackTrace();}}
elseif(e.getSource()==guideJb_5){
Connectionconn=DB.getInstance().getConn();
Statementstmt=DB.getInstance().getStmt(conn);
Stringguideid=id_jtf.getText();
try{java.sql.ResultSetrs=stmt.executeQuery("SELECT*FROMguideinformationwhereID='"+guideid+"'");
if(rs.next()){StringM_id=rs.getString("ID");
if(M_id!
=null&&M_id.equals(guideid)){
stmt.executeUpdate("DELETEFROMguideinformationWHEREID=('"+guideid+"')");}
else{NoInformationno=newNoInformation();}
return;}
NoInformationno=newNoInformation();
}catch(SQLExceptione1){//TODOAuto-generatedcatchblock
e1.printStackTrace();}}}}
5.程序运行与调试
5.1权限分配
调试内容:
在系统管理中输入用户名和密码分配权限
发现问题:
即使输入正确的用户名和密码也没有成功分配权限
出错原因:
PasswordField中getPassword方法取出密码后使用进行解密的算法并没有将密码正确的还原
解决方法:
重新设计加密解密算法;
5.2显示记录
调试内容:
在输出对话框中显示数据库中已有记录
发现问题:
显示记录时,行数列数不正确,列名显示不正常
出错原因:
JTable类中的设置非常复杂,默认方法需要用在JScrollPane中,在设置方面不正确。
解决方法:
在网上查找JTable的设置方法,并重新设置
5.3更新数据库
调试内容:
在数据库中插入一个导游录取信息
发现问题:
导游录取信息插入失败
出错原因:
向数据库内插入数据之前需要先确定权限
解决方法:
在建立连接时,对插入操作应添加插入权限
5.4测试用例
1.导游ID:
选00004;
成功显示:
导游ID
导游姓名
性别
导游年龄
导游身高
00004
刘备
男
30
165
失败:
跳回查找页
测试成功。
2.游客界面输入口令账号:
0001密码:
0001
成功显示:
线路编号
旅游景点
出发时间
结束时间
所需费用
导游
0001
故宫
2010-1-1
2010-1-8
800
刘备
失败:
账号或密码错误,请重新输入
测试成功。
6.总结
此系统运用于旅行社管理系统,它会给旅行社管理带来了明显的经济效益和社会效益。
主要体现在:
极大提高了旅行社工作人员的工作效率,大大减少了以往人员冗余的问题。
基于旅行社管理的全面自动化,可以减少管理中的漏洞,可以节约不少管理开支,增加旅行社收入。
经过两个星期,终于结束了整个课程设计的工作。
这次课程设计的过程中,我的确学到了许多书本上学不到得知识,更重要的是通过这次课程设计大大提高了我的动手能力,并对整个软件开发的过程有了一个感性的认识,每个设计阶段我都能学到一个新知识。
我努力的、独立的去完成课程设计所需要的一切工序,从这个漫长、枯燥又劳累的过程中,我的分析问题能力、对生命周期的理解、软件需求分析的能力、软件工程的思维能力和技术有了很大的提高。
这次设计,是对我半年来所学知识的一次严格的检验与总结,是从所学理论到应用实践的一次跨越性的转变。
这次设计,一方面,让我认识到了自己知识上、动手能力的欠缺;但另一方面也增强了我继续学习的决心和动力,提高了我解决实际问题的能力,可以说我受益匪浅。
也认识到了自己的不足,在设计功能,技术方面还有很多不足,需要在以后的时间里不断的学习充实自己。
7.参考文献
[1]Sun公司核心技术丛书
[2]精通J2EE——Java企业级应用
[3]