以下方法實(shí)現(xiàn)了用戶界面登陸
創(chuàng)新新互聯(lián),憑借10年的網(wǎng)站制作、成都網(wǎng)站建設(shè)經(jīng)驗(yàn),本著真心·誠(chéng)心服務(wù)的企業(yè)理念服務(wù)于成都中小企業(yè)設(shè)計(jì)網(wǎng)站有上1000+案例。做網(wǎng)站建設(shè),選創(chuàng)新互聯(lián)。
import java.awt.*;
import java.awt.event.*;
public class DengLuJieMian extends Frame implements ActionListener
{
Label username=new Label("用戶名:");//使用文本創(chuàng)建一個(gè)用戶名標(biāo)簽
TextField t1=new TextField();//創(chuàng)建一個(gè)文本框?qū)ο?/p>
Label password=new Label("密碼:");//創(chuàng)建一個(gè)密碼標(biāo)簽
TextField t2=new TextField();
Button b1=new Button("登陸");//創(chuàng)建登陸按鈕
Button b2=new Button("取消");//創(chuàng)建取消按鈕
public DengLuJieMian()
{
this.setTitle("學(xué)生信息管理系統(tǒng)");//設(shè)置窗口標(biāo)題
this.setLayout(null);//設(shè)置窗口布局管理器
username.setBounds(50,40,60,20);//設(shè)置姓名標(biāo)簽的初始位置
this.add(username);// 將姓名標(biāo)簽組件添加到容器
t1.setBounds(120,40,80,20);// 設(shè)置文本框的初始位置
this.add(t1);// 將文本框組件添加到容器
password.setBounds(50,100,60,20);//密碼標(biāo)簽的初始位置
this.add(password);//將密碼標(biāo)簽組件添加到容器
t2.setBounds(120,100,80,20);//設(shè)置密碼標(biāo)簽的初始位置
this.add(t2);//將密碼標(biāo)簽組件添加到容器
b1.setBounds(50,150,60,20);//設(shè)置登陸按鈕的初始位置
this.add(b1);//將登陸按鈕組件添加到容器
b2.setBounds(120,150,60,20);//設(shè)置取消按鈕的初始位置
this.add(b2);// 將取消按鈕組件添加到容器
b1.addActionListener(this);//給登陸按鈕添加監(jiān)聽器
b2.addActionListener(this);// 給取消按鈕添加監(jiān)聽器
this.setVisible(true);//設(shè)置窗口的可見性
this.setSize(300,200);//設(shè)置窗口的大小
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});//通過內(nèi)部類重寫關(guān)閉窗體的方法
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==b1)//處理登陸事件
{
String name=t1.getText();
String pass=t2.getText();
if(name!=nullpass.equals("000123"))//判斷語句
{
new StudentJieMian();
}
}
}
public static void main(String args[])//主函數(shù)
{
new DengLuJieMian();
}
}
以下方法實(shí)現(xiàn)了學(xué)生界面設(shè)計(jì)
import java.awt.*;
import java.awt.event.*;
class StudentJieMian extends Frame implements ActionListener
{
MenuBar m=new MenuBar();//創(chuàng)建菜單欄
Menu m1=new Menu("信息");//創(chuàng)建菜單“信息”
MenuItem m11=new MenuItem("插入");//創(chuàng)建“插入”的菜單項(xiàng)
MenuItem m12=new MenuItem("查詢");
Menu m2=new Menu("成績(jī)");//創(chuàng)建菜單“成績(jī)”
MenuItem m21=new MenuItem("查詢");
public StudentJieMian()
{
this.setTitle("學(xué)生界面");//設(shè)置窗口標(biāo)題
this.setLayout(new CardLayout());//設(shè)置窗口布局管理器
this.setMenuBar(m);//將菜單欄組件添加到容器
m.add(m1);//將信息菜單放入菜單欄
m.add(m2);
m1.add(m11);//將“插入”菜單項(xiàng)添加到“信息”菜單
m1.add(m12); //將“查詢”菜單項(xiàng)添加到“信息”菜單
m2.add(m21); //將“查詢”菜單項(xiàng)添加到“成績(jī)”菜單
m11.addActionListener(this); //給“插入”菜單項(xiàng)添加監(jiān)聽器
m12.addActionListener(this); //給“查詢”菜單項(xiàng)添加監(jiān)聽器
m21.addActionListener(this); //給“查詢”菜單項(xiàng)添加監(jiān)聽器
this.setVisible(true); //設(shè)置窗口的可見性
this.setSize(300,200); //設(shè)置窗口的大小
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);//關(guān)閉窗口
}
});
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==m11) //處理“添加信息”事件
{
new AddStudent();
}
if(e.getSource()==m12) //處理“查詢信息”事件
{
new SelectStudent();
}
if(e.getSource()==m21) //處理“查詢成績(jī)”事件
{
new ChengJiStudent();
}
}
public static void main(String args[])
{ new StudentJieMian(); //創(chuàng)建一個(gè)對(duì)象 }
做這個(gè)題庫系統(tǒng)需要按照mvc設(shè)計(jì)一下, 最近我也實(shí)現(xiàn)一個(gè)類似的, 下面說下我的設(shè)計(jì)
數(shù)據(jù)庫mysql+開發(fā)環(huán)境eclipse+jdk1.8, 然后基于一個(gè)整合框架把項(xiàng)目搭建起來
設(shè)計(jì)基礎(chǔ)試題表, 這個(gè)主要有類型難度等等
設(shè)計(jì)試卷表, 試卷表由create的時(shí)候根據(jù)輸入的規(guī)則自動(dòng)根據(jù)上面的基礎(chǔ)題庫表組裝而成
剩下的用戶管理, 導(dǎo)出就比較容易了, 導(dǎo)出可以用poi導(dǎo)出成word
使用java,JFrame類自己畫的,用到的面板就用JPane類,用到按鈕就JButton類,用到標(biāo)簽就JLable類!在java.swing包里。布局在java.awt包里
1.Java連接MySQL數(shù)據(jù)庫
Java連接MySql需要下載JDBC驅(qū)動(dòng)MySQL-connector-java-5.0.5.zip(舉例,現(xiàn)有新版本)。然后將其解壓縮到任一目錄。我是解壓到D盤,然后將其目錄下的MySQL-connector-java-5.0.5-bin.jar加到classpath里,具體如下:
“我的電腦”- “屬性” - “高級(jí)” - “環(huán)境變量”,在系統(tǒng)變量那里編輯classpath,將D:\MySQL-connector-java-5.0.5\MySQL-connector-java-5.0.5-bin.jar加到最后,在加這個(gè)字符串前要加“;”,以與前一個(gè)classpath區(qū)分開。然后確定。
package hqs;
import java.sql.*;
public class DataBasePractice {
public static void main(String[] args) {
//聲明Connection對(duì)象
Connection con;
//驅(qū)動(dòng)程序名
String driver = "com.mysql.jdbc.Driver";
//URL指向要訪問的數(shù)據(jù)庫名mydata
String url = "jdbc:mysql://localhost:3306/mydata";
//MySQL配置時(shí)的用戶名
String user = "root";
//MySQL配置時(shí)的密碼
String password = "root";
//遍歷查詢結(jié)果集
try {
//加載驅(qū)動(dòng)程序
Class.forName(driver);
//1.getConnection()方法,連接MySQL數(shù)據(jù)庫!!
con = DriverManager.getConnection(url,user,password);
if(!con.isClosed())
System.out.println("Succeeded connecting to the Database!");
//2.創(chuàng)建statement類對(duì)象,用來執(zhí)行SQL語句?。?/p>
Statement statement = con.createStatement();
//要執(zhí)行的SQL語句
String sql = "select * from student";
//3.ResultSet類,用來存放獲取的結(jié)果集??!
ResultSet rs = statement.executeQuery(sql);
System.out.println("-----------------");
System.out.println("執(zhí)行結(jié)果如下所示:");
System.out.println("-----------------");
System.out.println(" 學(xué)號(hào)" + "\t" + " 姓名");
System.out.println("-----------------");
String name = null;
String id = null;
while(rs.next()){
//獲取stuname這列數(shù)據(jù)
name = rs.getString("stuname");
//獲取stuid這列數(shù)據(jù)
id = rs.getString("stuid");
//首先使用ISO-8859-1字符集將name解碼為字節(jié)序列并將結(jié)果存儲(chǔ)新的字節(jié)數(shù)組中。
//然后使用GB2312字符集解碼指定的字節(jié)數(shù)組。
name = new String(name.getBytes("ISO-8859-1"),"gb2312");
//輸出結(jié)果
System.out.println(id + "\t" + name);
}
rs.close();
con.close();
} catch(ClassNotFoundException e) {
//數(shù)據(jù)庫驅(qū)動(dòng)類異常處理
System.out.println("Sorry,can`t find the Driver!");
e.printStackTrace();
} catch(SQLException e) {
//數(shù)據(jù)庫連接失敗異常處理
e.printStackTrace();
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally{
System.out.println("數(shù)據(jù)庫數(shù)據(jù)成功獲取!!");
}
}
}
2.添加、修改、刪除操作
在上面while代碼段后面添加以下代碼段:String name = null;
String id = null;
while(rs.next()){
//獲取stuname這列數(shù)據(jù)
name = rs.getString("stuname");
//獲取stuid這列數(shù)據(jù)
id = rs.getString("stuid");
//首先使用ISO-8859-1字符集將name解碼為字節(jié)序列并將結(jié)果存儲(chǔ)新的字節(jié)數(shù)組中。
//然后使用GB2312字符集解碼指定的字節(jié)數(shù)組。
name = new String(name.getBytes("ISO-8859-1"),"gb2312");
//輸出結(jié)果
System.out.println(id + "\t" + name);
}
PreparedStatement psql;
ResultSet res;
//預(yù)處理添加數(shù)據(jù),其中有兩個(gè)參數(shù)--“?”
psql = con.prepareStatement("insert into student values(?,?)");
psql.setInt(1, 8); //設(shè)置參數(shù)1,創(chuàng)建id為5的數(shù)據(jù)
psql.setString(2, "xiaogang"); //設(shè)置參數(shù)2,name 為小明
psql.executeUpdate(); //執(zhí)行更新
//預(yù)處理更新(修改)數(shù)據(jù)
psql = con.prepareStatement("update student set stuname = ? where stuid = ?");
psql.setString(1,"xiaowang"); //設(shè)置參數(shù)1,將name改為王五
psql.setInt(2,10); //設(shè)置參數(shù)2,將id為2的數(shù)據(jù)做修改
psql.executeUpdate();
//預(yù)處理刪除數(shù)據(jù)
psql = con.prepareStatement("delete from student where stuid = ?");
psql.setInt(1, 5);
psql.executeUpdate();
//查詢修改數(shù)據(jù)后student表中的數(shù)據(jù)
psql = con.prepareStatement("select*from student");
res = psql.executeQuery(); //執(zhí)行預(yù)處理sql語句
System.out.println("執(zhí)行增加、修改、刪除后的數(shù)據(jù)");
while(res.next()){
name = res.getString("stuname");
id = res.getString("stuid");
name = new String(name.getBytes("ISO-8859-1"),"gb2312");
System.out.println(id + "\t" + name);
}
res.close();
psql.close();
該代碼段使用到了預(yù)處理語句:con.prepareStatement(String sql);
這樣生成數(shù)據(jù)庫底層的內(nèi)部命令,并將該命令封裝在preparedStatement對(duì)象中,可以減輕數(shù)據(jù)庫負(fù)擔(dān),提高訪問數(shù)據(jù)庫速度。 運(yùn)行結(jié)果: