




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
西安建筑科技大学华清学院课程设计(论文)软件开发实验课程设计 题 目:景点门票销售管理系统院 (系): 机械电子工程系 专业班级: 计算机1101 姓 名: 李 永 康 学 号: 0 指导教师: 马 睿 2014 年 7 月 7 日西安建筑科技大学华清学院课程设计(论文)任务书专业班级: 学生姓名: 指导教师(签名): 一、课程设计(论文)题目景点门票销售管理系统二、本次课程设计(论文)应达到的目的通过数据库大作业课程设计的操作与实践,使学生了解关系数据库的相关理论知识和有关工具软件的使用技巧,在一定程度上提高应用程序的综合开发能力和创新意识、创新能力。 三、本次课程设计(论文)任务的主要内容和要求(包括原始数据、技术参数、设计要求等) 系统功能基本要求 : 1. 票价管理(分老年、小孩、成人、团体、节假日等); 2. 营业员人员管理; 3. 门票查询; 4. 售票及退票管理; 5. 统计门票销售情况(按时间段统计、按营业员统计及按门票类别统计等);四、应收集的资料及主要参考文献: 1. 数据库:原理编程与性能(影印版)(第2版),高等教育出版社, Parick ONeil,Elizabeth ONeil编著,2005.7;2. 数据库系统概论(第4版),高等教育出版社,王珊,萨师煊编著,2006.05; 五、审核批准意见教研室主任(签字) 设计总说明随着科技的不断发展,景点门票销售管理信息已经摒弃了以往的手工文件管理阶段,进化成为了高科技、高效率的数据库应用程序来进行管理。使用学生信息管理系统可以更高效、准确地进行学生选课、查询、记录和添加等各种操作,大大减少信息管理人员的负担。关键字:查询、添加、删除、修改目 录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 开发背景 随着我国市场经济的快速发展,景点门票销售管理系统在日常管理中发挥着越来越重要的作用。景点门票销售管理系统可以进行景点门票的管理,方便处理营业员、门票、销售相关信息。此外Internet的迅速发展普及,使Internet成为Inter技术在景点门票销售管理系统中的应用和延伸形成了集计算机,计算机网络,数据库,分布式计算等于一体的信息技术综合体,使信息交流变得快捷、准确,为建立现代旅游管理系统提供了充足的条件。1.2 开发目的传统的员工信息管理不仅复杂,而且牵涉了很多劳动力,对管理业造成了诸多不便,而选用景点门票销售管理系统,管理人员可以不受地点和时间限制对门票销售进行查询,方便管理员的管理和控制,提高工作效率。1.3 开发运行环境系统环境:windows 7 32位数据库环境:Microsoft access软件环境:MyEclipse10.0,PowerDesigner15.1,Java1.4 系统功能(1) 查询功能(2) 添加,修改,删除功能2. 需求分析2.1 可行性分析本系统主要采用了Java和Microsoft access来开发,而当前的Java的Microsoft access应用技术已经比较成熟,和其他应用开发语言比起来有很大的优势,所以利用这些技术是完全可以完成这些功能的。景点门票销售管理系统的工作主要是在景点管理者和景点之间架起一座桥梁,能相互沟通信息和处理信息。这一特点非常适合计算机特点,发挥计算机的信息传输速度快、准确度高的优势。计算机硬件和软件技术的飞速发展,为系统的建议提供了技术条件。 本系统的开发是考虑管理者易于管理,提高工作效率,界面友好,操作简单方便,能完全满足用户的使用要求。2.2系统要求l 实现票价管理(应分老年、小孩、成人、团体等);l 实现营业员管理;l 实现门票销售、退票管理;l 创建存储过程统计指定日期的门票销售情况;l 创建存储过程统计指定月份的门票销售情况;l 创建存储过程统计指定日期各种价格的门票销售情况;l 创建存储过程统计指定营业员指定日期的收费情况;创建表间关系。 2.3功能需求 满足管理员对营业员信息的基本信息的添加修改和删除操作。系统包括三张表,分别是营业员表、销售表、门票表。 用户界面主要包含18个类,其中包括主界面,营业员添加界面,营业员修改和删除界面,销售界面,销售修改和删除界面,门票界面,门票修改和删除界面,方便管理者对门票信息、销售信息和门票信息的添加修改和删除操作,节省管理者的时间,提高效率。2.4 系统管理 图2-1 系统管理3. 概要设计3.1 系统类的设计本系统采用Myeclipse10.0开发,使用的编程语言是Java,数据库使用的是Microsoft access,整个系统共有4个包,分别是dao包,model包,util包,view包。每个包有着不同的作用,其中model包中主要是对应数据库中的表,每个类中的定义的变量在数据库中的表中都有对应的属性,并且每个类都有各自的构造函数以及相应变量的get和set方法,便于设置和获取数据。dao包中的类主要完成model中类的操作包括对数据库中表的操作。util包中是连接数据库的类,完成数据库和程序之间的连接。view包中主要是一些界面包括登录界面,主界面,添加数据界面,查询,修改,删除数据界面。3.2系统包含的类系统类的详细设计系统共有18个类,其中view包中含有8个类,分别是LoginFrame.java登陆界面,包含登录验证;MainFrame.java主界面,有一个菜单栏可以对相关操作进行检查以及退出系统;MenpiaoAddInteralFrame.java门票信息添加界面,对门票信息进行添加;MenpiaoManageInteralFrame.java门票信息管理界面,对门票的信息进行查询,修改和删除操作;XiaoshouAddInteralFrame.java销售信息添加界面,对销售信息进行添加;XiaoshouManageInteralFrame.java销售信息管理界面,对销售的信息进行查询,修改和删除操作;YingyeyuanAddInteralFrame.java营业员信息添加界面,对营业员信息进行添加;YingyeyuanManageInteralFrame.java营业员信息管理界面,对营业员信息进行查询,修改和删除操作; model包中含有4个类,分别是Menpiao.java门票信息类,定义了门票的基本信息;User.java管理者登录类,定义了管理者登录时的验证;Xiaoshou.java销售信息类,定义了销售的属性,Yingyeyuan.java营业员信息类,定义了营业员的基本信息;这些类都有相应的构造函数,方便创建实例。 util包中含有2个类,分别是Database.java连接数据库的类和StringUtil.java对字符串判读是否为空的类。其中dao包中含有4个类,分别是MenpiaoDao.java门票信息操作类,UserDao.java管理员操作类,XiaoshouDao.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 riqi) ;/销售定义函数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/门票查询函数,通过编号来查询门票中存储的数据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 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; else return false;/判断字符串是否不为空的函数private void jb_resetActionPerformed (java.awt.event.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;/相连数据库的端口,以及要连接的数据库的名称private 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 的连接。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 程序运行结果(1)初始界面图5-1 景点门票销售管理系统主界面(2)营业员管理图5-1 营业员添加图5-2营业员的维护(3)门票管理图5-3门票添加图5-4门票维护(4)售票管理图5-5 销售添加图5-6销售维护6、感想与心得体会 作为大三的最后一门课程设计,数据库课程设计作业的完成,我大学前三年年的学习生活也将告一段落。我所做的景点门票销售管理系统,用的是access+java。整个程序,是完完全全、一点一点自己编写出来的。很不容易,但是也很有成就感。刚开始的入手很难,因为之前很长时间没有使用关于java的程序,也不知道该怎样在java里把access连进去。后来,连上了数据库,开始在access里建表,这三张表,可谓是千锤百炼了,删了建、建了删,每一次新建,都是一次改进,都代表我对自己的系统有了更进一步的了解。建立表之后是在表中插入一些数据,就是所谓的数据库了。当所有的表和表中的数据都没有问题了,就开始着手在java里,将我的系统以图形的界面显示出来了。从添加窗体开始,然后是Datagridview、label、textbox等等,规划出一个大体的模型。然后是添加botton,其实每一个form里的botton无非就是这样几个功能:插入、删除、查找、修改、退出。不过form之间有些许差别罢了。但是,就是这样的三个form我改了一天的时间,最后才知道,错误点在于第一个form的主码只有一个,而后两个的form都不是单个的主码,所有在更新、插入、删除的时候语句是不完全一样的。之后是存储过程的创建,在access里实现了。然后在java里,要能成功调用你创建的存储。 完成这个课程设计的过程虽然很不容易,但是却让人受益匪浅。让我学会了如何从零开始完成一个自己之前没接触过的语言、让我知道了调试程序的重要性、让我享受了和同学一起研究、最后获取成功的满足。最后,感谢老师在这学期理论上的讲授,让我对数据库课程设计有了良好的理论基础支持!7、参考文献1. 数据库:原理编程与性能(影印版)(第2版),高等教育出版社, Parick ONeil,Elizabeth ONeil编著,2005.7;2. 数据库系统概论(第4版),高等教育出版社,王珊,萨师煊编著,2006.05;8、源代码 以营业员管理模块为例,部分源代码如下:第15页 共 23 页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 Exception/营业员添加函数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.getdidian();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() + %);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.setString(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.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;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; = name;this.sex = sex;this.age = age;this.didian = didian;public Yingyeyuan(String bookName, String author, String sex) super(); = 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) = bookName;public String getSex() return sex;public void setSex(String sex) this.sex = 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 /数据库连接类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(url, 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.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; else 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.ActionEvent evt) String id = this.idText.getText();if (StringUtil.isEmpty(id) JOptionPane.showMessageDialog(null, 编号名称不能为空);return;String name = Text.getText();if (StringUtil.isEmpty(id) 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(name) JOptionPane.showMessageDialog(null, 年龄不能为空);return;String didian = this.didianText.getText();if (StringUtil.isEmpty(age) JOptionPane.showMessageDialog(null, 地点不能为空);return;Yingyeyuan yingyeyuan = 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 (Exception 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();Text.setText();this.jrb_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 = Text.getText();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, 营业员年龄不能为空);return;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, 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 result = JOptionPane.showConfirmDialog(null, 确定要删除这条记录吗?);if (result = 0) Connection conn = null;try conn = database.getCon();int deleteNum = yingyeyuanDao.yingyeyuanDelete(conn, id);if (deleteNum = 1) JOptionPane.showMessageDialog(null, 删除成功!);this.resetValue();this.fillTable(new Yingyeyuan(); else JOptionPane.showMessageDialog(null, 删除失败!); cat
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 离婚双方共同财产分割及债务清偿协议范本
- 精益假离婚协议书撰写与子女抚养责任履行合同
- 水力发电项目建设方案
- 离婚协议书范本:离婚后共同投资权益分割与清算协议
- 离婚案件子女抚养权变更及生活费用分担合同
- 高风险投资担保协议风险分析与权益保障细则
- 公共交通枢纽物业合同终止及乘客服务协议
- 学生公寓租赁合同范本:精装修学生公寓租赁协议
- 离婚协议中涉及子女医疗费用报销及保障范本
- 给水工程水资源综合利用方案
- 35770-2022合规管理体系-要求及使用指南标准及内审员培训教材
- 流水别墅案例分析
- 录入与排版教学计划
- 呼吸衰竭小讲课课件
- 气瓶检验员考试题库
- AAMA2605-铝窗(板)更高标准有机喷涂的非官方标准、性能要求、测试程序
- 第一章三国演义讲义课件
- 联合国可持续发展目标
- 西语国家概况
- GB/T 5271.29-2006信息技术词汇第29部分:人工智能语音识别与合成
- GB/T 28248-2012印制板用硬质合金钻头
评论
0/150
提交评论