Java成績管理系統(tǒng)(成績錄入)

//需求分析:寫一個成績管理系統(tǒng)痴奏。其中的一個功能是實現(xiàn)成績錄入劲妙。要求能根據(jù)課程名稱在系統(tǒng)里找到學(xué)生和課程信息掖桦;在結(jié)果區(qū)域中添加成績限府。

//規(guī)則:要求對輸入成績的操作要有有效性檢驗夺颤。成績只接受大于0且小于100的數(shù)字;同一記錄不能反復(fù)提交胁勺;當點擊“提交”世澜,告知用戶操作是否成功,并給出相應(yīng)信息署穗;課程名下拉列表中的課程列表根據(jù)數(shù)據(jù)庫中的課程表寥裂,自動生成嵌洼。

//代碼如下:

import java.awt.*;

import java.awt.event.*;

import java.sql.*;

import javax.swing.*;

import javax.swing.table.DefaultTableModel;

import school.schoolPicture.JdbcUtil;

public class AddScore extends JPanel implements ActionListener {

String[] columnNames = new String[] { "姓名", "學(xué)期", "課程ID", "成績" };

DefaultTableModel dtmScore = new DefaultTableModel(columnNames, 57);

JTable jtAddScore = new JTable(dtmScore);

JScrollPane jspScore = new JScrollPane(jtAddScore);

JComboBox jcbCourse = new JComboBox();

JComboBox jcbClassName = new JComboBox();

JComboBox jcbTerm = new JComboBox();

Connection con = JDBCUtil.getConnection();

// Connection con2 = JdbcUtil.getConnection();

PreparedStatement ps = null;

ResultSet rs = null;

ResultSetMetaData meta = null;

String sql = null;

int cols = 0;

int rowCount = 0;

public AddScore() {

CreateAddScoreGUI();

}

public void actionPerformed(ActionEvent e) {

String str = e.getActionCommand();

if ("查詢".equals(str)) {

//當點擊查詢時,用searchScore()方法對其進行處理

searchScore();

} else if ("提交".equals(str)) {

//當點擊提交時封恰,用tryCommit()方法對其進行處理

tryCommit();

} else if ("退出".equals(str)) {

this.setVisible(false);

}

}

public void tryCommit() {

if (cols < 1)

return;

sql = "insert into scorexx values(?,?,?,?)";

try {

ps = con.prepareStatement(sql);

String[] value = new String[4];

for (int k = 0; k < rowCount; k++) {

for (int i = 1; i <= cols + 1; i++) {

// 如果成績?yōu)榭章檠∠峤徊僮鳎⒔o出提示诺舔。

if (jtAddScore.getValueAt(k, i - 1) != null) {

value[i - 1] = jtAddScore.getValueAt(k, i - 1)

.toString();

} else {

if (i == 4)

JOptionPane

.showMessageDialog(null, "無效成績輸入鳖昌!成績不能為空");

return;

}

// 如果成績字段里面不是數(shù)字,則取消本次操作??

// String str = "^[0-9]{1}[0-9]?[0-9]?$";

// if (i == 4) {

// if(jtAddScore.getValueAt(k, i - 1) instanceof Integer){

// if(

// Integer.parseInt(value[3])<0||Integer.parseInt(value[3])>100)

// {JOptionPane.showMessageDialog(null, "成績只能大于0且小于100");

// return;}

// }

// }

System.out.print(value[i - 1]);

}

ps.setString(1, value[0]);

ps.setString(2, value[1]);

ps.setString(3, value[2]);

ps.setInt(4, Integer.parseInt(value[3]));

ps.executeUpdate();

con.commit();

System.out.println();

}

JOptionPane

.showMessageDialog(null, "提交成功:更新 " + rowCount + " 條記錄低飒!");

} catch (Exception ew) {

ew.printStackTrace();

}

}

// 自動添加課程下拉列表中的課程

public void addCourseToJCheckBoxCourse() {

String courseName = null;

sql = "select cname from coursexx";

try {

ps = con.prepareStatement(sql);

rs = ps.executeQuery();

ResultSetMetaData meta = rs.getMetaData();

int cols = meta.getColumnCount();

while (rs.next()) {

for (int i = 1; i <= cols; i++) {

courseName = rs.getString(i);

System.out.println(courseName);

jcbCourse.addItem(courseName);

rowCount++;

}

}

con.commit();

} catch (Exception ers) {

ers.printStackTrace();

try {

con.rollback();

} catch (Exception er) {

er.printStackTrace();

}

}

}

public void searchScore() {

// 每次查詢之前清空之前的結(jié)果

for (int k = 0; k < 50; k++) {

for (int i = 0; i < cols; i++) {

jtAddScore.setValueAt(null, k, i);

}

}

// Method1:JDBC Method2:Hibernate

String cName = jcbCourse.getSelectedItem().toString().trim();

sql = "select x.sname,k.term,k.cno from "

+ "choicesxx x join Coursexx k "

+ "on x.cno=k.cno and k.cname=?";

try {

ps = con.prepareStatement(sql);

ps.setString(1, cName);

rs = ps.executeQuery();

meta = rs.getMetaData();

cols = meta.getColumnCount();

boolean flag = true;

String result = null;

int k = 1;

while (rs.next()) {

for (int i = 1; i <= cols; i++) {

result = rs.getString(i);

jtAddScore.setValueAt(result, k - 1, i - 1);

}

rowCount = k++;

}

} catch (Exception exx) {

exx.printStackTrace();

}

}

//產(chǎn)生用戶界面

public void CreateAddScoreGUI() {

this.setLayout(new FlowLayout());

JLabel jlCourse = new JLabel("課程:");

jcbCourse.addActionListener(this);

jcbCourse.addItem(new String("請選擇課程"));

addCourseToJCheckBoxCourse();

this.add(jlCourse);

this.add(jcbCourse);

// JLabel jlClassName = new JLabel("班級:");

// jcbClassName.addActionListener(this);

// jcbClassName.addItem(new String("請選擇班級"));

// addClassNameToJCheckBoxClassName();

// this.add(jlClassName);

// this.add(jcbClassName);

// JLabel jlTerm = new JLabel("學(xué)期:");

// jcbTerm.addActionListener(this);

// jcbTerm.addItem(new String("請選擇學(xué)期"));

// addTermToJCheckBoxTerm();

// this.add(jlTerm);

// this.add(jcbTerm);

JButton jbSearch = new JButton("查詢");

jbSearch.addActionListener(this);

JButton jbOK = new JButton("提交");

jbOK.addActionListener(this);

JButton jbExit = new JButton("退出");

jbExit.addActionListener(this);

this.add(jbSearch);

this.add(jbOK);

this.add(jbExit);

this.add(jspScore);

this.setVisible(true);

this.setSize(500, 600);

}

public static void main(String[] args) {

new AddScore();

}

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末许昨,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子褥赊,更是在濱河造成了極大的恐慌糕档,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件崭倘,死亡現(xiàn)場離奇詭異翼岁,居然都是意外死亡,警方通過查閱死者的電腦和手機司光,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進店門琅坡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人残家,你說我怎么就攤上這事榆俺。” “怎么了坞淮?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵茴晋,是天一觀的道長。 經(jīng)常有香客問我回窘,道長诺擅,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任啡直,我火速辦了婚禮烁涌,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘酒觅。我一直安慰自己撮执,他們只是感情好,可當我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布舷丹。 她就那樣靜靜地躺著抒钱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上谋币,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天仗扬,我揣著相機與錄音,去河邊找鬼瑞信。 笑死厉颤,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的凡简。 我是一名探鬼主播逼友,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼秤涩!你這毒婦竟也來了帜乞?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤筐眷,失蹤者是張志新(化名)和其女友劉穎黎烈,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體匀谣,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡照棋,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了武翎。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片烈炭。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖宝恶,靈堂內(nèi)的尸體忽然破棺而出符隙,到底是詐尸還是另有隱情,我是刑警寧澤垫毙,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布霹疫,位于F島的核電站,受9級特大地震影響综芥,放射性物質(zhì)發(fā)生泄漏丽蝎。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一膀藐、第九天 我趴在偏房一處隱蔽的房頂上張望屠阻。 院中可真熱鬧,春花似錦消请、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蚜枢,卻和暖如春缸逃,著一層夾襖步出監(jiān)牢的瞬間针饥,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工需频, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留丁眼,地道東北人。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓昭殉,卻偏偏與公主長得像苞七,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子挪丢,可洞房花燭夜當晚...
    茶點故事閱讀 45,512評論 2 359