课程设计评分表.doc

网吧计费系统

收藏

资源目录
跳过导航链接。
网吧计费系统.rar
梅洪芳
课程设计评分表.doc---(点击预览)
梅洪芳-java课程设计报告.doc---(点击预览)
任务书.doc---(点击预览)
源代码
.metadata
.mylyn
.plugins
.bak_0.log
.bak_1.log
.bak_2.log
.bak_3.log
.lock
.log
version.ini
.recommenders
caches
index
FirstPro
.settings
bin
image
jar
src
.classpath
.project
sqljdbc2008.jar
RemoteSystemsTempFiles
SecondPro
压缩包内文档预览:
预览图
编号:35540999    类型:共享资源    大小:28.38MB    格式:RAR    上传时间:2019-12-25 上传人:遗**** IP属地:湖北
25
积分
关 键 词:
网吧 计费 系统
资源描述:
网吧计费系统,网吧,计费,系统
内容简介:
合肥学院计算机科学与技术系课程设计任务书20162017学年第二学期课程JAVA语言课程设计课程设计名称JAVA网吧计费系统专业班级13网工(1) (2)班指导教师吴晓琴、许强、檀明、张贯虹2016年09月一、 课程设计目的通过课程设计,学生在下述各方面的能力应该得到锻炼:(1)进一步巩固、加深学生所学专业课程JAVA语言教程的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。 (2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。 (3)利用所学知识,开发小型应用系统,掌握运用JAVA语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。(4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。 (5)熟练掌握JAVA语言的输入输出流、数据库连接的使用,灵活运用各种类库。二、 课程设计名称及内容JAVA网吧计费系统三、 任务和要求1通过以下过程:需求分析、E-R模型、关系模型分析,在数据库中构建数据库、表或视图,熟悉数据库开发流程;2系统的主要功能包括:(1)客户端开机自动琐定,输入帐号、密码后进行验证登陆并开始计费。或控制端远程解锁上机。 (2).控制端能够对上网的客户端进行远程控制,比如:远程关机、注销、锁定、远程结帐后又自动锁定计算机等功能。 (3)能对客户端发送消息。 (4)客户端在上机过程中能够随时查看消费状态,比如:预缴金额、上机时间、上机金额等。3在时间允许的情况下,适当考虑界面的美观;4熟悉与数据库的多种连接方法。四、 设计方案提示Java提供了两个基本的接口类socket类和serverSocket类,可以方便的实现客户机与服务器的连接。Java提供的Thread类和Runnable接口,可以方便服务器接收并处理多客户的请求。Java的向量机制,可以不限制的存储对象,更适合客户不固定的情况。通过Jdbc技术可以方便的与各种数据库的连接, 通过构造Buffered Reader,PrintWriter来建立输入输出流。客户端主要接收客户的请求,包括用户名、密码、客户端的IP地址以及客户端请求服务的信息类型名等请求信息,然后通过Socket建立与服务器的连接,并构造DataInputStream和PrintStream来实现信息的交互。五、 其它程序设计可在Eclipse、JDK1.5或JBuilder环境下实现数据库可选择:Sqlserver或Acess(或用文件保存数据亦可)六、 参考资料1 吕凤羽、马皓JAVA程序设计清华大学出版社2 耿祥义 JAVA课程设计 清华大学出版3 黄小东 Java课程设计案例精编中国水利水电出版社4 印旻 Java与面向对象程序设计清华大学出版社5 陈厚桥,基于Java技术的网吧计费系统设计,商丘职业技术学院学报合肥学院计算机科学与技术系面向对象综合设计报告20162017学年第一学期设计名称JAVA网吧计费系统学生姓名梅洪芳学号1304032008专业班级13级网工2班指导教师檀明 许强 2016年9月JAVA网吧计费系统1设计内容及要求1通过以下过程:需求分析、E-R模型、关系模型分析,在数据库中构建数据库、表或视图,熟悉数据库开发流程;2系统的主要功能包括:(1)客户端开机自动琐定,输入帐号、密码后进行验证登陆并开始计费。或控制端远程解锁上机。 (2).控制端能够对上网的客户端进行远程控制,比如:远程关机、注销、锁定、远程结帐后又自动锁定计算机等功能。 (3)能对客户端发送消息。 (4)客户端在上机过程中能够随时查看消费状态,比如:预缴金额、上机时间、上机金额等。3在时间允许的情况下,适当考虑界面的美观;4熟悉与数据库的多种连接方法。 这次课程设计题目为网吧计费系统,我与队友张超两人合作实现了任务书中的功能。在此系统中,本人主要是实现了客户端的功能和数据库的创建,客户端的主要功能包括:登陆; 查询; 下机; 呼叫服务器端; 关机。以下将介绍我实现客户端功能和数据库所用的技术及实现方法。2. 客户端功能实现 2.1 客户端界面设计 客户端界面分为登陆界面和登陆之后的菜单界面,登陆界面设计主要用的是chatLogin()这个函数来实现,函数中设置了登陆界面的标题、大小、位置以及两个文本框用来填写用户名和密码。其中还设置了一个重置按钮,当输入用户名和密码后需要删除重新输入可以按重置按钮一键删除。以下为客户端登陆界面图:图1 客户端登陆界面客户端登陆之后有个菜单界面,程序中是从MainFrame()这个函数来实现。图2 客户端菜单界面1图3 客户端菜单界面2如上面两张图所示,客户端菜单界面是有很多的菜单以及下拉菜单,实现的功能很多,在MainFrame()函数中,我们定义一些JMenuBar来实现菜单。其中操作、卡管理、呼叫用JMenu来定义,下拉菜单中的内容比如上机、下机之类的用JMenuItem来定义,然后通过addComponent()函数调用,实现对应的菜单下拉菜单。2.2 客户端主要功能实现 2.2.1 登陆功能 去过网吧的都知道,客户上机之前肯定要先登陆才能使用电脑,我们在实现这一功能前需要考虑到用户名和密码肯定都是从数据库中拿的,所以我们先要连接数据库,设置一个监听事件,判断输入的用户名是否存在,密码是否正确1。这里我们用函数btnNewButton.addActionListener(new ActionListener()来判断,当用户名密码都正确时,点击okey按钮会进入菜单界面,当用户名密码不正确时,点击okey按钮会提示用户名或密码错误,客户登录的处理过程:获取用户名和密码,若用户名为空,给出提示“账号不可为空”若密码为空,给出提示“密码不可为空”若用户名和密码均不为空,则根据用户名和密码查询管理员表若管理员表中没有对应记录,给出提示“用户名或密码错误!”若管理员表中存在对应记录,则将登录窗口隐藏,并创建管理端主界面如下图所示:图4 登陆界面密码错误 2.2.2 查询功能 在图3中我们可以看到卡管理下拉菜单中有个查询卡余额功能,同样的,我们也需要连接数据库,数据库中有个record表,我们在输入卡号后点击确定按钮,程序会执行b.addActionListener(new ActionListener()函数,从而在数据库中record表中查询该卡的余额返回给用户,效果图如下:图5 卡余额查询2.2.3 下机功能当客户在操作菜单中选择下机功能后,数据库中,该卡号的状态又1改为0,下机时停止计费,计费的规则是:按上网时长收费,每小时3元;超过1分钟,收费0.5元;超过10分钟,收费1元;超过20分钟,收费1.5元;超过半小时,收费2元;超过40分钟,收费2.5元;超过50分钟,按一小时算,收费3元。程序中通过函数down.addActionListener(new ActionListener() 来实现。2.2.4 呼叫服务器端功能此部分功能是客户端最难实现的一个功能,在这一部分我们使用了socket通信功能使客户端和服务器端能够进行交流,在任务书中要求服务器端能对客户端实现远程锁屏、远程关机等功能,在这里我们在这一块用的是服务器端点击锁屏按钮时,客户端会在cmd命令行里执行关机锁屏等命令2。几个命令如下:shutdown -s -t 0 立即关机命令shutdown -l 注销命令rundll32.exe user32.dll,LockWorkStation 锁屏命令在与服务器端进行交流时,我们使用的是socket功能,我们知道对于一个功能齐全的Socket,都要包含以下基本结构,其工作过程包含以下四个基本的步骤:(1)创建Socket;(2)打开连接到Socket的输入/出流;(3)按照一定的协议对Socket进行读/写操作;(4)关闭Socket。使用Socket进行Client/Server程序设计的一般连接过程是:Server端Listen(监听)某个端口是否有连接请求,Client端向Server端发出Connect(连接)请求,Server端向Client端发回Accept(接受)消息。一个连接就建立起来了。Server端和Client端都可以通过Send,Write等方法与对方通信3。对于一个功能齐全的Socket,都要包含以下基本结构,其工作过程包含以下四个基本的步骤:(1)创建Socket;(2)打开连接到Socket的输入/出流;(3)按照一定的协议对Socket进行读/写操作;(4)关闭Socket。Socket类表示一个系统的IP地址和端口号的结合,可以理解为客户端或者服务器端的一个特殊对象。分别用来获得网络的输入流和输出流。构造Socket对象的示例代码如下:Socket socket=new Socket(“”,8888);ServerSocket是一个专门用来建立Socket服务器的类,它可以用服务器需要使用的端口号作为参数来创建ServerSocket对象。示例代码如下:ServerSocket server = new ServerSocket(8888);当一个客户端程序建立一个Socket连接,所连接的端口号为8888时,服务器对象server便响应这个连接,然后server对象调用accept()方法创建一个代表服务器的Socket对象。创建后服务器便可以利用这个Socket对象与客户端进行通信。示例代码如下:Socket incoming=server.accept();图6 呼叫服务器端3. 数据库功能实现 3.1 数据库与java的连接在数据库与java程序的连接这块我们用的是JDBC技术,JDBC是一种可用于执行SQL语句的JavaAPI(ApplicationProgrammingInterface,应用程序设计接口)。它由一些Java语言写的类、界面组成。JDBC给数据库应用开发人员、数据库前台工具开发人员提供了一种标准的应用程序设计接口,使开发人员可以用纯Java语言编写完整的数据库应用程序。 通过使用JDBC,开发人员可以很方便地将SQL语句传送给几乎任何一种数据库。也就是说,开发人员可以不必写一个程序访问Sybase,写另一个程序访问Oracle,再写一个程序访问Microsoft的SQLServer。用JDBC写的程序能够自动地将SQL语句传送给相应的数据库管理系统(DBMS)。不但如此,使用Java编写的应用程序可以在任何支持Java的平台上运行,不必在不同的平台上编写不同的应用4。JDBC配置 :type=dbcp#jndiName=driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriverurl=jdbc:sqlserver:/localhost:1433; DatabaseName=testusername=scottpassword=123456maxActive=10maxIdle=5maxWait=2000要执行SQL语句,必须获得java.sql.Statement实例, Statement接口提供了三种执行SQL语句的方法:executeQuery 、executeUpdate 和execute,具体实现的代码: ResultSet rs = stmt.executeQuery(SELECT * FROM .) ; 3.2 数据库的创建为了实现网吧的正常运营与管理,数据库中的以下表格是必不可少的,在此系统中我们用的是sqlserver数据库。(1) 卡号表,表结构如图7所示,用来存储已注册的卡信息图7 卡表(2) 机器表,表结构如图8所示,用来存储该网吧存在的电脑信息图8 机器表(3) 上机下机表,表结构如图9所示,用来存储客户上机对应的机器号,上机时间及下机时间,所用费用的用户信息图9 上机下机表4.1.2数据库的创建(1) 创建卡表CREATE TABLE dbo.card(CARDID varchar(10) NOT NULL,USERNAME varchar(10) NOT NULL,PASSWORD varchar(20) NOT NULL,BALANCE numeric(5, 2) NULL,STATE numeric(1, 0) NOT NULL,)(2) 创建机器表CREATE TABLE puter(COMPUTERID varchar(10) NOT NULL,STATE numeric(1, 0) NOT NULL,REMARK varchar(50) NULL,)(3) 创建上机下机表CREATE TABLE dbo.record(RECORDID numeric(5, 0) NOT NULL,CARDID varchar(10) NOT NULL,COMPUTERID varchar(10) NOT NULL,BEGINTIME char(19) NOT NULL,ENDTIME char(19) NULL,FEE numeric(5, 1) NULL,)4. 总结本网吧计费系统在整个开发过程中采用了面向对象的开发方法,利用Java技术对整个的网吧计费工作流程进行了模拟、设计与实现。整个系统代码的编写过程,都体现了面向对象开发方法的优越性。另外,该网吧计费系统采用的后台数据库为SQL Sever,该数据库在设计与开发的过程中也起到了至关重要的作用,体现了该数据库系统的强大功能。通过这次课程设计,使我灵活应用所学数据结构知识,独立完成问题分析,结合数据结构理论知识,编写程序求解指定问题。初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;提高综合运用所学的理论知识和方法独立分析和解决问题的能力;并用系统的观点和软件开发一般规范进行软件开发,巩固、深化学生的理论知识,提高编程水平,并在此过程中培养我们严谨的科学态度和良好的工作作风。总的来说,在这次的课程设计中遇到了不少的问题,大部分得到了很好的解决,但也有少部分遗留的问题。最后就是从一而终的问题了,在开发过程中我遇到了许许多多的问题,很多地方都不明白,经常有打退堂鼓的想法,我经常的请教同学和老师,最后的成果虽然不很完美,但我尽力了,并有所收获这次的课设对我来说十分重要,因为毕业设计可能会用到JAVA来实现的相关编程。而且这次的课设也让我对JAVA面向对象的设计有了很深的体会。参考文献1 吕凤翥,马皓. Java语言程序设计M. 清华大学出版社 , 20062 孙更新. Java毕业设计指南与项目实践M. 北京科海电子出版社 , 2008 3 陈刚. Eclipse从入门到精通M. 清华大学出版社 , 20064 陈丹丹,马文强. Java开发典型模块大全M. 人民邮电出版社 , 2009 服务器端:package com.zhu.dao;import java.util.ArrayList;import com.zhu.entity.Card;public interface CardDao public void insertCard(Card card);public void chargeCard(String cardid,double fee);public void deleteCard(String cardid);public ArrayList searchCardByState(int state);public boolean isONorOFF(String cardid);public void updateState(String cardid,int state);public boolean verifyCard(String cardid,String password);public double getBalanceByCardid(String cardid);public void UpdateBalanceByCard(String cardid,double balance);public int presence (String cardid);package com.zhu.dao;import java.util.List;public interface ComputerDao public List getComputerByState(int state);public void update(String computerid,int state);public boolean isONorOFF(String computerid);package com.zhu.dao;import java.util.Calendar;import java.util.Map;import com.zhu.entity.Record;public interface RecordDao public void insert(String cardid,String computerid,Calendar begintime);public void update(String computerid,Calendar endtime);public Record getRecord(String computerid);public void deleteReCord(String cardid);package com.zhu.dao.impl;import java.math.BigDecimal;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.Iterator;import java.util.Map;import com.qdmmy6.jdbc.JdbcTemplate;import com.qdmmy6.jdbc.RowMapper;import com.zhu.dao.CardDao;import com.zhu.entity.Card;import com.zhu.utils.Utils;public class CardDaoImp implements CardDao private JdbcTemplate jtl; public CardDaoImp() this(new JdbcTemplate(configdbCperties);public CardDaoImp(JdbcTemplate jtl) this.jtl = jtl;public JdbcTemplate getJtl() return jtl;public void setJtl(JdbcTemplate jtl) this.jtl = jtl;/新建卡Overridepublic void insertCard(Card card) String sql = insert into card values(?,?,?,?,?);Object params = new Object card.getCardid(),card.getUsername(),card.getPassword(),card.getBalance(),card.getState();jtl.update(sql,params);/充值Overridepublic void chargeCard(String cardid,double fee) String sql = select balance from card where cardid = ?;Object params = new Object cardid;double balance = jtl.queryForInt(sql,params);sql = update card set balance = ? where cardid = ?;params = new Object balance+fee,cardid;jtl.update(sql, params);/注销卡Overridepublic void deleteCard(String cardid) String sql = delete from card where cardid = ?;Object params = new Object cardid;jtl.update(sql,params);/根据上机状态 查询Card组SuppressWarnings(unchecked)Overridepublic ArrayList searchCardByState(int state) String sql = select * from card where state = ?;return (ArrayList) jtl.query(sql, new Objectstate, new RowMapper() public Object mapRow(ResultSet rs, int arg1) throws SQLException return new Card(rs.getString(cardid),rs.getString(username),rs.getString(password),rs.getDouble(balance),rs.getInt(state););/根据卡号判断状态Overridepublic boolean isONorOFF(String cardid) String sql = select state from card where cardid = ?;Object params = new Objectcardid;int state = jtl.queryForInt(sql, params);return state=1?true:false;/更改卡状态Overridepublic void updateState(String cardid,int state) String sql = update card set state= ? where cardid = ?;Object params = new Objectstate,cardid;jtl.update(sql, params);/验证卡号,密码和上机状态Overridepublic boolean verifyCard(String cardid,String password) String sql = select * from card where cardid = ?;Object params = new Objectcardid;Map map = jtl.queryForMap(sql,params);if (map=null) Utils.showDialog(卡号错误或为空); return false;if (!map.get(PASSWORD).equals(password) Utils.showDialog(密码错误或为空); return false;if (isONorOFF(cardid) Utils.showDialog(该卡已经上机); return false;Utils.showDialog(上机成功);return true;/查询余额Overridepublic double getBalanceByCardid(String cardid) String sql = select balance from card where cardid = ?;Object params = new Objectcardid;Object o = jtl.queryForObject(sql,new Objectcardid);return (BigDecimal)o).doubleValue();/改变卡余额Overridepublic void UpdateBalanceByCard(String cardid, double balance) String sql = update card set balance = ? where cardid = ?;Object params = new Objectbalance,cardid;jtl.update(sql, params);public int presence (String cardid)String sql = select count(*) from card where cardid = ?;Object params = new Objectcardid;return jtl.queryForInt(sql, params);public static void main(String args) CardDaoImp cdi = new CardDaoImp();System.out.println(cdi.presence(CARD003);package com.zhu.dao.impl;import java.awt.List;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.Map;import com.qdmmy6.jdbc.JdbcTemplate;import com.qdmmy6.jdbc.ResultSetExtractor;import com.qdmmy6.jdbc.RowMapper;import com.zhu.dao.ComputerDao;import com.zhu.entity.*;public class ComputerDaoImp implements ComputerDaoprivate JdbcTemplate jtl; public ComputerDaoImp() this(new JdbcTemplate(configdbCperties);public ComputerDaoImp(JdbcTemplate jtl) this.jtl = jtl;public JdbcTemplate getJtl() return jtl;public void setJtl(JdbcTemplate jtl) this.jtl = jtl;/根据状态查询Computer组SuppressWarnings(unchecked)public ArrayList getComputerByState(int state) String sql = select * from computer where state = ?; return (ArrayList) jtl.query(sql, new Objectstate, new RowMapper() public Object mapRow(ResultSet rs, int arg1) throws SQLException return new Computer(rs.getString(computerid),rs.getInt(state););/更改机器状态public void update(String computerid,int state) String sql = update computer set state = ? where computerid = ?;Object params = new Objectstate,computerid;jtl.update(sql, params);/根据机器号判断该机器状态Overridepublic boolean isONorOFF(String computerid) String sql = select state from computer where computerid = ?;Object params = new Objectcomputerid;int state = jtl.queryForInt(sql, params);return state=1?true:false;package com.zhu.dao.impl;import java.math.BigDecimal;import java.util.Calendar;import java.util.Map;import com.qdmmy6.jdbc.JdbcTemplate;import com.zhu.dao.RecordDao;import com.zhu.entity.Record;import com.zhu.utils.Utils;public class RecordDaoImp implements RecordDao private JdbcTemplate jtl;CardDaoImp cdi = new CardDaoImp();ComputerDaoImp cpdi = new ComputerDaoImp();public RecordDaoImp() this(new JdbcTemplate(configdbCperties);public RecordDaoImp(JdbcTemplate jtl) this.jtl = jtl;/登入时,插入一条记录Overridepublic void insert(String cardid,String computerid,Calendar begintime) String sql = select max(recordid) from record;Object o = jtl.queryForObject(sql);int recordid = 1;if(o != null) recordid = Integer.parseInt(o.toString()+1;sql = insert into record(recordid,cardid,computerid,begintime) values (?,?,?,?);Object params = new Objectrecordid,cardid,computerid,Utils.dealCalendar(begintime);/System.out.println(recordid);/System.out.println(cardid);/System.out.println(computerid);/System.out.println(Utils.dealCalendar(begintime);jtl.update(sql, params);/ 返回记录对象 - RecordOverridepublic void update(String computerid, Calendar endtime) String sql = update record set endtime = ?, fee = ? where recordid = ? ;double fee = Utils.cal(getRecord(computerid).getBegintime(),endtime);Object params = new ObjectUtils.dealCalendar(endtime),fee,getRecord(computerid).getRecordid();jtl.update(sql, params);/通过记录号查找记录public Record getRecordByRecordid(int recordid) String sql = select * from record where recordid = ? ;Object params = new Objectrecordid;Map map = jtl.queryForMap(sql,params);if (map=null) return null;Record record = new Record();record.setRecordid(BigDecimal)map.get(RECORDID).intValue();record.setCardid(String)map.get(CARDID);record.setComputerid(String)map.get(COMPUTERID);record.setBegintime(Utils.recoveryCalendar(String)map.get(BEGINTIME);record.setEndtime(Utils.recoveryCalendar(String)map.get(ENDTIME);record.setFee(BigDecimal)map.get(FEE).doubleValue();return record;/通过机器号来查记录Overridepublic Record getRecord(String computerid) String sql = select * from record where computerid = ? and endtime is null;Object params = new Objectcomputerid;Map map = jtl.queryForMap(sql,params);if (map=null) return null;Record record = new Record();record.setRecordid(BigDecimal)map.get(RECORDID).intValue();record.setCardid(String)map.get(CARDID);record.setComputerid(String)map.get(COMPUTERID);record.setBegintime(Utils.recoveryCalendar(String)map.get(BEGINTIME);return record;/删除记录Overridepublic void deleteReCord(String cardid) String sql = delete from record where cardid = ?;Object params = new Object cardid;jtl.update(sql,params);package com.zhu.demo;import javax.swing.JFrame;import com.zhu.server.Server;import com.zhu.view.MainFrame;public class Demo public static void main(String args) JFrame frame = new MainFrame();Server server = new Server();server.setSize(400,300);server.setLocation(200,200);server.setDefaultCloseOperation(3);server.setVisible(true);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);package com.zhu.entity;public class Card private String cardid;private String username;private String password;private double balance;private int state;public Card() this(, null, null, 0,0);public Card(String cardid, String username, String password, double balance,int state) this.cardid = cardid;this.username = username;this.password = password;this.balance = balance;this.state = state;public String getCardid() return cardid;public void setCardid(String cardid) this.cardid = cardid;public String getUsername() return username;public void setUsername(String username) this.username = username;public String getPassword() return password;public void setPassword(String password) this.password = password;public double getBalance() return balance;public void setBalance(double balance) this.balance = balance;public int getState() return state;public void setState(int state) this.state = state;public String toString() return cardid + + username + + password + + balance;package com.zhu.entity;public class Computer private String computerid;private int state;public Computer() public Computer(String computerid, int state) puterid = computerid;this.state = state;public String getComputerid() return computerid;public void setComputerid(String computerid) puterid = computerid;public int getState() return state;public void setState(int state) this.state = state;public String toString() return computerid + : +state;package com.zhu.entity;import java.lang.reflect.Array;import java.util.Arrays;import java.util.Calendar;import com.zhu.utils.Utils;public class Record private int recordid;private String cardid;private String computerid;private Calendar begintime;private Calendar endtime;private double fee;public Record() public Record(int recordid, String cardid, String computerid,Calendar begintime, Calendar endtime, int fee) this.recordid = recordid;this.cardid = cardid;puterid = computerid;this.begintime = begintime;this.endtime = endtime;this.fee = fee;public int getRecordid() return recordid;public void setRecordid(int recordid) this.recordid = recordid;public String getCardid() return cardid;public void setCardid(String cardid) this.cardid = cardid;public String getComputerid() return computerid;public void setComputerid(String computerid) puterid = computerid;public Calendar getBegintime() return begintime;public void setBegintime(Calendar begintime) this.begintime = begintime;public Calendar getEndtime() return endtime;public void setEndtime(Calendar endtime) this.endtime = endtime;public double getFee() return fee;public void setFee(double fee) this.fee = fee;public String toString() return cardid + + computerid + + Utils.dealCalendar(begintime) + +Utils.dealCalendar(endtime) + +fee;package com.zhu.server;import java.awt.*;import java.awt.event.*;import java.io.*;import .*;import java.util.*;import javax.swing.*;public class Server extends JFrame private JButton listen;private JButton exit;private JToolBar jtb;private JTextArea messageArea;private JTextField message;private JButton broadcast;private JButton guanji;private JButton zhuxiao;private JButton suoping;private JComboBox combo;/服务器的ServerSocket对象private ServerSocket serverSocket;Vector nicks = new Vector();/记录接受消息线程的Vectorprivate Vector threads = new Vector();/服务器的监听线程ListenerThread lt;class ListenerThread extends Threadpublic void run()tryserverSocket = new ServerSocket(8888);catch(IOException ex)messageArea.append(ex.toString();return;while(true)Socket socket = null;trysocket = serverSocket.accept();BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream();PrintWriter pw = new PrintWriter(socket.getOutputStream(),true);String nick = br.readLine();/判断昵称是否重复if(isRepeated(nick)pw.println(昵称重复,请输入新昵称后重新连接!);pw.close();br.close();socket.close();else/向客户端发送成功连接的信息pw.println(已经成功连接到服务器!);messageArea.append(nick+已经成功连接到服务器!nr);messageArea.setCaretPosition(messageArea.getText().length();/光标定位到最后/改变广播按钮和信息发送文本框状态message.setEditable(true);broadcast.setEnabled(true);message.setFocusable(true);/将昵称保存下来加入Vectornicks.add(nick); /遍历Vector中的元素 combo.removeAllItems(); for(int i = 0;i nicks.size();i+) combo.addItem(nicks.get(i); /维持这个客户端的通信ReceiveClientMsgThread t = new ReceiveClientMsgThread(socket,nick);t.start();/将线程加入Vector threadsthreads.add(t);catch(IOException ex)if(serverSocket.isClosed()return;elsemessageArea.append(ex.toString()+nr);/判断昵称重复private boolean isRepeated(String nick)if(nicks.contains(nick)return true;elsereturn false;/接收消息的线程类class ReceiveClientMsgThread extends Thread/和客户端通信的Socket对象private Socket socket;private String nick;ReceiveClientMsgThread(Socket socket,String nick)this.socket = socket;this.nick = nick;public Socket getSocket()return socket;public void run()tryBufferedReader socketIn = new BufferedReader(new InputStreamReader(socket.getInputStream();PrintWriter socketOut = new PrintWriter(socket.getOutputStream(),true);while(true)/接收客户端发来的信息String s = socketIn.readLine();StringBuilder rsb = new StringBuilder();/判断客户端是否退出聊天if(s.equals(断开连接)/如果是客户端发来的断开信息rsb.append(#有人断开#n);rsb.append(nick+n);/rsb.append()threads.remove(this);nicks.remove(nick);socketIn.close();socketOut.close();socket.close();if(threads.size() = 0)message.setEditable(false);broadcast.setEnabled(false);messageArea.append(nick+断开连接nr);else if(s.equals(公聊)/如果是正常的客户端信息rsb.append(#公聊#n);rsb.append(nick+n);String msg = socketIn.readLine();rsb.append(msg+n);/System.out.print(rsb.toString();sendMsgToAll(rsb.toString();messageArea.append(nick+说: rn);messageArea.append(msg+nr);else if(s.equals(私聊)rsb.append(#私聊#n);String toNick = socketIn.readLine();String msg = socketIn.readLine();rsb.append(nick+n);rsb.append(toNick+n);rsb.append(msg+n);sendMsgToPerson(rsb.toString(),nicks.indexOf(toNick);messageArea.append(nick+对+toNick+说: nr);messageArea.append(msg+nr);else if(s.equals(取得nicks)rsb.append(#get nicks#n);for(int i=0;inicks.size();i+)if(i!=0)rsb.append(|); rsb.append(nicks.get(i);rsb.append(n);sendMsgToPerson(rsb.toString(),threads.indexOf(this);/在显示区域显示收到的信息/messageArea.append(s+rn);messageArea.setCaretPosition(messageArea.getText().length();/广播收到的信息到其他客户端catch(Exception ex)if(! socket.isClosed()messageArea.append(ex.toString()+rn);/为按钮编写监听器类ButtonListenerclass ButtonListener implements ActionListenerpublic void actionPerformed(ActionEvent e) if(e.getSource() = listen)messageArea.setText(服务器已经启动.nr);/实例化监听器线程并启动lt = new ListenerThread();lt.start();/改变按钮状态listen.setEnabled(false);exit.setEnabled(true);if(e.getSource() = broadcast | e.getSource() = message)String s = message.getText();s = 服务器广播:+s;messageArea.append(s+nr);tryfor(int i = 0;ithreads.size();i+)PrintWriter pw = new PrintWriter(ReceiveClientMsgThread)(threads.get(i).getSocket().getOutputStream(),true);pw.println(#服务器广播#);pw.println(message.getText();catch(IOException ex)messageArea.append(ex.toString()+rn);message.setText(); if(e.getSource()=guanji) PrintWriter pw;try pw = new PrintWriter(ReceiveClientMsgThread)(threads.get(nicks.indexOf(combo.getSelectedItem().getSocket().getOutputStream(),true);pw.println(#关机#);pw.close(); catch (IOException e1) / TODO Auto-generated catch blocke1.printStackTrace(); if(e.getSource()=zhuxiao) PrintWriter pw;try pw = new PrintWriter(ReceiveClientMsgThread)(threads.get(nicks.indexOf(combo.getSelectedItem().getSocket().getOutputStream(),true);pw.println(#注销#);pw.close(); catch (IOException e1) / TODO Auto-generated catch blocke1.printStackTrace(); if(e.getSource()=suoping) PrintWriter pw;try pw = new PrintWriter(ReceiveClientMsgThread)(threads.get(nicks.indexOf(combo.getSelectedItem().getSocket().getOutputStream(),true);pw.println(#锁屏#);pw.close(); catch (IOException e1) / TODO Auto-generated catch blocke1.printStackTrace(); if(e.getSource() = exit)try/向所有客户端发送断开信息“bye*”并进行相应的关闭操作for(int i = 0;ithreads.size();i+)Socket socket = (ReceiveClientMsgThread)threads.get(i).getSocket();PrintWriter pw = new PrintWriter(socket.getOutputStream(),true);BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream();pw.println(#服务器断开#);nicks.clear();pw.close();br.close();socket.close();/关闭serverSoket对象serverSocket.close();messageArea.append(服务器已经断开!);catch(IOException ex)messageArea.append(ex.toString()+rn);/删除threads和nicks中所有的元素threads.removeAllElements();nicks.remove(nicks);combo.removeAll();combo.addItem(所有人);/恢复按钮文本框到初始状态listen.setEnabled(true);exit.setEnabled(false);message.setEditable(false);broadcast.setEnabled(false);/构造方法public Server()/设置服务器窗口的标题super(网络聊天服务器);/初始化界面元素listen = new JButton(监听);exit = new JButton(断开);jtb = new JToolBar();messageArea = new JTextArea();message = new JTextField(10);broadcast = new JButton(广播);guanji=new JButton(关机);zhuxiao=new JButton(注销);suoping=new JButton(锁屏);combo = new JComboBox();/设置界面布局Container c = this.getContentPane();jtb.add(listen);jtb.add(exit);c.add(jtb,BorderLayout.NORTH);JScrollPane jsp = new JScrollPane(messageArea);c.add(jsp);JPanel jp = new JPanel();jp.add(message);jp.add(broadcast);jp.add(guanji);jp.add(zhuxiao);jp.add(suoping);jp.add(combo);c.add(jp,BorderLayout.SOUTH);/初始化exit.setEnabled(false);messageArea.setEditable(false);message.setEnabled(true);broadcast.setEnabled(false);combo.setEnabled(true);/为监听按钮注册监听器ButtonListener bl = new ButtonListener();listen.addActionListener(bl);/为广播按钮和信息发送文本框注册监听器broadcast.addActionListener(bl);guanji.addActionListener(bl);zhuxiao.addActionListener(bl);suoping.addActionListener(bl);message.addActionListener(bl);/为断开按钮注册监听器exit.addActionListener(bl);private void sendMsgToAll(String msg)for(int i = 0;ithreads.size();i+)PrintWriter pw;try pw = new PrintWriter(ReceiveClientMsgThread)(threads.get(i).getSocket().getOutputStream(),true);pw.println(msg); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace();private void sendMsgToPerson(String msg,int index)PrintWriter pw;try pw = new PrintWriter(ReceiveClientMsgThread)(threads.get(index).getSocket().getOutputStream(),true);pw.println(msg); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace();package com.zhu.utils;import java.awt.*;import java.util.Calendar;import java.util.Date;import javax.swing.JOptionPane;public class Utils /使窗口居中public static void center(Window win) Toolkit toolkit = Toolkit.getDefaultToolkit();int sw = toolkit.getScreenSize().width;int sh = toolkit.getScreenSize().height;int w = win.getWidth();int h = win.getHeight();int x = (sw - w) / 2;int y = (sh - h) / 2;win.setLocation(x, y);/根据下机时间和上机时间计算费用public static double cal(Calendar begintime, Calendar endtime) return (double) (Math.ceil(endtime.getTimeInMillis() - begintime.getTimeInMillis()/1000.0/60/15)*0.5);/Calendar类型日期数据 转换为String类型日期public static String dealCalendar(Calendar c) String s = + c.get(Calendar.YEAR) + -+ (c.get(Calendar.MONTH) 9 ? 0 : ) + (c.get(Calendar.MONTH)+1)+ - + (c.get(Calendar.DATE) 10 ? 0 : )+ c.get(Calendar.DATE) + + (c.get(Calendar.HOUR_OF_DAY) 10 ? 0 : )+ c.get(Calendar.HOUR_OF_DAY) + :+ (c.get(Calendar.MINUTE) 10 ? 0 : )+ c.get(Calendar.MINUTE) + :+ (c.get(Calendar.SECOND) 10 ? 0 : )+ c.get(Calendar.SECOND);return s;/String类型日期还原为Calendar类型日期public static Calendar recoveryCalendar(String time) Calendar calendar =Calendar.getInstance();String ss = time.split(D+);int is = new int6;for (int i=0;iss.length;i+) isi = Integer.parseInt(ssi);calendar.set(is0, is1-1, is2, is3, is4, is5);return calendar;/显示警告对话框public static void showDialog(String s)JOptionPane.showMessageDialog(null, s,警告 ,JOptionPane.WARNING_MESSAGE);/;package com.zhu.view;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.ArrayList;import java.util.Calendar;import java.util.Map;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JDialog;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextField;import com.zhu.dao.impl.CardDaoImp;import com.zhu.dao.impl.ComputerDaoImp;import com.zhu.dao.impl.RecordDaoImp;import com.zhu.entity.Computer;import com.zhu.entity.Record;import com.zhu.utils.Utils;public class ChargeCardDialog extends JDialog private CardDaoImp cdi = new CardDaoImp();private RecordDaoImp rdi = new RecordDaoImp();private JLabel cardidLable = new JLabel(卡号:);private JLabel moneyLable = new JLabel(金额:);private JTextField cardidText = new JTextField(11);private JTextField moneyText = new JTextField(11);private JButton submit = new JButton(确定);private JButton cancel = new JButton(取消);private JPanel cardidJPanel = new JPanel();private JPanel moneyJPanel = new JPanel();private JPanel btnJPanel = new JPanel();public ChargeCardDialog(JFrame frame)super(frame, 网吧计费系统, true);this.init();this.addComponent();this.pack();this.addListener();private void addComponent() this.add(cardidJPanel);this.add(moneyJPanel);this.add(btnJPanel);cardidJPanel.add(cardidLable);cardidJPanel.add(cardidText);moneyJPanel.add(moneyLable);moneyJPanel.add(moneyText);btnJPanel.add(submit);btnJPanel.add(cancel);/取消private void addListener() cancel.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e) try ChargeCardDialog.this.dispose(); catch (Throwable e1) e1.printStackTrace();); private void init()this.setLocation(300,200);this.setLayout(new GridLayout(2,1);this.setSize(500,500);package com.zhu.view;import java.awt.GridLayout;import java.awt.TextField;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.ArrayList;import java.util.Calendar;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JDialog;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextField;import javax.swing.plaf.basic.ComboPopup;import com.zhu.dao.impl.CardDaoImp;import com.zhu.dao.impl.ComputerDaoImp;import com.zhu.dao.impl.RecordDaoImp;import com.zhu.entity.Card;import com.zhu.entity.Computer;import com.zhu.utils.Utils;class CreateCardDialog extends JDialog private JLabel numberLabel = new JLabel(卡号:);private JLabel nameLabel = new JLabel(姓名:);private JLabel passwordLabel = new JLabel(密码:);private JLabel moneyLabel = new JLabel(金额: );private JLabel stateLabel = new JLabel(状态: );private JTextField cardidText = new JTextField(11);private TextField nameText = new TextField(15);private JTextField passwordText = new JTextField(11);private JTextField moneyText = new JTextField(11);private JTextField stateText = new JTextField(0);private JButton submit = new JButton(确定);private JButton afresh = new JButton(重置);private JPanel numberPanel = new JPanel();private JPanel namePanel = new JPanel();private JPanel passwordPanel = new JPanel();private JPanel moneyPanel = new JPanel();private JPanel statePanel = new JPanel();private JPanel btnPanel = new JPanel();CardDaoImp cdi = new CardDaoImp();ComputerDaoImp cpdi = new ComputerDaoImp();RecordDaoImp rdi = new RecordDaoImp();public CreateCardDialog(JFrame frame) super(frame, 网吧计费系统, true);this.init();this.addComponent();this.pack();this.addListener();private void init() this.setLocation(300, 200);this.setLayout(new GridLayout(6, 1);private void addComponent() this.add(numberPanel);this.add(namePanel);this.add(passwordPanel);this.add(moneyPanel);this.add(statePanel);this.add(btnPanel);numberPanel.add(numberLabel);numberPanel.add(cardidText);passwordPanel.add(passwordLabel);passwordPanel.add(passwordText);namePanel.add(nameLabel);namePanel.add(nameText);btnPanel.add(submit);btnPanel.add(afresh);moneyPanel.add(moneyLabel);moneyPanel.add(moneyText);statePanel.add(stateLabel);statePanel.add(stateText);/ 重置private void addListener() afresh.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) cardidText.setText(null);passwordText.setText(null);nameText.setText(null);moneyText.setText(null);stateText.setText(null););submit.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) String a = cardidText.getText();String b = passwordText.getText();String c = nameText.getText();double d = Double.parseDouble(moneyText.getText();int f = Integer.parseInt(stateText.getText();Card card = new Card();card.setCardid(a);card.setPassword(b);card.setUsername(c);card.setBalance(d);card.setState(f);if (cdi.presence(cardidText.getText() = 0) rdi.deleteReCord(card.getCardid();cdi.insertCard(card);Utils.showDialog(创建成功);CreateCardDialog.this.dispose(); else Utils.showDialog(创建失败);CreateCardDialog.this.dispose(););package com.zhu.view;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.ArrayList;import java.util.Calendar;import java.util.Map;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JDialog;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextField;import com.zhu.dao.impl.CardDaoImp;import com.zhu.dao.impl.ComputerDaoImp;import com.zhu.dao.impl.RecordDaoImp;import com.zhu.entity.Computer;import com.zhu.entity.Record;import com.zhu.utils.Utils;public class DeleteCardDialog extends JDialog private CardDaoImp cdi = new CardDaoImp();private RecordDaoImp rdi = new RecordDaoImp();private JLabel cardidLable = new JLabel(卡号:);private JTextField cardidText = new JTextField(11);private JButton submit = new JButton(确定);private JButton cancel = new JButton(取消);private JPanel cardidJPanel = new JPanel();private JPanel btnJPanel = new JPanel();public DeleteCardDialog(JFrame frame)super(frame, 网吧计费系统, true);this.init();this.addComponent();this.pack();this.addListener();private void addComponent() this.add(cardidJPanel);this.add(btnJPanel);cardidJPanel.add(cardidLable);cardidJPanel.add(cardidText);btnJPanel.add(submit);btnJPanel.add(cancel);/取消private void addListener() cancel.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e) try DeleteCardDialog.this.dispose(); catch (Throwable e1) e1.printStackTrace(););submit.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e) if(cdi.presence(cardidText.getText() =1)rdi.deleteReCord(cardidText.getText();cdi.deleteCard(cardidText.getText();Utils.showDialog(删除成功);else Utils.showDialog(卡号不存在););private void init()this.setLocation(300,200);this.setLayout(new GridLayout(2,1);this.setSize(500,500);package com.zhu.view;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.ArrayList;import java.util.Calendar;import java.util.Map;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JDialog;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextField;import com.zhu.dao.impl.CardDaoImp;import com.zhu.dao.impl.ComputerDaoImp;import com.zhu.dao.impl.RecordDaoImp;import com.zhu.entity.Computer;import com.zhu.entity.Record;import com.zhu.utils.Utils;public class DownDialog extends JDialog private JLabel timeLable = new JLabel(下机时间:);private JTextField timeText = new JTextField(11);private JLabel computeridLabel = new JLabel(机 器 号: );private JComboBox combobox = new JComboBox();private JButton submit = new JButton(确定);private JButton cancel = new JButton(取消);private JPanel timeJPanel = new JPanel();private JPanel btnJPanel = new JPanel();private JPanel comboboxPanel = new JPanel();CardDaoImp cdi = new CardDaoImp();ComputerDaoImp cpdi = new ComputerDaoImp();RecordDaoImp rdi = new RecordDaoImp();public DownDialog(JFrame frame)super(frame, 网吧计费系统, true);this.init();this.addComponent();this.pack();this.addListener();private void addComponent() this.add(comboboxPanel);this.add(timeJPanel);this.add(btnJPanel);timeJPanel.add(timeLable);timeJPanel.add(timeText);btnJPanel.add(submit);btnJPanel.add(cancel);comboboxPanel.add(computeridLabel);comboboxPanel.add(combobox);combobox.addItem( 请输入机器号 );createComboBox();timeText.setText(Utils.dealCalendar(Calendar.getInstance();/取消private void addListener() cancel.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e) try DownDialog.this.dispose(); catch (Throwable e1) e1.printStackTrace(););/下机后,更改卡和机器状态,根据机器号,找到记录,更改记录submit.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e) try Calendar endtime = Utils.recoveryCalendar(timeText.getText();String computerid = (String)(combobox.getSelectedItem();Record record = rdi.getRecord(computerid);rdi.update(computerid,endtime );record =rdi.getRecordByRecordid(record.getRecordid();cdi.updateState(record.getCardid(), 0);cpdi.update(record.getComputerid(), 0);double balance = cdi.getBalanceByCardid(record.getCardid();cdi.UpdateBalanceByCard(record.getCardid(), balance -record.getFee();DownDialog.this.dispose();JFrame dialog = new InfoDialog(DownDialog.this,record.getRecordid(); catch (Throwable e1) e1.printStackTrace(););private void init()this.setLocation(300,200);this.setLayout(new GridLayout(3,1);this.setSize(500,500);private void createComboBox() ArrayList list = (new ComputerDaoImp().getComputerByState(1);for (Computer c: list) combobox.addItem(c.getComputerid();comboboxPanel.add(combobox);package com.zhu.view;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.ArrayList;import java.util.Calendar;import java.util.Map;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JDialog;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextField;import com.zhu.dao.impl.CardDaoImp;import com.zhu.dao.impl.ComputerDaoImp;import com.zhu.dao.impl.RecordDaoImp;import com.zhu.entity.Computer;import com.zhu.entity.Record;import com.zhu.utils.Utils;public class GetBalanceByCardid extends JDialog private CardDaoImp cdi = new CardDaoImp();private RecordDaoImp rdi = new RecordDaoImp();private JLabel cardidLable = new JLabel(卡号:);private JTextField cardidText = new JTextField(11);private JButton submit = new JButton(确定);private JButton cancel = new JButton(取消);private JPanel cardidJPanel = new JPanel();private JPanel btnJPanel = new JPanel();public GetBalanceByCardid(JFrame frame) super(frame, 网吧计费系统, true);this.init();this.addComponent();this.pack();this.addListener();private void addComponent() this.add(cardidJPanel);this.add(btnJPanel);cardidJPanel.add(cardidLable);cardidJPanel.add(cardidText);btnJPanel.add(submit);btnJPanel.add(cancel);/ 取消private void addListener() cancel.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) try GetBalanceByCardid.this.dispose(); catch (Throwable e1) e1.printStackTrace(););submit.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) if (cdi.presence(cardidText.getText() = 1) double a = cdi.getBalanceByCardid(cardidText.getText();Utils.showDialog(余额为: + a);GetBalanceByCardid.this.dispose(); elseUtils.showDialog(卡号不存在););private void init() this.setLocation(300, 200);this.setLayout(new GridLayout(2, 1);this.setSize(500, 500);package com.zhu.view;import java.awt.GridLayout;import java.awt.TextField;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.ArrayList;import java.util.Calendar;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JDialog;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextField;import javax.swing.plaf.basic.ComboPopup;import com.zhu.dao.impl.CardDaoImp;import com.zhu.dao.impl.ComputerDaoImp;import com.zhu.dao.impl.RecordDaoImp;import com.zhu.entity.Card;import com.zhu.entity.Computer;import com.zhu.utils.Utils;class InDialog extends JDialog private JLabel numberLabel = new JLabel(卡号:);private JLabel passwordLabel = new JLabel(密码:);private JLabel timeLabel = new JLabel(上机时间:);private JLabel computeridLabel = new JLabel(机 器 号: );private JTextField cardidText = new JTextField(11);private TextField passwordText = new TextField(13);private JTextField timeText = new JTextField(11);private JComboBox combobox = new JComboBox();private JButton submit = new JButton(确定);private JButton afresh = new JButton(重置);private JPanel numberPanel = new JPanel(); private JPanel passwordPanel = new JPanel(); private JPanel timePanel = new JPanel(); private JPanel btnPanel = new JPanel();private JPanel comboboxPanel = new JPanel();CardDaoImp cdi = new CardDaoImp();ComputerDaoImp cpdi = new ComputerDaoImp();RecordDaoImp rdi = new RecordDaoImp();public InDialog(JFrame frame) super(frame, 网吧计费系统, true);this.init();this.addComponent();this.pack();this.addListener();private void init() this.setLocation(300, 200);this.setLayout(new GridLayout(5, 1); private void addComponent() this.add(numberPanel);this.add(passwordPanel);this.add(comboboxPanel);this.add(timePanel);this.add(btnPanel);passwordText.setEchoChar(*);timeText.setText(Utils.dealCalendar(Calendar.getInstance();numberPanel.add(numberLabel);numberPanel.add(cardidText);passwordPanel.add(passwordLabel);passwordPanel.add(passwordText);timePanel.add(timeLabel);timePanel.add(timeText);btnPanel.add(submit);btnPanel.add(afresh);combobox.addItem( 请输入机器号 );createComboBox();comboboxPanel.add(computeridLabel);comboboxPanel.add(combobox);/重置private void addListener() afresh.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) cardidText.setText(null);passwordText.setText(null);timeText.setText(Utils.dealCalendar(Calendar.getInstance();/把文本域里的值设置为空combobox.setSelectedIndex(0););/验证登入的卡号和密码,更改卡状态,更改机器状态,添加记录submit.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e) if (cdi.verifyCard(cardidText.getText(), passwordText.getText() rdi.insert(cardidText.getText(),(String)(combobox.getSelectedItem(),Calendar.getInstance();cdi.updateState(cardidText.getText(), 1);cpdi.update(String)(combobox.getSelectedItem(), 1);InDialog.this.dispose(););private void createComboBox() ArrayList list = (new ComputerDaoImp().getComputerByState(0);for (Computer c: list) combobox.addItem(c.getComputerid();comboboxPanel.add(combobox);package com.zhu.view;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.Map;import javax.swing.JButton;import javax.swing.JDialog;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextField;import com.zhu.dao.impl.CardDaoImp;import com.zhu.dao.impl.ComputerDaoImp;import com.zhu.dao.impl.RecordDaoImp;import com.zhu.entity.Record;import com.zhu.utils.Utils;class InfoDialog extends JFramepublic String labels = new String 卡号, 机器号, 上机时间,下机时间, 余额, 消费;public String contents = new String6;private JButton btn = new JButton(退出);private JPanel btnJPanel = new JPanel();CardDaoImp cdi = new CardDaoImp();ComputerDaoImp cpdi = new ComputerDaoImp();RecordDaoImp rdi = new RecordDaoImp();private int recordid;public InfoDialog(JDialog dialog,int recordid)this.recordid = recordid;this.init();this.addCompoment();this.addActionListener();private void init()this.setLocation(0,0);this.setLayout(new GridLayout(7,1);this.setSize(300,300);this.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);this.setVisible(true);setTitle(网吧计费系统);private void addCompoment()contents = getContent(recordid);for (int i = 0; i 6; i+) this.add(createJPanel(labelsi, contentsi);this.add(btnJPanel);btnJPanel.add(btn);private void addActionListener()btn.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)InfoDialog.this.dispose(););private JPanel createJPanel(String inlabel,String incontent) JPanel panel = new JPanel();JLabel label = new JLabel(inlabel); JLabel content = new JLabel(incontent);panel.add(label);panel.add(content);return panel;public String getContent(int recordid) String content = new String6;Record record = rdi.getRecordByRecordid(recordid);content0 = record.getCardid();content1 = record.getComputerid();content2 = Utils.dealCalendar(record.getBegintime();content3 = Utils.dealCalendar(record.getEndtime();content4 = (Double)cdi.getBalanceByCardid(content0).toString();content5 = (Double)record.getFee().toString();return content;package com.zhu.view;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import .Socket;import javax.swing.JDialog;import javax.swing.JFrame;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import com.zhu.utils.Utils;public class MainFrame extends JFrame private JMenuBar menuBar = new JMenuBar();private JMenu file = new JMenu(操作);private JMenu cardMenu = new JMenu(卡管理);private JMenuItem in = new JMenuItem(上机);private JMenuItem down = new JMenuItem(下机);private JMenuItem out = new JMenuItem(退出);private JMenuItem a = new JMenuItem(新增卡);private JMenuItem b = new JMenuItem(查询卡余额);private JMenuItem e = new JMenuItem(充值);private JMenuItem f = new JMenuItem(卡注销);private JMenu wg = new JMenu(呼叫);private JMenuItem hjwg = new JMenuItem(网管);private JMenuItem hjkh = new JMenuItem(客户);public MainFrame() this.init();this.addComponent();this.addListener();private void init() this.setSize(500, 400);Utils.center(this);setTitle(网吧计费系统 蓝月网吧);this.initComponents();private void addComponent() this.setJMenuBar(menuBar);menuBar.add(file);/menuBar.add(news);menuBar.add(cardMenu);menuBar.add(wg);/menuBar.add(computerMenu);/menuBar.add(recordMenu);/menuBar.add(countMenu);/menuBar.add(peopleMenu);/menuBar.add(systemMenu);file.add(in);file.add(down);file.add(out);wg.add(hjwg);wg.add(hjkh);/news.add(our);cardMenu.add(a);cardMenu.add(b);/cardMenu.add(c);/cardMenu.add(d);cardMenu.add(e);cardMenu.add(f);/cardMenu.add(g);/*computerMenu.add(h);computerMenu.add(i);computerMenu.add(j);computerMenu.add(k);recordMenu.add(l);recordMenu.add(n);recordMenu.add(m);recordMenu.add(o);recordMenu.add(p);*/private void addListener() /下机down.addActionListener(new ActionListener() public void actionPerformed(ActionEvent evt) JDialog dialog = new DownDialog(MainFrame.this);dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);dialog.setVisible(true););/上机in.addActionListener(new ActionListener() public void actionPerformed(ActionEvent evt) JDialog dialog = new InDialog(MainFrame.this);dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);dialog.setVisible(true););/退出out.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) System.exit(0););/*our.addActionListener(new ActionListener() public void actionPerformed(ActionEvent evt) JDialog dialog = new OurDialog(MainFrame.this);dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);dialog.setVisible(true););*/删除卡号f.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e) JDialog dialog = new DeleteCardDialog(MainFrame.this);dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);dialog.setVisible(true););/创建卡a.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e) JDialog dialog = new CreateCardDialog(MainFrame.this);dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);dialog.setVisible(true););/充值e.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e) JDialog dialog = new ChargeCardDialog(MainFrame.this);dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);dialog.setVisible(true););/查询卡余额b.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e) JDialog dialog = new GetBalanceByCardid(MainFrame.this);dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);dialog.setVisible(true););final Socket socket = null;/hjwg.addActionListener(new ActionListener()/public void actionPerformed(ActionEvent e) /WangGuan dialog = new WangGuan();/dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);/dialog.setVisible(true);/);/背景 private void initComponents() jLabel1 = new javax.swing.JLabel(); addWindowListener(new java.awt.event.WindowAdapter() public void windowClosing(java.awt.event.WindowEvent evt) exitForm(evt); ); jLabel1.setIcon(new javax.swing.ImageIcon(image2.jpg); getContentPane().add(jLabel1, java.awt.BorderLayout.CENTER); pack(); private void exitForm(java.awt.event.WindowEvent evt) System.exit(0); private javax.swing.JLabel jLabel1;package com.zhu.view;import javax.swing.JDialog;import javax.swing.JFrame;public class OurDialog extends JDialog private javax.swing.JLabel jLabel1;public OurDialog(JFrame frame) super(frame, 我是一只小蜜蜂, true);this.initComponents();this.pack();/背景图片private void initComponents() jLabel1 = new javax.swing.JLabel(); jLabel1.setIcon(new javax.swing.ImageIcon(image1.jpg); getContentPane().add(jLabel1, java.awt.BorderLayout.CENTER); pack();/ java.awt.Toolkit.getDefaultToolkit().getImage(getClass().getResource(image/1.png); package com.zhu.view;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyAdapter;import java.awt.event.KeyEvent;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.io.IOException;import java.io.OutputStream;import java.io.PrintStream;import .Socket;import java.util.ArrayList;import java.util.Date;import java.util.List;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JFrame;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.border.EmptyBorder;public class WangGuan extends JFrame /* * */private static final long serialVersionUID = 1L;/* * */private JPanel contentPane;public static JFrame frmClient;private OutputStream os;private PrintStream send;private Socket socket;private JTextArea txtShow;private JTextArea txtSend;private String name;private JComboBox cbUser;private List list = new ArrayList();/* * Create the frame. */public WangGuan(String name,Socket socket) = name;this.socket = socket;/frmClient = new JFrame(name);/frmClient.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/*frmClient.addWindowListener(new WindowAdapter() Overridepublic void windowClosing(WindowEvent arg0) / TODO Auto-generated method stubSystem.exit(0););*/frmClient.setBounds(100, 100, 575, 405);contentPane = new JPanel();contentPane.setBorder(new EmptyBorder(5, 5, 5, 5);frmClient.setContentPane(contentPane);contentPane.setLayout(null);JPanel pal = new JPanel();pal.setBounds(10, 10, 539, 346);contentPane.add(pal);pal.setLayout(null);txtSend = new JTextArea();txtSend.setBounds(10, 286, 440, 50);pal.add(txtSend);txtShow = new JTextArea();txtShow.setEditable(false);txtShow.setBounds(10, 10, 519, 266);JScrollPane scrollPane = new JScrollPane(txtShow);scrollPane.setBounds(10, 10, 519, 266);pal.add(scrollPane);JButton btnSend = new JButton(Send);btnSend.addActionListener(new ActionListener() public void actionPerformed(ActionEvent arg0) if (txtSend.getText().isEmpty() JOptionPane.showMessageDialog(txtSend, Send content can not be empty!);txtSend.requestFocus(); else if (txtSend.getText().charAt(0) + ).contains(-) JOptionPane.showMessageDialog(txtSend, Send content can not be “-” at the beginning!);txtSend.requestFocus(); elsesend(););btnSend.setBounds(460, 313, 69, 23);pal.add(btnSend);cbUser = new JComboBox();cbUser.setBounds(464, 287, 65, 21);pal.add(cbUser);frmClient.setResizable(false);frmClient.setVisible(true);protected void send() /发送信息try os = socket.getOutputStream();send = new PrintStream(os);send.println(cbUser.getSelectedItem().toString() + + txtSend.getText();txtShow.append(+new Date()+n+name + : + txtSend.getText() + n);txtSend.setText(); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace();public void addCbUser(String txt) /将新用户添加至下拉框if (list.contains(txt)return;list.add(txt);cbUser.addItem(txt);public void setTxtShow(String txt) /显示发送与接收到信息this.txtShow.append(txt);public String getTxtSend() /得到发送的信息return txtSend.getText();public void removeCbUser(String txt) /移除下线的用户/ TODO 自动生成的方法存根list.remove(txt);cbUser.removeItem(txt);public boolean getCBuserSize() /判断用户是否存在/ TODO 自动生成的方法存根if(cbUser.getSelectedIndex()=-1)return false;return true;客户端:package com.zhu.client;import java.awt.Color;import java.awt.EventQueue;import java.awt.FlowLayout;import java.awt.Graphics;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.Connection;import java.sql.DriverManager;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.JPasswordField;import javax.swing.JTextField;import javax.swing.border.EmptyBorder;import com.zhu.view.MainFrame;public class chatLogin extends JFrame private JPanel contentPane;private JTextField textField;private JPasswordField passwordField; private JPanel imagePanel; private JFrame frame = new JFrame(背景图片测试); private ImageIcon background; private JLabel jlu; private JLabel jlp; /* * Launch the application. */public static void main(String args) EventQueue.invokeLater(new Runnable() public void run() try / 启动登陆界面chatLogin frame = new chatLogin();frame.setVisible(true); catch (Exception e) e.printStackTrace(););/* * Create the frame. * return */ public void JFrameBackground() background = new ImageIcon(1.jpg);/ 背景图片 JLabel label = new JLabel(background);/ 把背景图片显示在一个标签里面 / 把标签的大小位置设置为图片刚好填充整个面板 label.setBounds(0, 0, background.getIconWidth(), background.getIconHeight(); / 把内容窗格转化为JPanel,否则不能用方法setOpaque()来使内容窗格透明 imagePanel = (JPanel) frame.getContentPane(); imagePanel.setOpaque(false); / 内容窗格默认的布局管理器为BorderLayout imagePanel.setLayout(new FlowLayout(); imagePanel.add(new JButton(测试按钮); frame.getLayeredPane().setLayout(null); / 把背景图片添加到分层窗格的最底层作为背景 frame.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(background.getIconWidth(), background.getIconHeight(); frame.setResizable(false); frame.setVisible(true); public chatLogin() /JFrameBackground();setTitle(欢迎光临-蓝月网咖n);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setBounds(350, 250, 450, 300);contentPane = new JPanel();jlu=new JLabel();jlp=new JLabel();jlu.setText(用户名);jlp.setText(密码);jlu.setBounds(98, 53, 75, 40);jlp.setBounds(98, 89, 75, 40);contentPane.setBorder(new EmptyBorder(5, 5, 5, 5); /设置边框setContentPane(contentPane);contentPane.setLayout(null);textField = new JTextField();textField.setBounds(148, 63, 104, 21);textField.setOpaque(false); /强行绘制(否)contentPane.add(textField);contentPane.add(jlp);contentPane.add(jlu);textField.setColumns(10); /设置列数,然后验证passwordField = new JPasswordField();passwordField.setForeground(Color.BLACK); /设置外观的前景色passwordField.setEchoChar(*);passwordField.setOpaque(false);passwordField.setBounds(148, 99, 104, 21);contentPane.add(passwordField);final JButton btnNewButton = new JButton();btnNewButton.setText(okey);/btnNewButton.setIcon(new ImageIcon(imagesu767Bu9646.jpg); /设置按钮的图标btnNewButton.setBounds(246, 227, 75, 30);getRootPane().setDefaultButton(btnNewButton);contentPane.add(btnNewButton);final JButton btnNewButton_1 = new JButton();btnNewButton_1.setText(重置);/btnNewButton_1.setIcon(new ImageIcon(imagesu6CE8u518C.jpg);btnNewButton_1.setBounds(317, 227, 75, 30);contentPane.add(btnNewButton_1);/ 提示信息final JLabel lblNewLabel = new JLabel();lblNewLabel.setBounds(60, 220, 151, 21);lblNewLabel.setForeground(Color.red);getContentPane().add(lblNewLabel);/ 监听登陆按钮btnNewButton.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) String u_name = textField.getText();String u_pwd = new String(passwordField.getPassword();Connection con = null;Statement stmt = null;ResultSet rs = null;String username,password; try Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver).newInstance();con=DriverManager.getConnection(jdbc:sqlserver:/localhost:1433; DatabaseName=test,scott,123456); stmt=con.createStatement(); String sql=SELECT * FROM card; rs=stmt.executeQuery(sql); while(rs.next() username=rs.getString(CARDID); password=rs.getString(PASSWORD); if(username.equals(u_name)&(password.equals(u_pwd) User user=new User(); user.setUsername(u_name); user.setPassword(u_pwd); Client client = new Client(user); client.setSize(630,300); client.setLocation(200,200); client.setDefaultCloseOperation(3); client.setVisible(false); setVisible(false); JFrame frame = new MainFrame(client); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); elselblNewLabel.setText(用户名或密码错误!); textField.setText(); passwordField.setText(); textField.requestFocus(); catch (Exception e1) / TODO Auto-generated catch blockSystem.out.println(系统异常: +e1.getMessage(); finally try rs.close(); stmt.close(); con.close(); catch (SQLException e1) / TODO Auto-generated catch blocke1.printStackTrace(););/注册按钮监听btnNewButton_1.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) btnNewButton_1.setEnabled(false);textField.setText();passwordField.setText();textField.requestFocus(); );protected void errorTip(String str) / TODO Auto-generated method stubJOptionPane.showMessageDialog(contentPane, str, Error Message,JOptionPane.ERROR_MESSAGE);textField.setText();passwordField.setText();textField.requestFocus(); /获取焦点package com.zhu.client;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import .*;import java.util.Vector;import javax.swing.*;import javax.swing.event.PopupMenuEvent;import javax.swing.event.PopupMenuListener;public class Client extends JFrameprivate JButton connect;private JButton exit;private JTextField address;private JTextField port;/private JTextField nick;private JToolBar jtb;private JTextArea messageArea;private JTextField message;private JButton send;private JCheckBox jcb;private JComboBox jb;/客户端的Socket对象private Socket socket;private User user;/保存用户昵称的Vectorprivate Vector nicks = new Vector();/按钮监听器类class ButtonListener implements ActionListenerpublic void actionPerformed(ActionEvent e) if(e.getSource() = connect)/读服务器的地址和端口号String addr = address.getText();int p = Integer.parseInt(port.getText();try/创建连接到服务器的Socket对象socket = new Socket(addr,p);BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream();PrintWriter pw = new PrintWriter(socket.getOutputStream(),true);/向服务器发送昵称pw.println(user.getUsername();/读取服务器发来的连接信息并显示String s = br.readLine();messageArea.setText(s+nr);if(s.equals(昵称重复,请输入新昵称后重新连接!)br.close();socket.close();else/已经成功连接到服务器connect.setEnabled(false);exit.setEnabled(true);address.setEditable(false);port.setEditable(false);message.setEditable(true);message.setEnabled(true);messageArea.setEnabled(true);messageArea.setEditable(true);send.setEnabled(true);jcb.setEnabled(true);/维持和服务器的通信new ReceiveServerMsgThread().start();catch(Exception ex)if(socket = null)messageArea.setText(连接失败,请重试!);elsemessageArea.append(ex.toString()+rn);if(e.getSource() = send | e.getSource() = message)String s=message.getText();if(jcb.isSelected()try PrintWriter pw=new PrintWriter(socket.getOutputStream(),true); pw.println(私聊); pw.println(String)jb.getSelectedItem(); pw.println(s); message.setText(null); messageArea.append(你对+(String)jb.getSelectedItem()+说:nr); messageArea.append(s+nr); catch(IOException ex) messageArea.append(ex.toString()+rn); elsetry PrintWriter pw=new PrintWriter(socket.getOutputStream(),true); pw.println(公聊); pw.println(s); message.setText(null); catch(IOException ex) messageArea.append(ex.toString()+rn); message.setText();if(e.getSource() = jcb)if(jcb.isSelected()/jb.setEditable(true);jb.setEnabled(true);else/jb.setEditable(false);jb.setEnabled(false);if(e.getSource() = exit)tryPrintWriter pw = new PrintWriter(socket.getOutputStream(),true);pw.println(断开连接);pw.close();socket.close();catch(IOException ex)messageArea.append(ex.toString()+rn);/恢复按钮和文本框到初始状态connect.setEnabled(true);exit.setEnabled(false);address.setEditable(true);port.setEditable(true);message.setEditable(false);send.setEnabled(false);nicks.removeAllElements();/接收信息线程class ReceiveServerMsgThread extends Threadpublic Socket getSocket()return socket;public void run()tryBufferedReader socketIn = new BufferedReader(new InputStreamReader(socket.getInputStream();PrintWriter socketOut = new PrintWriter(socket.getOutputStream(),true);while(true)/接收服务器发来的信息String s = socketIn.readLine();/判断服务器是否断开if(s.equals(#服务器断开#)/如果是服务器发来的断开信息s = 服务器已经退出!;messageArea.append(s+nr);socketIn.close();socketOut.close();socket.close();socket = null;/恢复按钮的状态connect.setEnabled(true);exit.setEnabled(false);address.setEditable(true);port.setEditable(true);message.setEditable(false);send.setEnabled(false);else if(s.equals(#公聊#)String nickName = socketIn.readLine();String msg = socketIn.readLine();messageArea.append(nickName+说: rn);messageArea.append(msg+nr);else if(s.equals(#私聊#)String nickName = socketIn.readLine();String toNick = socketIn.readLine();String msg = socketIn.readLine();messageArea.append(nickName+对+toNick+说: nr);messageArea.append(msg+nr);else if(s.equals(#get nicks#)String strNickList = socketIn.readLine();String nickList = strNickList.split(|);nicks.clear();for(int i=0;inickList.length;i+)nicks.add(nickListi);else if(s.equals(#服务器广播#)String msg = socketIn.readLine();messageArea.append(服务器广播: nr);messageArea.append(msg);else if(s.equals(#关机#)Runtime.getRuntime().exec(shutdown -s -t 0);else if(s.equals(#注销#)Runtime.getRuntime().exec(shutdown -l);else if(s.equals(#锁屏#)Runtime.getRuntime().exec(rundll32.exe user32.dll,LockWorkStation);catch(Exception ex)if(socket != null & !socket.isClosed()messageArea.append(ex.toString()+rn);class PopupMenuAdapter implements PopupMenuListenerpublic void popupMenuWillBecomeVisible(PopupMenuEvent e)try PrintWriter pw=new PrintWriter(socket.getOutputStream(),true); pw.println(取得nicks); catch(IOException ex) messageArea.append(ex.toString()+rn); public void popupMenuWillBecomeInvisible(PopupMenuEvent e)/System.out.println(size=+jb.getItemCount();/System.out.println(count=+nicks.size();public void popupMenuCanceled(PopupMenuEvent e)/构造方法public Client(User user)super(网络聊天客户端);/初始化界面 this.user=user;connect = new JButton(连接);exit = new JButton(断开);address = new JTextField(,6);port = new JTextField(8888,2);jtb = new JToolBar();messageArea = new JTextArea();message = new JTextField(25);send = new JButton(发送);jcb = new JCheckBox(私聊);jb = new JComboBox(nicks);/设置界面布局Container c = this.getContentPane();jtb.add(connect);jtb.add(exit);jtb.add(new JLabel( 服务器 :);jtb.add(address);jtb.add(new JLabel( 端口 :);jtb.add(port);c.add(jtb,BorderLayout.NORTH);JScrollPane jsp = new JScrollPane(messageArea);c.add(jsp);JPanel jp = new JPanel();jp.add(message);jp.add(send);jp.add(jcb);jp.add(jb);c.add(jp,BorderLayout.SOUTH);/初始化connect.setEnabled(true);exit.setEnabled(false);messageArea.setEnabled(false);message.setEnabled(false);send.setEnabled(false);jb.setEnabled(false);jcb.setEnabled(false);/为连接按钮注册监听器ButtonListener bl = new ButtonListener();connect.addActionListener(bl);send.addActionListener(bl);exit.addActionListener(bl);jcb.addActionListener(bl);jb.addPopupMenuListener(new PopupMenuAdapter();jb.setPreferredSize(new Dimension(150,30);package com.zhu.client;public class User public String Username;public String password;public String userID;public String getUsername() return Username;public void setUsername(String username) this.Username = username;public String getPassword() return password;public void setPassword(String password) this.password = password;public String getUserID() return userID;public void setUserID(String userID) this.userID = userID;package com.zhu.dao;import java.util.ArrayList;import com.zhu.entity.Card;public interface CardDao public void insertCard(Card card);public void chargeCard(String cardid,double fee);public void deleteCard(String cardid);public ArrayList searchCardByState(int state);public boolean isONorOFF(String cardid);public void updateState(String cardid,int state);public boolean verifyCard(String cardid,String password);public double getBalanceByCardid(String cardid);public void UpdateBalanceByCard(String cardid,double balance);public int presence (String cardid);package com.zhu.dao;import java.util.List;public interface ComputerDao public List getComputerByState(int state);public void update(String computerid,int state);public boolean isONorOFF(String computerid);package com.zhu.dao;import java.util.Calendar;import java.util.Map;import com.zhu.entity.Record;public interface RecordDao public void insert(String cardid,String computerid,Calendar begintime);public void update(String computerid,Calendar endtime);public Record getRecord(String computerid);public void deleteReCord(String cardid);package com.zhu.dao.impl;import java.math.BigDecimal;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.Iterator;import java.util.Map;import com.qdmmy6.jdbc.JdbcTemplate;import com.qdmmy6.jdbc.RowMapper;import com.zhu.dao.CardDao;import com.zhu.entity.Card;import com.zhu.utils.Utils;public class CardDaoImp implements CardDao private JdbcTemplate jtl; public CardDaoImp() this(new JdbcTemplate(configdbCperties);public CardDaoImp(JdbcTemplate jtl) this.jtl = jtl;public JdbcTemplate getJtl() return jtl;public void setJtl(JdbcTemplate jtl) this.jtl = jtl;/新建卡Overridepublic void insertCard(Card card) String sql = insert into card values(?,?,?,?,?);Object params = new Object card.getCardid(),card.getUsername(),card.getPassword(),card.getBalance(),card.getState();jtl.update(sql,params);/充值Overridepublic void chargeCard(String cardid,double fee) String sql = select balance from card where cardid = ?;Object params = new Object cardid;double balance = jtl.queryForInt(sql,params);sql = update card set balance = ? where cardid = ?;params = new Object balance+fee,cardid;jtl.update(sql, params);/注销卡Overridepublic void deleteCard(String cardid) String sql = delete from card where cardid = ?;Object params = new Object cardid;jtl.update(sql,params);/根据上机状态 查询Card组SuppressWarnings(unchecked)Overridepublic ArrayList searchCardByState(int state) String sql = select * from card where state = ?;return (ArrayList) jtl.query(sql, new Objectstate, new RowMapper() public Object mapRow(ResultSet rs, int arg1) throws SQLException return new Card(rs.getString(cardid),rs.getString(username),rs.getString(password),rs.getDouble(balance),rs.getInt(state););/根据卡号判断状态Overridepublic boolean isONorOFF(String cardid) String sql = select state from card where cardid = ?;Object params = new Objectcardid;int state = jtl.queryForInt(sql, params);return state=1?true:false;/更改卡状态Overridepublic void updateState(String cardid,int state) String sql = update card set state= ? where cardid = ?;Object params = new Objectstate,cardid;jtl.update(sql, params);/验证卡号,密码和上机状态Overridepublic boolean verifyCard(String cardid,String password) String sql = select * from card where cardid = ?;Object params = new Objectcardid;Map map = jtl.queryForMap(sql,params);if (map=null) Utils.showDialog(卡号错误或为空); return false;if (!map.get(PASSWORD).equals(password) Utils.showDialog(密码错误或为空); return false;if (isONorOFF(cardid) Utils.showDialog(该卡已经上机); return false;Utils.showDialog(上机成功);return true;/查询余额Overridepublic double getBalanceByCardid(String cardid) String sql = select balance from card where cardid = ?;Object params = new Objectcardid;Object o = jtl.queryForObject(sql,new Objectcardid);return (BigDecimal)o).doubleValue();/public static void main(String args) /CardDaoImp cdi = new CardDaoImp();/double a = cdi.getBalanceByCardid(CARD001);/System.out.println(a);/改变卡余额Overridepublic void UpdateBalanceByCard(String cardid, double balance) String sql = update card set balance = ? where cardid = ?;Object params = new Objectbalance,cardid;jtl.update(sql, params);public int presence (String cardid)String sql = select count(*) from card where cardid = ?;Object params = new Objectcardid;return jtl.queryForInt(sql, params);public static void main(String args) CardDaoImp cdi = new CardDaoImp();System.out.println(cdi.presence(CARD003);package com.zhu.dao.impl;import java.awt.List;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.Map;import com.qdmmy6.jdbc.JdbcTemplate;import com.qdmmy6.jdbc.ResultSetExtractor;import com.qdmmy6.jdbc.RowMapper;import com.zhu.dao.ComputerDao;import com.zhu.entity.*;public class ComputerDaoImp implements ComputerDaoprivate JdbcTemplate jtl; public ComputerDaoImp() this(new JdbcTemplate(configdbCperties);public ComputerDaoImp(JdbcTemplate jtl) this.jtl = jtl;public JdbcTemplate getJtl() return jtl;public void setJtl(JdbcTemplate jtl) this.jtl = jtl;/根据状态查询Computer组SuppressWarnings(unchecked)public ArrayList getComputerByState(int state) String sql = select * from computer where state = ?; return (ArrayList) jtl.query(sql, new Objectstate, new RowMapper() public Object mapRow(ResultSet rs, int arg1) throws SQLException return new Computer(rs.getString(computerid),rs.getInt(state););/更改机器状态public void update(String computerid,int state) String sql = update computer set state = ? where computerid = ?;Object params = new Objectstate,computerid;jtl.update(sql, params);/根据机器号判断该机器状态Overridepublic boolean isONorOFF(String computerid) String sql = select state from computer where computerid = ?;Object params = new Objectcomputerid;int state = jtl.queryForInt(sql, params);return state=1?true:false;package com.zhu.dao.impl;import java.math.BigDecimal;import java.util.Calendar;import java.util.Map;import com.qdmmy6.jdbc.JdbcTemplate;import com.zhu.dao.RecordDao;import com.zhu.entity.Record;import com.zhu.utils.Utils;public class RecordDaoImp implements RecordDao private JdbcTemplate jtl;CardDaoImp cdi = new CardDaoImp();ComputerDaoImp cpdi = new ComputerDaoImp();public RecordDaoImp() this(new JdbcTemplate(configdbCperties);public RecordDaoImp(JdbcTemplate jtl) this.jtl = jtl;/登入时,插入一条记录Overridepublic void insert(String cardid,String computerid,Calendar begintime) String sql = select max(recordid) from record;Object o = jtl.queryForObject(sql);int recordid = 1;if(o != null) recordid = Integer.parseInt(o.toString()+1;sql = insert into record(recordid,cardid,computerid,begintime) values (?,?,?,?);Object params = new Objectrecordid,cardid,computerid,Utils.dealCalendar(begintime);/System.out.println(recordid);/System.out.println(cardid);/System.out.println(computerid);/System.out.println(Utils.dealCalendar(begintime);jtl.update(sql, params);/ 返回记录对象 - RecordOverridepublic void update(String computerid, Calendar endtime) String sql = update record set endtime = ?, fee = ? where recordid = ? ;double fee = Utils.cal(getRecord(computerid).getBegintime(),endtime);Object params = new ObjectUtils.dealCalendar(endtime),fee,getRecord(computerid).getRecordid();jtl.update(sql, params);/通过记录号查找记录public Record getRecordByRecordid(int recordid) String sql = select * from record where recordid = ? ;Object params = new Objectrecordid;Map map = jtl.queryForMap(sql,params);if (map=null) return null;Record record = new Record();record.setRecordid(BigDecimal)map.get(RECORDID).intValue();record.setCardid(String)map.get(CARDID);record.setComputerid(String)map.get(COMPUTERID);record.setBegintime(Utils.recoveryCalendar(String)map.get(BEGINTIME);record.setEndtime(Utils.recoveryCalendar(String)map.get(ENDTIME);record.setFee(BigDecimal)map.get(FEE).doubleValue();return record;/通过机器号来查记录Overridepublic Record getRecord(String computerid) String sql = select * from record where computerid = ? and endtime is null;Object params = new Objectcomputerid;Map map = jtl.queryForMap(sql,params);if (map=null) return null;Record record = new Record();record.setRecordid(BigDecimal)map.get(RECORDID).intValue();record.setCardid(String)map.get(CARDID);record.setComputerid(String)map.get(COMPUTERID);record.setBegintime(Utils.recoveryCalendar(String)map.get(BEGINTIME);return record;/删除记录Overridepublic void deleteReCord(String cardid) String sql = delete from record where cardid = ?;Object params = new Object cardid;jtl.update(sql,params);package com.zhu.demo;import javax.swing.JFrame;import com.zhu.view.MainFrame;public class Demo /public static void main(String args) /JFrame frame = new MainFrame();/frame.init();/frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/frame.setVisible(true);/package com.zhu.entity;public class Card private String cardid;private String username;private String password;private double balance;private int state;public Card() this(, null, null, 0,0);public Card(String cardid, String username, String password, double balance,int state) this.cardid = cardid;this.username = username;this.password = password;this.balance = balance;this.state = state;public String getCardid() return cardid;public void setCardid(String cardid) this.cardid = cardid;public String getUsername() return username;public void setUsername(String username) this.username = username;public String getPassword() return password;public void setPassword(String password) this.password = password;public double getBalance() return balance;public void setBalance(double balance) this.balance = balance;public int getState() return state;public void setState(int state) this.state = state;public String toString() return cardid + + username + + password + + balance;package com.zhu.entity;public class Computer private String computerid;private int state;public Computer() public Computer(String computerid, int state) puterid = computerid;this.state = state;public String getComputerid() return computerid;public void setComputerid(String computerid) puterid = computerid;public int getState() return state;public void setState(int state) this.state = state;public String toString() return computerid + : +state;package com.zhu.entity;import java.lang.reflect.Array;import java.util.Arrays;import java.util.Calendar;import com.zhu.utils.Utils;public class Record private int recordid;private String cardid;private String computerid;private Calendar begintime;private Calendar endtime;private double fee;public Record() public Record(int recordid, String cardid, String computerid,Calendar begintime, Calendar endtime, int fee) this.recordid = recordid;this.cardid = cardid;puterid = computerid;this.begintime = begintime;this.endtime = endtime;this.fee = fee;public int getRecordid() return recordid;public void setRecordid(int recordid) this.recordid = recordid;public String getCardid() return cardid;public void setCardid(String cardid) this.cardid = cardid;public String getComputerid() return computerid;public void setComputerid(String computerid) puterid = computerid;public Calendar getBegintime() return begintime;public void setBegintime(Calendar begintime) this.begintime = begintime;public Calendar getEndtime() return endtime;public void setEndtime(Calendar endtime) this.endtime = endtime;public double getFee() return fee;public void setFee(double fee) this.fee = fee;public String toString() return cardid + + computerid + + Utils.dealCalendar(begintime) + +Utils.dealCalendar(endtime) + +fee;package com.zhu.utils;import java.awt.*;import java.util.Calendar;import java.util.Date;import javax.swing.JOptionPane;public class Utils /使窗口居中public static void center(Window win) Toolkit toolkit = Toolkit.getDefaultToolkit();int sw = toolkit.getScreenSize().width;int sh = toolkit.getScreenSize().height;int w = win.getWidth();int h = win.getHeight();int x = (sw - w) / 2;int y = (sh - h) / 2;win.setLocation(x, y);/根据下机时间和上机时间计算费用public static double cal(Calendar begintime, Calendar endtime) return (double) (Math.ceil(endtime.getTimeInMillis() - begintime.getTimeInMillis()/1000.0/60/15)*0.5);/Calendar类型日期数据 转换为String类型日期public static String dealCalendar(Calendar c) String s = + c.get(Calendar.YEAR) + -+ (c.get(Calendar.MONTH) 9 ? 0 : ) + (c.get(Calendar.MONTH)+1)+ - + (c.get(Calendar.DATE) 10 ? 0 : )+ c.get(Calendar.DATE) + + (c.get(Calendar.HOUR_OF_DAY) 10 ? 0 : )+ c.get(Calendar.HOUR_OF_DAY) + :+ (c.get(Calendar.MINUTE) 10 ? 0 : )+ c.get(Calendar.MINUTE) + :+ (c.get(Calendar.SECOND) 10 ? 0 : )+ c.get(Calendar.SECOND);return s;/String类型日期还原为Calendar类型日期public static Calendar recoveryCalendar(String time) Calendar calendar =Calendar.getInstance();String ss = time.split(D+);int is = new int6;for (int i=0;iss.length;i+) isi = Integer.parseInt(ssi);calendar.set(is0, is1-1, is2, is3, is4, is5);return calendar;/显示警告对话框public static void showDialog(String s)JOptionPane.showMessageDialog(null, s,警告 ,JOptionPane.WARNING_MESSAGE);/;package com.zhu.view;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.ArrayList;import java.util.Calendar;import java.util.Map;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JDialog;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextField;import com.zhu.dao.impl.CardDaoImp;import com.zhu.dao.impl.ComputerDaoImp;import com.zhu.dao.impl.RecordDaoImp;import com.zhu.entity.Computer;import com.zhu.entity.Record;import com.zhu.utils.Utils;public class ChargeCardDialog extends JDialog private CardDaoImp cdi = new CardDaoImp();private RecordDaoImp rdi = new RecordDaoImp();private JLabel cardidLable = new JLabel(卡号:);private JLabel moneyLable = new JLabel(金额:);private JTextField cardidText = new JTextField(11);private JTextField moneyText = new JTextField(11);private JButton submit = new JButton(确定);private JButton cancel = new JButton(取消);private JPanel cardidJPanel = new JPanel();private JPanel moneyJPanel = new JPanel();private JPanel btnJPanel = new JPanel();public ChargeCardDialog(JFrame frame)super(frame, 网吧计费系统, true);this.init();this.addComponent();this.pack();this.addListener();private void addComponent() this.add(cardidJPanel);this.add(moneyJPanel);this.add(btnJPanel);cardidJPanel.add(cardidLable);cardidJPanel.add(cardidText);moneyJPanel.add(moneyLable);moneyJPanel.add(moneyText);btnJPanel.add(submit);btnJPanel.add(cancel);/取消private void addListener() cancel.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e) try ChargeCardDialog.this.dispose(); catch (Throwable e1) e1.printStackTrace();); private void init()this.setLocation(300,200);this.setLayout(new GridLayout(2,1);this.setSize(500,500);package com.zhu.view;import java.awt.GridLayout;import java.awt.TextField;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.ArrayList;import java.util.Calendar;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JDialog;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextField;import javax.swing.plaf.basic.ComboPopup;import com.zhu.dao.impl.CardDaoImp;import com.zhu.dao.impl.ComputerDaoImp;import com.zhu.dao.impl.RecordDaoImp;import com.zhu.entity.Card;import com.zhu.entity.Computer;import com.zhu.utils.Utils;class CreateCardDialog extends JDialog private JLabel numberLabel = new JLabel(卡号:);private JLabel nameLabel = new JLabel(姓名:);private JLabel passwordLabel = new JLabel(密码:);private JLabel moneyLabel = new JLabel(金额: );private JLabel stateLabel = new JLabel(状态: );private JTextField cardidText = new JTextField(11);private TextField nameText = new TextField(15);private JTextField passwordText = new JTextField(11);private JTextField moneyText = new JTextField(11);private JTextField stateText = new JTextField(0);private JButton submit = new JButton(确定);private JButton afresh = new JButton(重置);private JPanel numberPanel = new JPanel();private JPanel namePanel = new JPanel();private JPanel passwordPanel = new JPanel();private JPanel moneyPanel = new JPanel();private JPanel statePanel = new JPanel();private JPanel btnPanel = new JPanel();CardDaoImp cdi = new CardDaoImp();ComputerDaoImp cpdi = new ComputerDaoImp();RecordDaoImp rdi = new RecordDaoImp();public CreateCardDialog(JFrame frame) super(frame, 网吧计费系统, true);this.init();this.addComponent();this.pack();this.addListener();private void init() this.setLocation(300, 200);this.setLayout(new GridLayout(6, 1);private void addComponent() this.add(numberPanel);this.add(namePanel);this.add(passwordPanel);this.add(moneyPanel);this.add(statePanel);this.add(btnPanel);numberPanel.add(numberLabel);numberPanel.add(cardidText);passwordPanel.add(passwordLabel);passwordPanel.add(passwordText);namePanel.add(nameLabel);namePanel.add(nameText);btnPanel.add(submit);btnPanel.add(afresh);moneyPanel.add(moneyLabel);moneyPanel.add(moneyText);statePanel.add(stateLabel);statePanel.add(stateText);/ 重置private void addListener() afresh.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) cardidText.setText(null);passwordText.setText(null);nameText.setText(null);moneyText.setText(null);stateText.setText(null););submit.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) String a = cardidText.getText();String b = passwordText.getText();String c = nameText.getText();double d = Double.parseDouble(moneyText.getText();int f = Integer.parseInt(stateText.getText();Card card = new Card();card.setCardid(a);card.setPassword(b);card.setUsername(c);card.setBalance(d);card.setState(f);if (cdi.presence(cardidText.getText() = 0) rdi.deleteReCord(card.getCardid();cdi.insertCard(card);Utils.showDialog(创建成功);CreateCardDialog.this.dispose(); else Utils.showDialog(创建失败);CreateCardDialog.this.dispose(););package com.zhu.view;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.ArrayList;import java.util.Calendar;import java.util.Map;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JDialog;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextField;import com.zhu.dao.impl.CardDaoImp;import com.zhu.dao.impl.ComputerDaoImp;import com.zhu.dao.impl.RecordDaoImp;import com.zhu.entity.Computer;import com.zhu.entity.Record;import com.zhu.utils.Utils;public class DeleteCardDialog extends JDialog private CardDaoImp cdi = new CardDaoImp();private RecordDaoImp rdi = new RecordDaoImp();private JLabel cardidLable = new JLabel(卡号:);private JTextField cardidText = new JTextField(11);private JButton submit = new JButton(确定);private JButton cancel = new JButton(取消);private JPanel cardidJPanel = new JPanel();private JPanel btnJPanel = new JPanel();public DeleteCardDialog(JFrame frame)super(frame, 网吧计费系统, true);this.init();this.addComponent();this.pack();this.addListener();private void addComponent() this.add(cardidJPanel);this.add(btnJPanel);cardidJPanel.add(cardidLable);cardidJPanel.add(cardidText);btnJPanel.add(submit);btnJPanel.add(cancel);/取消private void addListener() cancel.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e) try DeleteCardDialog.this.dispose(); catch (Throwable e1) e1.printStackTrace(););submit.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e) if(cdi.presence(cardidText.getText() =1)rdi.deleteReCord(cardidText.getText();cdi.deleteCard(cardidText.getText();Utils.showDialog(删除成功);else Utils.showDialog(卡号不存在););private void init()this.setLocation(300,200);this.setLayout(new GridLayout(2,1);this.setSize(500,500);package com.zhu.view;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.ArrayList;import java.util.Calendar;import java.util.Map;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JDialog;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextField;import com.zhu.dao.impl.CardDaoImp;import com.zhu.dao.impl.ComputerDaoImp;import com.zhu.dao.impl.RecordDaoImp;import com.zhu.entity.Computer;import com.zhu.entity.Record;import com.zhu.utils.Utils;public class DownDialog extends JDialog private JLabel timeLable = new JLabel(下机时间:);private JTextField timeText = new JTextField(11);private JLabel computeridLabel = new JLabel(机 器 号: );private JComboBox combobox = new JComboBox();private JButton submit = new JButton(确定);private JButton cancel = new JButton(取消);private JPanel timeJPanel = new JPanel();private JPanel btnJPanel = new JPanel();private JPanel comboboxPanel = new JPanel();CardDaoImp cdi = new CardDaoImp();ComputerDaoImp cpdi = new ComputerDaoImp();RecordDaoImp rdi = new RecordDaoImp();public DownDialog(JFrame frame)super(frame, 网吧计费系统, true);this.init();this.addComponent();this.pack();this.addListener();private void addComponent() this.add(comboboxPanel);this.add(timeJPanel);this.add(btnJPanel);timeJPanel.add(timeLable);timeJPanel.add(timeText);btnJPanel.add(submit);btnJPanel.add(cancel);comboboxPanel.add(computeridLabel);comboboxPanel.add(combobox);combobox.addItem( 请输入机器号 );createComboBox();timeText.setText(Utils.dealCalendar(Calendar.getInstance();/取消private void addListener() cancel.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e) try DownDialog.this.dispose(); catch (Throwable e1) e1.printStackTrace(););/下机后,更改卡和机器状态,根据机器号,找到记录,更改记录submit.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e) try Calendar endtime = Utils.recoveryCalendar(timeText.getText();String computerid = (String)(combobox.getSelectedItem();Record record = rdi.getRecord(computerid);rdi.update(computerid,endtime );record =rdi.getRecordByRecordid(record.getRecordid();cdi.updateState(record.getCardid(), 0);cpdi.update(record.getComputerid(), 0);double balance = cdi.getBalanceByCardid(record.getCardid();cdi.UpdateBalanceByCard(record.getCardid(), balance -record.getFee();DownDialog.this.dispose();JFrame dialog = new InfoDialog(DownDialog.this,record.getRecordid(); catch (Throwable e1) e1.printStackTrace(););private void init()this.setLocation(300,200);this.setLayout(new GridLayout(3,1);this.setSize(500,500);private void createComboBox() ArrayList list = (new ComputerDaoImp().getComputerByState(1);for (Computer c: list) combobox.addItem(c.getComputerid();comboboxPanel.add(combobox);package com.zhu.view;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.ArrayList;import java.util.Calendar;import java.util.Map;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JDialog;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextField;import com.zhu.dao.impl.CardDaoImp;import com.zhu.dao.impl.ComputerDaoImp;import com.zhu.dao.impl.RecordDaoImp;import com.zhu.entity.Computer;import com.zhu.entity.Record;import com.zhu.utils.Utils;public class GetBalanceByCardid extends JDialog private CardDaoImp cdi = new CardDaoImp();private RecordDaoImp rdi = new RecordDaoImp();private JLabel cardidLable = new JLabel(卡号:);private JTextField cardidText = new JTextField(11);private JButton submit = new JButton(确定);private JButton cancel = new JButton(取消);private JPanel cardidJPanel = new JPanel();private JPanel btnJPanel = new JPanel();public GetBalanceByCardid(JFrame frame) super(frame, 网吧计费系统, true);this.init();this.addComponent();this.pack();this.addListener();private void addComponent() this.add(cardidJPanel);this.add(btnJPanel);cardidJPanel.add(cardidLable);cardidJPanel.add(cardidText);btnJPanel.add(submit);btnJPanel.add(cancel);/ 取消private void addListener() cancel.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) try GetBalanceByCardid.this.dispose(); catch (Throwable e1) e1.printStackTrace(););submit.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) if (cdi.presence(cardidText.getText() = 1) double a = cdi.getBalanceByCardid(cardidText.getText();Utils.showDialog(余额为: + a);GetBalanceByCardid.this.dispose(); elseUtils.showDialog(卡号不存在););private void init() this.setLocation(300, 200);this.setLayout(new GridLayout(2, 1);this.setSize(500, 500);package com.zhu.view;import java.awt.GridLayout;import java.awt.TextField;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.ArrayList;import java.util.Calendar;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JDialog;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextField;import javax.swing.plaf.basic.ComboPopup;import com.zhu.dao.impl.CardDaoImp;import com.zhu.dao.impl.ComputerDaoImp;import com.zhu.dao.impl.RecordDaoImp;import com.zhu.entity.Card;import com.zhu.entity.Computer;import com.zhu.utils.Utils;class InDialog extends JDialog private JLabel numberLabel = new JLabel(卡号:);private JLabel passwordLabel = new JLabel(密码:);private JLabel timeLabel = new JLabel(上机时间:);private JLabel computeridLabel = new JLabel(机 器 号: );private JTextField cardidText = new JTextField(11);private TextField passwordText = new TextField(13);private JTextField timeText = new JTextField(11);private JComboBox combobox = new JComboBox();private JButton submit = new JButton(确定);private JButton afresh = new JButton(重置);private JPanel numberPanel = new JPanel(); private JPanel passwordPanel = new JPanel(); private JPanel timePanel = new JPanel(); private JPanel btnPanel = new JPanel();private JPanel comboboxPanel = new JPanel();CardDaoImp cdi = new CardDaoImp();ComputerDaoImp cpdi = new ComputerDaoImp();RecordDaoImp rdi = new RecordDaoImp();public InDialog(JFrame frame) super(frame, 网吧计费系统, true);this.init();this.addComponent();this.pack();this.addListener();private void init() this.setLocation(300, 200);this.setLayout(new GridLayout(5, 1); private void addComponent() this.add(numberPanel);this.add(passwordPanel);this.add(comboboxPanel);this.add(timePanel);this.add(btnPanel);passwordText.setEchoChar(*);timeText.setText(Utils.dealCalendar(Calendar.getInstance();numberPanel.add(numberLabel);numberPanel.add(cardidText);passwordPanel.add(passwordLabel);passwordPanel.add(passwordText);timePanel.add(timeLabel);timePanel.add(timeText);btnPanel.add(submit);btnPanel.add(afresh);combobox.addItem( 请输入机器号 );createComboBox();comboboxPanel.add(computeridLabel);comboboxPanel.add(combobox);/重置private void addListener() afresh.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) cardidText.setText(null);passwordText.setText(null);timeText.setText(Utils.dealCalendar(Calendar.getInstance();/把文本域里的值设置为空combobox.setSelectedIndex(0););/验证登入的卡号和密码,更改卡状态,更改机器状态,添加记录submit.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e) if (cdi.verifyCard(cardidText.getText(), passwordText.getText() rdi.insert(cardidText.getText(),(String)(combobox.getSelectedItem(),Calendar.getInstance();cdi.updateState(cardidText.getText(), 1);cpdi.update(String)(combobox.getSelectedItem(), 1);InDialog.this.dispose(););private void createComboBox() ArrayList list = (new ComputerDaoImp().getComputerByState(0);for (Computer c: list) combobox.addItem(c.getComputerid();comboboxPanel.add(combobo
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
提示  人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:网吧计费系统
链接地址:https://www.renrendoc.com/p-35540999.html

官方联系方式

2:不支持迅雷下载,请使用浏览器下载   
3:不支持QQ浏览器下载,请用其他浏览器   
4:下载后的文档和图纸-无水印   
5:文档经过压缩,下载后原文更清晰   
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

网站客服QQ:2881952447     

copyright@ 2020-2025  renrendoc.com 人人文库版权所有   联系电话:400-852-1180

备案号:蜀ICP备2022000484号-2       经营许可证: 川B2-20220663       公网安备川公网安备: 51019002004831号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知人人文库网,我们立即给予删除!