景点门票销售管理系统程序.docx
《景点门票销售管理系统程序.docx》由会员分享,可在线阅读,更多相关《景点门票销售管理系统程序.docx(23页珍藏版)》请在冰豆网上搜索。
景点门票销售管理系统程序
软件开发实验课程设计
题目:
景点门票销售管理系统
院(系):
机械电子工程系
专业班级:
计算机1101
姓名:
李永康
学号:
201106060110
指导教师:
马睿
2014年7月7日
西安建筑科技大学华清学院课程设计(论文)任务书
专业班级:
学生姓名:
指导教师(签名):
一、课程设计(论文)题目
景点门票销售管理系统
二、本次课程设计(论文)应达到的目的
通过数据库大作业课程设计的操作与实践,使学生了解关系数据库的相关理论知识和有关工具软件的使用技巧,在一定程度上提高应用程序的综合开发能力和创新意识、创新能力。
三、本次课程设计(论文)任务的主要内容和要求(包括原始数据、技术参数、设计要求等)
系统功能基本要求:
1.票价管理(分老年、小孩、成人、团体、节假日等);
2.营业员人员管理;
3.门票查询;
4.售票及退票管理;
5.统计门票销售情况(按时间段统计、按营业员统计及按门票类别统计等);
四、应收集的资料及主要参考文献:
1.数据库:
原理编程与性能(影印版)(第2版),高等教育出版社,ParickO'Neil,ElizabethO'Neil编著,2005.7;
2.数据库系统概论(第4版),高等教育出版社,王珊,萨师煊编著,2006.05;
五、审核批准意见
教研室主任(签字)
设计总说明
随着科技的不断发展,景点门票销售管理信息已经摒弃了以往的手工文件管理阶段,进化成为了高科技、高效率的数据库应用程序来进行管理。
使用学生信息管理系统可以更高效、准确地进行学生选课、查询、记录和添加等各种操作,大大减少信息管理人员的负担。
关键字:
查询、添加、删除、修改
1.问题描述…………………………………………………………4
1.1开发背景………………………………………………………4
1.2开发目的………………………………………………………4
1.3开发运行环境…………………………………………………4
1.4系统功能………………………………………………………4
2.需求分析…………………………………………………………4
2.1可行性分析……………………………………………………4
2.2系统要求………………………………………………………5
2.3功能需求………………………………………………………5
2.4系统管理………………………………………………………5
3.概要设计…………………………………………………………6
3.1系统类的设计…………………………………………………6
3.2系统包含的类…………………………………………………6
4.详细设计……………………………………………………………7
4.1系统包含的函数…………………………………………………7
4.2数据库的连接……………………………………………………8
5.程序运行结果……………………………………………………9
6.感想与心得体会……………………………………………………14
7.参考文献……………………………………………………………14
8.源代码………………………………………………………………15
1.问题描述
1.1开发背景
随着我国市场经济的快速发展,景点门票销售管理系统在日常管理中发挥着越来越重要的作用。
景点门票销售管理系统可以进行景点门票的管理,方便处理营业员、门票、销售相关信息。
此外Internet的迅速发展普及,使Internet成为Inter技术在景点门票销售管理系统中的应用和延伸形成了集计算机,计算机网络,数据库,分布式计算等于一体的信息技术综合体,使信息交流变得快捷、准确,为建立现代旅游管理系统提供了充足的条件。
1.2开发目的
传统的员工信息管理不仅复杂,而且牵涉了很多劳动力,对管理业造成了诸多不便,而选用景点门票销售管理系统,管理人员可以不受地点和时间限制对门票销售进行查询,方便管理员的管理和控制,提高工作效率。
1.3开发运行环境
系统环境:
windows732位
数据库环境:
Microsoftaccess
软件环境:
MyEclipse10.0,PowerDesigner15.1,Java
1.4系统功能
(1)查询功能
(2)添加,修改,删除功能
2.需求分析
2.1可行性分析
本系统主要采用了Java和Microsoftaccess来开发,而当前的Java的Microsoftaccess应用技术已经比较成熟,和其他应用开发语言比起来有很大的优势,所以利用这些技术是完全可以完成这些功能的。
景点门票销售管理系统的工作主要是在景点管理者和景点之间架起一座桥梁,能相互沟通信息和处理信息。
这一特点非常适合计算机特点,发挥计算机的信息传输速度快、准确度高的优势。
计算机硬件和软件技术的飞速发展,为系统的建议提供了技术条件。
本系统的开发是考虑管理者易于管理,提高工作效率,界面友好,操作简单方便,能完全满足用户的使用要求。
2.2系统要求
实现票价管理(应分老年、小孩、成人、团体等);
实现营业员管理;
实现门票销售、退票管理;
创建存储过程统计指定日期的门票销售情况;
创建存储过程统计指定月份的门票销售情况;
创建存储过程统计指定日期各种价格的门票销售情况;
创建存储过程统计指定营业员指定日期的收费情况;
创建表间关系。
2.3功能需求
满足管理员对营业员信息的基本信息的添加修改和删除操作。
系统包括三张表,分别是营业员表、销售表、门票表。
用户界面主要包含18个类,其中包括主界面,营业员添加界面,营业员修改和删除界面,销售界面,销售修改和删除界面,门票界面,门票修改和删除界面,方便管理者对门票信息、销售信息和门票信息的添加修改和删除操作,节省管理者的时间,提高效率。
2.4系统管理
图2-1系统管理
3.概要设计
3.1系统类的设计
本系统采用Myeclipse10.0开发,使用的编程语言是Java,数据库使用的是Microsoftaccess,整个系统共有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系统包含的函数
PublicMenpiao{(Stringid,Stringdidian,Stringjiage,
Stringleixing,Stringfenlei)};//门票定义函数
publicXiaoshou{(Stringid,Stringdidian,Stringfenlei,
Stringleixing,Stringjiage,Stringriqi)};//销售定义函数
publicYingyeyuan{(Stringid,Stringname,Stringsex,
Stringage,Stringdidian)};//营业员定义函数
publicintMenpiaoAdd(Connectionconn,Menpiaomenpiao)throwsException{}//门票添加函数,对编号,地点,价格,分类,类型进行添加
publicResultSetMenpiaoList(Connectionconn,Menpiaomenpiao)throwsException{}//门票查询函数,通过编号来查询门票中存储的数据
publicintMenpiaoDelete(Connectionconn,Stringid)throwsException{}//门票删除函数,通过对删除编号里面的那一行数据
publicintMenpiaoModify(Connectionconn,Menpiaomenpiao)throwsException{}//门票修改函数,除主键编号,可以对地点,价格,分类,类型进行修改
publicConnectiongetCon();//获得数据库连接的函数
publicvoidcloseCon(Connectionconn);//关闭数据库连接的函数
publicclassStringUtil{publicstaticbooleanisEmpty(Stringstr){
if("".equals(str)||str==null){returntrue;}else{returnfalse;}}//判断字符串是否为空的函数
publicstaticbooleanisNotEmpty(Stringstr){if(!
"".equals(str)&&str!
=null){returntrue;}else{returnfalse;}}//判断字符串是否不为空的函数
privatevoidjb_resetActionPerformed(java.awt.event.ActionEventevt);//清空函数
4.2数据库的连接
数据库使用的是Microsoftaccess,通过JDBC与作为桥接器,实现数据库与java程序连接,需要使用3个连接数据库的包,才能加载数据库的驱动到程序中。
连接数据库的代码:
packagecom.util;
importjava.sql.Connection;
importjava.sql.DriverManager;
publicclassDatabase{
privateStringurl="jdbc:
odbc:
jingdian;DBQ=F:
\\li.mdb";//相连数据库的端口,以及要连接的数据库的名称
privateStringuserName="";//相连数据库的用户名
privateStringpassword="";//相连数据库的密码
privateStringdriver="sun.jdbc.odbc.JdbcOdbcDriver";
//连接数据库的驱动
publicConnectiongetCon()throwsException{//获取数据库连接的函数
Class.forName(driver);//加载驱动
Connectionconn=DriverManager.getConnection(url,userName,password);//建立到给定数据库URL的连接。
returnconn;
}
publicvoidcloseCon(Connectionconn)throwsException{
if(conn!
=null){
conn.close();//关闭数据库的连接
}
}
publicstaticvoidmain(String[]args){
Databasedatabase=newDatabase();
try{
database.getCon();
System.out.println("连接成功!
");
}catch(Exceptione){
//TODO:
handleexception
e.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版),高等教育出版社,ParickO'Neil,ElizabethO'Neil编著,2005.7;
2.数据库系统概论(第4版),高等教育出版社,王珊,萨师煊编著,2006.05;
8、源代码
以营业员管理模块为例,部分源代码如下:
1,YingyeyuanDao.java
packagecom.dao;
importjava.sql.*;
importcom.model.Yingyeyuan;
importcom.util.StringUtil;
publicclassYingyeyuanDao{//营业员操作类
//添加
publicintyingyeyuanAdd(Connectionconn,Yingyeyuanyingyeyuan)throwsException{//营业员添加函数
Stringsql="INSERTINTOYingyeyuanvalues(?
?
?
?
?
)";
PreparedStatementpstm=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());
returnpstm.executeUpdate();
}
//查询
publicstaticResultSetyingyeyuanList(Connectionconn,Yingyeyuanyingyeyuan)throwsException{//营业员查询函数
StringBuffersb=newStringBuffer("SELECT*FROMYingyeyuan");
if(StringUtil.isNotEmpty(yingyeyuan.getId())){
sb.append("and编号like'%"+yingyeyuan.getId()+"%'");
}
PreparedStatementpstm=conn.prepareStatement(sb.toString().replace("and","where"));
returnpstm.executeQuery();
}
//删除
publicintyingyeyuanDelete(Connectionconn,Stringid)throwsException{//营业员删除函数
Stringsql="DELETEFROMYingyeyuanWHERE编号=?
";
PreparedStatementpstm=conn.prepareStatement(sql);
pstm.setString(1,id);
returnpstm.executeUpdate();
}
//修改
publicintyingyeyuanModify(Connectionconn,Yingyeyuanyingyeyuan)throwsException{//营业员修改函数
Stringsql="UPDATEYingyeyuanSET姓名=?
性别=?
年龄=?
地点=?
WHERE编号=?
";
PreparedStatementpstm=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());
returnpstm.executeUpdate();
}
}
2、Yingyeyuan.java
packagecom.model;
publicclassYingyeyuan{//营业员定义类
privateStringid;
privateStringname;
privateStringsex;
privateStringage;
privateStringdidian;
publicYingyeyuan(){
super();
}
publicYingyeyuan(Stringid,Stringname,Stringsex,
Stringage,Stringdidian){//营业员定义函数
super();
this.id=id;
this.name=name;
this.sex=sex;
this.age=age;
this.didian=didian;
}
publicYingyeyuan(StringbookName,Stringauthor,Stringsex){
super();
this.name=bookName;
this.sex=sex;}
publicStringgetId(){
returnid;}
publicvoidsetId(Stringid){
this.id=id;}
publicStringgetname(){
returnname;}
publicvoidsetBookName(StringbookName){
this.name=bookName;}
publicStringgetSex(){
returnsex;}
publicvoidsetSex(Stringsex){
this.sex=sex;}
publicStringgetage(){
returnage;}
publicvoidsetage(Stringage){
this.age=age;}
publicStringgetdidian(){
returndidian;}
publicvoidsetdidian(Stringdidian){
this.didian=didian;}
}
3、Database.java
packagecom.util;
importjava.sql.Connection;
importjava.sq