//需求分析:写一个成绩管理系统。其中的一个功能是实现成绩录入。要求能根据课程名称在系统里找到学生和课程信息;在结果区域中添加成绩。 //规则:要求对输入成绩的操作要有有效性检验。成绩只接受大于0且小于100的数字;同一记录不能反复提交;当点击“提交”,告知用户操作是否成功,并给出相应信息;课程名下拉列表中的课程列表根据数据库中的课程表,自动生成。 . B9 Z% u. d- a; z
//代码如下:
# W/ {0 G4 d& x: `" j# Oimport java.awt.*;8 {* @7 Z0 ~6 E$ l* A! L, Q
import java.awt.event.*;
. J8 B7 l$ k4 C( C" u% W7 Jimport java.sql.*; import javax.swing.*;6 G( m9 U g9 f3 T d6 W. O
import javax.swing.table.DefaultTableModel; import school.schoolPicture.JdbcUtil; public class AddScore extends JPanel implements ActionListener {' _ f! y; o! Y% q o+ @: S
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();
$ z0 ~! p& ?1 d! q& E* n. XConnection con = JDBCUtil.getConnection();. e' D5 z @% ?' o* a
// Connection con2 = JdbcUtil.getConnection();
6 G9 k2 t) q3 v5 t$ N9 TPreparedStatement ps = null;
8 L* U+ h7 N# K1 G# t+ eResultSet rs = null;) k: k' F% ~, R( }: o. H; x
ResultSetMetaData meta = null;
. |2 `& ^" J& l+ W; \String sql = null;3 ~8 N. x) b; P7 T. E' r
int cols = 0;9 n* ~/ p% F+ K7 H9 S
int rowCount = 0; public AddScore() {
) H9 V. S) p. ]5 f8 V( VCreateAddScoreGUI();
& `) M+ I* d8 D, }, M} public void actionPerformed(ActionEvent e) {7 f. v' G$ Z; B. o, }) |
String str = e.getActionCommand();
5 q4 J H* d2 r+ g- b! S& ~% @if ("查询".equals(str)) { //当点击查询时,用searchScore()方法对其进行处理6 d8 N; J9 V4 o: J2 T
searchScore();9 _) R5 m8 q: A: x9 n7 q
} else if ("提交".equals(str)) { //当点击提交时,用tryCommit()方法对其进行处理
7 O1 r7 j( @" `# D# ttryCommit(); } else if ("退出".equals(str)) {
8 i/ j" ?0 n# N) z1 U( Ethis.setVisible(false);" f& k5 F# e) n5 b+ r! C
}: L7 L0 N* M9 B( F
}
9 l4 }4 N( k. `# Tpublic void tryCommit() {
5 H5 V" T3 ~" N; nif (cols < 1): @/ _. T& E2 g- x0 Y L
return;+ C0 q& W6 @) ]2 S" s. M$ D' u
sql = "insert into scorexx values(?,?,?,?)";# V$ n( e% U9 }5 e
try {
6 T" B6 |% A8 O/ N3 wps = con.prepareStatement(sql);
: ?" {& W/ U# o8 o4 n6 NString[] value = new String[4];- ~+ V% `, H2 l2 p6 e2 x u% h2 Y7 ?
for (int k = 0; k < rowCount; k++) {
( {# h3 O: E% k+ ofor (int i = 1; i <= cols + 1; i++) {$ ]3 `% F8 z/ ]7 f1 F
// 如果成绩为空,取消提交操作,并给出提示。
4 W; c" Y' V0 \5 H; \7 dif (jtAddScore.getValueAt(k, i - 1) != null) {
5 z- o9 r: \: o( f, \. Vvalue[i - 1] = jtAddScore.getValueAt(k, i - 1)
! t2 h9 s% G4 B9 _. }/ X6 q.toString();0 R* I; o% q w5 R, M+ Z6 W, b
} else {9 ?. V! U, j, L% @/ k
if (i == 4)
) I E7 P2 E8 ^+ c2 F$ ], v4 h cJOptionPane- j$ E7 L$ G' j0 u2 A/ Z
.showMessageDialog(null, "无效成绩输入!成绩不能为空");: u/ w4 Z7 d) |3 d& s- d' f
return;; M$ v0 I: t- i& h
}% @7 q$ n: P3 O a' V3 C+ y
// 如果成绩字段里面不是数字,则取消本次操作??
0 ^' |% q6 [ s! B0 y! I, G// String str = "^[0-9]{1}[0-9]?[0-9]?$";& @- S2 b" J& y# m- @" V5 d
// if (i == 4) {
9 E( f( l. w: e// if(jtAddScore.getValueAt(k, i - 1) instanceof Integer){
: t E0 T; r0 B- G5 _' |" u$ c// if(
% y$ X% s" P/ m) |// Integer.parseInt(value[3])<0||Integer.parseInt(value[3])>100)
3 I% \' ?0 K( [6 S! J+ Q// {JOptionPane.showMessageDialog(null, "成绩只能大于0且小于100");, Z0 S; o" m" k* F3 V7 }. e( H
// return;}
2 C6 {; G/ l$ S' M' t6 Y Z// }/ l& {) `# `, _5 H; W
// }) Q# H2 E5 f! w1 z
System.out.print(value[i - 1]);% Q% E) T, G% m0 K) ?' }
}
8 [* ^2 k" y: y% K/ M* B9 X* Wps.setString(1, value[0]);" \. P% d1 H! t: s
ps.setString(2, value[1]);
! ]7 @7 j4 j% \' Bps.setString(3, value[2]);
& }5 L) c m5 _1 M/ jps.setInt(4, Integer.parseInt(value[3]));) D E2 _5 h4 D6 G1 k& o
ps.executeUpdate();
/ p1 `; p) y r$ g0 Y/ ucon.commit();
7 I; B' }5 {# t8 P1 k% \$ ~3 ]System.out.println();
! k4 ^3 l0 E1 n. c. ~4 C6 P}
3 i7 m. g" O T: ]% c+ dJOptionPane* o$ H$ P- V( l. N% @. N& }
.showMessageDialog(null, "提交成功:更新 " + rowCount + " 条记录!");6 c* j, V' F+ B: s
} catch (Exception ew) {
5 R5 P. Y; B# b, o; B B$ {6 pew.printStackTrace(); } }
( \# h, T4 A# X3 a" J// 自动添加课程下拉列表中的课程2 m0 d9 D# i- C, E+ v
public void addCourseToJCheckBoxCourse() {
% V& f; X( P5 o& g W. OString courseName = null;! g8 v( q1 B& O' Y
sql = "select cname from coursexx";7 j2 X" _ \( ]8 A0 P2 x
try {. R4 j9 ]8 b" D3 ]7 t s3 X# ]2 ?) r* l
ps = con.prepareStatement(sql);
. x' }3 \5 f9 frs = ps.executeQuery();" }7 k9 n% b0 H2 E7 l+ }
ResultSetMetaData meta = rs.getMetaData();- U5 s/ x( x" y- I( E' A, v
int cols = meta.getColumnCount();. |. D |9 g# N4 h9 \* Z2 m
while (rs.next()) {
! B, ]4 M0 A% a* a4 @& X/ G2 h) `for (int i = 1; i <= cols; i++) {
- d* z& f) Y& E$ k5 ?" U2 NcourseName = rs.getString(i);) U: Q$ g8 v+ r* e- e
System.out.println(courseName);
1 E( H; X6 y" I2 R. M* T7 LjcbCourse.addItem(courseName);
' z9 j5 Y3 ?3 V# F# r) _9 QrowCount++;
" ]! N" M) z5 ~( d' `2 a3 a}
0 H ]: ~2 I) E5 s6 ^' `}! I. n6 a9 I( X/ G4 i" \' A
con.commit();
0 ?3 t q7 E2 p3 ?- ~9 v} catch (Exception ers) {
( Y7 O' U$ r/ c, fers.printStackTrace();
$ F8 H/ l, v4 [0 Y) |try {/ D* H: O B W' K
con.rollback();4 L5 \5 _" a; E- R8 w0 R; `) [% \3 m! `& _
} catch (Exception er) {
/ ]* ?" M2 p1 ~7 e, Oer.printStackTrace();
. i/ w8 ]5 z( q0 y8 e# W}
. S, j) W: V& i4 L2 `: d} }
# u! K3 X) g) I% [6 ]7 ~public void searchScore() {
( q" e, j! ^2 e. I$ @// 每次查询之前清空之前的结果 j1 T$ R1 b1 X" g
for (int k = 0; k < 50; k++) {
# }+ v9 [4 h: Nfor (int i = 0; i < cols; i++) {
6 i* y; d7 N, u+ {& D/ LjtAddScore.setValueAt(null, k, i);- _! r4 q( i: M/ f" t
} }0 d% [* P @% t) y
// Method1:JDBC Method2:hibernate
" B* \$ a5 {' Y* \String cName = jcbCourse.getSelectedItem().toString().trim();' X- i+ d9 Z/ N2 F
sql = "select x.sname,k.term,k.cno from "* j; M' h! o3 M k
+ "choicesxx x join Coursexx k "
+ U& @) F; r8 |6 S, I5 s+ "on x.cno=k.cno and k.cname=?";4 y' f4 `. O2 C% K! e l. E
try {2 X7 L# ^& M) R/ x+ Y4 C" L/ F
ps = con.prepareStatement(sql);
, d3 n6 f+ R) ]7 x6 z4 Vps.setString(1, cName);5 n8 F& u) O5 p e: c' V+ b
rs = ps.executeQuery();0 n. _9 ^+ g3 r7 \
meta = rs.getMetaData();
7 F& C( r/ i) V r) fcols = meta.getColumnCount();
; t! b% m V F% t7 `7 G# V. mboolean flag = true;- ?, _7 z% `/ _" u. j8 K
String result = null;
" _' @5 H' o2 M1 i ~5 N& ^1 Iint k = 1;" S8 E9 G/ M8 C) t
while (rs.next()) {
# A% W; \& a. q' Gfor (int i = 1; i <= cols; i++) {( c; V9 n* g4 q" X \9 a
result = rs.getString(i);/ m% Y+ P2 K3 g9 E& K7 Q; W
jtAddScore.setValueAt(result, k - 1, i - 1);9 n1 y# W: Q9 ]6 e6 L
}. D& A( \# d/ n1 }" Y
rowCount = k++;
; p4 J+ n) _7 p: H) N4 Q# C3 i! u} } catch (Exception exx) {% V- s/ Q! }! |+ h6 w
exx.printStackTrace();2 p y- |8 d- f5 r6 V0 `
}9 w! Y2 z% {/ ^/ L7 o( D1 P
} ! }- O' m6 g* |) O1 O6 Y
//产生用户界面 public void CreateAddScoreGUI() {1 k; u' N8 ?0 i, g
this.setLayout(new FlowLayout()); JLabel jlCourse = new JLabel("课程:");" C7 q' ?% }& Y: v9 Z. D$ W
jcbCourse.addActionListener(this);1 a7 H: r) _! j5 ?1 U$ B
jcbCourse.addItem(new String("请选择课程"));
+ ~7 R( k6 C7 O/ @addCourseToJCheckBoxCourse();
9 n U# U r1 V6 ]this.add(jlCourse);
, l! W- O4 z+ ], u) Lthis.add(jcbCourse); // JLabel jlClassName = new JLabel("班级:");
% W/ s) ^: }- Y8 N8 K; J+ J// jcbClassName.addActionListener(this);6 t" O. Y$ @( s. O
// jcbClassName.addItem(new String("请选择班级"));
, M0 J) g0 M* V. h0 f# b// addClassNameToJCheckBoxClassName();
: o$ `( N4 ?. n# X( R6 ~// this.add(jlClassName);
: I( N3 s9 b; r// this.add(jcbClassName); // JLabel jlTerm = new JLabel("学期:");6 w3 Z. w" z" T: X
// jcbTerm.addActionListener(this);
( x1 V9 O7 J o4 F8 ], p% T7 V- ]// jcbTerm.addItem(new String("请选择学期"));
+ O1 @2 U* i& l8 B: L2 f+ }5 B1 R- {// addTermToJCheckBoxTerm();8 g* M6 H9 n/ }6 |- [$ t0 W' @7 K
// this.add(jlTerm);, P8 {7 L9 q0 q) z1 h9 `
// this.add(jcbTerm); JButton jbSearch = new JButton("查询");
2 t9 x, @5 O2 |2 o. P8 qjbSearch.addActionListener(this);( c9 J T- T+ i; l
JButton jbOK = new JButton("提交");
" E- S u4 X/ UjbOK.addActionListener(this);8 x6 O4 K, g G4 U ~
JButton jbExit = new JButton("退出");
+ D& D6 a6 M+ tjbExit.addActionListener(this);
. y4 t1 m+ ~1 n2 N# qthis.add(jbSearch);
: _/ i$ Y, T* K0 Z# r Gthis.add(jbOK);
5 J8 Z% W# z; G- [& ^* X) Sthis.add(jbExit); this.add(jspScore); this.setVisible(true);1 _+ W6 h, X& P! y) d& H7 P) G
this.setSize(500, 600); } public static void main(String[] args) {
" U! |# n* W" n5 A3 O* U1 W" knew AddScore();4 @/ F/ g( ]& m! X) E
}
2 J8 L1 W% l5 a# V2 x# {} ) ^& u; y3 P- p2 E9 r
|