《景点门票销售管理系统(程序)(共24页).doc》由会员分享,可在线阅读,更多相关《景点门票销售管理系统(程序)(共24页).doc(24页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上软件开发实验课程设计 题 目:景点门票销售管理系统院 (系): 机械电子工程系 专业班级: 计算机1101 姓 名: 李 永 康 学 号: 0 指导教师: 马 睿 2014 年 7 月 7 日西安建筑科技大学华清学院课程设计(论文)任务书专业班级: 学生姓名: 指导教师(签名): 一、课程设计(论文)题目景点门票销售管理系统二、本次课程设计(论文)应达到的目的通过数据库大作业课程设计的操作与实践,使学生了解关系数据库的相关理论知识和有关工具软件的使用技巧,在一定程度上提高应用程序的综合开发能力和创新意识、创新能力。 三、本次课程设计(论文)任务的主要内容和要求(包括原
2、始数据、技术参数、设计要求等) 系统功能基本要求 : 1. 票价管理(分老年、小孩、成人、团体、节假日等); 2. 营业员人员管理; 3. 门票查询; 4. 售票及退票管理; 5. 统计门票销售情况(按时间段统计、按营业员统计及按门票类别统计等);四、应收集的资料及主要参考文献: 1. 数据库:原理编程与性能(影印版)(第2版),高等教育出版社, Parick ONeil,Elizabeth ONeil编著,2005.7;2. 数据库系统概论(第4版),高等教育出版社,王珊,萨师煊编著,2006.05; 五、审核批准意见教研室主任(签字) 设计总说明随着科技的不断发展,景点门票销售管理信息已经
3、摒弃了以往的手工文件管理阶段,进化成为了高科技、高效率的数据库应用程序来进行管理。使用学生信息管理系统可以更高效、准确地进行学生选课、查询、记录和添加等各种操作,大大减少信息管理人员的负担。关键字:查询、添加、删除、修改目 录1.问题描述4 1.1开发背景41.2开发目的41.3开发运行环境41.4系统功能42.需求分析42.1可行性分析42.2系统要求52.3功能需求52.4系统管理53.概要设计63.1系统类的设计63.2系统包含的类64详细设计74.1系统包含的函数74.2数据库的连接85程序运行结果96.感想与心得体会147.参考文献148.源代码151.问题描述1.1 开发背景 随着
4、我国市场经济的快速发展,景点门票销售管理系统在日常管理中发挥着越来越重要的作用。景点门票销售管理系统可以进行景点门票的管理,方便处理营业员、门票、销售相关信息。此外Internet的迅速发展普及,使Internet成为Inter技术在景点门票销售管理系统中的应用和延伸形成了集计算机,计算机网络,数据库,分布式计算等于一体的信息技术综合体,使信息交流变得快捷、准确,为建立现代旅游管理系统提供了充足的条件。1.2 开发目的传统的员工信息管理不仅复杂,而且牵涉了很多劳动力,对管理业造成了诸多不便,而选用景点门票销售管理系统,管理人员可以不受地点和时间限制对门票销售进行查询,方便管理员的管理和控制,提
5、高工作效率。1.3 开发运行环境系统环境:windows 7 32位数据库环境:Microsoft access软件环境:MyEclipse10.0,PowerDesigner15.1,Java1.4 系统功能(1) 查询功能(2) 添加,修改,删除功能2. 需求分析2.1 可行性分析本系统主要采用了Java和Microsoft access来开发,而当前的Java的Microsoft access应用技术已经比较成熟,和其他应用开发语言比起来有很大的优势,所以利用这些技术是完全可以完成这些功能的。景点门票销售管理系统的工作主要是在景点管理者和景点之间架起一座桥梁,能相互沟通信息和处理信息。这
6、一特点非常适合计算机特点,发挥计算机的信息传输速度快、准确度高的优势。计算机硬件和软件技术的飞速发展,为系统的建议提供了技术条件。 本系统的开发是考虑管理者易于管理,提高工作效率,界面友好,操作简单方便,能完全满足用户的使用要求。2.2系统要求l 实现票价管理(应分老年、小孩、成人、团体等);l 实现营业员管理;l 实现门票销售、退票管理;l 创建存储过程统计指定日期的门票销售情况;l 创建存储过程统计指定月份的门票销售情况;l 创建存储过程统计指定日期各种价格的门票销售情况;l 创建存储过程统计指定营业员指定日期的收费情况;创建表间关系。 2.3功能需求 满足管理员对营业员信息的基本信息的添
7、加修改和删除操作。系统包括三张表,分别是营业员表、销售表、门票表。 用户界面主要包含18个类,其中包括主界面,营业员添加界面,营业员修改和删除界面,销售界面,销售修改和删除界面,门票界面,门票修改和删除界面,方便管理者对门票信息、销售信息和门票信息的添加修改和删除操作,节省管理者的时间,提高效率。2.4 系统管理 图2-1 系统管理3. 概要设计3.1 系统类的设计本系统采用Myeclipse10.0开发,使用的编程语言是Java,数据库使用的是Microsoft access,整个系统共有4个包,分别是dao包,model包,util包,view包。每个包有着不同的作用,其中model包中主
8、要是对应数据库中的表,每个类中的定义的变量在数据库中的表中都有对应的属性,并且每个类都有各自的构造函数以及相应变量的get和set方法,便于设置和获取数据。dao包中的类主要完成model中类的操作包括对数据库中表的操作。util包中是连接数据库的类,完成数据库和程序之间的连接。view包中主要是一些界面包括登录界面,主界面,添加数据界面,查询,修改,删除数据界面。3.2系统包含的类系统类的详细设计系统共有18个类,其中view包中含有8个类,分别是LoginFrame.java登陆界面,包含登录验证;MainFrame.java主界面,有一个菜单栏可以对相关操作进行检查以及退出系统;Menp
9、iaoAddInteralFrame.java门票信息添加界面,对门票信息进行添加;MenpiaoManageInteralFrame.java门票信息管理界面,对门票的信息进行查询,修改和删除操作;XiaoshouAddInteralFrame.java销售信息添加界面,对销售信息进行添加;XiaoshouManageInteralFrame.java销售信息管理界面,对销售的信息进行查询,修改和删除操作;YingyeyuanAddInteralFrame.java营业员信息添加界面,对营业员信息进行添加;YingyeyuanManageInteralFrame.java营业员信息管理界面,
10、对营业员信息进行查询,修改和删除操作; model包中含有4个类,分别是Menpiao.java门票信息类,定义了门票的基本信息;User.java管理者登录类,定义了管理者登录时的验证;Xiaoshou.java销售信息类,定义了销售的属性,Yingyeyuan.java营业员信息类,定义了营业员的基本信息;这些类都有相应的构造函数,方便创建实例。 util包中含有2个类,分别是Database.java连接数据库的类和StringUtil.java对字符串判读是否为空的类。其中dao包中含有4个类,分别是MenpiaoDao.java门票信息操作类,UserDao.java管理员操作类,X
11、iaoshouDao.java销售信息操作类,Yingyeyuan.java营业员信息操作类,各个类都与数据库相连,通过使用SQL语句,完成了对员工基本信息的查询,添加,修改和删除操作。4. 详细设计4.1 系统包含的函数Public Menpiao (String id, String didian, String jiage,String leixing, String fenlei) ;/门票定义函数public Xiaoshou (String id, String didian, String fenlei,String leixing, String jiage,String ri
12、qi) ;/销售定义函数public Yingyeyuan (String id, String name, String sex,String age, String didian);/营业员定义函数public int MenpiaoAdd(Connection conn,Menpiao menpiao) throws Exception /门票添加函数,对编号,地点,价格,分类,类型进行添加public ResultSet MenpiaoList(Connection conn,Menpiao menpiao) throws Exception/门票查询函数,通过编号来查询门票中存储的数
13、据public int MenpiaoDelete(Connection conn,String id) throws Exception/门票删除函数,通过对删除编号里面的那一行数据public int MenpiaoModify(Connection conn,Menpiao menpiao) throws Exception /门票修改函数,除主键编号,可以对地点,价格,分类,类型进行修改public Connection getCon();/获得数据库连接的函数public void closeCon(Connection conn);/关闭数据库连接的函数public class S
14、tringUtil public static boolean isEmpty(String str) if (.equals(str) | str = null) return true; else return false; /判断字符串是否为空的函数public static boolean isNotEmpty(String str) if (!.equals(str) & str != null) return true; else return false;/判断字符串是否不为空的函数private void jb_resetActionPerformed (java.awt.ev
15、ent.ActionEvent evt);/清空函数4.2 数据库的连接数据库使用的是Microsoft access,通过JDBC与作为桥接器,实现数据库与java程序连接,需要使用3个连接数据库的包,才能加载数据库的驱动到程序中。连接数据库的代码:package com.util;import java.sql.Connection;import java.sql.DriverManager;public class Database private String url = j dbc:odbc:jingdian;DBQ=F:li.mdb;/相连数据库的端口,以及要连接的数据库的名称pr
16、ivate String userName = ;/相连数据库的用户名private String password = ;/相连数据库的密码private String driver = sun.jdbc.odbc.JdbcOdbcDriver;/连接数据库的驱动public Connection getCon() throws Exception /获取数据库连接的函数Class.forName(driver);/加载驱动Connection conn = DriverManager.getConnection(url, userName, password);/建立到给定数据库 URL
17、的连接。return conn;public void closeCon(Connection conn) throws Exception if (conn != null) conn.close();/关闭数据库的连接public static void main(String args) Database database = new Database();try database.getCon();System.out.println(连接成功!); catch (Exception e) / TODO: handle exceptione.printStackTrace();5 程序
18、运行结果(1)初始界面图5-1 景点门票销售管理系统主界面(2)营业员管理图5-1 营业员添加图5-2营业员的维护(3)门票管理图5-3门票添加图5-4门票维护(4)售票管理图5-5 销售添加图5-6销售维护6、感想与心得体会 作为大三的最后一门课程设计,数据库课程设计作业的完成,我大学前三年年的学习生活也将告一段落。我所做的景点门票销售管理系统,用的是access+java。整个程序,是完完全全、一点一点自己编写出来的。很不容易,但是也很有成就感。刚开始的入手很难,因为之前很长时间没有使用关于java的程序,也不知道该怎样在java里把access连进去。后来,连上了数据库,开始在acces
19、s里建表,这三张表,可谓是千锤百炼了,删了建、建了删,每一次新建,都是一次改进,都代表我对自己的系统有了更进一步的了解。建立表之后是在表中插入一些数据,就是所谓的数据库了。当所有的表和表中的数据都没有问题了,就开始着手在java里,将我的系统以图形的界面显示出来了。从添加窗体开始,然后是Datagridview、label、textbox等等,规划出一个大体的模型。然后是添加botton,其实每一个form里的botton无非就是这样几个功能:插入、删除、查找、修改、退出。不过form之间有些许差别罢了。但是,就是这样的三个form我改了一天的时间,最后才知道,错误点在于第一个form的主码只
20、有一个,而后两个的form都不是单个的主码,所有在更新、插入、删除的时候语句是不完全一样的。之后是存储过程的创建,在access里实现了。然后在java里,要能成功调用你创建的存储。 完成这个课程设计的过程虽然很不容易,但是却让人受益匪浅。让我学会了如何从零开始完成一个自己之前没接触过的语言、让我知道了调试程序的重要性、让我享受了和同学一起研究、最后获取成功的满足。最后,感谢老师在这学期理论上的讲授,让我对数据库课程设计有了良好的理论基础支持!7、参考文献1. 数据库:原理编程与性能(影印版)(第2版),高等教育出版社, Parick ONeil,Elizabeth ONeil编著,2005.
21、7;2. 数据库系统概论(第4版),高等教育出版社,王珊,萨师煊编著,2006.05;8、源代码 以营业员管理模块为例,部分源代码如下:专心-专注-专业1,YingyeyuanDao.javapackage com.dao;import java.sql.*;import com.model.Yingyeyuan;import com.util.StringUtil;public class YingyeyuanDao /营业员操作类/添加public int yingyeyuanAdd(Connection conn, Yingyeyuan yingyeyuan) throws Except
22、ion/营业员添加函数String sql = INSERT INTO Yingyeyuan values(?,?,?,?,?);PreparedStatement pstm = conn.prepareStatement(sql);pstm.setString(1, yingyeyuan.getId();pstm.setString(2, yingyeyuan.getname();pstm.setString(3, yingyeyuan.getSex();pstm.setString(4, yingyeyuan.getage();pstm.setString(5, yingyeyuan.ge
23、tdidian();return pstm.executeUpdate();/查询public static ResultSet yingyeyuanList(Connection conn, Yingyeyuan yingyeyuan) throws Exception /营业员查询函数StringBuffer sb = new StringBuffer(SELECT * FROM Yingyeyuan);if (StringUtil.isNotEmpty(yingyeyuan.getId() sb.append( and 编号 like % + yingyeyuan.getId() + %
24、);PreparedStatement pstm = conn.prepareStatement(sb.toString().replace(and, where);return pstm.executeQuery();/删除public int yingyeyuanDelete(Connection conn, String id) throws Exception /营业员删除函数String sql = DELETE FROM Yingyeyuan WHERE 编号=?;PreparedStatement pstm = conn.prepareStatement(sql);pstm.se
25、tString(1, id);return pstm.executeUpdate();/修改public int yingyeyuanModify(Connection conn, Yingyeyuan yingyeyuan) throws Exception /营业员修改函数String sql = UPDATE Yingyeyuan SET 姓名=?,性别=?,年龄=?,地点=? WHERE 编号=?;PreparedStatement pstm = conn.prepareStatement(sql);pstm.setString(1, yingyeyuan.getname();pstm
26、.setString(2, yingyeyuan.getSex();pstm.setString(3, yingyeyuan.getage();pstm.setString(4, yingyeyuan.getdidian();pstm.setString(5, yingyeyuan.getId();return pstm.executeUpdate();2、Yingyeyuan.javapackage com.model;public class Yingyeyuan /营业员定义类private String id;private String name;private String sex
27、;private String age;private String didian;public Yingyeyuan() super();public Yingyeyuan(String id, String name, String sex,String age, String didian) /营业员定义函数super();this.id = id;this.name = name;this.sex = sex;this.age = age;this.didian = didian;public Yingyeyuan(String bookName, String author, Str
28、ing sex) super();this.name = bookName;this.sex = sex;public String getId() return id;public void setId(String id) this.id = id;public String getname() return name;public void setBookName(String bookName) this.name = bookName;public String getSex() return sex;public void setSex(String sex) this.sex =
29、 sex;public String getage() return age;public void setage(String age) this.age = age;public String getdidian() return didian;public void setdidian(String didian) this.didian = didian;3、Database.javapackage com.util;import java.sql.Connection;import java.sql.DriverManager;public class Database /数据库连接
30、类private String url = jdbc:odbc:jingdian;DBQ=F:li.mdb;private String userName = ;private String pqssword = ;private String driver = sun.jdbc.odbc.JdbcOdbcDriver;/* * 获取数据库连接 */public Connection getCon() throws Exception /获得数据库连接的函数Class.forName(driver);Connection conn = DriverManager.getConnection(u
31、rl, userName, pqssword);return conn;public void closeCon(Connection conn) throws Exception /关闭数据库连接的函数if (conn != null) conn.close();public static void main(String args) Database database = new Database();try database.getCon();System.out.println(连接成功!); catch (Exception e) / TODO: handle exceptione.
32、printStackTrace();4、StringUtil.javapackage com.util;public class StringUtil /判断字符串是否为空的函数public static boolean isEmpty(String str) if (.equals(str) | str = null) return true; else return false;public static boolean isNotEmpty(String str) /判断字符串是否不为空的函数if (!.equals(str) & str != null) return true; el
33、se return false;5、YingyeyuanAddInteralFrame.formprivate void didianActionPerformed(java.awt.event.ActionEvent evt) / TODO add your handling code here:private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) this.resetValues();private void jButton1ActionPerformed(java.awt.event.ActionEven
34、t evt) String id = this.idText.getText();if (StringUtil.isEmpty(id) JOptionPane.showMessageDialog(null, 编号名称不能为空);return;String name = this.nameText.getText();if (StringUtil.isEmpty(id) JOptionPane.showMessageDialog(null, 姓名名称不能为空);return;String sex = ;if (this.jrb_male.isSelected() sex = 男; else if
35、 (this.jrb_female.isSelected() sex = 女;String age = this.ageText.getText();if (StringUtil.isEmpty(name) JOptionPane.showMessageDialog(null, 年龄不能为空);return;String didian = this.didianText.getText();if (StringUtil.isEmpty(age) JOptionPane.showMessageDialog(null, 地点不能为空);return;Yingyeyuan yingyeyuan =
36、new Yingyeyuan(id, name, sex, age, didian);Connection conn = null;try conn = database.getCon();int addNum = yingyeyuanDao.yingyeyuanAdd(conn, yingyeyuan);if (addNum = 1) JOptionPane.showMessageDialog(null, 营业员添加成功!);this.resetValues(); else JOptionPane.showMessageDialog(null, 营业员添加失败!); catch (Excep
37、tion e) / TODO Auto-generated catch blocke.printStackTrace();JOptionPane.showMessageDialog(null, 营业员添加失败!); finally try database.closeCon(conn); catch (Exception e) / TODO Auto-generated catch blocke.printStackTrace();private void resetValues() this.idText.setText();this.nameText.setText();this.jrb_
38、male.setSelected(true);this.ageText.setText();6、YingyeyuanManageInteralFrame.formprivate void jb_modifyActionPerformed(java.awt.event.ActionEvent evt) String id = this.idText.getText();if (StringUtil.isEmpty(id) JOptionPane.showMessageDialog(null, 请选择要修改的记录!);return;String name = this.nameText.getTe
39、xt();if (StringUtil.isEmpty(name) JOptionPane.showMessageDialog(null, 营业员姓名不能为空);return;String sex = ;if (this.jrb_male.isSelected() sex = 男; else if (this.jrb_female.isSelected() sex = 女;String age = this.ageText.getText();if (StringUtil.isEmpty(age) JOptionPane.showMessageDialog(null, 营业员年龄不能为空);r
40、eturn;String didian = this.didianText.getText();if (StringUtil.isEmpty(didian) JOptionPane.showMessageDialog(null, 地点不能为空);return;Yingyeyuan yingyeyuan = new Yingyeyuan(id, name, sex, age, didian);Connection conn = null;try conn = database.getCon();int ModifyNum = yingyeyuanDao.yingyeyuanModify(conn
41、, yingyeyuan);if (ModifyNum = 1) JOptionPane.showMessageDialog(null, 修改成功!);this.resetValue();this.fillTable(new Yingyeyuan(); else JOptionPane.showMessageDialog(null, 修改失败!); catch (Exception e) e.printStackTrace();JOptionPane.showMessageDialog(null, 修改失败!); finally try database.closeCon(conn); catch (Exception e) e.printStackTrace();private void jb_deleteActionPerformed(java.awt.event.ActionEvent evt) String id = this.idText.getText();if (StringUtil.isEmpty(id) JOptionPane.showMessageDialog(null, 请选择要删除的记录!);return;int
限制150内