📄 fuwuqi.java
字号:
import java.awt.event.*; //导入程序需要的类
import javax.swing.*;
import javax.swing.border.*;
import java.net.*;
import java.io.*;
import java.sql.*;
import java.awt.*;
public class Fuwuqi extends Frame implements ActionListener,Runnable //定义服务器端的类
{
public static void main(String[] args) //main 函数实例化服务器类
{
Fuwuqi f=new Fuwuqi();
f.setSize(500,400);
f.setVisible(true);
}
Label lkechengming=new Label("课程名称:");
Label lxuefen=new Label(" 学分:");
Label lleixing=new Label("成绩类型: ");
Checkbox fenshu=new Checkbox("分数 ");
Checkbox dengji=new Checkbox("等级");
CheckboxGroup cgroup=new CheckboxGroup();
Button zengjia=new Button("增加");
Button shanchu=new Button("删除");
Button blianjie=new Button(" 连接数据库 ");
Button bqidong=new Button("启动代理软件");
List list=new List();
JPanel p1=new JPanel();
Panel p2=new Panel();
Panel p3=new Panel();
Panel p4=new Panel();
Panel p5=new Panel();
Panel p6=new Panel();
Panel p7=new Panel();
Connection con=null;
Statement stmt=null;
ResultSet resultset=null;
ServerSocket serversocket=null;
Socket socket=null;
DataInputStream datain=null;
DataOutputStream dataout=null;
Thread thread=null;
String readin;
TextField tkechengming=new TextField(15);
Intext txuefen=new Intext();
private boolean connectdata=false;
private boolean statrthread=false;
public Fuwuqi() //服务器类构造函数
{
fenshu.setCheckboxGroup(cgroup); //分数与等级单选按钮设为同一组
dengji.setCheckboxGroup(cgroup);
fenshu.setState(true);
Font f=new Font("宋体",Font.PLAIN,12);
//下面设置面板的边框,背景色,及界面的形成
p1.setBorder(BorderFactory.createTitledBorder(null,"请输入课程的相关信息:",0,0,f));
p1.setBackground(Color.white);
p2.add(lkechengming);
p2.add(tkechengming);
p1.add(p2);
p3.add(lxuefen);
p3.add(txuefen);
p1.add(p3);
p1.add(lleixing);
p4.add(fenshu);
p4.add(dengji);
p1.add(p4);
this.zengjia.addActionListener(this);
this.shanchu.addActionListener(this);
p5.add(zengjia);
p5.add(shanchu);
p1.add(p5);
this.blianjie.addActionListener(this);
p6.add(blianjie);
this.bqidong.addActionListener(this);
p6.add(bqidong);
this.add(p6,"North");
p7.setLayout(new GridLayout(1,2));
p7.add(p1);
p7.add(list);
this.add(p7);
this.addWindowListener(new WindowListener() //为窗体填加关闭按钮的事件程序
{
public void windowOpened(WindowEvent e){}
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
public void windowClosed(WindowEvent e){}
public void windowIconified(WindowEvent e){}
public void windowDeiconified(WindowEvent e){}
public void windowActivated(WindowEvent e){}
public void windowDeactivated(WindowEvent e){}
});
}
public void actionPerformed(ActionEvent ex) //按钮事件监听器的实现
{
if(((Button)ex.getSource()).equals(blianjie)) //点击"连接"按钮
{
if(this.connectdata)
{
JOptionPane.showMessageDialog(this,"数据库已经连接!");
}
else
{
boolean success=true;
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e)
{
JOptionPane.showMessageDialog(this,e.toString());
success=false;
}
try
{
con=DriverManager.getConnection("jdbc:odbc:zonghecepingshujuku");//与数据库的连接
stmt=con.createStatement();
this.resultset=this.stmt.executeQuery("select * from 课程信息表");
this.list.removeAll();
while(this.resultset.next())
{
String temp=this.resultset.getString("课程名")+":"+this.resultset.getString("学分")
+":"+this.resultset.getString("成绩类型");
this.list.add(temp);
}
}
catch(Exception e)
{
JOptionPane.showMessageDialog(this,e.toString());
success=false;
}
if(success)
{
this.connectdata=true;
JOptionPane.showMessageDialog(this,"数据库连接成功");
}
}
}
if(((Button)ex.getSource()).equals(this.bqidong)) //点击启动按钮
{
if(this.connectdata && !this.statrthread )
{
thread=new Thread(this);
thread.start();
this.statrthread=true;
JOptionPane.showMessageDialog(this,"代理软件已启动!");
}
else
{
if(!this.connectdata)
{
JOptionPane.showMessageDialog(this,"请先连接数据库");
}
else
{
JOptionPane.showMessageDialog(this,"代理软件已启动!");
}
}
}
if(((Button)ex.getSource()).equals(this.zengjia)) //点击增加按钮
{
if(this.tkechengming.getText().trim().length()==0 || this.txuefen.getText().trim().length()==0)
{
JOptionPane.showMessageDialog(this,"课程名与学分都不能为空!");
}
else
{
String sql;
String xinxi;
String addcolsql;
if(this.fenshu.getState())
{
sql="insert into 课程信息表 values('" + this.tkechengming.getText()
+"','" + this.txuefen.getText() +"','分数')" ;
xinxi=this.tkechengming.getText()+":"+this.txuefen.getText() +":分数";
}
else
{
sql="insert into 课程信息表 values('" + this.tkechengming.getText()
+"','" + this.txuefen.getText() +"','等级')" ;
xinxi=this.tkechengming.getText()+":"+this.txuefen.getText() +":等级";
}
addcolsql="alter table 业务学习成绩表 add "+this.tkechengming.getText()+" char(20)";
try
{
int j=stmt.executeUpdate(addcolsql);
int i=stmt.executeUpdate(sql);
this.list.add(xinxi);
}
catch(Exception e)
{
JOptionPane.showMessageDialog(this,"添加失败,请确认你课程名是否含点、空格等非法字段请重试!");
}
}
}
if(((Button)ex.getSource()).equals(this.shanchu)) //点击删除按钮
{
String[] str=list.getSelectedItem().split(":");
String sql="delete from 课程信息表 where 课程名='"+str[0]+"'";
String delcolsql="alter table 业务学习成绩表 drop " +str[0];
try
{
int j=stmt.executeUpdate(delcolsql);
int i=stmt.executeUpdate(sql);
list.remove(list.getSelectedIndex());
}
catch(Exception e)
{
JOptionPane.showMessageDialog(this,e.toString()+"删除失败,请重试!");
}
}
}
public void run() //实现Runnable接口
{
try
{
serversocket=new ServerSocket(3636); //建立服务器端的socket
}
catch(Exception e)
{
JOptionPane.showMessageDialog(this,e.toString());
}
while(true)
{
System.out.println("wait to connet...");
try
{
this.socket=serversocket.accept();
System.out.println("accept....");
this.datain=new DataInputStream(this.socket.getInputStream());
this.dataout=new DataOutputStream(this.socket.getOutputStream());
this.readin=this.datain.readUTF();
System.out.println(this.readin);
String[] xinxis=this.readin.split(":");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -