異常處理的分數(shù)管理小系統(tǒng)_第1頁
異常處理的分數(shù)管理小系統(tǒng)_第2頁
異常處理的分數(shù)管理小系統(tǒng)_第3頁
異常處理的分數(shù)管理小系統(tǒng)_第4頁
異常處理的分數(shù)管理小系統(tǒng)_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

編寫一個能夠進行異常處理的分數(shù)管理小系統(tǒng),該程序可以是Application也可以是Appleto該系統(tǒng)的界面可參照圖1所示面板。界面由上到下分為3個區(qū)域,上面是錄入成績的面板,中間是輸入查詢條件的面板,下面則是一個輸出提示信息或查詢結(jié)果的文本區(qū)。圖1分數(shù)管理界面系統(tǒng)實現(xiàn)的功能包括:錄入成績:在錄入按鈕后面的錄入信息框中輸入學生姓名、課程名、分數(shù)之后,點擊錄入按鈕,即可將此條成績信息保存起來,要求將信息保存至一個文本文件中。條件查詢:在查詢框中輸入查詢條件(按姓名查詢或查詢某門課程的成績),根據(jù)輸入的條件從文本文件(數(shù)據(jù)庫文件)中查詢出學生成績信息。如要按姓名查詢,輸入學生的姓名,再點擊查找按鈕,即可將該學生所有成績在面板下方的文本區(qū)中顯示出來;如輸入課程名查詢,則返回該課程所有學生成績。要求程序采用拋出并捕獲異常的方式處理各種可能遇到的異常情況,能處理的異常包括:1)輸入課程名錯誤。程序預先設定共有三門課程,如“Java”和“C”和“Database”;共有10位學生,姓名自定。如果輸入的課程名不在設定的范圍內(nèi),則應給出輸入錯誤的警告信息。2)錄入的分數(shù)應該在0?100之間。3)缺少必要的輸入信息要給出錯誤警告信息。比如在錄入成績時學生姓名、課程名和得分一項都不可以缺少;條件查詢時,必須要給出查詢的條件,是要查找某個學生的成績還是查找某門課程的成績。、實驗結(jié)果1、錄入成績錄人姓名小陳課程名Java85查攏姓名課程名2、按姓名查詢成績錄入姓名課程名查找姓名小陳課程名分數(shù)姓名課程名小陳Database90小陳Java653、按課程名查詢成績

二、實驗代碼importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;importjava.sql.*;publicclassstudentsextendsJFrameimplementsActionListenerstaticJTextFieldJTextField();//文本框staticJTextFieldt2=newJTextField();static二、實驗代碼importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;importjava.sql.*;publicclassstudentsextendsJFrameimplementsActionListenerstaticJTextFieldJTextField();//文本框staticJTextFieldt2=newJTextField();staticJTextFieldt3=newJTextField();staticJTextFieldstaticJTextFieldstaticJTextAreat6=newJTextArea();//文本區(qū)staticJLabelstaticJLabelstaticJLabelstaticJLabelstaticJLabell1=newJLabel("姓名");//標簽l2=newJLabel("課程名");l3=newJLabel("分數(shù)");l4=newJLabel("姓名"staticJLabelstaticJLabelstaticJLabelstaticJLabelstaticJLabelstaticJButtonb1=newJButton("錄入");//按鈕staticJButtonb2=newJButton("查找");staticStringDBDriver="sun.jdbc.odbc.JdbcOdbcDriver";staticStringconnectionStr="jdbc:odbc:student";staticConnectioncon=null;staticPreparedStatementpstmt=null;staticPreparedStatementpstmtl=null;staticResultSetrs=null;publicstaticvoidmain(String[]args)throwsSQLException,ClassNotFoundException,NullPointerException(studentsf=newstudents();f.setTitle("學生成績管理系統(tǒng)");FlowLayoutflow=newFlowLayout();f.setLayout(null);f.setSize(600,300);//設置窗口的大小bl.setBounds(70,30,70,25);//設置按鈕一的大小和位置b2.setBounds(70,60,70,25);tl.setBounds(210,30,70,25);//設置文本框一的大小和位置t2.setBounds(350,30,70,25);t3.setBounds(490,30,70,25);t4.setBounds(210,60,70,25);t5.setBounds(350,60,70,25);t6.setBounds(210,90,260,200);ll.setBounds(150,30,60,25);//設置標簽一的大小和位置setBounds(290,30,60,25);setBounds(430,30,60,25);setBounds(150,60,60,25);setBounds(290,60,60,25);f.setVisible(true);bl.addActionListener(f);//加載監(jiān)聽器b2.addActionListener(f);ClassforName(DBDriver);//加載驅(qū)動器con=DriverManager.getConnection(connectionStr,"sa","cqjtu");//連接數(shù)據(jù)源"}publicstudents()//構(gòu)造函數(shù)(add(bl);add(l1);add(tl);add(l2);add(t2);add(l3);add(t3);add(b2);add(l4);add(t4);add(l5);add(t5);add(t6);publicvoidactionPerformed(ActionEvente)//事件處理函數(shù)(Stringsq="insertinto成績表values(?,?,?)";Stringfind="select火from成績表where姓名=?or課程名=?";PreparedStatementpstmt=null;PreparedStatementpstmt1=null;ResultSetrs=null;JButtonbut=(JButton)e.getSource();if(but==bl)(try(pstmt=con.prepareStatement(sq);}catch(SQLExceptionee)(System.out.println("程序異常"+ee);System.exit(0);}}elseif(but==b2){try{pstmt1=con.prepareStatement(find);}catch(SQLExceptionee){System.out.println("程序異常"+ee);System.exit(0);}}//JButtonb=(JButton)e.getSource();Stringtext1=tl.getText();Stringtext2=t2.getText();Stringtext3=t3.getText();Stringtext4=t4.getText();Stringtext5=t5.getText();System.out.println(text4);System.out.println(text5);if(but==bl){if(!(text2.equals("Java")||text2.equals("C")||text2.equals("Database"))&&text1.length()!=0&&text3.length()!=0){t6.setText("無法連接至服務器");System.exit(0);}if(text3.length()>=4){System.out.println(text3.length());t6.setText("您錄入的分數(shù)超過范圍,請重新錄入!");System.exit(0);if(text1.length()==0||text2.length()==0||text3.length()==0)(t6.setText("無法連接至服務器");System.exit(0);}try(pstmt.setString(1,text1);pstmt.setString(2,text2);pstmt.setString(3,text3);pstmt.executeUpdate();JOptionPane.showMessageDialog(null,"插入成功!");pstmt.close();//con.close();//關閉連接}catch(SQLExceptionee)(System.out.println("程序異常"+ee);System.exit(0);}catch(NullPointerExceptionee)(System.out.println("程序異常"+ee);System.exit(0);}}if(but==b2)(System.out.println("ok");try(pstmt1.setString(1,text4);pstmt1.setString(2,text5);System.out.println("執(zhí)行sql語句");rs=pstmt1.executeQuery();//執(zhí)行$@1語句t6.setText("姓名課程名得分\n");while(rs.next())(t6.append(rs.getString(1)+"

"+rs.getString(2)+"}+rs.getString(3)+"\n");rs.close();pstmt1.close();//con.close();}catch(SQLExceptionee)(System.out.println("程序異常"+ee);System.exit(0);}首先建立如教案例9_1中數(shù)據(jù)庫PMS(包括Person表、Department表、"+rs.getString(2)+"}+rs.getString(3)+"\n");-按“員工登記”按鈕后彈出的員工記錄錄入界面。-菜單“選項”包括“員工登記”和“員工統(tǒng)計”兩個菜單項。點擊“員工統(tǒng)計”將顯示出當前員工數(shù)程序運行界面如下:程序運行界面如下:一、實驗結(jié)果1.員工信息窗口f(ncon.close();addr^nd&^"Lidvri^dcws■y^rem.addidf(ncon.close();addr^nd&^"Lidvri^dcws■y^rem.addidf按鈕,關閉r^QT/Fvr'A'nr1nnar2.員工登記窗口3.統(tǒng)計4.系統(tǒng)按鈕return"生匚頁部不能為空!rrPersenRegi3terlEExceplJj!icciblic5txinreturnrrcootrzng(7二、實驗代碼員工信息窗口packagePims;importjavax.swing.*;importjavax.swing.border.Border;importjavax.swing.border.TitledBorder;importjava.awt.event.*;importjava.awt.*;importreturn"生匚頁部不能為空!rrPersenRegi3terlEExceplJj!icciblic5txinreturnrrcootrzng(7staticPersonRegisterpersonRegister;staticJFramejfrmPIMS=newJFrame(〃員工信息〃);staticJPaneljpanPIMS=newJPanel();staticJButtonjbunPersonRegister=newJButton("員工登記〃);staticJButtonjbunExitSystem=newJButton("退出系統(tǒng)〃);staticJMenuBarjMenuBar=newJMenuBar();staticJMenujmenuOption=newJMenu(〃選項〃);staticJMenujmenuSystem=newJMenu("系統(tǒng)〃);staticJMenuItemjmiPersonRegister=newJMenuItem("員工登記〃);staticJMenuItemjmiCount=newJMenuItem(〃統(tǒng)計〃);staticJMenuItemjmiExitSystem=newJMenuItem("退出系統(tǒng)〃);staticJMenuItemjmiAboutSystem=newJMenuItem(〃關于系統(tǒng)〃);staticConnectioncon=null;staticStatementstmt=null;staticResultSetrs=null;staticbooleanflag=true;publicstaticvoidmain(String[]args){//TODO自動生成的方法存根//personRegister=newPersonRegister(con,stmt);〃面板的設置//為現(xiàn)有的邊框添加標題,先是用BorderFactory.createLineBorder(Color.BLUE)創(chuàng)建了藍色邊框,再添加標題jpanPIMS.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.BLUE),〃員工登記系統(tǒng)〃,2,0));jpanPIMS.setBackground(Color.lightGray);jpanPIMS.setBounds(8,15,277,102);jpanPIMS.setLayout(null);//取消frm的默認布局管理器,否則setlocation無效//員工登記按鈕設置jbunPersonRegister.setBounds(20,40,100,30);jbunPersonRegister.setBackground(Color.lightGray);jpanPIMS.add(jbunPersonRegister);//退出系統(tǒng)按鈕設置jbunExitSystem.setBounds(160,40,100,30);jbunExitSystem.setBackground(Color.lightGray);jpanPIMS.add(jbunExitSystem);〃菜單設置jmenuOption.add(jmiPersonRegister);jmiPersonRegister.setBackground(Color.lightGray);jmenuOption.add(jmiCount);jmiCount.setBackground(Color.lightGray);jmenuSystem.add(jmiAboutSystem);jmiAboutSystem.setBackground(Color.lightGray);jmenuSystem.add(jmiExitSystem);jmiExitSystem.setBackground(Color.lightGray);jMenuBar.setBackground(Color.lightGray);jMenuBar.add(jmenuOption);jMenuBar.add(jmenuSystem);//框架窗口設置jfrmPIMS.getContentPane().setBackground(Color.lightGray);//設置窗口的背景顏色jfrmPIMS.setBounds(500,250,300,185);jfrmPIMS.setLayout(null);//取消frm的默認布局管理器,否則setlocation無jfrmPIMS.setVisible(true);jfrmPIMS.add(jpanPIMS);jfrmPIMS.setJMenuBar(jMenuBar);〃連接數(shù)據(jù)庫StringDBDriver="com.microsoft.sqlserver.jdbc.SQLServerDriver”;StringconnectionStr="jdbc:sqlserver://localhost:1433;DatabaseName=PIMS";try{Class.forName(DBDriver);//加載驅(qū)動器DriverManager.setLoginTimeout(100);con=DriverManager.getConnection(connectionStr,"sa”,"123456");//連接數(shù)據(jù)庫stmt=con.createStatement();//創(chuàng)建Statement對象personRegister=newPersonRegister(stmt);}catch(Exceptione){flag=false;JOptionPane.showMessageDialog(null,e.toString());}〃設置事件監(jiān)聽者〃員工登記ActionListenermyPersonRegister=newActionListener(){?OverridepublicvoidactionPerformed(ActionEventarg0){//TODOAuto-generatedmethodstubjfrmPIMS.setFocusable(false);personRegister.jfrmPersonRegister.setVisible(true);//按下關閉按鈕,關閉數(shù)據(jù)庫并退出程序}};〃子窗口的關閉設置personRegister.jfrmPersonRegister.addWindowListener(newWindowAdapter(){publicvoidwindowsclosing(WindowEvente){jfrmPIMS.setFocusable(true);personRegister.jfrmPersonRegister.setVisible(false);}});jmiPersonRegister.addActionListener(myPersonRegister);jbunPersonRegister.addActionListener(myPersonRegister);〃統(tǒng)計ActionListenermyCountPerson=newActionListener(){?OverridepublicvoidactionPerformed(ActionEventarg0){//TODOAuto-generatedmethodstubtry{rs=stmt.executeQuery("SelectCOUNT(*)numberFromPerson");//查詢表while(rs.next()){//顯示所有記錄的ID和姓名JOptionPane.showMessageDialog(null,"共有"+rs.getInt("number")+"名員工");};}catch(SQLExceptione){JOptionPane.showMessageDialog(null,e.toString());}}};jmiCount.addActionListener(myCountPerson);//退出系統(tǒng)ActionListenermyExitSystem=newActionListener(){?OverridepublicvoidactionPerformed(ActionEventarg0){//TODOAuto-generatedmethodstubtry{if(flag==true){stmt.close();//關閉鏈接語句con.close();//關閉數(shù)據(jù)庫}}catch(SQLExceptione){JOptionPane.showMessageDialog(null,e.toString());}System.exit(0);};jmiExitSystem.addActionListener(myExitSystem);jbunExitSystem.addActionListener(myExitSystem);〃關于系統(tǒng)ActionListenermyAboutSystem=newActionListener(){?OverridepublicvoidactionPerformed(ActionEventarg0){//TODOAuto-generatedmethodstubJOptionPane.showMessageDialog(null,"這是一個員工管理系統(tǒng)!"+〃在進行員工登記時,編號都是自然數(shù),工資不能為負數(shù)!〃);}};jmiAboutSystem.addActionListener(myAboutSystem);//按下關閉按鈕,關閉數(shù)據(jù)庫并退出程序jfrmPIMS.addWindowListener(newWindowAdapter(){publicvoidwindowsclosing(WindowEvente){try{if(flag==true){stmt.close();//關閉鏈接語句con.close();//關閉數(shù)據(jù)庫}}catch(SQLExceptionee){JOptionPane.showMessageDialog(null,ee.toString());}System.exit(0);}});}}員工登記窗口packagepims;importjavax.swing.*;importjavax.swing.border.Border;importjava.awt.event.*;importjava.awt.*;importjava.sql.*;importpims.PersonRegisterSalaryException;importpims.PersonRegisterIDException;importpims.PersonRegisterNullException;importpims.Record;publicclassPersonRegister{staticJDialogjfrmPersonRegister=newJDialog();//左邊控件staticJLabeljlabID=newJLabel("員工編號");staticJLabeljlabName=newJLabel("員工姓名");staticJLabeljlabDepID=newJLabel("部門編號");staticJLabeljlabOccupation=newJLabel("職務”);staticJLabeljlabSalary=newJLabel("X資”);staticJLabeljlabEduID=newJLabel("學歷編號");staticJButtonjbunConfirm=newJButton("確定”);//右邊控件staticJTextFieldjtfID=newJTextField();staticJTextFieldjtfName=newJTextField();staticJTextFieldjtfDepID=newJTextField();staticJTextFieldjtfOccupation=newJTextField();staticJTextFieldjtfSalary=newJTextField();staticJTextFieldjtfEduID=newJTextField();staticJButtonjbunCancel=newJButton("取消”);staticStatementstmt=null;staticJOptionPanejopTip=newJOptionPane();PersonRegister(Statementstmt1){jfrmPersonRegister.setTitle("員工登記");jfrmPersonRegister.getContentPane().setBackground(Color.lightGray);//設置窗口的背景顏色jfrmPersonRegister.setSize(600,300);//框架的大小jfrmPersonRegister.setLocation(400,250);//框架在屏幕的坐標jfrmPersonRegister.setLayout(newGridLayout(7,2));//設置該窗口的布局為網(wǎng)格包布局jfrmPersonRegister.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);//添加控件位置的布局jfrmPersonRegister.add(jlabID);jfrmPersonRegister.add(jtfID);jfrmPersonRegister.add(jlabName);jfrmPersonRegister.add(jtfName);JfrmPersonRegister.add(jlabDepID);jfrmPersonRegister.add(jtfDepID);jfrmPersonRegister.add(jlabOccupation);jfrmPersonRegister.add(jtfOccupation);jfrmPersonRegister.add(jlabSalary);jfrmPersonRegister.add(jtfSalary);jfrmPersonRegister.add(jlabEduID);jfrmPersonRegister.add(jtfEduID);jfrmPersonRegister.add(jbunConfirm);jfrmPersonRegister.add(jbunCancel);jbunConfirm.addActionListener(newMyActListerConfirm());jbunCancel.addActionListener(newMyActListerCancel());stmt=stmt1;}publicclassMyActListerConfirmimplementsActionListener{?OverridepublicvoidactionPerformed(ActionEventarg0){//TODO自動生成的方法存根intid,depid,eduid;floatsalary;Stringname,occupation,flag;try{flag=newRecord().setRecord(jtfName.getText().trim(),jtfOccupation.getText().trim(),jtfID.getText().trim(),jtfDepID.getText().trim(),jtfEduID.getText().trim(),jtfSalary.getText().trim());id=Integer.parseInt(jtfID.getText().trim());//將數(shù)字字符串轉(zhuǎn)化成整型數(shù)據(jù)name=jtfName.getText().trim();depid=Integer.parseInt(jtfDepID.getText().trim());occupation=jtfOccupation.getText().trim();salary=Float.parseFloat(jtfSalary.getText().trim());eduid=Integer.parseInt(jtfEduID.getText().trim());stmt.executeUpdate("INSERTINTOPersonVALUES(〃+id+〃,,〃+name+〃,,〃+depid+〃,,〃+occupation+〃,,〃+salary+〃,〃+eduid+〃)〃);//添加一條記錄jopTip.showMessageDialog(null,"插入成功!插入的信息為:"+id+"〃+name+〃"+depid+""+occupation+""+salary+""+eduid);jtfID.setText("");jtfName.setText("");jtfDepID.setText("");jtfOccupation.setText("");jtfSala

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論