package netbar;
import javax.swing.*;
import javax.swing.Timer;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import java.util.*;
import java.sql.Timestamp;
import java.util.Date;
public class MainFrame extends JFrame implements ActionListener
{
public MainFrame()
{
//卡式布局
card=new CardLayout();
cards=new JPanel(card);
c=getContentPane();
c.add(cards);
setTitle("LS网吧记费管理系统");
setSize(800,600);
// Center the window
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = getSize();
if (frameSize.height > screenSize.height) {
frameSize.height = screenSize.height;
}
if (frameSize.width > screenSize.width) {
frameSize.width = screenSize.width;
}
setLocation((screenSize.width - frameSize.width) / 2,(screenSize.height - frameSize.height) / 2);
JMenuBar bar=new JMenuBar();
muuse=new JMenu("使用");
muhelp=new JMenu("帮助");
muexit=new JMenu("退 出");
miup=new JMenuItem("上机");
mioff=new JMenuItem("下机");
miabout=new JMenuItem("关于");
miexit=new JMenuItem("退出");
mimessage=new JMenuItem("查询");
defaultpanel=new DefaultPanel();
aboutpanel=new AboutPanel();
messagepanel=new MessagePanel(card,cards);
UpPanel uppanel=new UpPanel();
offpanel=new OffPanel();
//时钟的监听
ActionListener listener =new TimeControl();
//一个记时时钟,每10秒启动一个事件
time=new Timer(10000,listener);
cards.add(defaultpanel,"default");
cards.add(aboutpanel,"about");
cards.add(messagepanel,"message");
cards.add(uppanel,"up");
cards.add(offpanel,"off");
card.show(cards,"default");
muuse.add(miup);
muuse.add(mioff);
muuse.add(mimessage);
muhelp.add(miabout);
muexit.add(miexit);
mioff.setEnabled(false);
mimessage.setEnabled(false);
//用此Frame做监听
miup.addActionListener(this);
mioff.addActionListener(this);
mimessage.addActionListener(this);
miabout.addActionListener(this);
//此事件比较简单,所以用匿名内部类
miexit.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
db.closeResultSet();
System.exit(0);
}
});
bar.add(muuse);
bar.add(muhelp);
bar.add(muexit);
setJMenuBar(bar);
}
public void actionPerformed(ActionEvent e)
{
//匹配所有的事件源
Object source=e.getSource();
if(source==mimessage)
{
card.show(cards,"message");
messagepanel.showResult(usingid,balance);
}
if(source==miabout)
{
card.show(cards,"about");
}
if(source==miup)
{
card.show(cards,"up");
}
if(source==mioff)
{
card.show(cards,"off");
offpanel.setcomputerid(usingid);
}
}
/*
上机版面
*/
class UpPanel extends JPanel{
public UpPanel()
{
cardidlbl=new JLabel("卡号");
computeridlbl=new JLabel("上机号");
try
{
String sql="select id from computer where onuse=0";
rs=db.getResult(sql);
rs.beforeFirst();
items=new Vector();
while(rs.next())
{
items.add(rs.getString(1));
}
}catch(SQLException e)
{
System.out.println(e);
}
computeridcbo= new JComboBox(items);
cardidtex=new JTextField("");
passwordlbl=new JLabel("密码");
passwordpsf=new JPasswordField("");
upbtn=new JButton("上机");
offbtn=new JButton("取消");
setLayout(new GridLayout(4,2,100,50));
add(computeridlbl);
add(computeridcbo);
add(cardidlbl);
add(cardidtex);
add(passwordlbl);
add(passwordpsf);
add(upbtn);
add(offbtn);
//添加监听
offbtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
card.show(cards,"default");
}
});
upbtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
String cardid=cardidtex.getText().trim();
String password=(new String(passwordpsf.getPassword())).trim();
String sql;
//查询密码与用户名匹配的一项
sql=("select * from card where id='"+cardid+"'and Password='"+password+"'");
rs=db.getResult(sql);
boolean isexist=false;
try
{
//把游标指向结果集的第一行,如果没有数据则返回false
isexist=rs.first();
}
catch(SQLException w)
{
System.out.println(w);
}
//判断密码是否正确
if(!isexist)
{
JOptionPane.showMessageDialog(null,"用户名不存在,或密码不正确");
passwordpsf.setText("");
return;
}
//如果密码正确则判断余额是否少于一小时
else
{
try
{
sql="select balance from card where id='"+cardid+"'";
System.out.println(sql);
rs=db.getResult(sql);
rs.beforeFirst();
while(rs.next())
{
//把字符串转化为整形.以便计算
balance=Integer.parseInt(rs.getString(1));
}
}
catch(SQLException e2)
{
System.out.println(e2);
}
//如果少于一小时.则不让上机
if(balance<2)
{
cardidtex.setText("");
passwordpsf.setText("");
JOptionPane.showMessageDialog(null,"你的余额不够一小时.请充值后上机");
card.show(cards,"default");
}
//如果余额足够则该机占用标志设为1,并开始记时
else
{
usingid=(String)computeridcbo.getSelectedItem();
sql="update computer set onuse=1 where id='"+usingid+"'";
System.out.println(sql);
boolean success1=db.executeSql(sql);
//记费开始
fee=2;
Timestamp timestamp=new Timestamp((new Date()).getTime());
sql="insert into record(CardID,ComputerID,BeginTime,Fee) values('"+cardid+"','"+usingid+"','"+timestamp+"',"+fee+")";
System.out.println(sql);
boolean success2=db.executeSql(sql);
//开始扣费
balance-=2;
//修改用户余额
sql="update card set balance="+balance+" where id='"+cardid+"'";
boolean success3=db.executeSql(sql);
//如果两个修改都成功则可以上机
if(success1&success2&success3)
{
JOptionPane.showMessageDialog(null,"请自觉遵守网吧的条例,谢谢");
cardidtex.setText("");
passwordpsf.setText("");
miup.setEnabled(false);
mioff.setEnabled(true);
mimessage.setEnabled(true);
muexit.setEnabled(false);
//记时器启动
time.start();
}
else
{
JOptionPane.showMessageDialog(null,"上机不成功,请重试");
}
card.show(cards,"default");
}
}
}
});
}
private JLabel cardidlbl;
private JLabel computeridlbl;
private JComboBox computeridcbo;
private JTextField cardidtex;
private JLabel passwordlbl;
private JPasswordField passwordpsf;
private JButton upbtn;
private JButton offbtn;
}
/*
下机版面
*/
class OffPanel extends JPanel{
public OffPanel()
{
computeridlbl=new JLabel("机器号");
showcomputeridlbl=new JLabel("");
timelbl=new JLabel("当前时间");
showtimelbl=new JLabel("");
offbtn=new JButton("下机");
cancelbtn=new JButton("取消");
setLayout(new GridLayout(3,2,50,50));
add(computeridlbl);
add(showcomputeridlbl);
add(timelbl);
add(showtimelbl);
add(offbtn);
add(cancelbtn);
System.out.println(usingid);
showcomputeridlbl.setText("");
showtimelbl.setText(new Date().toString());
cancelbtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
card.show(cards,"default");
}
});
offbtn.addActionListener(new
javaLS网吧记费管理系统
4星 · 超过85%的资源 需积分: 9 155 浏览量
2007-04-19
20:23:35
上传
评论
收藏 201KB ZIP 举报
wip868
- 粉丝: 1
- 资源: 73
最新资源
- 毕业设计基于STM32的测量温度与压力的数据处理设计C语言完整源码+论文.zip
- 基于MATLAB的PCA算法人脸识别项目源码+GUI界面+说明文档.zip
- 基于STM32的测量温度与压力的数据处理设计源码+论文(毕业设计).zip
- Vision Transformer 网络对不同氨气氧气浓度轨迹RAS 图像数据集的分类,包含训练权重和数据集、迁移学习
- 基于C51带字库LCD12864(ST7920)的keil工程源码,只支持8位并口通讯(不支持串口),可显示中文.zip
- 基于SI4463射频模块433MD-SMA无线模块软硬件技术资料及(SI4463)IC技术资料文档.zip
- (GPS+北斗+GSM)HLK-GS2503模块软硬件开发资料包硬件参考设计(原理图PCB)+技术文档资料.zip
- 基于BERT+Biaffine结构的关系抽取模型源码+文档说明.zip
- 利用c语言编写的冒泡排序代码
- 基于Ansoft-HFSS知识总结hfss中文教程HFSS培训教材等技术资料合集(50个).zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈