旅游管理系统

数据库课程设计

设 计

题 目:

说 明 书

某旅行社管理系统

2012 年 6月 21 日

1、需求分析 一、现行系统概述

该旅行社目前主要是手工操作,没有任何计算机支持的旅行 社信息管理系统。通过对旅行社的调查,访谈,我们知道了现行手工系统的原始的工作流程如下:

(1)客户报名信息流程:

首先,客户填写报名表,交与接待员,接待员对报名表做成 册子,并对其进行管理,然后报名表复制一份给游客,保留游客信息表和游客报名表给有关人员查阅。流程图如(图1):

对工作流程进行细细走访,知道客户填写表之后,接待员进 行审核,核对好后,编订成册,并交一份表给客户保留。对已有 的客户信息和报名表,可对其进行查阅,修改等,可以给相关人员或部门查看,统计。细分后的流程图为(图2):

(2)旅游景点信息管理流程:

工作人员由收集到的旅游信息,经审核后编订成册,供相关工作人员及游客查阅。可得到流程图为(图3):

(3)旅游线路管理流程:

由相关人员提出旅游线路,填写旅游线路设计表,经过讨 论,审核之后,形成报表,并订成册,供工作人员和游客翻阅。流程图如(图4):

(4)旅游团队管理流程:

由相关人员提出要建立的旅游团队,填写团队设计表,由相 关员工讨论,并经主管审核之后,确定改团队的建立,并编制团队手册。流程图如(图5): (5)员工管理流程:

新来的员工填写员工基本表,经人事管理部门审核后编制成 正式的员工档案表,档案管理员可以对其进行增加、修改,删除。形成的档案表可以给相关部门查看。流程图如(图6):

(6)相关旅行社管理流程:

由员工获取旅行社信息,对其审核后做成档案,并保存, 相关认可可以对其进行管理,增加,修改,删除等,并可以做成报表给相关人员查看。流程图如(图7):

(7)财务管理流程:

前台服务员或团队负责人递交收款发票或报销发票,由财务管理人员审核并整理成档案,并对财务进行翻阅、统计,并做成报表给相关人员查看、审核。流程图如(图8):

二、系统需求分析 (1)功能分析

通过对旅行社管理流程和业务流程的分析,并对旅行社工作 人员,管理人员进行访谈,了解到旅行社管理系统应具有以下主要功能:

1 )根据客户的报名,录入客户的报名信息并对其进行管理。 2 )根据收集到的旅游景点,录入并管理旅游景点信息。 3 )由旅游景点信息,设计并管理旅游线路。 4 )对旅游团队的设计进行录入和管理。 5 )对员工的信息进行录入和管理。 6 )录入和管理其他相关的旅行社信息。 7 )对旅行社的财务进行管理。

8 )查询和打印客户信息、团队信息、员工信息、财务信息等。

不同的用户登录系统,其权限不同。根据系统所需的功能,并对计算机所处理的数据进行分析, 系统可以分为三个大的功能模块:系统用户管理、旅行社信息管理和系统数据维护。 系统用户管理

主要是对使用系统的用户进行管理,包括系统登录、退出、 增加用户、删除用户、用户的权限分配和修改以及用户的操作记录等。 旅行社信息管理

旅行社信息管理主要分为7个模块:客户报名管理、旅游景点管理、旅游线路管理、旅游团队管理、员工管理、相关旅行社管理、财务管理。各模块的具体功能如下:

客户报名管理:包括游客登记,游客报名的录入,修改,查询等。 旅游景点管理:包括对旅游景点的录入,修改,查询等。 旅游线路管理:对设计好旅游线路的录入、修改,查询等。 旅游团队管理:包括团队的建立,修改,查询,统计等。 员工管理:包括查询员工信息、更新员工信息、添加、删除员工等。

相关旅行社管理:对有合作关系或将有合作关系的旅行社信息的录入,修改、查询等。 财务管理:包括财务信息的录入、修改,查询等。 系统数据管理

主要是数据的备份与恢复。 (2)对性能的规定

1 )精度

该软件的输入、输出数据大多都是字符类型的,用到整型或 浮点型的数据都很少,因此对数据的精度要求不是很高,要求较高的财务数据精确到小数点后四位也足够了。

2 )时间特性需求

要求该系统更新处理时间快,在每一次业务完成后,要立即 更新数据库中的数据,要时刻保持数据库中的数据正确,而且是最新的数据。响应时间要较快。

3 )灵活性

要求在业务流程或方式改变后,只需改变该系统的部分或者 增加一些模块就可以实现。系统要有一定的功能扩展性。业务扩 大后,只需在该系统的基础上进行改进即可,而不至于重新开发新的系统。

4 )故障处理要求

在运行过程中如果出现数据库连接错误,或其他运行错误, 应给出错误可能的原因,以及可能使用的解决途径。如果在运行 过程中,突然停电或其它硬件发生故障,而使系统不正常停止, 在故障恢复后,数据库中的数据应能恢复到故障发生前的状态。 如果用户执行了能破坏系统的行为,系统应能给出提示,并拒绝执行。

5 )其它专门要求

系统应注意数据的安全性与保密性,尽量做到保护数据的安 全,坚决不执行无操作权限的操作;系统应比较容易维护,让水 平不高的用户也能应付日常的简单维护工作;系统应做成符合大 多数人的使用习惯,做成易于学会使用;对每个用户的操作行为 进行记录。系统开发完成后,给出系统的详细说明书,以便未参 与开发的人员在对该系统进行维护时,

能轻而易举。系统必须有使用说明书,以便用户能正确合理地使用之。 三、数据模型设计

按系统功能设计该问题的局部概念数据模型,然后综合局部概念 数据模型得到全局概念数据模型。实体及属性、实体之间的联系见E-R 图,图中画出了实体间的联系(图9) :

一个业务员负责一个团队,一个团队选定一条旅游线路,一 条线路可以组多个团队。一个游客只能选一个团队,一个团队可以有多个游客报名。 四、子系统的划分 本系统的划分情况如下:

五、新系统功能模型设计 (1) 数据流图

1)旅行社信息管理流程图

通过对以上的旅行社信息管理流程图的抽象处理,得到如下旅行社信息管理数据流图的0层图(图13) :

我们进一层分析,对上图进行细化。对上述数据流图细化后,得到如下旅行社信息管理

系统数据流图的1层图(图 14) :

对旅行社信息管理细分,将其细分成客户报名管理,旅游景 点管理,旅游线路管理,旅游团队管理,员工管理,相关旅行社管理,财务管7个模块,得到如下旅行社信息管理系统数据流图的2层图(图15) :

未实现信息化管理前,对游客填报的信息有“审核”一项处 理过程,由于硬件开支和开发开支方面的原因,对审核数据一项 处理仍用人工方式进行,所以下面系统省去审核的流程。客户报名信息管理包括团队查询,线路查询,报名登记,并对客户信息和报名信息的处理,下面是对2.1的细分(图16) :

由于处理客户信息和处理客户报名信息还可以分成查询,增加,修改,和删除功能,所以,下面对其细分(图 17) :

将旅游景点信息管理 (2.2) 细分,它主要拥有增加,修改,删除,查询等功能。其数据流图如下(图 18):

将旅游线路信息管理 (2.3) 细分,它主要拥有增加,修改,删除,查询打印等功能。

其数据流图如下(图19) :

细分旅游团队信息管理(2.4),它主要有增加,更新,查询,删除等功能。其数据流图如下(图20) :

员工管理包括查询员工信息(按员工编号、员工姓名或所在部门查询等) 和更新员工信息(添加员工信息、删除员工信息和修改员工信息等 )。将员工管理(2.5)细化得到如下数据流图(图21) :

细分相关旅行社信息管理 (2.6),它主要有增加,更新,查询,删除等功能。其数据流图如下(图22) :

财务管理(2.7)主要有增加,修改,查询,统计等功能。细分后,其数据流图如下(图

23) :

将上述数据流图合并得到总的旅行社信息管理数据流图(图24) :

2 )系统帐户管理数据流图

对系统帐户管理的功能进行分析,得到如下系统帐户管理数据流图(图25) :

用户登录通过验证程序后,就可以执行该用户所具有的权限(如修改密码、增加和删除用户、修改、授予权限等) 。 3 )系统数据管理数据流图

系统数据管理包括备份数据和恢复数据,这里的数据包括与宾馆信息有关的所有数据,其数据流图如下(图26) :

图26 系统数据管理数据流图

(2)数据字典

由于涉及的数据比较多,现在只建立了一些主要的数据字典:

2、概念结构设计

多名用户只可以报名参加一个团队,其局部E-R 图如下所示:

图一

一个旅游团队,可以有多名导游,对应一名业务员,一名业务员只可以负责一个团队。其E-R 图如下所示:

一个旅行社可以拥有多个旅游团队,一个团队只对应一个旅行社。一个团队对应一条线,一条线路可以被多个团队选择。一条线路可以有多个旅游景点。

E-R 图设计: 总E-R 图设计

3、逻辑设计 顾客数据库:

注册表:(姓名,密码)。

旅游景点信息库:

景点表:(景区编号,景点编号,景区地点,景点名称)。

旅行社表:(旅行社编号,景区编号,旅行社名称,旅行社联系人,电话)。

线路信息资料库:

线路表:(线路名,等级,始发点,目的点,往返交通,行程天数,旅游报价)。

团队信息资料库:

团队信息表:(团队编号,团队名称,团队状态,最大报名人数,业务员,线路名,出团时间,回团时间)。

财务管理信息数据库:

收入表:(收入编号,日期,项目,经办人)。

支出表:(支出编号,日期,项目,经办人)。

团队报账表:(报账编号,团队编号,日期,金额,科目,报账人,经办人)。

4、数据库实施与运行

5、界面设计与后台代码 线路界面

核心代码 using System;

using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text;

using System.Windows.Forms; using System.Data.SqlClient;

namespace WindowsFormsApplication旅行社 {

public partial class roadinformationForm : Form {

string strcon; SqlConnection sqlcon; public roadinformationForm()

{

InitializeComponent(); }

private void DBConnect() {

strcon = "data source = (local);initial catalog = 线路信息资料库;integrated security = true;uid = 张天;pwd =10210102;"; sqlcon = new SqlConnection(strcon); }

private void Commondataview() { try {

DBConnect();

SqlDataAdapter da = new SqlDataAdapter("select * from 线路表", sqlcon);

DataSet ds = new DataSet(); da.Fill(ds, "tablename");

dataGridView1.DataSource = ds.Tables[0]; }

catch (SystemException) {

MessageBox.Show("错误", "错误提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);

} finally {

if (sqlcon.State == ConnectionState.Open) {

sqlcon.Close(); sqlcon.Dispose(); } } }

private void roadinformationForm_Load(object sender, EventArgs e) {

// TODO: 这行代码将数据加载到表“线路信息资料库DataSet1. 线路表”中。您可以根据需要移动或移除它。

// this.线路表TableAdapter1.Fill(this.线路信息资料库DataSet1. 线路表);

// TODO: 这行代码将数据加载到表“线路信息资料库DataSet. 线路表”中。您可以根据需要移动或移除它。

// this.线路表TableAdapter.Fill(this.线路信息资料库DataSet. 线路表); // TODO: 这行代码将数据加载到表“顾客数据库DataSet1. 顾客信息表”中。您可以根据需要移动或移除它。

// this.顾客信息表TableAdapter.Fill(this.顾客数据库DataSet1. 顾客信息表);

Commondataview(); }

private void addbutton_Click(object sender, EventArgs e) {

DBConnect(); sqlcon.Open();

SqlCommand cmd = new SqlCommand("insert into 线路表(线路名, 等级, 始发点, 目的点, 往返交通, 旅游报价)values('" + roadnametextBox.Text + "','" +

classtextBox.Text + "','" + starttextBox.Text + "','" + destainationtextBox.Text + "','" + traffictextBox.Text + "','" + pricetextBox.Text + "')", sqlcon); cmd.ExecuteNonQuery();

sqlcon.Close(); Commondataview(); }

private void deletebutton_Click(object sender, EventArgs e) {

DBConnect(); sqlcon.Open();

SqlCommand cmd = new SqlCommand("delete from 线路表 where 线路名 = '" + roadnametextBox.Text + "'", sqlcon); cmd.ExecuteNonQuery(); sqlcon.Close(); Commondataview(); }

private void updatebutton_Click(object sender, EventArgs e) {

DBConnect(); sqlcon.Open();

SqlCommand cmd = new SqlCommand("update 线路表 set 旅游报价 = '" + pricetextBox.Text + "' where 线路名 = '" + roadnametextBox.Text + "'", sqlcon); cmd.ExecuteNonQuery(); sqlcon.Close(); Commondataview(); }

private void querybutton_Click(object sender, EventArgs e) {

DBConnect(); sqlcon.Open();

SqlDataAdapter da= new SqlDataAdapter ("select * from 线路表 where 线路名 = '" + roadnametextBox.Text + "'", sqlcon); DataSet ds = new DataSet(); da.Fill(ds, "tablename");

dataGridView1.DataSource = ds.Tables[0]; sqlcon.Close(); } } }

员工用户界面:

核心代码 using System;

using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing;

using System.Linq; using System.Text;

using System.Windows.Forms; using System.Data.SqlClient;

namespace WindowsFormsApplication旅行社 {

public partial class employeeForm : Form {

string strcon; SqlConnection sqlcon; public employeeForm() {

InitializeComponent(); }

private void DBConnect() {

strcon = "data source = (local);initial catalog = 员工信息数据库;integrated security = true;";

sqlcon = new SqlConnection(strcon); }

private void Commondataview() { try {

DBConnect();

SqlDataAdapter da = new SqlDataAdapter("select * from 员工信息表", sqlcon);

DataSet ds = new DataSet(); da.Fill(ds, "tablename");

dataGridView1.DataSource = ds.Tables[0];

}

catch (SystemException) {

MessageBox.Show("数据库连接失败", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Warning);

} finally {

if (sqlcon.State == ConnectionState.Open) {

sqlcon.Close(); sqlcon.Dispose(); } } }

private void employeeForm_Load(object sender, EventArgs e) {

// TODO: 这行代码将数据加载到表“员工信息数据库DataSet. 员工信息表”中。您可以根据需要移动或移除它。

//this.员工信息表TableAdapter.Fill(this.员工信息数据库DataSet. 员工信息表);

Commondataview(); }

private void addbutton_Click(object sender, EventArgs e) {

DBConnect(); sqlcon.Open();

SqlCommand cmd = new SqlCommand("insert into 员工信息表 (员工编号,

员工名称, 性别, 年龄, 所属部门, 职称)values('" + employeeidtextBox.Text + "','" + employeenametextBox.Text + "','" + sextextBox.Text + "','" + agetextBox.Text + "','" + itemtextBox.Text + "','" + professonalposttextBox.Text + "')", sqlcon); cmd.ExecuteNonQuery(); sqlcon.Close(); Commondataview(); }

private void deletebutton_Click(object sender, EventArgs e) {

DBConnect(); sqlcon.Open();

SqlCommand cmd = new SqlCommand("delete from 员工信息表 where 员工编号 = '" + employeeidtextBox.Text + "'", sqlcon); cmd.ExecuteNonQuery(); sqlcon.Close(); Commondataview(); }

private void updatebutton_Click(object sender, EventArgs e) {

DBConnect(); sqlcon.Open();

SqlCommand cmd = new SqlCommand("update 员工信息表 set 职称 = '" + professonalposttextBox.Text + "' where 员工编号 ='" + employeeidtextBox.Text + "'", sqlcon);

cmd.ExecuteNonQuery(); sqlcon.Close(); Commondataview(); }

private void querybutton_Click(object sender, EventArgs e) {

DBConnect(); sqlcon.Open();

SqlDataAdapter da = new SqlDataAdapter("select * from 员工信息表 where 员工编号 = '" + employeeidtextBox.Text + "'", sqlcon); DataSet ds = new DataSet(); da.Fill(ds, "tablename ");

dataGridView1.DataSource = ds.Tables[0]; sqlcon.Close(); } } }

系统管理界面

核心代码 using System;

using System.Collections.Generic;

using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text;

using System.Windows.Forms; using System.Data.SqlClient;

namespace WindowsFormsApplication旅行社 {

public partial class informationForm : Form {

string strcon; SqlConnection sqlcon; public informationForm() {

InitializeComponent(); }

private void DBConnect() {

strcon = "Data Source=(local);Initial Catalog=顾客数据库;integrated security=true;uid = 陈毅;pwd =1021010228"; sqlcon = new SqlConnection(strcon); }

private void Comomdataview() { try {

DBConnect();

SqlDataAdapter da = new SqlDataAdapter("Select 顾客编号, 顾客姓名, 性别, 年龄, 单位, 参加团队编号, 旅游线路 from 顾客信息表 ", sqlcon);

DataSet ds = new DataSet(); da.Fill(ds, "tablename");

dataGridView1.DataSource = ds.Tables[0];

}

catch (SystemException) {

MessageBox.Show("错误", "错误提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); } finally {

if (sqlcon.State == ConnectionState.Open) {

sqlcon.Close(); sqlcon.Dispose(); } } }

private void informationForm_Load(object sender, EventArgs e) {

// TODO: 这行代码将数据加载到表“顾客数据库DataSet. 顾客信息表”中。您可以根据需要移动或移除它。

//this.顾客信息表TableAdapter.Fill(this.顾客数据库DataSet. 顾客信息表);

Comomdataview(); }

private void 增加ToolStripMenuItem_Click(object sender, EventArgs e)

{

DBConnect(); sqlcon.Open();

SqlCommand cmd = new SqlCommand("insert into 顾客信息表(顾客编号, 顾客姓名, 性别, 年龄, 单位, 参加团队编号, 旅游线路)values('" + idtextBox.Text + "','" + nametextBox.Text + "','" + sextextBox.Text + "','" + agetextBox.Text + "','" + companytextBox.Text + "','" + teamidtextBox.Text + "','" + roadtextBox.Text + "')",sqlcon );

cmd.ExecuteNonQuery(); sqlcon.Close(); Comomdataview(); }

private void 删除ToolStripMenuItem_Click(object sender, EventArgs e) {

DBConnect(); sqlcon.Open();

SqlCommand cmd = new SqlCommand("delete from 顾客信息表 where 顾客编号 = '" + idtextBox.Text + "'", sqlcon); cmd.ExecuteNonQuery(); sqlcon.Close(); Comomdataview(); }

private void 修改ToolStripMenuItem_Click(object sender, EventArgs e) {

DBConnect(); sqlcon.Open ();

SqlCommand cmd = new SqlCommand("Update 顾客信息表 set 顾客姓名 = '" + nametextBox.Text + "',参加团队编号 = '" + teamidtextBox.Text + "'where 顾客编号= '" + idtextBox.Text + "'", sqlcon);

cmd.ExecuteNonQuery(); sqlcon.Close(); Comomdataview(); }

private void 查询ToolStripMenuItem_Click(object sender, EventArgs e) {

DBConnect(); sqlcon.Open();

SqlDataAdapter da= new SqlDataAdapter ("Select 顾客编号, 顾客姓名, 性别, 年龄, 参加团队编号, 旅游线路 from 顾客信息表 where 顾客编号 ='" + idtextBox.Text + "'", sqlcon);

DataSet ds = new DataSet(); da.Fill(ds, "tablename");

dataGridView1.DataSource = ds.Tables[0]; sqlcon.Close(); //Comomdataview(); }

private void toolStripMenuItem1_Click(object sender, EventArgs e) {

//Display the trafficform .

trafficForm atrafficform = new trafficForm(); atrafficform.ShowDialog(); }

private void 旅行社表ToolStripMenuItem_Click(object sender, EventArgs e) {

//display travel agencyfrom.

travelagencyForm2 atravelagencyForm = new travelagencyForm2(); atravelagencyForm.ShowDialog(); }

private void 景点表ToolStripMenuItem_Click(object sender, EventArgs e)

{

//display scenic spotsform.

sceneryForm asceneryform = new sceneryForm(); asceneryform.Show(); }

private void 线路信息表ToolStripMenuItem_Click(object sender, EventArgs e) {

roadinformationForm aroadinformationfrom = new roadinformationForm(); aroadinformationfrom.Show(); }

private void 团队信息表ToolStripMenuItem_Click(object sender, EventArgs e) {

teaminformationForm ateaminformationform = new teaminformationForm(); ateaminformationform.ShowDialog(); }

private void 收入表ToolStripMenuItem_Click(object sender, EventArgs e) {

incomeForm aincomeform = new incomeForm(); aincomeform.ShowDialog(); }

private void 支出表ToolStripMenuItem_Click(object sender, EventArgs e) {

expendForm aexpendform = new expendForm(); aexpendform.ShowDialog(); }

private void 团队报账表ToolStripMenuItem_Click(object sender, EventArgs e) {

teamaccountForm ateamaccountform = new teamaccountForm(); ateamaccountform.ShowDialog(); }

private void 关于ToolStripMenuItem_Click(object sender, EventArgs e) {

AboutBox1 anaboutbox = new AboutBox1(); anaboutbox.ShowDialog(); }

private void 员工信息表ToolStripMenuItem_Click(object sender, EventArgs e) {

employeeForm aemployeefrom = new employeeForm(); aemployeefrom.ShowDialog(); } } }

6、心得体会

通过这次课程设计,我了解到了实践的重要性,虽然刚开始时不知从何下手,但是通过和小组同学的讨论,还有查阅各种书籍资料,上网查询各方面文献,我们总算编出这个简单的旅行社管理系统。在这个过程中,我对编制软件这一领域有了一定的了解。

在设计系统界面时,运用到C#技术,C#开发的系统界面需要和SQL Server 2005相连,然后在系统的界面中实现了表记录的查询,添加,删除,以及修改等等。建立数据库是比较繁琐但是这次课程设计题目中比较简单的部分,就是有时会被这么多的表格把自己弄得分不清东南西北,但是通过小组成员对各表关系的属性的条理分析,和对各个关系图的联系的分析,很快完成了对数据库的建立。比较难的是对界面的设计,通过运用C#技术,比较简单的完成了这次课程设计的任务,比较简单的编成了这个旅游社管理系统。

当然,这中间还有很多不完善的地方,需要我们进一步的学习,研究。通过这次课程设计也为我们在今后的学习中打下了一点基础,并且这是我们首次编写比较大型的软件系统,让我深刻明白了实践的重要性,只有通过实践才能发挥理论知识,完成我们所要求的系统功能。

数据库课程设计

设 计

题 目:

说 明 书

某旅行社管理系统

2012 年 6月 21 日

1、需求分析 一、现行系统概述

该旅行社目前主要是手工操作,没有任何计算机支持的旅行 社信息管理系统。通过对旅行社的调查,访谈,我们知道了现行手工系统的原始的工作流程如下:

(1)客户报名信息流程:

首先,客户填写报名表,交与接待员,接待员对报名表做成 册子,并对其进行管理,然后报名表复制一份给游客,保留游客信息表和游客报名表给有关人员查阅。流程图如(图1):

对工作流程进行细细走访,知道客户填写表之后,接待员进 行审核,核对好后,编订成册,并交一份表给客户保留。对已有 的客户信息和报名表,可对其进行查阅,修改等,可以给相关人员或部门查看,统计。细分后的流程图为(图2):

(2)旅游景点信息管理流程:

工作人员由收集到的旅游信息,经审核后编订成册,供相关工作人员及游客查阅。可得到流程图为(图3):

(3)旅游线路管理流程:

由相关人员提出旅游线路,填写旅游线路设计表,经过讨 论,审核之后,形成报表,并订成册,供工作人员和游客翻阅。流程图如(图4):

(4)旅游团队管理流程:

由相关人员提出要建立的旅游团队,填写团队设计表,由相 关员工讨论,并经主管审核之后,确定改团队的建立,并编制团队手册。流程图如(图5): (5)员工管理流程:

新来的员工填写员工基本表,经人事管理部门审核后编制成 正式的员工档案表,档案管理员可以对其进行增加、修改,删除。形成的档案表可以给相关部门查看。流程图如(图6):

(6)相关旅行社管理流程:

由员工获取旅行社信息,对其审核后做成档案,并保存, 相关认可可以对其进行管理,增加,修改,删除等,并可以做成报表给相关人员查看。流程图如(图7):

(7)财务管理流程:

前台服务员或团队负责人递交收款发票或报销发票,由财务管理人员审核并整理成档案,并对财务进行翻阅、统计,并做成报表给相关人员查看、审核。流程图如(图8):

二、系统需求分析 (1)功能分析

通过对旅行社管理流程和业务流程的分析,并对旅行社工作 人员,管理人员进行访谈,了解到旅行社管理系统应具有以下主要功能:

1 )根据客户的报名,录入客户的报名信息并对其进行管理。 2 )根据收集到的旅游景点,录入并管理旅游景点信息。 3 )由旅游景点信息,设计并管理旅游线路。 4 )对旅游团队的设计进行录入和管理。 5 )对员工的信息进行录入和管理。 6 )录入和管理其他相关的旅行社信息。 7 )对旅行社的财务进行管理。

8 )查询和打印客户信息、团队信息、员工信息、财务信息等。

不同的用户登录系统,其权限不同。根据系统所需的功能,并对计算机所处理的数据进行分析, 系统可以分为三个大的功能模块:系统用户管理、旅行社信息管理和系统数据维护。 系统用户管理

主要是对使用系统的用户进行管理,包括系统登录、退出、 增加用户、删除用户、用户的权限分配和修改以及用户的操作记录等。 旅行社信息管理

旅行社信息管理主要分为7个模块:客户报名管理、旅游景点管理、旅游线路管理、旅游团队管理、员工管理、相关旅行社管理、财务管理。各模块的具体功能如下:

客户报名管理:包括游客登记,游客报名的录入,修改,查询等。 旅游景点管理:包括对旅游景点的录入,修改,查询等。 旅游线路管理:对设计好旅游线路的录入、修改,查询等。 旅游团队管理:包括团队的建立,修改,查询,统计等。 员工管理:包括查询员工信息、更新员工信息、添加、删除员工等。

相关旅行社管理:对有合作关系或将有合作关系的旅行社信息的录入,修改、查询等。 财务管理:包括财务信息的录入、修改,查询等。 系统数据管理

主要是数据的备份与恢复。 (2)对性能的规定

1 )精度

该软件的输入、输出数据大多都是字符类型的,用到整型或 浮点型的数据都很少,因此对数据的精度要求不是很高,要求较高的财务数据精确到小数点后四位也足够了。

2 )时间特性需求

要求该系统更新处理时间快,在每一次业务完成后,要立即 更新数据库中的数据,要时刻保持数据库中的数据正确,而且是最新的数据。响应时间要较快。

3 )灵活性

要求在业务流程或方式改变后,只需改变该系统的部分或者 增加一些模块就可以实现。系统要有一定的功能扩展性。业务扩 大后,只需在该系统的基础上进行改进即可,而不至于重新开发新的系统。

4 )故障处理要求

在运行过程中如果出现数据库连接错误,或其他运行错误, 应给出错误可能的原因,以及可能使用的解决途径。如果在运行 过程中,突然停电或其它硬件发生故障,而使系统不正常停止, 在故障恢复后,数据库中的数据应能恢复到故障发生前的状态。 如果用户执行了能破坏系统的行为,系统应能给出提示,并拒绝执行。

5 )其它专门要求

系统应注意数据的安全性与保密性,尽量做到保护数据的安 全,坚决不执行无操作权限的操作;系统应比较容易维护,让水 平不高的用户也能应付日常的简单维护工作;系统应做成符合大 多数人的使用习惯,做成易于学会使用;对每个用户的操作行为 进行记录。系统开发完成后,给出系统的详细说明书,以便未参 与开发的人员在对该系统进行维护时,

能轻而易举。系统必须有使用说明书,以便用户能正确合理地使用之。 三、数据模型设计

按系统功能设计该问题的局部概念数据模型,然后综合局部概念 数据模型得到全局概念数据模型。实体及属性、实体之间的联系见E-R 图,图中画出了实体间的联系(图9) :

一个业务员负责一个团队,一个团队选定一条旅游线路,一 条线路可以组多个团队。一个游客只能选一个团队,一个团队可以有多个游客报名。 四、子系统的划分 本系统的划分情况如下:

五、新系统功能模型设计 (1) 数据流图

1)旅行社信息管理流程图

通过对以上的旅行社信息管理流程图的抽象处理,得到如下旅行社信息管理数据流图的0层图(图13) :

我们进一层分析,对上图进行细化。对上述数据流图细化后,得到如下旅行社信息管理

系统数据流图的1层图(图 14) :

对旅行社信息管理细分,将其细分成客户报名管理,旅游景 点管理,旅游线路管理,旅游团队管理,员工管理,相关旅行社管理,财务管7个模块,得到如下旅行社信息管理系统数据流图的2层图(图15) :

未实现信息化管理前,对游客填报的信息有“审核”一项处 理过程,由于硬件开支和开发开支方面的原因,对审核数据一项 处理仍用人工方式进行,所以下面系统省去审核的流程。客户报名信息管理包括团队查询,线路查询,报名登记,并对客户信息和报名信息的处理,下面是对2.1的细分(图16) :

由于处理客户信息和处理客户报名信息还可以分成查询,增加,修改,和删除功能,所以,下面对其细分(图 17) :

将旅游景点信息管理 (2.2) 细分,它主要拥有增加,修改,删除,查询等功能。其数据流图如下(图 18):

将旅游线路信息管理 (2.3) 细分,它主要拥有增加,修改,删除,查询打印等功能。

其数据流图如下(图19) :

细分旅游团队信息管理(2.4),它主要有增加,更新,查询,删除等功能。其数据流图如下(图20) :

员工管理包括查询员工信息(按员工编号、员工姓名或所在部门查询等) 和更新员工信息(添加员工信息、删除员工信息和修改员工信息等 )。将员工管理(2.5)细化得到如下数据流图(图21) :

细分相关旅行社信息管理 (2.6),它主要有增加,更新,查询,删除等功能。其数据流图如下(图22) :

财务管理(2.7)主要有增加,修改,查询,统计等功能。细分后,其数据流图如下(图

23) :

将上述数据流图合并得到总的旅行社信息管理数据流图(图24) :

2 )系统帐户管理数据流图

对系统帐户管理的功能进行分析,得到如下系统帐户管理数据流图(图25) :

用户登录通过验证程序后,就可以执行该用户所具有的权限(如修改密码、增加和删除用户、修改、授予权限等) 。 3 )系统数据管理数据流图

系统数据管理包括备份数据和恢复数据,这里的数据包括与宾馆信息有关的所有数据,其数据流图如下(图26) :

图26 系统数据管理数据流图

(2)数据字典

由于涉及的数据比较多,现在只建立了一些主要的数据字典:

2、概念结构设计

多名用户只可以报名参加一个团队,其局部E-R 图如下所示:

图一

一个旅游团队,可以有多名导游,对应一名业务员,一名业务员只可以负责一个团队。其E-R 图如下所示:

一个旅行社可以拥有多个旅游团队,一个团队只对应一个旅行社。一个团队对应一条线,一条线路可以被多个团队选择。一条线路可以有多个旅游景点。

E-R 图设计: 总E-R 图设计

3、逻辑设计 顾客数据库:

注册表:(姓名,密码)。

旅游景点信息库:

景点表:(景区编号,景点编号,景区地点,景点名称)。

旅行社表:(旅行社编号,景区编号,旅行社名称,旅行社联系人,电话)。

线路信息资料库:

线路表:(线路名,等级,始发点,目的点,往返交通,行程天数,旅游报价)。

团队信息资料库:

团队信息表:(团队编号,团队名称,团队状态,最大报名人数,业务员,线路名,出团时间,回团时间)。

财务管理信息数据库:

收入表:(收入编号,日期,项目,经办人)。

支出表:(支出编号,日期,项目,经办人)。

团队报账表:(报账编号,团队编号,日期,金额,科目,报账人,经办人)。

4、数据库实施与运行

5、界面设计与后台代码 线路界面

核心代码 using System;

using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text;

using System.Windows.Forms; using System.Data.SqlClient;

namespace WindowsFormsApplication旅行社 {

public partial class roadinformationForm : Form {

string strcon; SqlConnection sqlcon; public roadinformationForm()

{

InitializeComponent(); }

private void DBConnect() {

strcon = "data source = (local);initial catalog = 线路信息资料库;integrated security = true;uid = 张天;pwd =10210102;"; sqlcon = new SqlConnection(strcon); }

private void Commondataview() { try {

DBConnect();

SqlDataAdapter da = new SqlDataAdapter("select * from 线路表", sqlcon);

DataSet ds = new DataSet(); da.Fill(ds, "tablename");

dataGridView1.DataSource = ds.Tables[0]; }

catch (SystemException) {

MessageBox.Show("错误", "错误提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);

} finally {

if (sqlcon.State == ConnectionState.Open) {

sqlcon.Close(); sqlcon.Dispose(); } } }

private void roadinformationForm_Load(object sender, EventArgs e) {

// TODO: 这行代码将数据加载到表“线路信息资料库DataSet1. 线路表”中。您可以根据需要移动或移除它。

// this.线路表TableAdapter1.Fill(this.线路信息资料库DataSet1. 线路表);

// TODO: 这行代码将数据加载到表“线路信息资料库DataSet. 线路表”中。您可以根据需要移动或移除它。

// this.线路表TableAdapter.Fill(this.线路信息资料库DataSet. 线路表); // TODO: 这行代码将数据加载到表“顾客数据库DataSet1. 顾客信息表”中。您可以根据需要移动或移除它。

// this.顾客信息表TableAdapter.Fill(this.顾客数据库DataSet1. 顾客信息表);

Commondataview(); }

private void addbutton_Click(object sender, EventArgs e) {

DBConnect(); sqlcon.Open();

SqlCommand cmd = new SqlCommand("insert into 线路表(线路名, 等级, 始发点, 目的点, 往返交通, 旅游报价)values('" + roadnametextBox.Text + "','" +

classtextBox.Text + "','" + starttextBox.Text + "','" + destainationtextBox.Text + "','" + traffictextBox.Text + "','" + pricetextBox.Text + "')", sqlcon); cmd.ExecuteNonQuery();

sqlcon.Close(); Commondataview(); }

private void deletebutton_Click(object sender, EventArgs e) {

DBConnect(); sqlcon.Open();

SqlCommand cmd = new SqlCommand("delete from 线路表 where 线路名 = '" + roadnametextBox.Text + "'", sqlcon); cmd.ExecuteNonQuery(); sqlcon.Close(); Commondataview(); }

private void updatebutton_Click(object sender, EventArgs e) {

DBConnect(); sqlcon.Open();

SqlCommand cmd = new SqlCommand("update 线路表 set 旅游报价 = '" + pricetextBox.Text + "' where 线路名 = '" + roadnametextBox.Text + "'", sqlcon); cmd.ExecuteNonQuery(); sqlcon.Close(); Commondataview(); }

private void querybutton_Click(object sender, EventArgs e) {

DBConnect(); sqlcon.Open();

SqlDataAdapter da= new SqlDataAdapter ("select * from 线路表 where 线路名 = '" + roadnametextBox.Text + "'", sqlcon); DataSet ds = new DataSet(); da.Fill(ds, "tablename");

dataGridView1.DataSource = ds.Tables[0]; sqlcon.Close(); } } }

员工用户界面:

核心代码 using System;

using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing;

using System.Linq; using System.Text;

using System.Windows.Forms; using System.Data.SqlClient;

namespace WindowsFormsApplication旅行社 {

public partial class employeeForm : Form {

string strcon; SqlConnection sqlcon; public employeeForm() {

InitializeComponent(); }

private void DBConnect() {

strcon = "data source = (local);initial catalog = 员工信息数据库;integrated security = true;";

sqlcon = new SqlConnection(strcon); }

private void Commondataview() { try {

DBConnect();

SqlDataAdapter da = new SqlDataAdapter("select * from 员工信息表", sqlcon);

DataSet ds = new DataSet(); da.Fill(ds, "tablename");

dataGridView1.DataSource = ds.Tables[0];

}

catch (SystemException) {

MessageBox.Show("数据库连接失败", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Warning);

} finally {

if (sqlcon.State == ConnectionState.Open) {

sqlcon.Close(); sqlcon.Dispose(); } } }

private void employeeForm_Load(object sender, EventArgs e) {

// TODO: 这行代码将数据加载到表“员工信息数据库DataSet. 员工信息表”中。您可以根据需要移动或移除它。

//this.员工信息表TableAdapter.Fill(this.员工信息数据库DataSet. 员工信息表);

Commondataview(); }

private void addbutton_Click(object sender, EventArgs e) {

DBConnect(); sqlcon.Open();

SqlCommand cmd = new SqlCommand("insert into 员工信息表 (员工编号,

员工名称, 性别, 年龄, 所属部门, 职称)values('" + employeeidtextBox.Text + "','" + employeenametextBox.Text + "','" + sextextBox.Text + "','" + agetextBox.Text + "','" + itemtextBox.Text + "','" + professonalposttextBox.Text + "')", sqlcon); cmd.ExecuteNonQuery(); sqlcon.Close(); Commondataview(); }

private void deletebutton_Click(object sender, EventArgs e) {

DBConnect(); sqlcon.Open();

SqlCommand cmd = new SqlCommand("delete from 员工信息表 where 员工编号 = '" + employeeidtextBox.Text + "'", sqlcon); cmd.ExecuteNonQuery(); sqlcon.Close(); Commondataview(); }

private void updatebutton_Click(object sender, EventArgs e) {

DBConnect(); sqlcon.Open();

SqlCommand cmd = new SqlCommand("update 员工信息表 set 职称 = '" + professonalposttextBox.Text + "' where 员工编号 ='" + employeeidtextBox.Text + "'", sqlcon);

cmd.ExecuteNonQuery(); sqlcon.Close(); Commondataview(); }

private void querybutton_Click(object sender, EventArgs e) {

DBConnect(); sqlcon.Open();

SqlDataAdapter da = new SqlDataAdapter("select * from 员工信息表 where 员工编号 = '" + employeeidtextBox.Text + "'", sqlcon); DataSet ds = new DataSet(); da.Fill(ds, "tablename ");

dataGridView1.DataSource = ds.Tables[0]; sqlcon.Close(); } } }

系统管理界面

核心代码 using System;

using System.Collections.Generic;

using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text;

using System.Windows.Forms; using System.Data.SqlClient;

namespace WindowsFormsApplication旅行社 {

public partial class informationForm : Form {

string strcon; SqlConnection sqlcon; public informationForm() {

InitializeComponent(); }

private void DBConnect() {

strcon = "Data Source=(local);Initial Catalog=顾客数据库;integrated security=true;uid = 陈毅;pwd =1021010228"; sqlcon = new SqlConnection(strcon); }

private void Comomdataview() { try {

DBConnect();

SqlDataAdapter da = new SqlDataAdapter("Select 顾客编号, 顾客姓名, 性别, 年龄, 单位, 参加团队编号, 旅游线路 from 顾客信息表 ", sqlcon);

DataSet ds = new DataSet(); da.Fill(ds, "tablename");

dataGridView1.DataSource = ds.Tables[0];

}

catch (SystemException) {

MessageBox.Show("错误", "错误提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); } finally {

if (sqlcon.State == ConnectionState.Open) {

sqlcon.Close(); sqlcon.Dispose(); } } }

private void informationForm_Load(object sender, EventArgs e) {

// TODO: 这行代码将数据加载到表“顾客数据库DataSet. 顾客信息表”中。您可以根据需要移动或移除它。

//this.顾客信息表TableAdapter.Fill(this.顾客数据库DataSet. 顾客信息表);

Comomdataview(); }

private void 增加ToolStripMenuItem_Click(object sender, EventArgs e)

{

DBConnect(); sqlcon.Open();

SqlCommand cmd = new SqlCommand("insert into 顾客信息表(顾客编号, 顾客姓名, 性别, 年龄, 单位, 参加团队编号, 旅游线路)values('" + idtextBox.Text + "','" + nametextBox.Text + "','" + sextextBox.Text + "','" + agetextBox.Text + "','" + companytextBox.Text + "','" + teamidtextBox.Text + "','" + roadtextBox.Text + "')",sqlcon );

cmd.ExecuteNonQuery(); sqlcon.Close(); Comomdataview(); }

private void 删除ToolStripMenuItem_Click(object sender, EventArgs e) {

DBConnect(); sqlcon.Open();

SqlCommand cmd = new SqlCommand("delete from 顾客信息表 where 顾客编号 = '" + idtextBox.Text + "'", sqlcon); cmd.ExecuteNonQuery(); sqlcon.Close(); Comomdataview(); }

private void 修改ToolStripMenuItem_Click(object sender, EventArgs e) {

DBConnect(); sqlcon.Open ();

SqlCommand cmd = new SqlCommand("Update 顾客信息表 set 顾客姓名 = '" + nametextBox.Text + "',参加团队编号 = '" + teamidtextBox.Text + "'where 顾客编号= '" + idtextBox.Text + "'", sqlcon);

cmd.ExecuteNonQuery(); sqlcon.Close(); Comomdataview(); }

private void 查询ToolStripMenuItem_Click(object sender, EventArgs e) {

DBConnect(); sqlcon.Open();

SqlDataAdapter da= new SqlDataAdapter ("Select 顾客编号, 顾客姓名, 性别, 年龄, 参加团队编号, 旅游线路 from 顾客信息表 where 顾客编号 ='" + idtextBox.Text + "'", sqlcon);

DataSet ds = new DataSet(); da.Fill(ds, "tablename");

dataGridView1.DataSource = ds.Tables[0]; sqlcon.Close(); //Comomdataview(); }

private void toolStripMenuItem1_Click(object sender, EventArgs e) {

//Display the trafficform .

trafficForm atrafficform = new trafficForm(); atrafficform.ShowDialog(); }

private void 旅行社表ToolStripMenuItem_Click(object sender, EventArgs e) {

//display travel agencyfrom.

travelagencyForm2 atravelagencyForm = new travelagencyForm2(); atravelagencyForm.ShowDialog(); }

private void 景点表ToolStripMenuItem_Click(object sender, EventArgs e)

{

//display scenic spotsform.

sceneryForm asceneryform = new sceneryForm(); asceneryform.Show(); }

private void 线路信息表ToolStripMenuItem_Click(object sender, EventArgs e) {

roadinformationForm aroadinformationfrom = new roadinformationForm(); aroadinformationfrom.Show(); }

private void 团队信息表ToolStripMenuItem_Click(object sender, EventArgs e) {

teaminformationForm ateaminformationform = new teaminformationForm(); ateaminformationform.ShowDialog(); }

private void 收入表ToolStripMenuItem_Click(object sender, EventArgs e) {

incomeForm aincomeform = new incomeForm(); aincomeform.ShowDialog(); }

private void 支出表ToolStripMenuItem_Click(object sender, EventArgs e) {

expendForm aexpendform = new expendForm(); aexpendform.ShowDialog(); }

private void 团队报账表ToolStripMenuItem_Click(object sender, EventArgs e) {

teamaccountForm ateamaccountform = new teamaccountForm(); ateamaccountform.ShowDialog(); }

private void 关于ToolStripMenuItem_Click(object sender, EventArgs e) {

AboutBox1 anaboutbox = new AboutBox1(); anaboutbox.ShowDialog(); }

private void 员工信息表ToolStripMenuItem_Click(object sender, EventArgs e) {

employeeForm aemployeefrom = new employeeForm(); aemployeefrom.ShowDialog(); } } }

6、心得体会

通过这次课程设计,我了解到了实践的重要性,虽然刚开始时不知从何下手,但是通过和小组同学的讨论,还有查阅各种书籍资料,上网查询各方面文献,我们总算编出这个简单的旅行社管理系统。在这个过程中,我对编制软件这一领域有了一定的了解。

在设计系统界面时,运用到C#技术,C#开发的系统界面需要和SQL Server 2005相连,然后在系统的界面中实现了表记录的查询,添加,删除,以及修改等等。建立数据库是比较繁琐但是这次课程设计题目中比较简单的部分,就是有时会被这么多的表格把自己弄得分不清东南西北,但是通过小组成员对各表关系的属性的条理分析,和对各个关系图的联系的分析,很快完成了对数据库的建立。比较难的是对界面的设计,通过运用C#技术,比较简单的完成了这次课程设计的任务,比较简单的编成了这个旅游社管理系统。

当然,这中间还有很多不完善的地方,需要我们进一步的学习,研究。通过这次课程设计也为我们在今后的学习中打下了一点基础,并且这是我们首次编写比较大型的软件系统,让我深刻明白了实践的重要性,只有通过实践才能发挥理论知识,完成我们所要求的系统功能。


相关文章

  • 旅游目的地系统空间结构模式探究
  • 第26卷 第3期 2007年 6月地域研究与开发 ARE AL RESE ARCH AND DE VE LOP ME NT Vol . 26 No . 3Jun . 2007 旅游目的地系统空间结构模式探究 朱青晓 (河南财经学院旅游系, ...查看


  • 旅游管理就业前景
  • 旅游管理的就业前景 旅游管理专业就业前景观察分析 我国旅游就业已形成六种模式 新近发布的<中国旅游业就业目标体系与战略措施研究>,分析了我国旅游业的地域特征,提出我国旅游就业可以概括为六种不同的地域模式. 一.以大型景区为龙头, ...查看


  • 旅游管理本科人才培养方案-2012(新)
  • 旅游管理专业本科专业人才培养方案 一.培养目标与培养规格 (一)培养目标 本专业培养适应社会主义现代化建设需要,德.智.体.美全面发展,系统掌握旅游管理专业基本理论和基本知识:具备良好的思想品德.职业道德.敬业爱岗.团结合作的品质:具有现代 ...查看


  • 基于智慧旅游的目的地旅游管理体系研究
  • 智慧旅游俨然已经成为当今社会发展的大背景,合理地构建一个符合旅游者自身需求的管理体系,有利于提升旅游目的地整体的综合竞争力水平.本文依据智慧旅游的发展趋势,对智慧旅游的目的地旅游管理体系进行深入的研究和探讨,这对于智慧旅游的创新能够起到重要 ...查看


  • 旅游管理硕士培养方案
  • 旅游管理(硕士) (120203) 一.培养目标与具体要求 培养适应我国社会主义现代化建设需要,德.智.体全面发展,品学兼优的高级专门人才.具体要求是: 1.掌握马克思主义.毛泽东思想.邓小平理论和"三个代表"重要思想: ...查看


  • 旅游危机管理 毕业论文
  • 学号: 旅游企业危机管理及应对策略研究 学院名称: xxxxxxxxxxxxxx 专业名称: xxxxxxxx 年级班别: xxxxxxxxxxxxxxxxxx 姓 名: xxxxxx 指导教师: xxxxxxxx xxxx年xx月 旅游企 ...查看


  • 全国旅游标准化发展规划(2016-2020)
  • 全国旅游标准化发展规划(2016-2020) 国家旅游局 序 言 为进一步推进旅游标准化工作,全面提升标准化水平,更好地服务于经济新常态下旅游业的改革创新.转型升级和提质增效,加快建设世界旅游强国进程,国家旅游局依据<中华人民共和国旅 ...查看


  • 旅游管理专业之我见
  • 旅游管理专业之我见 14旅游管理2B 黄晓丹 2014903212 [摘 要] 旅游管理学科是随着我国旅游经济的发展.旅游产业的发育而建立的一个新型学科.在我国,这门学科的产生只有二十年的时间,但已成为工商管理学科体系中的一个重要的学科部门 ...查看


  • 旅游景区管理论文综述
  • 国内旅游研究论文综述 随着旅游业的蓬勃发展,景区作为旅游活动的重要载体得到了更多的关注.旅游景区管理,指景区的管理者通过合理的组织人力.物力.财力,高效率的实现旅游景区经济.生态.环境效益最大化,并实现旅游景区可持续发展的过程.对于整个旅游 ...查看


  • 旅游安全风险管理与对策研究_陆燕春
  • 广西民族大学学报(哲学社会科学版) JOURNAL OF GUANGXI UNIVERSIT Y FOR NATIONALITIES 第30卷第4期□2008年7月 (Philosophy and Social Science Editio ...查看


热门内容