版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
你的姓名——《Java语言》课程期末作业PAGEPAGE51《Java语言》课程期末作业题目第9题:学生成绩管理系统学院计算机学院专业班别学号姓名温景钊2013年6月10日一、课程题目设计一个简易的学生成绩管理系统。用于记录学生的各科成绩,以及实现常用的统计功能。(1)记录学生的基本信息,如姓名、学号、专业、班级等(2)记录各科成绩(3)实现常用的统计功能,如:单科成绩排名、总分排名、统计成绩高于/低于某一临界值的学生、统计单科/总分平均值……(4)使用图形方式显示某些数据,如直方图显示各分数段的人数、绘制各科分数分布曲线……(可选)(5)必须使用数据库。其它功能可自行扩展。二、题目分析与设计注明所使用的开发环境(Eclipse、NetBeans,JBuilder)。开发环境:Eclipse论述题目的需求。给出软件功能架构图。题目需求:通过数据库记录学生成绩和信息,并通过数据库读取这些信息,实现单个学生查找、全体学生查找等功能和单科排名、平均分、总分排名、平均分等功能。其他扩展功能:登录界面,保存到txt文件。软件功能架构图:其中,删除、修改、单个查找功能均通过学号定位学生论述界面设计过程,指出其设计上的创意及组件的布局策略。界面设计过程:主要界面包括登录界面,主功能界面,各个子功能界面。登录界面包括3个面板,每个面板放入相应的标签、文本框、按钮等组件,登录界面采用3行1列的网格布局;主功能界面包括菜单栏和若干面板,面板中放入标签或若干按钮,菜单栏的菜单项与按钮相对应,主功能界面采用7行1列的网格布局;学生管理类子功能(增加学生、删除学生、修改学生、单个查找)界面采用6行2列的网格布局,每个网格均放入一个面板,每个面板放入标签、文本框、组合框、按钮等组件,以达到较友好的界面效果;学生查找类子功能界面(查看全体、按年级查询、按班别查询、按专业查询)和成绩管理类子功能(单科排名、总分排名、合格学生、挂科学生)界面采用边界布局,界面的上部放入一个面板,面板放入相应的按钮或组合框,中部放入一个文本域。所有错误信息等信息均通过对话框的形式显示相应信息。论述程序逻辑的实现,包括类的设计、对象的协作过程等,必要时加以各种图形和表格辅助论述。不得以粘贴代码的方式代替设计部分。类的设计过程:本程序包括19个类文件,每个类文件只含有一个类,分别是包含main方法的主类Main,实现登录功能的类Login,实现各种功能选择功能的类Function,实现数据库连接的类DataBaseCreate,实现学生信息编辑功能类StudentEdit,执行增加学生功能的类AddStudent,执行删除学生功能的类DeleteStudent,执行修改学生功能的类UpdateStudent,执行单个查询功能的类IndexOfSingle,(由于AddStudent,DeleteStudent,UpdateStudent,IndexOfSingle界面和操作基本相同,所以上4类均继承StudentEdit)实现条件查找和成绩管理功能的类IndexOrManage,执行查询全体功能的类LookAllStudents,执行按年级查询功能的类IndexOfGrade,执行按班别查询功能的类IndexOfClass,执行按专业查询的类IndexOfMajor,执行单科排名功能的类SubjectScoreRanking,执行总分排名功能的类TotalScoreRanking,执行查找单科及格学生功能的类PassStudents,执行查找单科不及格学生功能的类NotPassStudents,(由于LookAllStudents,IndexOfGrade,IndexOfClass,IndexOfMajor,SubjectScoreRanking,TotalScoreRanking,PassStudents,NotPassStudents,界面和操作基本相同,所以上8类均继承IndexOrManage)执行将文本域内容保存到TXT文件的类TxtSave。以上19个类,除了Main类以外,均包含一个构造方法,有些还包含actionPerformed(e)方法。对象的协作过程:三、测试分析小四字体,1.5倍行距。对程序的测试情况作出分析。至少包括但不限于需要具备以下内容:阐述扩展包(仅限于SUN官方发布)的部署过程,并将扩展包附于光盘源程序中;给出数据库的详细配置说明。导入扩展包mysql-connector-java-5.1.25-bin.jar数据库配置说明:数据库mySQL数据库服务器localhost端口3306用户名root密码空数据库名studentmanagementStudent表典型测试数据的构建,并且给出测试数据的预计结果原数据:测试数据:添加学生10005张兰女20122信息工程19930506827458删除学生10000修改学生10001李嘉女20114网络工程19920304548586.5单个查找10003查询全体按年级查找 2011级按班别查找 1班按专业查找 软件工程单科排名并显示平均分 语文总分排名并显示平均分 单科及格学生 英语单科不及格学生 语文保存Txt 总分预测结果:均成功完成操作本程序的测试情况,与预计结果作对比测试情况:成功完成相关操作添加学生10005张兰女20122信息工程19930506827458删除学生10000修改学生10001李嘉女20114网络工程19920304548586.5单个查找10003 20001查询全体按年级查找 2011级按班别查找 1班按专业查找 软件工程单科排名并显示平均分 语文总分排名并显示平均分 单科及格学生 英语单科不及格学生 语文保存Txt 总分排名附录:源代码小四字体,1.5倍行距。只需列出程序中所有的包及相关的文件。不需要打印源代码。程序中所有的包及相关的文件:代码:importjavax.swing.JFrame;publicclassMain{ /** *@paramargs */ publicstaticvoidmain(String[]args){ Loginlogin=newLogin(); login.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }}importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;//登录界面publicclassLoginextendsJFrameimplementsActionListener{ JButtonb1=newJButton("登录"); JButtonb2=newJButton("退出"); JLabella1=newJLabel("用户名"); JLabella2=newJLabel("密码"); JPanelp1=newJPanel(); JPanelp2=newJPanel(); JPanelp3=newJPanel(); JTextFieldname=newJTextField(15); JPasswordFieldpw=newJPasswordField(15); publicLogin(){ setTitle("学生成绩管理系统"); getContentPane().setLayout(newGridLayout(3,1)); getContentPane().add(p1); getContentPane().add(p2); getContentPane().add(p3); p1.add(la1); p1.add(name); p2.add(la2); p2.add(pw); p3.add(b1); p3.add(b2); setBounds(500,250,100,100); pack(); setVisible(true); pw.setEchoChar('*'); b1.addActionListener(this); b2.addActionListener(this); } publicvoidactionPerformed(ActionEvente){ if(e.getActionCommand()=="登录"){ Stringpassword=pw.getText(); Stringuser=name.getText(); if(user.equals("admin")&&password.equals("admin")){ Functionfunction=newFunction(); function.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(false); } else{ JOptionPane.showMessageDialog(null,"用户名或密码错误","Error",JOptionPane.INFORMATION_MESSAGE); } } elseif(e.getActionCommand()=="退出"){ System.exit(0); } } }importjava.sql.*;//连接数据库类publicclassDataBaseCreate{ //连接数据库静态方法,若产生错误,则抛出相应错误信息 publicstaticConnectiongetConnection()throwsSQLException,java.lang.ClassNotFoundException{ //建立本地数据库连接,编码规则转换为utf-8(正常录入中文) Stringurl="jdbc:mysql://localhost:3306/studentmanagement?useUnicode=true&characterEncoding=utf8"; Class.forName("com.mysql.jdbc.Driver"); StringuserName="root"; Connectioncon=DriverManager.getConnection(url,userName,""); returncon; }}importjavax.swing.JFrame;publicclassMain{ /** *@paramargs */ publicstaticvoidmain(String[]args){ Loginlogin=newLogin(); login.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }}importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;//主要功能界面publicclassFunctionextendsJFrameimplementsActionListener{ JPanelp1=newJPanel(); JPanelp2=newJPanel(); JPanelp6=newJPanel(); JPanelp3=newJPanel(); JPanelp4=newJPanel(); JPanelp5=newJPanel(); JButtonadd=newJButton("增加学生"); JButtondel=newJButton("删除学生"); JButtonupdate=newJButton("修改学生"); JButtonsingle=newJButton("单个查询"); JButtonlook=newJButton("查看全体"); JButtonb11=newJButton("按年级查找"); JButtonb12=newJButton("按班别查找"); JButtonb13=newJButton("按专业查找"); JLabella1=newJLabel("学生管理"); JLabella2=newJLabel("成绩管理"); JLabella3=newJLabel("学生查找"); JButtonb1=newJButton("单科排名"); JButtonb2=newJButton("总分排名"); JButtonb3=newJButton("合格学生"); JButtonb4=newJButton("挂科学生"); JMenuItemitems[][]=newJMenuItem[4][]; JMenuBarbar=newJMenuBar(); JMenum1=newJMenu("开始"); JMenum2=newJMenu("学生管理"); JMenum3=newJMenu("学生查找"); JMenum4=newJMenu("成绩管理"); //构造方法 publicFunction(){ setTitle("学生成绩管理系统"); //设计菜单栏 items[0]=newJMenuItem[2]; items[1]=newJMenuItem[4]; items[2]=newJMenuItem[4]; items[3]=newJMenuItem[4]; m1.add(items[0][0]=newJMenuItem("返回")); m1.add(items[0][1]=newJMenuItem("退出")); m2.add(items[1][0]=newJMenuItem("增加学生")); m2.add(items[1][1]=newJMenuItem("删除学生")); m2.add(items[1][2]=newJMenuItem("修改学生")); m2.add(items[1][3]=newJMenuItem("单个查询")); m3.add(items[2][0]=newJMenuItem("查看全体")); m3.add(items[2][1]=newJMenuItem("按年级查找")); m3.add(items[2][2]=newJMenuItem("按班别查找")); m3.add(items[2][3]=newJMenuItem("按专业查找")); m4.add(items[3][0]=newJMenuItem("单科排名")); m4.add(items[3][1]=newJMenuItem("总分排名")); m4.add(items[3][2]=newJMenuItem("合格学生")); m4.add(items[3][3]=newJMenuItem("挂科学生")); bar.add(m1); bar.add(m2); bar.add(m3); bar.add(m4); //设计布局 getContentPane().setLayout(newGridLayout(7,1)); getContentPane().add(bar); getContentPane().add(p1); getContentPane().add(p2); getContentPane().add(p6); getContentPane().add(p3); getContentPane().add(p4); getContentPane().add(p5); p1.add(la1); p2.add(add); p2.add(del); p2.add(update); p2.add(single); p6.add(la3); p3.add(look); p3.add(b11); p3.add(b12); p3.add(b13); p4.add(la2); p5.add(b1); p5.add(b2); p5.add(b3); p5.add(b4); setBounds(500,250,100,100); pack(); setVisible(true); //注册监听器 add.addActionListener(this); del.addActionListener(this); update.addActionListener(this); look.addActionListener(this); single.addActionListener(this); b11.addActionListener(this); b12.addActionListener(this); b13.addActionListener(this); b1.addActionListener(this); b2.addActionListener(this); b3.addActionListener(this); b4.addActionListener(this); items[0][0].addActionListener(this); items[0][1].addActionListener(this); items[1][0].addActionListener(this); items[1][1].addActionListener(this); items[1][2].addActionListener(this); items[1][3].addActionListener(this); items[2][0].addActionListener(this); items[2][1].addActionListener(this); items[2][2].addActionListener(this); items[2][3].addActionListener(this); items[3][0].addActionListener(this); items[3][1].addActionListener(this); items[3][2].addActionListener(this); items[3][3].addActionListener(this); } //按钮事件响应,对用对应的类对象 publicvoidactionPerformed(ActionEvente){ if(e.getActionCommand()=="增加学生"){ AddStudentaddStudent=newAddStudent(); } elseif(e.getActionCommand()=="删除学生"){ DeleteStudentdelStudent=newDeleteStudent(); } elseif(e.getActionCommand()=="修改学生"){ UpdateStudentdelStudent=newUpdateStudent(); } elseif(e.getActionCommand()=="单个查询"){ IndexSingleis=newIndexSingle(); } elseif(e.getActionCommand()=="查看全体"){ LookAllStudentslook=newLookAllStudents(); } elseif(e.getActionCommand()=="按年级查找"){ IndexOfGradeig=newIndexOfGrade(); } elseif(e.getActionCommand()=="按班别查找"){ IndexOfClassic=newIndexOfClass(); } elseif(e.getActionCommand()=="按专业查找"){ IndexOfMajorim=newIndexOfMajor(); } elseif(e.getActionCommand()=="单科排名"){ SubjectScoreRankingsubject=newSubjectScoreRanking(); } elseif(e.getActionCommand()=="总分排名"){ TotalScoreRankingsubject=newTotalScoreRanking(); } elseif(e.getActionCommand()=="合格学生"){ PassStudentspass=newPassStudents(); } elseif(e.getActionCommand()=="挂科学生"){ NotPassStudentsnotPass=newNotPassStudents(); } elseif(e.getActionCommand()=="返回"){ setVisible(false); Loginlogin=newLogin(); login.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } elseif(e.getActionCommand()=="退出"){ System.exit(0); } }}importjava.awt.GridLayout;importjava.awt.event.*;importjavax.swing.*;publicclassStudentEditextendsJFrame{ JPanelp1=newJPanel(); JPanelp2=newJPanel(); JPanelp3=newJPanel(); JPanelp4=newJPanel(); JPanelp5=newJPanel(); JPanelp6=newJPanel(); JPanelp7=newJPanel(); JPanelp8=newJPanel(); JPanelp9=newJPanel(); JPanelp10=newJPanel(); JPanelp11=newJPanel(); JPanelp12=newJPanel(); JLabella1=newJLabel("学号"); JLabella2=newJLabel("姓名"); JLabella3=newJLabel("性别"); JLabella4=newJLabel("生日"); JLabella5=newJLabel("年级"); JLabella6=newJLabel("班别"); JLabella7=newJLabel("语文"); JLabella8=newJLabel("英语"); JLabella9=newJLabel("数学"); JLabella10=newJLabel("专业"); JButtonb1=newJButton("确定"); JButtonb2=newJButton("取消"); JTextFieldnum=newJTextField(10); JTextFieldname=newJTextField(10); JTextFieldchinese=newJTextField(10); JTextFieldenglish=newJTextField(10); JTextFieldmaths=newJTextField(10); JTextFieldbirth=newJTextField(10); String[]sex={"","男","女"}; JComboBoxs=newJComboBox(sex); String[]grades={"","2010","2011","2012","2013"}; JComboBoxgrade=newJComboBox(grades); String[]classes={"","1","2","3","4","5","6"}; JComboBoxclas=newJComboBox(classes); String[]majors={"","网络工程","软件工程","信息工程","计算机科学"}; JComboBoxmajor=newJComboBox(majors); publicStudentEdit(){ p1.add(la1); p1.add(num); p2.add(la2); p2.add(name); p3.add(la3); p3.add(s); p4.add(la4); p4.add(birth); p5.add(la5); p5.add(grade); p6.add(la6); p6.add(clas); p7.add(la7); p7.add(chinese); p8.add(la8); p8.add(english); p9.add(la9); p9.add(maths); p10.add(la10); p10.add(major); p11.add(b1); p11.add(b2); //设计布局 getContentPane().setLayout(newGridLayout(6,2)); getContentPane().add(p1); getContentPane().add(p2); getContentPane().add(p3); getContentPane().add(p4); getContentPane().add(p5); getContentPane().add(p6); getContentPane().add(p7); getContentPane().add(p8); getContentPane().add(p9); getContentPane().add(p10); getContentPane().add(p11); getContentPane().add(p12); setBounds(500,250,100,100); pack(); setVisible(true); }}importjava.awt.event.*;importjava.sql.*;importjavax.swing.JOptionPane;publicclassAddStudentextendsStudentEditimplementsActionListener{ publicAddStudent(){ super(); b1.addActionListener(this); b2.addActionListener(this); } publicvoidactionPerformed(ActionEvente){ if(e.getActionCommand()=="确定"){ //计算总分 //调用字符串转换浮点数方法 floattotal=Float.parseFloat(chinese.getText())+Float.parseFloat(english.getText())+Float.parseFloat(maths.getText()); try{ //建立数据库连接 Connectioncon=DataBaseCreate.getConnection(); Statementsql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); //添加数据到数据库 sql.executeUpdate("insertintostudent(Num,Name,Sex,Grade,Class,Major,Birth,Chinese,English,Maths,Total)"+ "values('"+num.getText()+"','"+name.getText()+"','"+s.getSelectedItem()+ "','"+grade.getSelectedItem()+"','"+clas.getSelectedItem()+"','"+major.getSelectedItem()+ "','"+birth.getText()+"',"+chinese.getText()+","+english.getText()+","+maths.getText()+","+total+")"); //关闭数据库连接 sql.close(); con.close(); JOptionPane.showMessageDialog(null,"成功录入学生信息与成绩","Message", JOptionPane.INFORMATION_MESSAGE); setVisible(false); }catch(java.lang.ClassNotFoundExceptionerr){ //捕捉错误,以对话框形式显示错误信息 JOptionPane.showMessageDialog(null,err.getMessage(),"ClassNotFoundException:", JOptionPane.INFORMATION_MESSAGE); }catch(SQLExceptionex){ JOptionPane.showMessageDialog(null,ex.getMessage(),"SQLException:",JOptionPane.INFORMATION_MESSAGE); } } elseif(e.getActionCommand()=="取消"){ setVisible(false); } }}importjava.awt.event.*;importjava.sql.Connection;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;importjavax.swing.JButton;importjavax.swing.JOptionPane;publicclassDeleteStudentextendsStudentEditimplementsActionListener{ JButtonb3=newJButton("删除"); publicDeleteStudent(){ super(); p12.add(b3); //对非必要文本框设置不可编辑 s.setEnabled(false); name.setEditable(false); birth.setEditable(false); grade.setEnabled(false); clas.setEnabled(false); chinese.setEditable(false); english.setEditable(false); maths.setEditable(false); major.setEnabled(false); b1.addActionListener(this); b2.addActionListener(this); b3.addActionListener(this); } @Override publicvoidactionPerformed(ActionEvente){ //TODO自动生成的方法存根 if(e.getActionCommand()=="确定"){ Stringnumber=num.getText(); if(number.equals("")){ JOptionPane.showMessageDialog(null,"不存在此学生","Messages", JOptionPane.INFORMATION_MESSAGE); } else try{ Connectioncon=DataBaseCreate.getConnection(); Statementsql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); //查找Num字段中与number相等的数据 ResultSetrs=sql.executeQuery("select*fromstudentwhereNumlike'%"+number+"%'"); if(rs.next()){ //显示到文本框 s.setSelectedItem(rs.getString("Sex")); name.setText(rs.getString("Name")); birth.setText(rs.getString("Birth")); chinese.setText(rs.getString("Chinese")); english.setText(rs.getString("English")); maths.setText(rs.getString("Maths")); s.setSelectedItem(rs.getString("Sex")); clas.setSelectedItem(rs.getString("Class")); grade.setSelectedItem(rs.getString("Grade")); major.setSelectedItem(rs.getString("Major")); } else{ JOptionPane.showMessageDialog(null,"不存在此学生","Messages", JOptionPane.INFORMATION_MESSAGE); } sql.close(); con.close(); }catch(java.lang.ClassNotFoundExceptionerr){ JOptionPane.showMessageDialog(null,err.getMessage(),"ClassNotFoundException:", JOptionPane.INFORMATION_MESSAGE); }catch(SQLExceptionex){ JOptionPane.showMessageDialog(null,ex.getMessage(),"SQLException:",JOptionPane.INFORMATION_MESSAGE); } } elseif(e.getActionCommand()=="取消"){ setVisible(false); } elseif(e.getActionCommand()=="删除"){ Stringnumber=num.getText(); if(number.equals("")){ JOptionPane.showMessageDialog(null,"不存在此学生","Messages", JOptionPane.INFORMATION_MESSAGE); } else try{ Connectioncon=DataBaseCreate.getConnection(); Statementsql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); ResultSetrs=sql.executeQuery("select*fromstudentwhereNumlike'%"+number+"%'"); if(rs.next()){ //删除number所在行数据 rs.deleteRow(); //清空文本框 s.setSelectedItem(""); num.setText(""); name.setText(""); birth.setText(""); chinese.setText(""); english.setText(""); maths.setText(""); s.setSelectedItem(""); clas.setSelectedItem(""); grade.setSelectedItem(""); major.setSelectedItem(""); JOptionPane.showMessageDialog(null,"删除成功","Messages", JOptionPane.INFORMATION_MESSAGE); } else{ JOptionPane.showMessageDialog(null,"不存在此学生","Messages", JOptionPane.INFORMATION_MESSAGE); } sql.close(); con.close(); setVisible(false); }catch(java.lang.ClassNotFoundExceptionerr){ JOptionPane.showMessageDialog(null,err.getMessage(),"ClassNotFoundException:", JOptionPane.INFORMATION_MESSAGE); }catch(SQLExceptionex){ JOptionPane.showMessageDialog(null,ex.getMessage(),"SQLException:",JOptionPane.INFORMATION_MESSAGE); } } }}importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.sql.Connection;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;importjavax.swing.JButton;importjavax.swing.JOptionPane;publicclassUpdateStudentextendsStudentEditimplementsActionListener{ JButtonb3=newJButton("修改"); publicUpdateStudent(){ super(); p12.add(b3); //对非必要文本框设置不可编辑 s.setEnabled(false); name.setEditable(false); birth.setEditable(false); grade.setEnabled(false); clas.setEnabled(false); chinese.setEditable(false); english.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 班级公开课与示范教学计划
- 秋季数字化学习与在线教育实施计划
- 第1课时 三位数乘两位数(教学实录)-2024-2025学年四年级上册数学人教版
- 三年级信息技术上册 第八课 寻找“食人花”教学实录 华中师大版
- 2024年服装设计师兼职合同
- 2024年度桥西区图书馆数字资源室租赁协议3篇
- 8制作我的小乐器 教学实录-2024-2025学年科学四年级上册教科版
- 六盘水职业技术学院《自动化工具软件》2023-2024学年第一学期期末试卷
- 2024SaaS企业管理软件销售及服务合同3篇
- 医疗卫生机构集中采购药品购销合同
- 《物流系统规划与设计》课程教学大纲
- 护理质控分析整改措施(共5篇)
- 金属矿山安全教育课件
- 托盘演示教学课件
- 中华农耕文化及现实意义
- DB32T 4353-2022 房屋建筑和市政基础设施工程档案资料管理规程
- DBJ61-T 112-2021 高延性混凝土应用技术规程-(高清版)
- 2023年高考数学求定义域专题练习(附答案)
- 农产品品牌与营销课件
- 苏科版一年级心理健康教育第17节《生命更美好》教案(定稿)
- 车辆二级维护检测单参考模板范本
评论
0/150
提交评论