收藏 分销(赏)

成绩管理系统java+mySQL.doc

上传人:w****g 文档编号:4134007 上传时间:2024-07-31 格式:DOC 页数:40 大小:188.54KB 下载积分:12 金币
下载 相关 举报
成绩管理系统java+mySQL.doc_第1页
第1页 / 共40页
成绩管理系统java+mySQL.doc_第2页
第2页 / 共40页


点击查看更多>>
资源描述
你的姓名——《Java语言》课程期末作业 《Java语言》课程期末作业 题 目第9题: 学生成绩管理系统 学 院计算机学院 专 业 班 别 学 号 姓 名温景钊 2013年6月10日 40 一、课程题目 设计一个简易的学生成绩管理系统。用于记录学生的各科成绩,以及实现常用的统计功能。 (1) 记录学生的基本信息,如姓名、学号、专业、班级等 (2) 记录各科成绩 (3) 实现常用的统计功能,如:单科成绩排名、总分排名、统计成绩高于/低于某一临界值的学生、统计单科/总分平均值…… (4) 使用图形方式显示某些数据,如直方图显示各分数段的人数、绘制各科分数分布曲线……(可选) (5) 必须使用数据库。 其它功能可自行扩展. 二、题目分析与设计 1. 注明所使用的开发环境(Eclipse、NetBeans,JBuilder). 开发环境:Eclipse 2. 论述题目的需求。给出软件功能架构图。 题目需求:通过数据库记录学生成绩和信息,并通过数据库读取这些信息,实现单个学生查找、全体学生查找等功能和单科排名、平均分、总分排名、平均分等功能.其他扩展功能:登录界面,保存到txt文件。 软件功能架构图: 其中,删除、修改、单个查找功能均通过学号定位学生 3. 论述界面设计过程,指出其设计上的创意及组件的布局策略. 界面设计过程: 主要界面包括登录界面,主功能界面,各个子功能界面。登录界面包括3个面板,每个面板放入相应的标签、文本框、按钮等组件,登录界面采用3行1列的网格布局;主功能界面包括菜单栏和若干面板,面板中放入标签或若干按钮,菜单栏的菜单项与按钮相对应,主功能界面采用7行1列的网格布局;学生管理类子功能(增加学生、删除学生、修改学生、单个查找)界面采用6行2列的网格布局,每个网格均放入一个面板,每个面板放入标签、文本框、组合框、按钮等组件,以达到较友好的界面效果;学生查找类子功能界面(查看全体、按年级查询、按班别查询、按专业查询)和成绩管理类子功能(单科排名、总分排名、合格学生、挂科学生)界面采用边界布局,界面的上部放入一个面板,面板放入相应的按钮或组合框,中部放入一个文本域。所有错误信息等信息均通过对话框的形式显示相应信息. 4. 论述程序逻辑的实现,包括类的设计、对象的协作过程等,必要时加以各种图形和表格辅助论述.不得以粘贴代码的方式代替设计部分. 类的设计过程: 本程序包括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倍行距。对程序的测试情况作出分析.至少包括但不限于需要具备以下内容: 1. 阐述扩展包(仅限于SUN官方发布)的部署过程,并将扩展包附于光盘源程序中;给出数据库的详细配置说明。 导入扩展包 mysql—connector-java-5。1。25—bin。jar 数据库配置说明: 数据库 mySQL 数据库服务器 localhost 端口 3306 用户名 root 密码 空 数据库名studentmanagement Student 表 2. 典型测试数据的构建,并且给出测试数据的预计结果 原数据: 测试数据: 添加学生 10005 张兰 女 2012 2 信息工程 19930506 82 74 58 删除学生10000 修改学生 10001 李嘉 女 2011 4 网络工程 19920304 54 85 86。5 单个查找 10003 查询全体 按年级查找 2011级 按班别查找 1班 按专业查找 软件工程 单科排名并显示平均分 语文 总分排名并显示平均分 单科及格学生 英语 单科不及格学生 语文 保存Txt 总分 预测结果: 均成功完成操作 3. 本程序的测试情况,与预计结果作对比 测试情况:成功完成相关操作 添加学生 10005 张兰 女 2012 2 信息工程 19930506 82 74 58 删除学生 10000 修改学生 10001 李嘉 女 2011 4 网络工程 19920304 54 85 86.5 单个查找 10003 20001 查询全体 按年级查找 2011级 按班别查找 1班 按专业查找 软件工程 单科排名并显示平均分 语文 总分排名并显示平均分 单科及格学生 英语 单科不及格学生 语文 保存Txt 总分排名 附录:源代码 小四字体,1。5倍行距.只需列出程序中所有的包及相关的文件.不需要打印源代码. 程序中所有的包及相关的文件: 代码: import javax.swing.JFrame; publicclass Main { /** * @param args */ publicstaticvoid main(String[] args) { Login login=new Login(); login。setDefaultCloseOperation(JFrame。EXIT_ON_CLOSE); } } import java。awt。*; import java.awt.event.*; import javax。swing。*; //登录界面 publicclassLoginextends JFrame implements ActionListener{ JButton b1=new JButton(”登录"); JButton b2=new JButton(”退出"); JLabel la1=new JLabel(”用户名”); JLabel la2=new JLabel("密 码”); JPanel p1=new JPanel(); JPanel p2=new JPanel(); JPanel p3=new JPanel(); JTextField name=new JTextField(15); JPasswordField pw=new JPasswordField(15); public Login(){ setTitle("学生成绩管理系统”); getContentPane().setLayout(new GridLayout(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); } publicvoid actionPerformed(ActionEvent e) { if(e。getActionCommand()==”登录"){ String password=pw.getText(); String user=name。getText(); if(user。equals(”admin”) && password。equals(”admin”)){ Function function=new Function(); function。setDefaultCloseOperation(JFrame。EXIT_ON_CLOSE); setVisible(false); } else{ JOptionPane.showMessageDialog(null, "用户名或密码错误”, "Error”, JOptionPane。INFORMATION_MESSAGE); } } elseif(e。getActionCommand()==”退出”){ System。exit(0); } } } import java。sql.*; //连接数据库类 publicclass DataBaseCreate { //连接数据库静态方法,若产生错误,则抛出相应错误信息 publicstatic Connection getConnection()throws SQLException,java。lang。ClassNotFoundException{ //建立本地数据库连接,编码规则转换为utf—8(正常录入中文) String url="jdbc:mysql://localhost:3306/studentmanagement?useUnicode=true&characterEncoding=utf8”; Class。forName(”com.mysql。jdbc。Driver"); String userName=”root"; Connection con=DriverManager。getConnection(url, userName, ””); return con; } } import javax。swing.JFrame; publicclass Main { /** * @param args */ publicstaticvoid main(String[] args) { Login login=new Login(); login。setDefaultCloseOperation(JFrame。EXIT_ON_CLOSE); } } import java.awt。*; import java。awt。event。*; import javax。swing。*; //主要功能界面 publicclassFunctionextends JFrame implements ActionListener{ JPanel p1=new JPanel(); JPanel p2=new JPanel(); JPanel p6=new JPanel(); JPanel p3=new JPanel(); JPanel p4=new JPanel(); JPanel p5=new JPanel(); JButton add=new JButton(”增加学生"); JButton del=new JButton("删除学生”); JButton update=new JButton(”修改学生"); JButton single=new JButton("单个查询”); JButton look=new JButton(”查看全体”); JButton b11=new JButton(”按年级查找"); JButton b12=new JButton("按班别查找"); JButton b13=new JButton(”按专业查找”); JLabel la1=new JLabel("学生管理”); JLabel la2=new JLabel("成绩管理”); JLabel la3=new JLabel("学生查找”); JButton b1=new JButton(”单科排名"); JButton b2=new JButton(”总分排名”); JButton b3=new JButton("合格学生”); JButton b4=new JButton(”挂科学生”); JMenuItem items[][]=new JMenuItem[4][]; JMenuBar bar=new JMenuBar(); JMenu m1=new JMenu(”开始”); JMenu m2=new JMenu(”学生管理”); JMenu m3=new JMenu(”学生查找”); JMenu m4=new JMenu(”成绩管理”); //构造方法 public Function(){ setTitle(”学生成绩管理系统"); //设计菜单栏 items[0]=new JMenuItem[2]; items[1]=new JMenuItem[4]; items[2]=new JMenuItem[4]; items[3]=new JMenuItem[4]; m1.add(items[0][0]=new JMenuItem(”返回")); m1。add(items[0][1]=new JMenuItem(”退出”)); m2。add(items[1][0]=new JMenuItem(”增加学生”)); m2。add(items[1][1]=new JMenuItem(”删除学生")); m2.add(items[1][2]=new JMenuItem(”修改学生”)); m2.add(items[1][3]=new JMenuItem("单个查询”)); m3.add(items[2][0]=new JMenuItem("查看全体")); m3.add(items[2][1]=new JMenuItem("按年级查找”)); m3.add(items[2][2]=new JMenuItem("按班别查找")); m3。add(items[2][3]=new JMenuItem(”按专业查找")); m4。add(items[3][0]=new JMenuItem(”单科排名")); m4.add(items[3][1]=new JMenuItem(”总分排名”)); m4.add(items[3][2]=new JMenuItem(”合格学生”)); m4。add(items[3][3]=new JMenuItem("挂科学生")); bar.add(m1); bar.add(m2); bar。add(m3); bar。add(m4); //设计布局 getContentPane()。setLayout(new GridLayout(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); } //按钮事件响应,对用对应的类对象 publicvoid actionPerformed(ActionEvent e) { if(e.getActionCommand()=="增加学生"){ AddStudent addStudent =new AddStudent(); } elseif(e。getActionCommand()==”删除学生"){ DeleteStudent delStudent=new DeleteStudent(); } elseif(e.getActionCommand()==”修改学生”){ UpdateStudent delStudent=new UpdateStudent(); } elseif(e.getActionCommand()==”单个查询”){ IndexSingle is=new IndexSingle(); } elseif(e.getActionCommand()=="查看全体”){ LookAllStudents look=new LookAllStudents(); } elseif(e。getActionCommand()==”按年级查找”){ IndexOfGrade ig=new IndexOfGrade(); } elseif(e。getActionCommand()=="按班别查找”){ IndexOfClass ic=new IndexOfClass(); } elseif(e。getActionCommand()=="按专业查找"){ IndexOfMajor im=new IndexOfMajor(); } elseif(e.getActionCommand()==”单科排名”){ SubjectScoreRanking subject= new SubjectScoreRanking(); } elseif(e。getActionCommand()=="总分排名"){ TotalScoreRanking subject= new TotalScoreRanking(); } elseif(e。getActionCommand()==”合格学生”){ PassStudents pass=new PassStudents(); } elseif(e.getActionCommand()==”挂科学生”){ NotPassStudents notPass=new NotPassStudents(); } elseif(e。getActionCommand()=="返回”){ setVisible(false); Login login=new Login(); login.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } elseif(e。getActionCommand()==”退出”){ System。exit(0); } } } import java。awt。GridLayout; importjava。awt。event.*; import javax。swing。*; publicclassStudentEditextends JFrame{ JPanel p1=new JPanel(); JPanel p2=new JPanel(); JPanel p3=new JPanel(); JPanel p4=new JPanel(); JPanel p5=new JPanel(); JPanel p6=new JPanel(); JPanel p7=new JPanel(); JPanel p8=new JPanel(); JPanel p9=new JPanel(); JPanel p10=new JPanel(); JPanel p11=new JPanel(); JPanel p12=new JPanel(); JLabel la1=new JLabel("学号"); JLabel la2=new JLabel(”姓名”); JLabel la3=new JLabel(”性别"); JLabel la4=new JLabel(”生日"); JLabel la5=new JLabel("年级"); JLabel la6=new JLabel("班别”); JLabel la7=new JLabel(”语文"); JLabel la8=new JLabel(”英语”); JLabel la9=new JLabel(”数学”); JLabel la10=new JLabel("专业”); JButton b1=new JButton("确定”); JButton b2=new JButton(”取消”); JTextField num=new JTextField(10); JTextField name=new JTextField(10); JTextField chinese=new JTextField(10); JTextField english=new JTextField(10); JTextField maths=new JTextField(10); JTextField birth=new JTextField(10); String[] sex={””,”男”,"女"}; JComboBoxs=new JComboBox(sex); String[] grades={”",”2010”,”2011”,"2012”,”2013"}; JComboBoxgrade=new JComboBox(grades); String[] classes={”",”1”,”2","3",”4”,”5",”6”}; JComboBoxclas=new JComboBox(classes); String[] majors={”","网络工程","软件工程",”信息工程”,"计算机科学"}; JComboBoxmajor=new JComboBox(majors); public StudentEdit(){ 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(new GridLayout(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); } } import java。awt.event.*; import java.sql。*; import javax.swing。JOptionPane; public class AddStudent extends StudentEdit implements ActionListener{ public AddStudent(){ super(); b1。addActionListener(this); b2。addActionListener(this); } public void actionPerformed(ActionEvent e) { if(e.getActionCommand()==”确定”){ //计算总分 //调用字符串转换浮点数方法 float total=Float。parseFloat(chinese。getText())+Float.parseFloat(english。getText())+Float。parseFloat(maths.getText()); try{ //建立数据库连接 Connection con=DataBaseCreate。getConnection(); Statement sql=con。createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); //添加数据到数据库 sql.executeUpdate("insert into student(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。ClassNotFoundException err){ //捕捉错误,以对话框形式显示错误信息 JOptionPane.showMessageDialog(null, err。getMessage(), ”ClassNotFoundException:", JOptionPane。INFORMATION_MESSAGE); }catch (SQLException ex){ JOptionPane.showMessageDialog(null, ex。getMessage(), ”SQLException: ", JOptionPane。INFORMATION_MESSAGE); } } else if(e.getActionCommand()==”取消"){ setVisible(false); } } } import java。awt.event。*; import java。sql.Connection; import java。sql.ResultSet; import java.sql.SQLException; import java.sql。Statement; import javax.swing。JButton; import javax。swing。JOptionPane; publicclassDeleteStudentextends StudentEdit implements ActionListener { JButton b3=new JButton("删除"); public DeleteStudent(){ 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 publicvoid actionPerformed(ActionEvent e) { // TODO自动生成的方法存根 if(e。getActionCommand()==”确定"){ String number=num。getText(); if(number。equals(””)){ JOptionPane.showMessageDialog(null, ”不存在此学生”, ”Messages", JOptionPane。INFORMATION_MESSAGE); } else try{ Connection con=DataBaseCreate.getConnection(); Statement sql=con。createStatement(ResultSet。TYPE_SCROLL_SENSITIVE,ResultSet。CONCUR_UPDATABLE); //查找Num字段中与number相等的数据 ResultSet rs=sql。executeQuery(”select * from student where Num like ’%”+number+"%'"); if(rs。next()){ //显示到文本框 s.setSelectedItem(rs。getString(”Sex”)); name.setText(rs.getString(”Name")); birth.setText(rs。g
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服