异常处理的分数管理小系统_第1页
异常处理的分数管理小系统_第2页
异常处理的分数管理小系统_第3页
异常处理的分数管理小系统_第4页
异常处理的分数管理小系统_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

编写一个能够进行异常处理的分数管理小系统,该程序可以是Application也可以是Appleto该系统的界面可参照图1所示面板。界面由上到下分为3个区域,上面是录入成绩的面板,中间是输入查询条件的面板,下面则是一个输出提示信息或查询结果的文本区。图1分数管理界面系统实现的功能包括:录入成绩:在录入按钮后面的录入信息框中输入学生姓名、课程名、分数之后,点击录入按钮,即可将此条成绩信息保存起来,要求将信息保存至一个文本文件中。条件查询:在查询框中输入查询条件(按姓名查询或查询某门课程的成绩),根据输入的条件从文本文件(数据库文件)中查询出学生成绩信息。如要按姓名查询,输入学生的姓名,再点击查找按钮,即可将该学生所有成绩在面板下方的文本区中显示出来;如输入课程名查询,则返回该课程所有学生成绩。要求程序采用抛出并捕获异常的方式处理各种可能遇到的异常情况,能处理的异常包括:1)输入课程名错误。程序预先设定共有三门课程,如“Java”和“C”和“Database”;共有10位学生,姓名自定。如果输入的课程名不在设定的范围内,则应给出输入错误的警告信息。2)录入的分数应该在0〜100之间。3)缺少必要的输入信息要给出错误警告信息。比如在录入成绩时学生姓名、课程名和得分一项都不可以缺少;条件查询时,必须要给出查询的条件,是要查找某个学生的成绩还是查找某门课程的成绩。、实验结果1、录入成绩录人姓名小陈课程名Java85查拢姓名课程名2、按姓名查询成绩录入姓名课程名查找姓名小陈课程名分数姓名课程名小陈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();//文本区staticJLabelstaticJLabelstaticJLabelstaticJLabelstaticJLabell1=newJLabel("姓名");//标签l2=newJLabel("课程名");l3=newJLabel("分数");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("学生成绩管理系统");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);//加载监听器b2.addActionListener(f);ClassforName(DBDriver);//加载驱动器con=DriverManager.getConnection(connectionStr,"sa","cqjtu");//连接数据源"}publicstudents()//构造函数(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)//事件处理函数(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("您录入的分数超过范围,请重新录入!");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("执行sql语句");rs=pstmt1.executeQuery();//执行$@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中数据库PMS(包括Person表、Department表、"+rs.getString(2)+"}+rs.getString(3)+"\n");-按“员工登记”按钮后弹出的员工记录录入界面。-菜单“选项”包括“员工登记”和“员工统计”两个菜单项。点击“员工统计”将显示出当前员工数程序运行界面如下:程序运行界面如下:一、实验结果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.统计4.系统按钮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("退出系统〃);staticJMenuBarjMenuBar=newJMenuBar();staticJMenujmenuOption=newJMenu(〃选项〃);staticJMenujmenuSystem=newJMenu("系统〃);staticJMenuItemjmiPersonRegister=newJMenuItem("员工登记〃);staticJMenuItemjmiCount=newJMenuItem(〃统计〃);staticJMenuItemjmiExitSystem=newJMenuItem("退出系统〃);staticJMenuItemjmiAboutSystem=newJMenuItem(〃关于系统〃);staticConnectioncon=null;staticStatementstmt=null;staticResultSetrs=null;staticbooleanflag=true;publicstaticvoidmain(String[]args){//TODO自动生成的方法存根//personRegister=newPersonRegister(con,stmt);〃面板的设置//为现有的边框添加标题,先是用BorderFactory.createLineBorder(Color.BLUE)创建了蓝色边框,再添加标题jpanPIMS.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.BLUE),〃员工登记系统〃,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);//退出系统按钮设置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);〃连接数据库StringDBDriver="com.microsoft.sqlserver.jdbc.SQLServerDriver”;StringconnectionStr="jdbc:sqlserver://localhost:1433;DatabaseName=PIMS";try{Class.forName(DBDriver);//加载驱动器DriverManager.setLoginTimeout(100);con=DriverManager.getConnection(connectionStr,"sa”,"123456");//连接数据库stmt=con.createStatement();//创建Statement对象personRegister=newPersonRegister(stmt);}catch(Exceptione){flag=false;JOptionPane.showMessageDialog(null,e.toString());}〃设置事件监听者〃员工登记ActionListenermyPersonRegister=newActionListener(){©OverridepublicvoidactionPerformed(ActionEventarg0){//TODOAuto-generatedmethodstubjfrmPIMS.setFocusable(false);personRegister.jfrmPersonRegister.setVisible(true);//按下关闭按钮,关闭数据库并退出程序}};〃子窗口的关闭设置personRegister.jfrmPersonRegister.addWindowListener(newWindowAdapter(){publicvoidwindowsclosing(WindowEvente){jfrmPIMS.setFocusable(true);personRegister.jfrmPersonRegister.setVisible(false);}});jmiPersonRegister.addActionListener(myPersonRegister);jbunPersonRegister.addActionListener(myPersonRegister);〃统计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);//退出系统ActionListenermyExitSystem=newActionListener(){©OverridepublicvoidactionPerformed(ActionEventarg0){//TODOAuto-generatedmethodstubtry{if(flag==true){stmt.close();//关闭链接语句con.close();//关闭数据库}}catch(SQLExceptione){JOptionPane.showMessageDialog(null,e.toString());}System.exit(0);};jmiExitSystem.addActionListener(myExitSystem);jbunExitSystem.addActionListener(myExitSystem);〃关于系统ActionListenermyAboutSystem=newActionListener(){©OverridepublicvoidactionPerformed(ActionEventarg0){//TODOAuto-generatedmethodstubJOptionPane.showMessageDialog(null,"这是一个员工管理系统!"+〃在进行员工登记时,编号都是自然数,工资不能为负数!〃);}};jmiAboutSystem.addActionListener(myAboutSystem);//按下关闭按钮,关闭数据库并退出程序jfrmPIMS.addWindowListener(newWindowAdapter(){publicvoidwindowsclosing(WindowEvente){try{if(flag==true){stmt.close();//关闭链接语句con.close();//关闭数据库}}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));//设置该窗口的布局为网格包布局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());//将数字字符串转化成整型数据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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论