你需要一個(gè)開發(fā)工具,我一般是用eclipse的,官網(wǎng)可以下載,下載之后將項(xiàng)目導(dǎo)入到eclipse中就可以了。同時(shí)你的系統(tǒng)需要數(shù)據(jù)庫支持,一般這種項(xiàng)目用mysql數(shù)據(jù)庫就OK了,關(guān)于怎么導(dǎo)入eclipse項(xiàng)目和安裝mysql數(shù)據(jù)庫的你可以百度去看看,多動手,對自己好處很多的
成都創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的獨(dú)山網(wǎng)站設(shè)計(jì)、移動媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Container;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JToolBar;
import javax.swing.SwingConstants;
public class MainFrame extends JFrame implements ActionListener{
InsertPanel ip = null;
SelectPanel sp = null;
JPanel pframe;
JButton jb1,jb2,jb3;
JMenuItem jm11,jm21,jm22,jm23,jm31,jm32,jm41,jm42;
CardLayout clayout;
public MainFrame(String s){
super(s);
JMenuBar mb = new JMenuBar();
this.setJMenuBar(mb);
JMenu m1 = new JMenu("系統(tǒng)");
JMenu m2 = new JMenu("基本信息");
JMenu m3 = new JMenu("成績");
JMenu m4 = new JMenu("獎(jiǎng)懲");
mb.add(m1);
mb.add(m2);
mb.add(m3);
mb.add(m4);
jm11 = new JMenuItem("退出系統(tǒng)");
jm21 = new JMenuItem("輸入");
jm22 = new JMenuItem("查詢");
jm23 = new JMenuItem("更改");
jm31 = new JMenuItem("輸入成績");
jm32 = new JMenuItem("查詢成績");
jm41 = new JMenuItem("獎(jiǎng)勵(lì)");
jm42 = new JMenuItem("處分");
m1.add(jm11);
m2.add(jm21);
m2.add(jm22);
m2.add(jm23);
m3.add(jm31);
m3.add(jm32);
m4.add(jm41);
m4.add(jm42);
Icon i1 = new ImageIcon();
Icon i2 = new ImageIcon();
Icon i3 = new ImageIcon();
jb1 = new JButton(i1);
jb1.setToolTipText("輸入");
jb2 = new JButton(i2);
jb2.setToolTipText("查詢");
jb3 = new JButton(i3);
jb3.setToolTipText("退出");
JToolBar tb = new JToolBar("系統(tǒng)工具");
tb.add(jb1);
tb.add(jb2);
tb.add(jb3);
add(tb,BorderLayout.NORTH);
jm11.addActionListener(this);
jm21.addActionListener(this);
jm22.addActionListener(this);
jb1.addActionListener(this);
jb2.addActionListener(this);
jb3.addActionListener(this);
clayout = new CardLayout();
pframe = new JPanel(clayout);
add(pframe);
JPanel mainp = new JPanel(new BorderLayout());
JLabel mainl = new JLabel("學(xué)生信息管理平臺",SwingConstants.CENTER);
mainl.setFont(new Font("serif",Font.BOLD,30));
mainp.add(mainl);
pframe.add(mainp,"main");
clayout.show(pframe, "main");
}
public void actionPerformed(ActionEvent e){
if(e.getSource() == jm21 || e.getSource() == jb1){
if(ip == null){
ip= new InsertPanel();
pframe.add(ip,"insert");
}
clayout.show(pframe, "insert");
this.setTitle("輸入學(xué)生信息");
}
else if(e.getSource() == jm22 || e.getSource() == jb2){
if(sp == null){
sp= new SelectPanel();
pframe.add(sp,"select");
}
clayout.show(pframe, "select");
this.setTitle("查詢學(xué)生信息");
}
else if(e.getSource() == jm11 || e.getSource() == jb3){
System.exit(0);
}
}
}
第二個(gè):
import javax.swing.JFrame;
public class MainTest {
public static void main(String [] args){
MainFrame f = new MainFrame("學(xué)生信息管理平臺");
f.setSize(400,300);
f.setLocation(350,250);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
第二個(gè):
import java.sql.Connection;
import java.sql.DriverManager;
public class MySQLConnection {
static Connection getCon(){
Connection con = null;
try{
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost/test","root","123");
}
catch(Exception e){
System.out.println("建立數(shù)據(jù)庫連接遇到異常!");
}
return con;
}
}
第四個(gè):
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
public class SelectPanel extends JPanel implements ActionListener{
JButton jb;
JTextField jt;
JTextField jt1,jt2,jt3,jt4;
public SelectPanel(){
JLabel jl = new JLabel("請輸入學(xué)號:",SwingConstants.CENTER);
jt = new JTextField();
jb = new JButton("確定");
JPanel jp1 = new JPanel(new GridLayout(1,3));
jp1.add(jl);
jp1.add(jt);
jp1.add(jb);
JLabel j1,j2,j3,j4;
j1 = new JLabel("學(xué)號:",SwingConstants.CENTER);
j2 = new JLabel("姓名:",SwingConstants.CENTER);
j3 = new JLabel("性別:",SwingConstants.CENTER);
j4 = new JLabel("年齡:",SwingConstants.CENTER);
jt1 = new JTextField(6);
jt1.setEditable(false);
jt2 = new JTextField(6);
jt2.setEditable(false);
jt3 = new JTextField(6);
jt3.setEditable(false);
jt4 = new JTextField(6);
jt4.setEditable(false);
JPanel jp2 = new JPanel(new BorderLayout());
JPanel jp3 = new JPanel(new GridLayout(4,2));
jp2.add(new JLabel(""),BorderLayout.NORTH);
jp3.add(j1);
jp3.add(jt1);
jp3.add(j2);
jp3.add(jt2);
jp3.add(j3);
jp3.add(jt3);
jp3.add(j4);
jp3.add(jt4);
jp2.add(jp3);
this.setLayout(new BorderLayout());
add(jp1,BorderLayout.NORTH);
add(jp2);
jb.addActionListener(this);
}
public void actionPerformed(ActionEvent e){
if(e.getSource() == jb){
String stuNo = jt.getText().trim();
Student s = new Student();
boolean b = true;
try{
b = s.selectByStuNo(stuNo);
}
catch(Exception ex){
System.out.println("查詢學(xué)生信息遇到異常!");
}
if(b){
jt1.setText(s.getStuNo());
jt2.setText(s.getName());
jt3.setText(s.getGender());
int a = s.getAge();
Integer i = new Integer(a);
jt4.setText(i.toString());
}
else{
JOptionPane.showMessageDialog(null, "無此學(xué)生!");
}
}
}
}
第五個(gè):
import javax.swing.JFrame;
public class SelectTest {
public static void main(String [] args){
JFrame f = new JFrame("查詢學(xué)生信息");
SelectPanel p = new SelectPanel();
f.add(p);
f.setSize(400,300);
f.setLocation(300,250);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
第六個(gè):
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
public class Student {
String stuNo;
String name;
String gender;
int age;
public Student(){}
public Student(String stuNo,String name,String gender, int age){
this.stuNo = stuNo;
this.name = name;
this.gender = gender;
this.age = age;
}
public String getStuNo(){
return stuNo;
}
public void setStuNo(String stuNo){
this.stuNo = stuNo;
}
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
public String getGender(){
return gender;
}
public void setGender(String gender){
this.gender = gender;
}
public int getAge(){
return age;
}
public void setAge(int age){
this.age = age;
}
public boolean insertStudent(){
boolean b = true;
try{
Connection con = MySQLConnection.getCon();
Statement statement = con.createStatement();
String sql = "insert into student values('" + stuNo + "','" + name +"','" + gender + "'," + age + ")";
sql = new String(sql.getBytes("gb2312"),"ISO8859_1");
statement.executeUpdate(sql);
con.close();
}
catch(Exception e){
b = false;
System.out.println("插入數(shù)據(jù)庫遇到異常!");
}
return b;
}
public boolean selectByStuNo(String stuNo)throws Exception{
boolean b = true;
Connection con = MySQLConnection.getCon();
Statement statement = con.createStatement();
String sql = "select * from student where stuNo =" + stuNo;
ResultSet rs = statement.executeQuery(sql);
if(rs != null rs.next()){
String no = rs.getString(1);
this.setStuNo(no);
String n = rs.getString(2);
n = new String(n.getBytes("ISO8859_1"),"gb2312");
this.setName(n);
String g = rs.getString(3);
g = new String (g.getBytes("ISO8859_1"),"gb2312");
this.setGender(g);
this.setAge(rs.getInt(4));
b = true;
}
rs.close();
statement.close();
con.close();
return b;
}
}
數(shù)據(jù)庫你自己弄吧,我沒時(shí)間弄了!初學(xué)得多動手哦
源碼本身也是文本文件,可以直接用記事本打開,也可以將項(xiàng)目導(dǎo)入到eclipse或myeclipse去看,如果是編譯后的.class文件,可以去網(wǎng)上找找查看.class文件的工具。
Code Review中文應(yīng)該譯作“代碼審查”或是“代碼評審”,這是一個(gè)流程,當(dāng)開發(fā)人員寫好代碼后,需要讓別人來review一下他的代碼,這是一種有效發(fā)現(xiàn)BUG的方法。由此,我們可以審查代碼的風(fēng)格、邏輯、思路……,找出問題,以及改進(jìn)代碼。因?yàn)檫@是代碼剛剛出爐的時(shí)候,所以,這也是代碼重構(gòu),代碼調(diào)整,代碼修改的最佳時(shí)候。所以,Code Review是編碼實(shí)現(xiàn)中最最重要的一個(gè)環(huán)節(jié)。長時(shí)間以來,Code Review需要有一些有效的工具來支持,這樣我們就可以更容易,更有效率地來進(jìn)行代碼審查工作。下面是5個(gè)開源的代碼審查工具,他們可以幫助你更容易地進(jìn)行這項(xiàng)活動。1. Review board:
Review board 是一個(gè) 基于web 的工具,主要設(shè)計(jì)給 django 和python的用戶。 Review board 可以幫助我們追蹤待決代碼的改動,并可以讓Code-Review更為容易和簡練。盡管Review board 最初被設(shè)計(jì)在VMware項(xiàng)目中使用,但現(xiàn)在其足夠地通用。當(dāng)前,其支持這些代碼版本管理軟件: SVN, CVS, Perforce, Git, Bazaar, 和Mercurial.Yahoo 是review-board的其中一個(gè)用戶?!癛eview board 已經(jīng)改變了代碼評審的方式,其可以強(qiáng)迫高質(zhì)量的代碼標(biāo)準(zhǔn)和風(fēng)格,并可以成為程序員編程的指導(dǎo)者。每一次,當(dāng)你訪問search.yahoo.com 時(shí),其代碼都是使用 Review board工具Review過的。 We’re great fans of your work!”– Yahoo! Web Search 2. Codestriker:
Codestriker 也是一個(gè)基于Web的應(yīng)用,其主要使用 GCI-Perl 腳本支持在線的代碼審查。Codestriker 可以集成于CVS, Subversion, ClearCase, Perforce 和Visual SourceSafe。并有一些插件可以提供支持其它的源碼管理工具。David Sitsky 是 Codestriker 的作者,并也是最活躍的開發(fā)人員之一。 Jason Remillard 是另一個(gè)活路的開發(fā)者,并給這個(gè)項(xiàng)目提供了最深遠(yuǎn)最有意義的貢獻(xiàn)。大量的程序員貢獻(xiàn)他們的代碼給 Codestriker 項(xiàng)目,導(dǎo)致了這個(gè)項(xiàng)目空前的繁榮。 3. Groogle:
Groogle 是一個(gè)基于WEB的代碼評審工具。 Groogle 支持和 Subversion 集成。它主要提供如下的功能:各式各樣語言的語法高亮。
支持整個(gè)版本樹的比較。
支持當(dāng)個(gè)文件不同版本的diff功能,并有一個(gè)圖形的版本樹。
郵件通知所有的Reivew的人當(dāng)前的狀態(tài)。
認(rèn)證機(jī)制。 4. Rietveld:
Rietveld 由Guido van Rossum 開發(fā)(他是Python的創(chuàng)造者,現(xiàn)在是Google的員工),這個(gè)工具是基于Mondrian 工具,作者一開始是為了Google 開發(fā)的,并且,它在很多方面和Review board 很像。它也是一個(gè)基于Web的應(yīng)用,并可以Google App Engine 當(dāng)主機(jī)。它使用了目前最流行的Web開發(fā)框架 django 并支持 Subversion 。當(dāng)前,任何一個(gè)使用 Google Code 的項(xiàng)目都可以使用 Rietveld 并且使用 python Subversion 服務(wù)器。當(dāng)然,它同樣支持其它的Subversion服務(wù)器。 5. JCR
JCR 或者叫做 JCodeReview 也是一個(gè)基于WEB界面的最初設(shè)計(jì)給Reivew Java 語言的一個(gè)工具。當(dāng)然,現(xiàn)在,它可以被用于其它的非Java的代碼。JCR 主要想?yún)f(xié)助:審查者。所有的代碼更改都會被高亮,以及大多數(shù)語言的語法高亮。Code extracts 可以顯示代碼評審意見。如果你正在Review Java的代碼,你可以點(diǎn)擊代碼中的類名來查看相關(guān)的類的聲明。
項(xiàng)目所有者??梢?輕松創(chuàng)建并配置需要Review的項(xiàng)目,并不需要集成任何的軟件配置管理系統(tǒng)(SCM)。
流程信仰者。 所有的評語都會被記錄在數(shù)據(jù)庫中,并且會有狀態(tài)報(bào)告,以及各種各樣的統(tǒng)計(jì)。
架構(gòu)師和開發(fā)者。 這個(gè)系統(tǒng)也可以讓我們查看屬于單個(gè)文件的評語,這樣有利于我們重構(gòu)代碼。