我的日常

登录/注册
您现在的位置:论坛 盖世程序员(我猜到了开头 却没有猜到结局) 盖世程序员 > Java成绩管理系统源码
总共48086条微博

动态微博

查看: 2032|回复: 0

Java成绩管理系统源码

[复制链接]

29

主题

5

听众

183

金钱

三袋弟子

该用户从未签到

跳转到指定楼层
楼主
发表于 2014-07-28 19:37:50 |只看该作者 |倒序浏览

//需求分析:写一个成绩管理系统。其中的一个功能是实现成绩录入。要求能根据课程名称在系统里找到学生和课程信息;在结果区域中添加成绩。

//规则:要求对输入成绩的操作要有有效性检验。成绩只接受大于0且小于100的数字;同一记录不能反复提交;当点击“提交”,告知用户操作是否成功,并给出相应信息;课程名下拉列表中的课程列表根据数据库中的课程表,自动生成。


: g# a, _& r' V$ F: ]9 O% w//代码如下:
' ~+ q  |, K& Qimport java.awt.*;* t& h8 {1 p8 W4 ]
import java.awt.event.*;
$ o6 F  r; A( U0 ]7 bimport java.sql.*;

import javax.swing.*;; U- N" ^, x4 n+ t7 s
import javax.swing.table.DefaultTableModel;

import school.schoolPicture.JdbcUtil;

public class AddScore extends JPanel implements ActionListener {% r1 D# o4 y, n  A& R6 L
String[] columnNames = new String[] { "姓名", "学期", "课程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();
" }2 _. \& q0 _! o( ^7 q0 kConnection con = JDBCUtil.getConnection();
* u6 a3 }9 a( w/ n/ B// Connection con2 = JdbcUtil.getConnection();
9 G( U$ S" t$ c: h' ^& T6 @PreparedStatement ps = null;' n9 |, ^! U" M" m* L
ResultSet rs = null;
9 B" V& J$ F( v! c1 A1 JResultSetMetaData meta = null;. y9 F% p( p9 S- N
String sql = null;0 s% C, l- Q" [8 l+ o
int cols = 0;7 u2 n+ a( v" c2 G/ E4 Z7 i7 u
int rowCount = 0;

public AddScore() {
" e7 ]0 A7 x# d8 d# ]CreateAddScoreGUI();
9 S8 y! J- _/ w" ~( G& p}

public void actionPerformed(ActionEvent e) {
0 k9 r# S. r- ?6 qString str = e.getActionCommand();
& O- i' o, o1 f" a( q) ?if ("查询".equals(str)) {

//当点击查询时,用searchScore()方法对其进行处理
; v6 w3 t4 b' @4 OsearchScore();
7 }- E) f# v0 o/ t5 F} else if ("提交".equals(str)) {

//当点击提交时,用tryCommit()方法对其进行处理
6 \# @3 `$ j0 r) D1 c4 `) E! U" |tryCommit();

} else if ("退出".equals(str)) {
& R/ z2 t, p8 |& `! athis.setVisible(false);( d; F# `' J( z
}
2 R1 _) {6 Z- }4 N! E) h/ _}
0 B: p1 t+ z( x/ {$ l- ]public void tryCommit() {
  r& [# S& m5 \" ?! J/ zif (cols < 1)
3 ?4 |& C, x9 Z8 D" j& W8 S% wreturn;
/ x% G" W4 X: P7 Csql = "insert into scorexx values(?,?,?,?)";1 l5 x( S0 f, F8 e9 H
try {
' p4 x5 h% L4 Dps = con.prepareStatement(sql);0 D0 N5 G" S& D
String[] value = new String[4];3 H, u' F! ]" M/ R& @3 w
for (int k = 0; k < rowCount; k++) {
: J3 |- W0 J; l. X7 k8 kfor (int i = 1; i <= cols + 1; i++) {: f: U/ ?$ k+ G9 ?' w' I$ c, ]
// 如果成绩为空,取消提交操作,并给出提示。6 t; V" b. Y7 N2 ^$ H! L
if (jtAddScore.getValueAt(k, i - 1) != null) {
* c8 L6 V$ P! {* W1 Uvalue[i - 1] = jtAddScore.getValueAt(k, i - 1)
; B, o& O9 v9 W/ Y6 l.toString();8 b9 a: V  q2 z" f' |
} else {+ L* K: g" o. v+ Z  g, i
if (i == 4)' L7 s0 _8 n, R6 z9 y2 v
JOptionPane
; g  n  c# b+ }" n& p; P/ p.showMessageDialog(null, "无效成绩输入!成绩不能为空");  m4 q; g7 N3 `5 s
return;
' ~3 `! d3 m$ `5 V}
: L) w( s. d9 I1 x4 o& o// 如果成绩字段里面不是数字,则取消本次操作??  o! Z! A: Y/ J
// String str = "^[0-9]{1}[0-9]?[0-9]?$";
" o' I' D# J; z( c: S// if (i == 4) {% J& E$ D9 ~: ^* c) U+ Q# e9 f
// if(jtAddScore.getValueAt(k, i - 1) instanceof Integer){/ i( k, S. W# M4 n
// if(
+ r) F9 l3 G  p3 T" }3 F// Integer.parseInt(value[3])<0||Integer.parseInt(value[3])>100)
' r0 C7 M$ ]& y5 W* D' N4 j" W// {JOptionPane.showMessageDialog(null, "成绩只能大于0且小于100");$ j2 _6 L$ k% Y6 x' }
// return;}
! s3 _' @* w' \* q// }
8 A3 t8 g" y2 z) Q+ R// }
9 v9 k' h; L. X! C" \: B. RSystem.out.print(value[i - 1]);" W& |, a# |4 F5 x+ H
}1 D* ]/ T% D7 M$ t& I8 g* c( m( }
ps.setString(1, value[0]);
. I0 O4 L! Z1 f9 u! i: u8 ~  S5 `2 O! yps.setString(2, value[1]);
9 O5 Z; Q0 R- b, D0 G6 rps.setString(3, value[2]);
" L4 B  N3 P% R% a- J& Ips.setInt(4, Integer.parseInt(value[3]));
# u( w8 I- R" J3 `ps.executeUpdate();3 J1 z: R* x- V
con.commit();, F9 w0 w1 |( n/ u  h( x6 I
System.out.println();
+ j$ X9 M$ q9 X, Y2 p8 T- E}) ^, }2 N) ~4 q3 x6 u* q$ I
JOptionPane
- }1 @0 [, h1 e, a# p.showMessageDialog(null, "提交成功:更新 " + rowCount + " 条记录!");
" m! f  G9 k, W7 e/ a} catch (Exception ew) {) H1 J+ A, ]' a3 h1 h1 t
ew.printStackTrace();

}

}

# Q2 X" Y1 s$ G

// 自动添加课程下拉列表中的课程" Q' k: r/ a* L2 Q6 Q8 k" W$ Q
public void addCourseToJCheckBoxCourse() {, |( i. M  M* M2 ~
String courseName = null;2 X- N- A' h6 @! ^  |( Y0 d% L
sql = "select cname from coursexx";/ q) [5 s0 v) {: X, d, @
try {
: s2 [) [' I/ e. L: j0 j9 ops = con.prepareStatement(sql);
0 @* h2 P/ I( X' @3 \rs = ps.executeQuery();" L6 \( {8 Y, m$ V' D) H
ResultSetMetaData meta = rs.getMetaData();$ H: o% U1 f$ W8 U$ M7 {4 y- {% i
int cols = meta.getColumnCount();
: u5 \. @2 _+ z8 jwhile (rs.next()) {
' f* J/ t  |" ?- l: ufor (int i = 1; i <= cols; i++) {. A3 E1 m; K6 u# M# L) }
courseName = rs.getString(i);
9 {0 d' P; Z0 }$ t- F& z/ YSystem.out.println(courseName);( |6 X6 N1 L9 b
jcbCourse.addItem(courseName);2 ?( H- D( v% P5 O
rowCount++;7 H+ n, y; h6 c& L
}
% o* r, Y6 Z8 B}
- [) e' X8 x: `9 Xcon.commit();; n5 M% }3 ~- {7 v# B5 Z
} catch (Exception ers) {9 K( d2 U9 D7 M; ]% C1 O
ers.printStackTrace();
# g! p- o) V1 ~  M8 btry {6 B3 b6 q! n& |* u/ B6 A
con.rollback();
+ q. M* d9 t, p* g" |} catch (Exception er) {; X9 g& ?- Q7 E5 R
er.printStackTrace();
. D; i4 {3 k  X: j  N8 g/ X0 w$ f+ ?}+ Z# I# e- I% X) x: h8 _9 m5 Z
}

}

+ D: R( y0 u# ^' v, a' X) _# ]

public void searchScore() {
! c2 Y: ^: F, T( }' l// 每次查询之前清空之前的结果2 S# _% P6 K' h. |
for (int k = 0; k < 50; k++) {  `3 T* A- l& @3 p
for (int i = 0; i < cols; i++) {: L- y+ t+ x4 X
jtAddScore.setValueAt(null, k, i);
* D2 n5 t5 v/ ^* S}

}; }! q8 s0 c$ r% n. c% f$ _# }
// Method1:JDBC Method2:hibernate' m# _0 B1 N5 h
String cName = jcbCourse.getSelectedItem().toString().trim();& ?2 |8 T, c6 ?" O
sql = "select x.sname,k.term,k.cno from "
  R. ?' `2 O* J9 M+ "choicesxx x join Coursexx k "
# Y" r# b7 P3 x& \+ "on x.cno=k.cno and k.cname=?";& g$ `) V0 z7 O
try {& E7 p# f. E' `6 `# ?
ps = con.prepareStatement(sql);9 a5 k1 m6 J3 X2 s: c% C& P
ps.setString(1, cName);3 }" m% O9 i4 P! T# a
rs = ps.executeQuery();- W; r3 ]5 E! w& M, Z
meta = rs.getMetaData();0 F, x3 k/ ^* ]- I4 K% N# X' h5 g
cols = meta.getColumnCount();& `6 H+ P6 @& U2 f0 B6 w! ?
boolean flag = true;1 c8 p% M7 d, [2 i
String result = null;
" a1 i/ o3 a  x! s2 h$ M  uint k = 1;
- F! z8 s) X8 G: B, j( \% Ewhile (rs.next()) {) M" B, u. S0 R9 f
for (int i = 1; i <= cols; i++) {
5 N6 [; J4 o3 Nresult = rs.getString(i);
; k4 e) i2 r0 }1 o+ p% djtAddScore.setValueAt(result, k - 1, i - 1);
3 `! s8 M0 c( A3 n3 @}
: S( c( Y2 G4 n$ [; _6 L% p6 b: c$ rrowCount = k++;
& `  f2 |/ f  S! c}

} catch (Exception exx) {/ F, _1 C/ ?) z/ ?% \
exx.printStackTrace();
( c1 [) ^' q3 ?' ^9 f}
& ?+ \1 Q% d8 ~: D$ m% D- I}

+ r+ H& ?, v% t4 ~. D7 p1 T: Z

//产生用户界面

public void CreateAddScoreGUI() {
7 p9 J- U: i# y6 n- \this.setLayout(new FlowLayout());

JLabel jlCourse = new JLabel("课程:");5 x. A, K, D: D" b: C- p
jcbCourse.addActionListener(this);
1 _" o% Q& v/ O$ j( {9 njcbCourse.addItem(new String("请选择课程"));
+ y( U( @* f( c8 AaddCourseToJCheckBoxCourse();
, @) A* E7 Y3 z  [this.add(jlCourse);
) H$ `" o' `& f, @8 N+ S6 nthis.add(jcbCourse);

// JLabel jlClassName = new JLabel("班级:");  p  Q. D9 |2 p( p) y1 W8 }$ q
// jcbClassName.addActionListener(this);- V$ P9 T7 i' ~  {
// jcbClassName.addItem(new String("请选择班级"));% U4 r  N$ I7 H7 B7 A* @
// addClassNameToJCheckBoxClassName();
8 W) `; t+ A+ B* ~" C// this.add(jlClassName);+ n) v% S: |9 i2 E' G
// this.add(jcbClassName);

// JLabel jlTerm = new JLabel("学期:");; |+ W4 ], H4 x2 B, R) ~
// jcbTerm.addActionListener(this);
$ Y1 d. [3 R9 D% O, N0 i( P* {// jcbTerm.addItem(new String("请选择学期"));
5 a& l, m. `* o// addTermToJCheckBoxTerm();
8 [2 R/ ]2 k0 P% l/ t// this.add(jlTerm);
3 M% o$ S+ Q+ J# D+ D// this.add(jcbTerm);

JButton jbSearch = new JButton("查询");; h8 c! T3 b/ Y: Z2 ^5 Z+ M+ Z* m
jbSearch.addActionListener(this);$ |( @# ^2 ^9 f0 }; J# ~% u
JButton jbOK = new JButton("提交");
/ ]# f6 B# ?5 Y" J5 A  {jbOK.addActionListener(this);
4 U; B, ~6 A. jJButton jbExit = new JButton("退出");
% h! t; \, N0 x' c) o" a+ D2 F4 njbExit.addActionListener(this);
2 Q) j# X0 L* _% L" uthis.add(jbSearch);
2 {% z7 W! Z4 k: c+ u: o8 [this.add(jbOK);: u5 h. _9 T3 h) y1 g
this.add(jbExit);

this.add(jspScore);

this.setVisible(true);
! o! w0 i/ ]# B- t- ?' {4 @+ }this.setSize(500, 600);

}

public static void main(String[] args) {/ K! o* `/ J* h8 c0 d
new AddScore();
' R! a: p9 p' z, f" e}2 _% S7 G) b4 z! s5 M' b
}


: w. H& g) z: b! w4 P" q" y

我的日常 1、本主题所有言论和图片纯属会员个人意见,与本社区立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与我的日常享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和我的日常的同意
4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、我的日常管理员和版主有权不事先通知发贴者而删除本文


JAVA爱好者①群:JAVA爱好者① JAVA爱好者②群:JAVA爱好者② JAVA爱好者③ : JAVA爱好者③

快速回复
您需要登录后才可以回帖 登录 | 立即注册

   

关闭

站长推荐上一条 /1 下一条

发布主题 快速回复 返回列表 联系我们 官方QQ群 科帮网手机客户端
快速回复 返回顶部 返回列表