客房管理系统课程设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
-------课程设计
院别: 信息科学与电气工程学院__
班级: 计算141____________
姓名: ___吴刚___________
学号: 140811209___________
指导教师: 张岳________________
设计地点:实验楼307__________
时间: 2016 年 9 月 4 日___
至 2016 年 9 月 16 日
课程设计任务书
题目数据库课程设计
客房经管系统
系(部) 信息科学与电气工程学院
专业计算机科学与技术
班级计算141
学生姓名吴刚
学号140811209
09 月04 日至09月16日共2 周
指导教师(签字)
院长(签字)
2017年09月17日
信息科学与电气工程学院
课程设计成绩评定用表
注:本表可根据实际情况修改。
目录
前言1
1.问题描述2
1.1背景2
1.2功能要求3
2.需求分析3
2.1需求分析3
2.1.1 处理对象3
2.1.2 系统功能分析4
2.1.3安全性和完整性要求4
2.2系统功能模块图6
2.3数据字典7
3.概念结构设计8
3.1 E-R图8
3.2实体及属性的定义9
4.物理结构设计10
5.触发器设计10
6.数据库的实施和维护12
6.1 建立数据库、数据表、索引12
6.1.1.建立数据库12
6.1.2.建立数据表12
6.1.3.建立索引14
7. 存在问题归纳总结14
致谢14
8.主要参考资料15
附录16
前言
随着我国经济的迅速发展和假日经济的出现,宾馆酒店业的竞争愈来愈激烈。
要想在竞争中取得优势,必须在经营经管、产品服务等方面提高服务经管意识。
而对对酒店的经营状况去决定行作用的是酒店的经管。
如何利用先进的经管手段,提高酒店的经管水平,是每一家酒店的经管者所面临的重要课题。
简单的服务规范已经不是制胜的锦囊,只有做到最细微之处才有机会让顾客体会到酒店服务的优点,而精准、快捷、周全往往就是最基本的成功要素。
因此,采用全新的计算机网络和经管系统,将成为提高酒店的经管效率,改善服务水准的重要手段之一。
信息与科技在酒店经管与现代化建设中显现出越来越重要的地位。
在某种意义上,酒店客房状态经管方面的信息化与科学化,已成为现代化酒店的重要标志。
关键字:客房经管;经管系统;服务。
1.问题描述
1.1背景
随着宾馆业竞争的加剧,宾馆之间客源的争夺越来越激烈,宾馆需要使用更有效的信息化手段,拓展经营空间,降低运营成本,提高经管和决策效率。
传统的宾馆计算机经管系统主要包括前台经管系统和后台经管系统两大部分,基本包含了宾馆主要业务部门,初步实现了对顾客服务和进行财务核算所需要的各个功能。
但传统的宾馆经管基于财务经管为主线的设计理念,无法满足宾馆全面信息化经管的需要。
现代宾馆酒店业迅速发展,新的经管观念与模式层出不穷。
宾馆客房经管系统亦随着宾馆经管理念的发展而发展。
宾馆客房经管系统依旧采用了先进的数据库理论,多媒体技术,软件工程理念等,从基层,中层,高层三个经管者层次为切入点,以成本分析,预测,控制为一线,形成一套上下贯通,操作便捷的酒店系统解决技术方案,科学地将宾馆各种日常业务完美的结合在一起,为经管及决策提供了强有力的支持。
其对客人个性化服务及全面彻底的信息化,使企业电算化水平提升到一个新的更高层次,提供大量丰富的基于企业经管经营过程中实际的数据。
1.2功能要求
(1)客人基本信息的录入;
(2)客人基本信息的查询、修改、增加、删除等;
(3)客房相关信息的录入,包括房间号、收费规范、床位、类别等;
(4)客房类别规范的制定、类别信息的输入;
(5)客房基本信息的查询、修改、删除等;
(6)住房信息的录入,包括房间号、客人姓名等;
(7)退房信息的更新;
2.需求分析
2.1需求分析
2.1.1 处理对象
系统要处理的对象包括信息经管、客户信息经管、客房信息经管、入住和退房经管、客房类型经管、费用经管、价目信息经管等7个方面,各个对象包含的信息如下所示:
(1)信息经管:可以对于各种信息的查询,个人信息可以查看自己的私人信息,还可以对自己的私人信息进行修改。
用户信息查看用户的个人信息,对用户的信息进行增、删、查、改。
(2)客户信息经管:可以新建客户,输入客户的身份证号码、姓名、性别、出生日期和地址等信息,可以对于客户的信息进行相应的修改,还可以对客户的消费信息进行统计。
(3)客房信息经管:可以在相应的房间类型下面进行添加相应的房间,对相
应的房间进行删除,查看空房以及客房的情况。
(4)入住和退房经管:客户可以入住相应的类型房型下的空房,然后可以退房,系统自动将相应的订单状态置为失效,入住状态置为已退房,将相应房间的状态置为空房。
(5)客房类型经管:经管员可以对相应的房型进行各种属性的修改,可以按照需求添加相应的房型,经管员、工作人员都可以查看相应的房型信息,经管员有需要时可以删除相应的房型,系统自动将该房型下的房间删除。
(6)费用经管:经管员、工作人员都可以查看相应的费用信息,经管员有需要时可以对宾馆的收入与支出进行查询或修改。
(7)价目信息经管:可以查看客房的收费规范,经管员可以对客房价格进行查询与修改,工作人员可以查看可风的价目信息。
2.1.2 系统功能分析
某宾馆需要建立一个住房经管系统,需求分析结果如下:
(1)宾馆要求该系统能实现住房信息经管、客户信息经管等功能;
(2)一个房间有多个床位,同一房间内的床位具有相同的收费规范。
不同类型的房间的床位收费规范可能不同;
(3)每个房间有房间号、收费规范、床位数目等信息;
(4)每位客人有身份证号码、姓名、性别、出生日期和地址等信息;
(5)对每位客人的每次住宿,应该记录其入住日期、退房日期和预付款额信息;
(6)经管系统可查询出客人住宿相关信息、房间信息。
2.1.3安全性和完整性要求
安全性先通过试图机制,不同的用户只能访问系统授权的视图,这样可以满足系统数据一定程度上的安全性,在通过用户授权机制,用户登录来识别用户级别,根据这个级别来分配用户权限,达到数据更高层次的安全保密功能。
系统完整性要求系统中数据的正确性以及相容性。
可以通过建立主、外键,使用check约束,或者通过使用触发器和级联更新。
2.2系统功能模块图
系统功能模块图,如图2.2所示。
图2.2 系统的功能模块图
2.3数据字典
表2-3. 客户信息表:
表2-4. 客房信息表:
表2-5. 订房信息表:
3.概念结构设计
3.1 E-R图
各实体之间的E-R图,如图3-1所示。
图3-1 实体之间的E-R图
3.2实体及属性的定义
客户信息实体的E-R图,如图3-2所示。
图3—2 客户信息实体的E—R图客房信息实体的E-R图,如图3-3所示。
图3—3 客房信息实体的E—R图
客户住宿实体的E-R图,如图3-4所示。
图3—4 客户住宿实体的E—R图
4.物理结构设计
数据库的物理设计就是为逻辑数据模型选取一个最合适应用要求的物理结构的过程,在这个阶段要完成两大任务。
(1)确定数据库的物理结构,在关系数据库中主要是存储方法和存储结构。
(2)对物理结构进行评价,评价的重点是时间和空间效率。
CREATE UNIQUE INDEX Travno ON Travellers(Tno)
CREATE UNIQUE INDEX Roomno ON Rooms(Rno)
CREATE UNIQUE INDEX Ritemno ON Roomitem(Ritemno)
CREATE UNIQUE INDEX Livno ON Living(Tno)
5.触发器设计
会员积分:
USE[kfglxt]
/****** Object: Trigger [dbo].[t1] Script Date: 09/26/2017 19:36:40 ******/
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
ALTERtrigger[dbo].[t1]
on[dbo].[订房信息表]
afterinsert
as
begin
setnocounton。
declare@编号int,@增加积分int
select@编号=身份证号,@增加积分=总房价
from inserted
update dbo.客户信息表
set会员积分=会员积分+@增加积分
where身份证号=@编号
End
会员等级:
USE[kfglxt]
GO
/****** Object: Trigger [dbo].[会员等级增加] Script Date:
09/26/2017 19:37:52 ******/
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
ALTERtrigger[dbo].[会员等级增加]
on[dbo].[订房信息表]
afterinsert
as
begin
setnocounton。
declare@编号int,@增加积分int
select@编号=身份证号,@增加积分=总房价from inserted
update dbo.客户信息表
set会员等级=(会员积分+@增加积分)/100 where身份证号=@编号
End
6.数据库的实施和维护
6.1 建立数据库、数据表、索引
6.1.1.建立数据库
Create database kfglxt。
6.1.2.建立数据表
(1)客户信息表
CREATETABLE客户信息表(
编号intIDENTITY(1,1)NOTNULL,
性别int NOTNULL,
出生日期date NOTNULL,
身份证号varchar(20)NOTNULL,
联系电话varchar(20)NOTNULL,
家庭住址varchar(50)NULL,
会员等级varchar(10)NULL,
会员积分float NULL,
CONSTRAINT p1PRIMARYKEY(身份证号))。
(2) 客房信息表
CREATETABLE客房信息表(
编号intIDENTITY(1,1)NOTNULL,
房间号varchar(10)NOTNULL,
分类varchar(20)NOTNULL,
订房状态int NOTNULL,
清洁状态int NOTNULL,
价格float NOTNULL,
折扣float NOTNULL,
房间描述varchar(500)NOTNULL,
可用状态int NOTNULL,
CONSTRAINT p6PRIMARYKEY(房间号))。
(3)订房信息表
CREATETABLE订房信息表(
编号intIDENTITY(1,1)NOTNULL,
身份证号varchar(20)NOTNULL,
入住时间datetime NOTNULL,
退房时间datetime NOTNULL,
总房价float NOTNULL,
CONSTRAINT p2PRIMARYKEY(身份证号,房间号,入住时间),
CONSTRAINT p3FOREIGNKEY(身份证号)REFERENCES客户信息表(身份证号),
CONSTRAINT p4FOREIGNKEY(房间号)REFERENCES客房信息表(房间号))。
6.1.3.建立索引
CREATE UNIQUE INDEX Travno ON tb_Travellers(Tno)
CREATE UNIQUE INDEX Roomno ON tb_Rooms(Rno)
CREATE UNIQUE INDEX Ritemno ON tb_Roomitem(Ritemno)
CREATE UNIQUE INDEX Livno ON tb_Living(Tno)
7. 存在问题归纳总结
1.对书本知识不熟悉,课程设计过程当中需要不断的查阅课本,这样造成了时间的浪费。
2.2. 对SQL Server 2000 操作不熟悉,导致导入数据是经常出错,造成了一些不必要的麻烦,应该提高操作熟练程度。
3. 对于触发器和存储过程定义不是很熟悉,有的稍微难点的语句写不出来,对于数据库定义语句应该要熟练掌握。
4.对数据库设计总体把握不是很准确,导致中间多次反复的改动前面的业务流程图、数据流图和E-R图。
致谢
感谢老师的指导和陪伴
--宋立勇8.主要参考资料
1.《数据库系统原理与应用》沈祥玖张岳中国水利水电出版社 2016
2.《SQL Server数据库配置与经管指南》刘奎清华大学出版社 2010
3.《SQL与关系数据库理论》周成兴清华大学出版社 2010
附录登录界面
图 1 主界面
图 2 订房
图3
源代码
import java.awt.Container。
import java.awt.*。
import java.util.*。
import java.text.*。
import java.awt.Rectangle。
import java.awt.event.ActionEvent。
import java.awt.event.ActionListener。
import java.awt.event.ItemEvent。
import java.sql.Connection。
import java.sql.DriverManager。
import java.sql.PreparedStatement。
import java.sql.ResultSet。
import java.sql.Statement。
import javax.swing.ImageIcon。
import javax.swing.JButton。
import javax.swing.JFrame。
import javax.swing.JLabel。
import javax.swing.JOptionPane。
import javax.swing.JPanel。
import javax.swing.JPasswordField。
import javax.swing.JTextField。
class denglu extends JFrame implements ActionListener { JLabel systemTime。
Container con=this.getContentPane()。
JFrame f=new JFrame("客房经管系统")。
JLabel a=new JLabel("用户名")。
JTextField a1=new JTextField()。
JLabel b=new JLabel("密码")。
JTextField b1=new JPasswordField()。
JLabel q=new JLabel("答辩人:宋立勇")。
JButton c=new JButton("登录")。
JButton d=new JButton("退出")。
JPanel z=(JPanel)this.getContentPane()。
ImageIcon icon=new
ImageIcon(getClass().getResource("/Desktop/3.JPG"))。
JLabel tu=new JLabel(icon)。
Container content= this.getContentPane()。
public denglu(String s){
super(s)。
con.setLayout(null)。
systemTime = new JLabel("系统时间:")。
Container cp = getContentPane()。
systemTime.setBounds(20,200,200,200)。
cp.add(systemTime)。
a.setBounds(new Rectangle(100,80,60,30))。
b.setBounds(new Rectangle(100,140,60,30))。
a1.setBounds(new Rectangle(150,80,150,30))。
b1.setBounds(new Rectangle(150,140,150,30))。
q.setBounds(new Rectangle(280,300,100,20))。
c.setBounds(new Rectangle(100,200,80,30))。
d.setBounds(new Rectangle(200,200,80,30))。
con.add(a)。
con.add(b)。
con.add(q)。
con.add(c)。
con.add(d)。
con.add(a1)。
con.add(b1)。
this.setSize(400,400)。
tu.setBounds(0, 0, getWidth(), getHeight())。
z.add(tu)。
z.setOpaque(false)。
this.getLayeredPane().add(tu,new Integer(Integer.MIN_VALUE))。
this.setVisible(true)。
c.addActionListener(this)。
d.addActionListener(this)。
}
public void actionPerformed(ActionEvent e) {
if(e.getSource()==d)
{
this.setVisible(false)。
}
if(e.getSource()==c){
String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver"。
try{
Class.forName(driverName)。
System.out.println("连接驱动成功")。
}catch (ClassNotFoundException b){b.printStackTrace()。
}。
String dbURL="jdbc:sqlserver://localhost:1433。
DatabaseName=kfglxt"。
try{Connection dbConn。
String userName="sa"。
String userPwd="370724"。
dbConn=DriverManager.getConnection(dbURL,userName,userPwd)。
System.out.println("连接数据库成功")。
Statement statement。
statement =
dbConn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CO NCUR_READ_ONLY)。
String s1 = a1.getText()。
String s2 = b1.getText()。
//executeQuery()执行给定的SQL语句,该语句返回单个resultset对象
ResultSet resultset = statement.executeQuery("select * from 员工信息
表 where 用户名="+s1+" and 密码="+s2+"")。
if(resultset.next()){
JOptionPane.showMessageDialog(null,"登陆成功!欢迎使用!")。
this.setVisible(false)。
new frist("客房经管")。
//,"经管员--"+t[1].getText()
con.setVisible(false)。
//隐藏窗体
}
else
JOptionPane.showMessageDialog(this,"用户名和密码不正确!请重新输入","警告",JOptionPane.WARNING_MESSAGE)。
dbConn.close()。
a1.setText(null)。
b1.setText(null)。
// this.setVisible(false)。
} catch(Exception w){w.printStackTrace()。
}。
}}
public static void main(String argu[]){
denglu d=new denglu("客房经管系统")。
TimerTask task = new TimerTask() {
denglu time = new denglu(null)。
public void run() {
//comment by me
/* Calendar st = Calendar.getInstance()。
String sdate。
Date ddate。
ddate=st.getTime()。
*/
//add by me below:
String sdate。
sdate=(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss")).format(new Date())。
time. systemTime.setText(sdate)。
}
}。
Timer t = new Timer()。
t.scheduleAtFixedRate(task, new Date(), 1000)。
}
}
登录
import java.awt.Container。
import java.awt.Rectangle。
import java.awt.event.ActionEvent。
import java.awt.event.ActionListener。
import javax.swing.ImageIcon。
import javax.swing.JButton。
import javax.swing.JFrame。
import javax.swing.JLabel。
import javax.swing.JPanel。
class frist extends JFrame implements ActionListener {
Container con=this.getContentPane()。
JFrame f=new JFrame("客房经管系统")。
//JButton a=new JButton("系统信息经管")。
JButton b=new JButton("客户信息经管")。
JButton c=new JButton("客房信息经管")。
JButton d=new JButton("订房信息经管")。
//JButton sh=new JButton("退票")。
//JButton xs=new JButton("订票信息")。
JButton tc=new JButton("退出")。
JLabel q=new JLabel("答辩人:宋立勇")。
JPanel z=(JPanel)this.getContentPane()。
ImageIcon icon=new
ImageIcon(getClass().getResource("/Desktop/3.JPG"))。
JLabel tu=new JLabel(icon)。
Container content= this.getContentPane()。
public frist(String s){
super(s)。
con.setLayout(null)。
//a.setBounds(new Rectangle(20,30,200,30))。
b.setBounds(new Rectangle(20,80,200,30))。
c.setBounds(new Rectangle(20,130,200,30))。
d.setBounds(new Rectangle(20,180,200,30))。
//sh.setBounds(new Rectangle(20,230,100,30))。
//xs.setBounds(new Rectangle(20,280,100,30))。
tc.setBounds(new Rectangle(250,400,100,30))。
q.setBounds(new Rectangle(350,500,100,20))。
//con.add(a)。
con.add(b)。
con.add(c)。
con.add(d)。
//con.add(sh)。
//con.add(xs)。
con.add(tc)。
con.add(q)。
this.setSize(500,600)。
tu.setBounds(0, 0, getWidth(), getHeight())。
z.add(tu)。
z.setOpaque(false)。
this.getLayeredPane().add(tu,new Integer(Integer.MIN_VALUE))。
this.setVisible(true)。
//a.addActionListener(this)。
b.addActionListener(this)。
c.addActionListener(this)。
d.addActionListener(this)。
//sh.addActionListener(this)。
//xs.addActionListener(this)。
tc.addActionListener(this)。
}
public static void main(String argu[]){
frist f=new frist("客房经管系统")。
}
public void actionPerformed(ActionEvent e) {
if(e.getSource()==tc){
this.setVisible(false)。
}
if(e.getSource()==c){
new kefang("客房信息经管")。
if(e.getSource()==b){
new kehu("客户信息经管")。
}
if(e.getSource()==d){
new dingfang("订房信息经管")。
}
}
}
主界面
import java.awt.Container。
import java.awt.Rectangle。
import java.awt.event.ActionEvent。
import java.awt.event.ActionListener。
import javax.swing.ImageIcon。
import javax.swing.JButton。
import javax.swing.JFrame。
import javax.swing.JLabel。
import javax.swing.JPanel。
class kefang extends JFrame implements ActionListener
Container con=this.getContentPane()。
JFrame f=new JFrame("客房信息表")。
//JButton a=new JButton("显示房间信息")。
JButton cx=new JButton("房间信息查询")。
JButton tj=new JButton("添加房间信息")。
JButton xg=new JButton("修改房间信息")。
JButton sh=new JButton("删除房间信息")。
JButton xgz=new JButton("修改房间状态")。
JButton t=new JButton("退出")。
JLabel q=new JLabel("答辩人:宋立勇")。
JPanel z=(JPanel)this.getContentPane()。
ImageIcon icon=new
ImageIcon(getClass().getResource("/Desktop/3.JPG"))。
JLabel tu=new JLabel(icon)。
Container content= this.getContentPane()。
public kefang(String s){
super(s)。
con.setLayout(null)。
//a.setBounds(new Rectangle(20,30,100,30))。
cx.setBounds(new Rectangle(20,80,200,30))。
tj.setBounds(new Rectangle(20,130,200,30))。
xg.setBounds(new Rectangle(20,180,200,30))。
sh.setBounds(new Rectangle(20,230,200,30))。
xgz.setBounds(new Rectangle(20,280,200,30))。
//xs.setBounds(new Rectangle(20,280,100,30))。
t.setBounds(new Rectangle(250,400,100,30))。
q.setBounds(new Rectangle(350,500,100,20))。
//con.add(a)。
con.add(cx)。
con.add(tj)。
con.add(xg)。
con.add(sh)。
con.add(xgz)。
con.add(t)。
con.add(q)。
this.setSize(500,600)。
tu.setBounds(0, 0, getWidth(), getHeight())。
z.add(tu)。
z.setOpaque(false)。
this.getLayeredPane().add(tu,new Integer(Integer.MIN_VALUE))。
this.setVisible(true)。
//a.addActionListener(this)。
cx.addActionListener(this)。
tj.addActionListener(this)。
xg.addActionListener(this)。
sh.addActionListener(this)。
//xs.addActionListener(this)。
t.addActionListener(this)。
xgz.addActionListener(this)。
}
public static void main(String argu[]){
frist f=new frist("客房信息表")。
}
public void actionPerformed(ActionEvent e) { if(e.getSource()==tj){
new tianjia("添加房间信息")。
}
if(e.getSource()==cx){
new chaxun("房间信息查询")。
}
if(e.getSource()==xg){
new xiugai("修改房间信息")。
}
if(e.getSource()==sh){
new shanchu("删除房间信息")。
}
if(e.getSource()==t){
this.setVisible(false)。
}
if(e.getSource()==xgz){
new xiugaiz("修改房间状态")。
}
}
}
客房主界面
import java.awt.Container。
import java.awt.Rectangle。
import java.awt.event.ActionEvent。
import java.awt.event.ActionListener。
import java.nio.channels.SelectionKey。
import java.sql.Connection。
import java.sql.DriverManager。
import java.sql.PreparedStatement。
import java.sql.ResultSet。
import java.sql.Statement。
import javax.swing.ImageIcon。
import javax.swing.JButton。
import javax.swing.JFrame。
import javax.swing.JLabel。
import javax.swing.JOptionPane。
import javax.swing.JPanel。
import javax.swing.JTextField。
class tianjia extends JFrame implements ActionListener{ Container con=this.getContentPane()。
JLabel a=new JLabel("房间号")。
JTextField b=new JTextField()。
JLabel a1=new JLabel("分类")。
JTextField b1=new JTextField()。
JLabel a2=new JLabel("订房状态")。
JTextField b2=new JTextField()。
JLabel a3=new JLabel("清洁状态")。
JTextField b3=new JTextField()。
JLabel a4=new JLabel("价格")。
JTextField b4=new JTextField()。
JLabel a5=new JLabel("折扣")。
JTextField b5=new JTextField()。
JLabel a6=new JLabel("房间描述")。
JTextField b6=new JTextField()。
JLabel a7=new JLabel("可用状态")。
JTextField b7=new JTextField()。
JButton c=new JButton("确定")。
JButton d=new JButton("取消")。
JPanel z=(JPanel)this.getContentPane()。
ImageIcon icon=new
ImageIcon(getClass().getResource("/Desktop/3.JPG"))。
JLabel tu=new JLabel(icon)。
Container content= this.getContentPane()。
int qw=0。
public tianjia(String s){
super(s)。
con.setLayout(null)。
//布局经管器
a.setBounds(new Rectangle(20,30,50,30))。
b.setBounds(new Rectangle(80,30,180,30))。
a1.setBounds(new Rectangle(20,70,50,30))。
b1.setBounds(new Rectangle(80,70,180,30))。
a2.setBounds(new Rectangle(20,110,100,30))。
b2.setBounds(new Rectangle(80,110,180,30))。
a3.setBounds(new Rectangle(20,150,100,30))。
b3.setBounds(new Rectangle(80,150,180,30))。
a4.setBounds(new Rectangle(20,190,100,30))。
b4.setBounds(new Rectangle(80,190,180,30))。
a5.setBounds(new Rectangle(20,230,100,30))。
b5.setBounds(new Rectangle(80,230,180,30))。
a6.setBounds(new Rectangle(20,270,100,30))。
b6.setBounds(new Rectangle(80,270,180,30))。
a7.setBounds(new Rectangle(20,310,100,30))。
b7.setBounds(new Rectangle(80,310,180,30))。
c.setBounds(new Rectangle(40,350,100,30))。
d.setBounds(new Rectangle(200,350,100,30))。
con.add(a)。
con.add(b)。
con.add(a1)。
con.add(b1)。
con.add(a2)。
con.add(b2)。
con.add(a3)。
con.add(b3)。
con.add(a5)。
con.add(b5)。
con.add(a6)。
con.add(b6)。
con.add(a7)。
con.add(b7)。
con.add(c)。
con.add(d)。
con.add(a4)。
con.add(b4)。
this.setSize(500,600)。
tu.setBounds(0, 0, getWidth(), getHeight())。
z.add(tu)。
z.setOpaque(false)。
this.getLayeredPane().add(tu,new Integer(Integer.MIN_VALUE))。
this.setVisible(true)。
c.addActionListener(this)。
//向当前对象进行注册
d.addActionListener(this)。
}
public void actionPerformed(ActionEvent e) {
if(e.getSource()==d)
{
this.setVisible(false)。
}
if(e.getSource()==c)
{
String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver"。
String dbURL="jdbc:sqlserver://localhost:1433。
DatabaseName=kfglxt"。
String userName="sa"。
String userPwd="370724"。
Connection dbConn。
try{//加载驱动
Class.forName(driverName)。
dbConn=DriverManager.getConnection(dbURL,userName,userPwd)。
System.out.println("连接成功!")。
String k1=b.getText()。
String k2=b1.getText()。
String k3=b2.getText()。
String k4=b3.getText()。
String k5=b4.getText()。
String k6=b5.getText()。
String k7=b6.getText()。
String k8=b7.getText()。
String sql="Select * from 客房信息表 "。
Statement st = dbConn.createStatement()。
//发送数据库语句p
ResultSet r = st.executeQuery(sql)。
//结果集对象
while(r.next()){
if((r.getString(1)).equals(b.getText())){
qw=1。
}
}
if(qw==1||k1==null||k1.equals("")||k2==null||k2.equals("")||k3==null| |k3.equals("")||k4==null||k4.equals("")||k5==null||k5.equals("")||k6= =null||k6.equals("")||k7==null||k7.equals("")||k8==null||k8.equals(""
)){
JOptionPane.showMessageDialog(null,"添加失败,请将信息填写完整,或者房间号已经存在")。
}
//if(qw!=1)
//{
//JOptionPane.showMessageDialog(null,"订票失败,列车不存在!")。
//}
else {
String sql1="insert into 客房信息表 values(?,?,?,?,?,?,?,?)"。
System.out.println(sql1)。
PreparedStatement pre=dbConn.prepareStatement(sql1)。
//预编译处理pre.setString(1, k1)。
//将指定参数设置为给定java String的值
pre.setString(2, k2)。
pre.setString(3, k3)。
pre.setString(4, k4)。
pre.setString(5, k5)。
pre.setString(6, k6)。
pre.setString(7, k7)。
pre.setString(8, k8)。
pre.execute()。
Statement statement。
statement=dbConn.createStatement()。
JOptionPane.showMessageDialog(null, "添加成功")。
b.setText(null)。
b1.setText(null)。
b2.setText(null)。
b3.setText(null)。
b4.setText(null)。
b5.setText(null)。
b6.setText(null)。
b7.setText(null)。
}}
catch(Exception e1)
{
e1.printStackTrace()。
{
System.out.println("连接失败")。
}
}
}
}
}
添加
import java.awt.Color。
import java.awt.Container。
import java.awt.Rectangle。
import java.awt.event.ActionEvent。
import java.awt.event.ActionListener。
import java.sql.Connection。
import java.sql.DriverManager。
import java.sql.PreparedStatement。
import java.sql.ResultSet。
import java.sql.SQLException。
import java.sql.Statement。
import javax.swing.ImageIcon。
import javax.swing.JButton。
import javax.swing.JFrame。
import javax.swing.JLabel。
import javax.swing.JOptionPane。
import javax.swing.JPanel。
import javax.swing.JTextField。
class xiugai extends JFrame implements ActionListener{
Container con=this.getContentPane()。
JLabel a=new JLabel("房间号")。
JTextField b=new JTextField()。
//JLabel name1=new JLabel("分类")。
//JTextField name=new JTextField()。
JLabel a1=new JLabel("订房状态")。
JTextField b1=new JTextField()。
//JLabel a2=new JLabel("清洁状态")。
//JTextField b2=new JTextField()。
JLabel a3=new JLabel("价格")。
JTextField b3=new JTextField()。
JLabel a4=new JLabel("折扣")。
JTextField b4=new JTextField()。
//JLabel a5=new JLabel("房间描述")。
//JTextField b5=new JTextField()。
JLabel a6=new JLabel("可用状态")。
JTextField b6=new JTextField()。
JButton c=new JButton("确定")。
JButton d=new JButton("取消")。
JPanel z=(JPanel)this.getContentPane()。
ImageIcon icon=new。