【課程設(shè)計報告】基于JAVA和MySql數(shù)據(jù)庫的CS架構(gòu)學(xué)生成績管理系統(tǒng)的設(shè)計與實現(xiàn)
《【課程設(shè)計報告】基于JAVA和MySql數(shù)據(jù)庫的CS架構(gòu)學(xué)生成績管理系統(tǒng)的設(shè)計與實現(xiàn)》由會員分享,可在線閱讀,更多相關(guān)《【課程設(shè)計報告】基于JAVA和MySql數(shù)據(jù)庫的CS架構(gòu)學(xué)生成績管理系統(tǒng)的設(shè)計與實現(xiàn)(26頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、更多計算機類課程設(shè)計、畢業(yè)設(shè)計、論文請訪問: 上海理工大學(xué)計算機學(xué)院 可視化程序設(shè)計報告 (2010—— 2011 年度第2學(xué)期) 題 目 學(xué)生成績管理系統(tǒng) 院 系 專 業(yè) 電子商務(wù) 年 級 2009級 學(xué) 號 姓 名 指 導(dǎo) 教 師
2、 成 績 _______________________ 2011 年 03月 09日 目 錄 一、課程設(shè)計的目的與要求……………………………………………2 二、 設(shè)計的正文 ………………………………………………………2 1.系統(tǒng)分析………………………………………………………………2 1.1系統(tǒng)開發(fā)背景等 …………………………………………………2 1.2業(yè)務(wù)流程分析 ……………………………………………………2 1.3數(shù)據(jù)流程圖 ………………………………………………………3 2.系
3、統(tǒng)設(shè)計 ………………………………………………………………3 2.1功能設(shè)計 …………………………………………………………3 2.2系統(tǒng)運行環(huán)境與數(shù)據(jù)庫設(shè)計 ……………………………………4 2.3輸入/輸出設(shè)計……………………………………………………4 3.系統(tǒng)實施………………………………………………………………4 3.1登錄與退出界面 …………………………………………………4 3.2 修改密碼…………………………………………………………10 3.3成績查詢…………………………………………………………15 3.4 相關(guān)數(shù)據(jù)庫表………………………………………………
4、……24 三、課程設(shè)計總結(jié)………………………………………………………25 四、參考文獻(xiàn)……………………………………………………………26 《學(xué)生成績查詢系統(tǒng)》 一、課程設(shè)計的目的與要求 通過面向?qū)ο蟪绦蛟O(shè)計課程設(shè)計,進(jìn)一步掌握面向?qū)ο蟪绦蛟O(shè)計的理論和方法。培養(yǎng)和鍛煉開發(fā)小型學(xué)生成績查詢系統(tǒng)的能力。為今后相關(guān)系統(tǒng)開發(fā)打下良好的基礎(chǔ)。 要求了學(xué)生成績查詢系統(tǒng)開發(fā)的全過程,理解面向?qū)ο蟪绦蛟O(shè)計課程相關(guān)的概念,掌握面向?qū)ο蟪绦蛟O(shè)計的開發(fā)方法,鞏固對Java相關(guān)方法和概論的理解。主要包括:系統(tǒng)調(diào)研方法;業(yè)務(wù)分析、數(shù)據(jù)分析、系統(tǒng)邏輯模型設(shè)計方法;數(shù)據(jù)庫設(shè)計、功
5、能設(shè)計、物理模型設(shè)計方法;系統(tǒng)的實現(xiàn)等方法。完成一個小型系統(tǒng)的設(shè)計與開發(fā)。 二、設(shè)計正文 1 系統(tǒng)分析 1.1系統(tǒng)開發(fā)背景、開發(fā)范圍、建設(shè)目標(biāo)與必要性 隨著國家對于教育的重視逐漸加大,學(xué)校正向著大型化、規(guī)模化發(fā)展,而對于大中型學(xué)校,跟學(xué)生信息管理有關(guān)的信息隨之急劇增加。在這種情況下單靠人工來處理員工的工資不但顯得力不從心,而且極容易出錯。該系統(tǒng)就是設(shè)計一個學(xué)生信息數(shù)據(jù)庫管理系統(tǒng),由計算機代替人工執(zhí)行一系列諸如增加新學(xué)生,刪除舊學(xué)生,學(xué)生信息修改,查詢,維護及打印等操作。這樣就使學(xué)生部門管理人員可以輕松快捷地完成學(xué)生信息管理的任務(wù)。 1>本課題的研究意義 當(dāng)今時代是飛速發(fā)展的信息時代
6、。在各行各業(yè)中離不開信息處理,這正是計算機被廣泛應(yīng)用于信息管理系統(tǒng)的環(huán)境。計算機的最大好處在于利用它能夠進(jìn)行信息管理。使用計算機進(jìn)行信息控制,不僅提高了工作效率,而且大大的提高了其安全性。尤其對于復(fù)雜的信息管理,計算機能夠充分發(fā)揮它的優(yōu)越性。 2>本課題的研究現(xiàn)狀 管理查詢信息系統(tǒng)是進(jìn)行信息的采集、存儲、查詢、加工、維護和使用的系統(tǒng)。它是隨著管理科學(xué)和技術(shù)科學(xué)的發(fā)展而形成的。學(xué)生成績管理查詢系統(tǒng)是一個教育單位不可缺少的部分,它的內(nèi)容對于學(xué)校的決策者和管理者和學(xué)生來說都至關(guān)重要,所以學(xué)生成績管理查詢系統(tǒng)應(yīng)該能夠為用戶提供充足的信息和快捷的查詢手段,但一直以來人們使用傳統(tǒng)人工的方式管理文件
7、檔案,這種管理方式存在著許多缺點,如:效率低、保密性差;另外時間一長,將產(chǎn)生大量的文件和數(shù)據(jù),這對于查找、更新和維護都帶來了不少的困難。 1.2業(yè)務(wù)流程分析 主要業(yè)務(wù)流程圖,如下圖所示 1.3數(shù)據(jù)流程圖 2 系統(tǒng)設(shè)計 2.1功能設(shè)計 學(xué)生信息管理系統(tǒng)主要提供方便高效的查詢功能,學(xué)生可以通過該系統(tǒng)查詢相關(guān)信息。對于本系統(tǒng),我們需要實現(xiàn)以下一些基本功能: 1)密碼管理功能 該模塊實現(xiàn)對用戶密碼進(jìn)行管理的功能,主要是進(jìn)行密碼的修改。為了防止個人的名片信息被泄露,不知道用戶密碼的人員不能進(jìn)入本系統(tǒng)。出于安全的考慮,用戶可以定期修改自己的密碼,以防止密碼被盜用。
8、2)成績管理功能 該模塊實現(xiàn)成績查詢功能。用戶在查詢學(xué)生成績時,有時需要了解學(xué)生的基本信息,因此希望在查詢出的內(nèi)容中包括學(xué)生基本情況和成績信息。有時用戶需要查詢學(xué)生的某些課程成績,因此應(yīng)該具有查詢課程成績的功能。有時需要查詢學(xué)生的學(xué)期總成績,因此也應(yīng)該具有該功能。 3)退出系統(tǒng) 完成了對學(xué)生成績的查詢的操作后,應(yīng)該可以安全地離開該系統(tǒng)。通過該模塊實現(xiàn)安全退出大學(xué)生成績查詢系統(tǒng)。 2.2系統(tǒng)運行環(huán)境與數(shù)據(jù)庫設(shè)計 鑒于本系統(tǒng)的業(yè)務(wù)性質(zhì),必須選擇具有較高的可靠性、穩(wěn)定性和必要的容錯能力的計算機硬件和軟件系統(tǒng),以保證任何情況下都不至于丟失、損壞數(shù)據(jù);必須具有較高的響應(yīng)速度,以保證各項具體業(yè)務(wù)
9、的順利進(jìn)行;應(yīng)考慮具有良好的可維護性,可操作性和可擴充性,以保證將來系統(tǒng)規(guī)模的擴展和升級的需要。 開發(fā)與運行環(huán)境的使用 開發(fā)前臺工具:JAVA 開發(fā)后臺工具:MySQL 本系統(tǒng)采用Microsoft Windows 2000Server作為操作系統(tǒng)。 本系統(tǒng)準(zhǔn)備采用客戶機/服務(wù)器(C/S)結(jié)構(gòu)模式。 2.3輸入/輸出設(shè)計 格式說明: 學(xué)生成績輸入界面格式為對話框格式,可是選項為:學(xué)生學(xué)號、姓名、班級、各科目成績。輸出單個學(xué)生成績也是對話框形式,全部學(xué)生成績輸出為表格形式。 安全性設(shè)計:設(shè)置了用戶名和密碼驗證方式,防止用戶非法登錄。 3 系統(tǒng)實施 3.1登錄與退出界面
10、 登錄界面: 退出界面 關(guān)鍵代碼如下, public class Login extends JFrame implements ActionListener, FocusListener, KeyListener, ItemListener { /** * */ private static final long serialVersionUID = 1L; JLabel top, bott; JPanel panelMain, panelInfo; JTextField userName; JPasswordField pass
11、word; JButton login, cancel; String culeString = " 提 示 : "; public Login() { super("重慶大學(xué)城市科技學(xué)院2008級電子商務(wù)--學(xué)生成績管理系統(tǒng)"); top = new JLabel(new ImageIcon("picture/login_top.gif")); bott = new JLabel(); panelMain = new JPanel(new BorderLayout(10, 10)); bott.setBorder(new
12、LineBorder(new Color(184, 173, 151))); buildCenter(); panelMain.add("North", top); panelMain.add("South", bott); panelMain.add(panelInfo); // 加監(jiān)聽事件 login.addActionListener(this); cancel.addActionListener(this); login.addFocusListener(this); cancel.addFocusListener(this
13、); login.addKeyListener(this); cancel.addKeyListener(this); userName.addFocusListener(this); userName.addKeyListener(this); password.addFocusListener(this); password.addKeyListener(this); // 加窗口監(jiān)聽,new WindowAdapter適配器 this.addWindowListener(new WindowAdapter() { public
14、void windowClosing(WindowEvent we) { quit(); }// End windowClosing }); this.setContentPane(panelMain); // 設(shè)置窗口面板 this.setLocation(400, 335); this.setSize(350, 250); this.setResizable(false); // 設(shè)置窗口大小不可變 this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); // /*
15、**************/// this.setVisible(true); password.requestFocus(true); // 設(shè)置焦點給密碼框 } private void buildCenter() { // TODO Auto-generated method stub JLabel lb1, lb2; lb1 = new JLabel("用戶名:"); lb2 = new JLabel("密 碼:"); userName = new JTextField(15); password =
16、new JPasswordField(15); login = new TJButton("picture/key.gif", "登 錄", "登錄系統(tǒng)"); cancel = new TJButton("picture/exit.gif", "退 出", "關(guān)閉系統(tǒng)"); // **************************// // 定義面板為無布局 panelInfo = new JPanel(null); // 加入組建 panelInfo.add(lb1); panelInfo.add(lb2); panelInfo.a
17、dd(userName); panelInfo.add(password); panelInfo.add(login); panelInfo.add(cancel); lb1.setBounds(70, 14, 60, 25); lb2.setBounds(70, 48, 60, 25); userName.setBounds(150, 14, 150, 25); password.setBounds(150, 48, 150, 25); login.setBounds(80, 100, 80, 23); cancel.setBound
18、s(195, 100, 80, 23); // 設(shè)置邊框線 panelInfo.setBorder(BorderFactory.createTitledBorder("")); } private void quit() { int flag = 0; String msg = "您 現(xiàn) 在 要 關(guān) 閉 系 統(tǒng) 嗎?"; flag = JOptionPane.showConfirmDialog(null, msg, "提示", JOptionPane.YES_NO_OPTION); if (flag == JOptionPane.Y
19、ES_OPTION) { this.setVisible(false); System.exit(0); } return; } private void dengLu() { String username = userName.getText().trim(); // System.out.println(user); String pwd = String.valueOf(password.getPassword()); String sql = "select password from userinfo where
20、 username=" + username + ""; ResultSet rs = ConnectionDB.verification(sql); // 從數(shù)據(jù)庫獲取匹配user的密碼結(jié)果集 int flag = 0; // 用戶登錄錯誤次數(shù)的標(biāo)記 try { while (rs.next()) { // 用戶名存在 if (pwd.equals(rs.getString(1))) { bott.setText(culeString + "登錄成功,正在進(jìn)入系統(tǒng)......"); SaveUserInfo user =
21、new SaveUserInfo();// 保存用戶名 user.setUsername(username); user.setPassword(pwd); new RegisterUI(); this.setVisible(false); } else { bott.setText(culeString + "用戶名/密碼不正確,請重新輸入......"); int m = JOptionPane.showConfirmDialog(null, "用戶名/密碼錯誤,請重新輸入!", "錯誤信息"
22、, JOptionPane.YES_OPTION); if (m == JOptionPane.NO_OPTION) { System.exit(1); } else { flag++; if (flag == 3) { JOptionPane.showMessageDialog(null, "您不是本系統(tǒng)的用戶,系統(tǒng)關(guān)閉 ...", "警告", JOptionPane.ERROR_MESSAGE); System.exit(0); }
23、 } //在Login.java這個頁面里面點擊鼠標(biāo)右鍵,run as ->Java Application就OK了明白了 //還有一種方法,上面喲uge綠的圓形圖標(biāo),那個下拉菜單有需要運行的類名稱,需要運行哪個就點一下哦 //程序要改一下 == return; } } } catch (HeadlessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) {
24、 // TODO Auto-generated catch block e.printStackTrace(); } } public void actionPerformed(ActionEvent ae) { // 動作按鍵 if (ae.getSource() == login) { dengLu(); // 登錄 } else { quit(); // 退出 } } public void itemStateChanged(ItemEvent ie) { password.requestFocus
25、(true); } public void keyListener(KeyEvent ke) { // 鍵盤按下監(jiān)聽 int key = ke.getKeyCode(); if (key == ke.VK_ENTER) { if (ke.getSource() == userName) { password.requestFocus(true); // 按下Enter鍵后,焦點從用戶名框轉(zhuǎn)到密碼框 } else if (password.getPassword().length > 0) { dengLu(); // 按Enter鍵
26、登錄系統(tǒng) } } else if (key == ke.VK_ESCAPE) { quit(); // 按ESC鍵退出系統(tǒng) } } public void keyReleased(KeyEvent ke) { // 鍵盤釋放監(jiān)聽 } public void keyTyped(KeyEvent ke) { // 按鍵類型監(jiān)聽 } public void focusGained(FocusEvent fe) { if (fe.getSource() == userName) {// 窗口下面的功能提示 bott.
27、setText(culeString + "請輸入用戶名..."); } else if (fe.getSource() == password) { bott.setText(culeString + "請輸入登錄密碼..."); } else if (fe.getSource() == login) { bott.setText(culeString + "登錄系統(tǒng)..."); } else if (fe.getSource() == cancel) { bott.setText(culeString + "退出系統(tǒng)..."); } }
28、 public void focusLost(FocusEvent fe) { // 失去焦點監(jiān)聽 } */ public static void main(String[] args) { new FStartWindow("picture/Login.gif", new JFrame(), 1200); new Login(); } public void keyPressed(KeyEvent e) { // TODO Auto-generated method stub } } 3.2修改密碼 修改密碼
29、:學(xué)生輸入正確的用戶名和密碼后可以對自己的密碼進(jìn)行修改。管理員也可以登錄系統(tǒng)后,進(jìn)入用戶管理模塊,點擊修改用戶密碼,輸入原始密碼,新密碼和確認(rèn)密碼,如果原始密碼輸入錯誤系統(tǒng)將提示密碼錯誤,新密碼和確認(rèn)密碼必須是一樣的這樣才能修改成功。 private static final long serialVersionUID = 1L; String username = SaveUserInfo.getUsername(); String password = SaveUserInfo.getPassword(); JButton bt1, bt2; JTextFiel
30、d tf1, tf2, tf3, tf; JPanel panelMain; public RePassword (JFrame frame) { super(frame, "修改密碼", true); panelMain = new JPanel(new BorderLayout()); BuildPanel(); Addlistener(); this.setContentPane(panelMain); this.setSize(350, 200); this.setMaximumSize(new Dimension(500, 50
31、0)); this.setResizable(false); this.setLocation(450, 350); this.setVisible(true); } private void Addlistener() { // TODO Auto-generated method stub bt1.addActionListener(this); bt2.addActionListener(this); bt1.addMouseListener(this); bt2.addMouseListener(this); tf1
32、.addActionListener(this); tf2.addActionListener(this); } private void BuildPanel() { // TODO Auto-generated method stub JLabel pass1, pass2, pass3; pass1 = new JLabel("原密碼:"); pass2 = new JLabel("新密碼:"); pass3 = new JLabel("重復(fù)新密碼:"); //文本框 tf1 = new JTextField(1
33、5); tf2 = new JTextField(15); tf3 = new JTextField(15); tf = new JTextField("密碼信息"); tf.setHorizontalAlignment (JTextField.CENTER); tf.setBackground(new Color(199, 183, 143)); tf.setBorder(new LineBorder(new Color(87, 87, 47))); tf.setEditable(false); //按鈕 bt1 = new TJ
34、Button("picture/modi3.gif", "確定", "修改密碼"); bt2 = new TJButton("picture/cancel.gif", "取消", "取消操作"); JPanel ps, pc, pcc, pcc1, pcc11, pcc12; // // JLabel line0 = new JLabel(new ImageIcon("pic/line5.gif"));//分隔線 // JLabel line1 = new JLabel(new ImageIcon("pic/line4.gif"));//分隔線
35、 ps = new JPanel(new FlowLayout(FlowLayout.CENTER,50,10)); //放置確定和取消按鈕 pc = new JPanel(new BorderLayout(0,5)); //放置按鈕以上的部分 pcc = new JPanel(new FlowLayout(FlowLayout.CENTER,0,0)); //添加新用戶文本框為不可編輯,放在North,其他放在流布局的面板中 pcc1 = new JPanel(new FlowLayout(FlowLayout.LEFT,0,3)); //
36、放置"密碼信息"三行 pcc11 = new JPanel(new GridLayout(3,1,0,6));//放置密碼信息"三行 pcc12 = new JPanel(new GridLayout(3,1,0,6));//放置密碼信息"三行文本框 //構(gòu)造密碼信息"三行 pcc11.add(pass1); pcc11.add(pass2); pcc11.add(pass3); pcc12.add(tf1); pcc12.add(tf2); pcc12.add(tf3); pcc1.add(pcc11); pcc1.add
37、(pcc12); //將用戶信息加入面板 pcc.add(pcc1); pc.add("North",tf); pc.add(pcc); pc.setBorder(BorderFactory.createTitledBorder("")); ps.add(bt1); ps.add(bt2); panelMain.add("South",ps); panelMain.add(pc); } /**========================================================
38、===============** * [## private boolean isValidity() {} ]: 測試用戶輸入的數(shù)據(jù)是否合法 * 參數(shù) :無 * 返回值 :boolean * 修飾符 :private * 功能 :測試用戶輸入的數(shù)據(jù)是否合法 **=======================================================================** */ private boolean isValidity() { if(tf1.getT
39、ext().length() == 0) { JOptionPane.showMessageDialog(null, "原密碼不能為空", "提示", JOptionPane.INFORMATION_MESSAGE); tf1.requestFocus(true); return false; } else if(tf2.getText().length() == 0) { JOptionPane.showMessageDialog(null, "新密碼不能為空", "提示", JOptionPane.INFORMATI
40、ON_MESSAGE); tf1.requestFocus(true); return false; } else if(tf3.getText().length() == 0) { JOptionPane.showMessageDialog(null, "重復(fù)密碼不能為空", "提示", JOptionPane.INFORMATION_MESSAGE); tf1.requestFocus(true); return false; } else if(tf2.getText().length() != tf3.g
41、etText().length()) { JOptionPane.showMessageDialog(null, "新密碼和重復(fù)密碼不一致不能為空", "提示", JOptionPane.INFORMATION_MESSAGE); tf1.requestFocus(true); return false; } else if(tf1.getText().toString() != password) { JOptionPane.showMessageDialog(null, "您輸入的原密碼不正確", "提示", J
42、OptionPane.INFORMATION_MESSAGE); tf1.requestFocus(true); return false; } else if(tf2.getText().length() > 16) { JOptionPane.showMessageDialog(null, "密碼長度不能超過16位", "提示", JOptionPane.INFORMATION_MESSAGE); tf1.requestFocus(true); return false; } else { pass
43、word = tf2.getText(); } return true; } /**=======================================================================** * [## private void saveLiveIn() {} ]: * 參數(shù) :無 * 返回值 :無 * 修飾符 :private * 功能 :保存用戶信息 **==================================================
44、=====================** * @throws SQLException */ private boolean rePassword() throws SQLException { boolean flag = ConnectionDB.rePassword(username, password); return flag; } /**=======================================================================** * ActionListener 監(jiān)聽
45、 **=======================================================================** */ public void actionPerformed (ActionEvent e) { String msg = "密碼修改成功!請返回..."; if (e.getSource() == bt1) { if (isValidity()) { try { boolean flag = rePassword(); } catch (SQLExcepti
46、on e1) { // TODO Auto-generated catch block e1.printStackTrace(); } JOptionPane.showMessageDialog(null, msg, "提示", JOptionPane.YES_OPTION); } }else if(e.getSource() == bt2) { this.setVisible(false); } } public void mouseClicked(MouseEvent e) { // TODO
47、 Auto-generated method stub } public void mouseEntered(MouseEvent e) { // TODO Auto-generated method stub } public void mouseExited(MouseEvent e) { // TODO Auto-generated method stub } public void mousePressed(MouseEvent e) { // TODO Auto-generated method stub
48、 } public void mouseReleased(MouseEvent e) { // TODO Auto-generated method stub } 3.3成績查詢 public class ConnectionDB { private static Connection conn = null; private static Statement stmt = null; private static ResultSet rs = null; static { try { Class.forName("com
49、.mysql.jdbc.Driver").newInstance(); conn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/stu", "root", "root"); } catch (Exception e) { JOptionPane.showMessageDialog(null, "數(shù)據(jù)庫連接失敗...", "錯誤", JOptionPane.ERROR_MESSAGE); System.exit(0); } } private Conn
50、ectionDB() { // 防止實例化 } public static ResultSet verification(String sql) { try { stmt = conn.createStatement(); rs = stmt.executeQuery(sql); // stmt.close(); // conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace();
51、 } return rs; } //根據(jù)用戶名獲取密碼信息 public String getPassword(String username) { String password = null; try { stmt = conn.createStatement(); rs = stmt .executeQuery("select password from userinfo where username = " + username + ""); while (rs.next()) {
52、password = rs.getString("password"); } rs.close(); stmt.close(); conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block System.out.println("ConnectionDB.insertAmount(): false"); } return password; } //更新數(shù)據(jù)庫中的密碼信息 public static boolean
53、 rePassword(String username, String password) { boolean flag = false; // 作為是否成功插入記錄的標(biāo)記 int rsBefore = 0; try { stmt = conn.createStatement(); rsBefore = stmt.executeUpdate("UPDATE userinfo SET password = " + password + " where username = " + username + ""); stmt.close();
54、 conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block System.out.println("ConnectionDB.insertAmount(): false"); } if (rsBefore > 0) flag = true; return flag; } //根據(jù)學(xué)號獲取此學(xué)生的各科成績,返回值為String[]數(shù)組,保存形式為課程名+分?jǐn)?shù) public static String[] getGrade(S
55、tring stuid) { String sql = "select b.coursename, a.grade FROM gradeinfo a,courseinfo b where a.stuid=" + stuid + " and a.courseid=b.courseid"; String[] str = null; int count = 0; try { stmt = conn.createStatement(); rs = stmt.executeQuery(sql); while (rs.next()) {
56、 // GradeInfo info = new GradeInfo(); // info.setCourseName(rs.getString("coursename")); // info.setScore(rs.getString("grade")); // list.add(info); count++; } str = new String[count]; rs.beforeFirst(); int i = 0; while (rs.next()) { str[i++] = rs.
57、getString("coursename") + "." + rs.getString("grade"); } rs.close(); stmt.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } if (str != null && str.length > 0) return str; return null; } //根據(jù)學(xué)號獲取學(xué)生姓名(寫重復(fù)了
58、 。見getName方法) public static String getName(String stuid) { String sql = "select name from stuinfo where stuid=" + stuid + ""; String str = null; try { stmt = conn.createStatement(); rs = stmt.executeQuery(sql); while (rs.next()) { str = rs.getString("name"); }
59、 rs.close(); stmt.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } if (str != null) return str; return null; } //根據(jù)學(xué)號獲取此學(xué)號的平均成績 public static String getAvg(String stuid) { String sql = "select avg(grade) as avg fro
60、m gradeinfo where stuid=" + stuid + ""; // cast(avg(colname) as decimal(9,1)) end String str = null; try { stmt = conn.createStatement(); rs = stmt.executeQuery(sql); while (rs.next()) { str = rs.getString("avg"); } rs.close(); stmt.close(); } catch (
61、SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } if (str != null) return str; return null; } //獲取所有學(xué)生的平均成績 public static String[] getAllAvg() { String sql = "select a.stuid, name, avg(grade) avg " + "from gradeinfo a, courseinfo b, stui
62、nfo c " + "where a.stuid=c.stuid and a.courseid=b.courseid " + "GROUP by stuid"; String[] str = null; int count = 0; try { stmt = conn.createStatement(); rs = stmt.executeQuery(sql); while (rs.next()) { count++; } rs.beforeFirst(); str = new String[c
63、ount]; int i = 0; while (rs.next()) { str[i++] = rs.getString("stuid") + "." + rs.getString("name") + "." + rs.getString("avg"); } rs.close(); stmt.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } if (s
64、tr != null && str.length > 0) return str; return null; } //獲取所有課程信息(課程名) public static String getCourseName() { String sql = "select coursename from courseinfo"; String str = ""; try { stmt = conn.createStatement(); rs = stmt.executeQuery(sql); while (rs.next())
65、 { if (!rs.isLast()) { str += rs.getString("coursename") + "."; } else { str += rs.getString("coursename"); } } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } if (str != null) return str; return null; }
66、 //根據(jù)學(xué)號獲取學(xué)生姓名 public static String getNameByStuid(String stuid) { String sql = "select name from stuinfo where stuid=" + stuid + ""; String str = null; try { stmt = conn.createStatement(); rs = stmt.executeQuery(sql); while (rs.next()) { str = rs.getString("name"); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } if (str != nu
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識競賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識測試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測工種技術(shù)比武題庫含解析
- 1 礦山應(yīng)急救援安全知識競賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案