




已阅读5页,还剩18页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java 语言程序设计 B 报 告 班级: -27 学号: 姓名: 罗 斌 成绩: 2012 年 1 月 一个简单的学生成绩管理信息系统 题目:题目: 数据库要求: 1. 建立的数据库中包含如下信息:学生学号、姓名、班级,语文、数学、英语 成绩。 2. 至少要有 5 个班级,每个班级要有 10 名以上学生。 3. 使用.txt 格式文本表示各种表。 功能需求: 1. 能够实现根据以下关键字查询:学生姓名 、学号、班级、课程名称。 2. 能够实现按照单科成绩、总成绩、平均成绩、学号排序。 3. 能够实现学生信息的插入、删除和修改。 4. 能够查询每个课程的最高分、最低分及相应学生姓名、班级和学号。 5. 能够查询每个班级某门课程的优秀率(90 分及以上) 、不及格率,并进行排 序。 界面要求: 使用图形界面实现,要符合日常软件使用规范来设计菜单和界面。 一、需求分析 1 1、界面、界面 符合日常软件使用规范,使用方便,外形简洁美观。 2 2、功能需求、功能需求 存储学生学号、姓名、班级,语文、数学、英语成绩等信息,实现数据库 的读取与存入,数据项的记录与修改,删除等。 二、设计思想 1 1、类设计、类设计 将添加数据、查询数据、删除数据、修改数据四个功能分别为四个类来实现, 为了便于测试,每一个类都继承了主窗口类 JFRAME,使得窗口可以独自运行。 INSERT 类设计 功能组件 6 个文本域、6 个标签、1 个按钮 功能实现 添加数据 实现过程 对按钮添加监控,实现按钮事件为获取文本域中的信息,并执行 SQL 的 INSERT 语句。 QUERY 类设计 功能组件 5 个按钮、三个单行文本组件、1 个下拉框、1 个多行文本 功能实现 按学号查询、按姓名查询、按班级查询、按课程查询、显示全部 实现过程 对按钮添加监控,共有五个监控事件,前三个实现按钮事件为先 获取文本域中的信息,根据对应查询的要求执行相应的 SQL 的 SELLECT 语句; 按课程查询通过在下来框中选择对应的选项,即查询相应的课程;第五个查询 按钮将全部信息在多行文本框中输出。 MODIFY 类设计 功能组件 6 个单行文本、6 个标签、1 个按钮 功能实现 修改数据 实现过程 与添加数据类似,对按钮添加监控,实现按钮事件为获取文本域 中的信息,并执行 SQL 的 UPDATE 语句;不同的是以学号为主键进行查找并更新。 DELETE 类设计 功能组件 1 个单行文本、1 个标签、1 个按钮、1 个多行文本 功能实现 删除数据 实现过程 与修改数据类似,对按钮添加监控,实现按钮事件为获取文本域 中的学号信息,并执行 SQL 的 DELETE 语句;不同的是以学号为主键进行查找并 将删除信息输出到文本框中。 2 2、数据库设计、数据库设计 系统概念结构设计 系统逻辑结构设计 学生成绩信息表学生成绩信息表 字段名字段名 属性属性类型类型空值空值约束条件约束条件 学号ID文本not null主键 姓名name文本从键 班级class文本从简 语文Chinese长整数 英语English长整数 数学Maths长整数 数据库截图 3 3、主界面设计、主界面设计 成绩查询系统 学号 姓名 班级 语文 数学 英语 MAINFRAME 类设计 功能组件 4 个按钮、1 个背景、2 个标签文本、2 个面板 功能实现 查询数据、添加数据、删除数据、修改数据 实现过程 对按钮添加监控,共有 4 个监控事件,实现按钮事件为创建对应 功能的类对象,出现相应的功能窗口。 三、运行截图 主界面主界面 添加数据添加数据 查询数据查询数据 按学号查询按学号查询 按姓名查询按姓名查询 按班级查询按班级查询 按课程名称查询按课程名称查询 显示所有信息显示所有信息 修改数据修改数据 删除数据删除数据 四、实验感想四、实验感想 通过此次课程设计我学会了很多知识,将 Java 课上遗漏的知识又进一步补 上。实践过程中遇到了很多困难,比如没学过数据库,SQL 语句不熟,对 eclipse 的使用很生疏等,因此花费了很多时间在前期准备工作上。即使如此, 也有一些功能尚未实现,例如查询优秀率、最高分和最低分等,虽然比较简单, 但由于时间问题还是没来得及做。由于本次试验的很多知识都是现学现用,以 致很多地方的代码显得累赘繁琐。但总体上主要功能是实现了的,并且美化了 一下主界面。 总之,此次课程设计让我获益匪浅,我将会继续把它完善做好。 五、源代码清单 MainFrame 类类 import javax.swing.*; import java.awt.*; import java.awt.event.*; public class MainFrame extends JFrame JButton insert,query,delete,modify; JPanel panel,panel1,panel2; public MainFrame() / TODO Auto-generated method stub ImageIcon img=new ImageIcon(1.gif); JLabel text1,text2,picture=new JLabel(img); JFrame frame=new JFrame(学生成绩管理系统); insert=new JButton(添加数据); insert.setBackground(Color.green); insert.addActionListener(new insertActionPerformed(); query=new JButton(查询数据); query.addActionListener(new queryActionPerformed(); query.setBackground(Color.green); modify=new JButton(修改数据); modify.setBackground(Color.green); modify.addActionListener(new modifyActionPerformed(); delete=new JButton(删除数据); delete.setBackground(Color.green); delete.addActionListener(new deleteActionPerformed(); frame.setSize(360,200); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container contentPane=frame.getContentPane(); contentPane.setLayout(new BorderLayout(); text1=new JLabel(欢迎使用学生成绩管理系统,JLabel.CENTER); text1.setFont(new Font(宋体,Font.BOLD,24); text1.setForeground(Color.blue); text2=new JLabel(-班 罗斌制作); text2.setFont(new Font(TimesRoman,Font.ROMAN_BASELINE,14); panel1=new JPanel(); panel1.add(insert); panel1.add(query); panel2=new JPanel(); panel2.add(modify); panel2.add(delete); panel1.setOpaque(false); panel2.setOpaque(false); panel=new JPanel(); panel.add(text2,BorderLayout.NORTH); panel.add(panel1,BorderLayout.NORTH); panel.add(panel2,BorderLayout.SOUTH); panel.setOpaque(false); contentPane.add(text1,BorderLayout.NORTH); contentPane.add(panel,BorderLayout.CENTER); frame.getLayeredPane().add(picture,new Integer(Integer.MIN_VALUE); Toolkit kit = Toolkit.getDefaultToolkit(); Dimension screenSize = kit.getScreenSize(); int screenWidth = screenSize.width/2; int screenHeight = screenSize.height/2; int height = this.getHeight(); int width = this.getWidth(); picture.setBounds(0,0,360,360); (JPanel)contentPane).setOpaque(false); frame.setLocation(screenWidth-width/2, screenHeight-height/2); frame.setVisible(true); public class insertActionPerformed implements ActionListener public void actionPerformed(ActionEvent e) new Insert().setVisible(true); public class modifyActionPerformed implements ActionListener public void actionPerformed(ActionEvent e) new Modify().setVisible(true); public class queryActionPerformed implements ActionListener public void actionPerformed(ActionEvent e) new Query().setVisible(true); public class deleteActionPerformed implements ActionListener public void actionPerformed(ActionEvent e) new Delete().setVisible(true); public static void main(String args) new MainFrame(); Insert 类类 import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.sql.*; public class Insert extends JFrame JTextField input1,input2,input3,input4,input5,input6; JLabel label1,label2,label3,label4,label5; JButton button; static Statement st; static try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); Connection con=DriverManager.getConnection(jdbc:odbc:student); st=con.createStatement(); catch(Exception e) ResultSet rs; public Insert() input1=new JTextField(15); input2=new JTextField(15); input3=new JTextField(15); input4=new JTextField(15); input5=new JTextField(15); input6=new JTextField(15); JPanel panel=new JPanel(); panel.setLayout(new GridLayout(6,2); panel.add(new JLabel(学号),BorderLayout.CENTER); panel.add(input1); panel.add(new JLabel(姓名),BorderLayout.CENTER); panel.add(input2); panel.add(new JLabel(班级),BorderLayout.CENTER); panel.add(input3); panel.add(new JLabel(语文),BorderLayout.CENTER); panel.add(input4); panel.add(new JLabel(英语); panel.add(input5); panel.add(new JLabel(数学); panel.add(input6); button=new JButton(添加); button.addActionListener(new mysql(); Container container=getContentPane(); container.add(panel,BorderLayout.CENTER); container.add(button,BorderLayout.SOUTH); setTitle(添加数据窗口); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); setSize(250,250); Toolkit kit = Toolkit.getDefaultToolkit(); Dimension screenSize = kit.getScreenSize(); int screenWidth = screenSize.width/2; int screenHeight = screenSize.height/2; int height = this.getHeight(); int width = this.getWidth(); setLocation(screenWidth-width/2, screenHeight-height/2); setVisible(true); class mysql implements ActionListener public void actionPerformed(ActionEvent e) try String number=input1.getText().trim(); String name=input2.getText().trim(); String clas=input3.getText().trim(); String temp=input4.getText(); int chinese=Integer.parseInt(temp); temp=input4.getText(); int english=Integer.parseInt(temp); temp=input4.getText(); int maths=Integer.parseInt(temp); if(number.equals()|name.equals()| clas.equals()|temp.equals() JOptionPane.showMessageDialog(Insert.this,请重新输入,提示对话 框,1); else String sql=insert into ScoreInfo(ID,name,class,Chinese,English,Maths) values(+number+,+name+,+clas+,+chinese+,+english+,+maths+); st.executeUpdate(sql); JOptionPane.showMessageDialog(Insert.this, 数据添加成功,提示对 话框,1); input1.setText(); input2.setText(); input3.setText(); input4.setText(); input5.setText(); input6.setText(); catch(Exception ee) Query 类类 import java.awt.*; import javax.swing.event.*; import java.awt.event.*; import javax.swing.*; import java.sql.*; public class Query extends JFrame JTextArea show; JButton button1,button2,button3,button4,button5; JTextField field1,field2,field3; JComboBox comoBox; static Statement st; static try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); Connection con=DriverManager.getConnection(jdbc:odbc:student); st=con.createStatement(); catch(Exception e) public Query() show=new JTextArea(5,10); button1=new JButton(显示所有信息); button1.addActionListener(new Mysql1(); Container container=getContentPane(); container.setLayout(new BorderLayout(); JPanel panel=new JPanel(); JPanel mainpanel=new JPanel(); button2=new JButton(按学号查询); button2.addActionListener(new Mysql2(); panel.add(button2); field1=new JTextField(7); panel.add(field1); panel.setVisible(true); mainpanel.add(panel); button3=new JButton(按姓名查询); button3.addActionListener(new Mysql3(); panel.add(button3); field2=new JTextField(6); panel.add(field2); panel.setVisible(true); mainpanel.add(panel); button4=new JButton(按班级查询); button4.addActionListener(new Mysql4(); panel.add(button4); field3=new JTextField(6); panel.add(field3); panel.setVisible(true); mainpanel.add(panel); String items=请选择,语文,英语,数学; comoBox=new JComboBox(items); button5=new JButton(按课程名称查询); button5.addActionListener(new Mysql5(); panel.add(button5); panel.add(comoBox); panel.setVisible(true); mainpanel.add(panel); panel=new JPanel(); panel.add(button1); container.add(mainpanel,BorderLayout.NORTH); container.add(panel,BorderLayout.SOUTH); container.add(new JScrollPane(show),BorderLayout.CENTER); setTitle(查询数据); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); setSize(750,400); Toolkit kit = Toolkit.getDefaultToolkit(); Dimension screenSize = kit.getScreenSize(); int screenWidth = screenSize.width/2; int screenHeight = screenSize.height/2; int height = this.getHeight(); int width = this.getWidth(); setLocation(screenWidth-width/2, screenHeight-height/2); setVisible(true); class Mysql1 implements ActionListener public void actionPerformed(ActionEvent e) try String sql=select * from ScoreInfo; ResultSet rs=st.executeQuery(sql); show.setText(); show.append(序号 学号 姓名 班级 语文 英语 数学+n); while(rs.next() show.append(rs.getInt(1)+ ); show.append(rs.getString(2)+ ); show.append(rs.getString(3)+ ); show.append(rs.getString(4)+ ); show.append(rs.getInt(5)+ ); show.append(rs.getInt(6)+ ); show.append(rs.getInt(7)+n); catch(Exception ee) class Mysql2 implements ActionListener public void actionPerformed(ActionEvent e) try String ss=field1.getText().trim(); String sql=select * from ScoreInfo where ID=+ss+; ResultSet rs=st.executeQuery(sql); show.setText(); show.append(序号 学号 姓名 班级 语文 英语 数学+n); while(rs.next() show.append(rs.getInt(1)+ ); show.append(rs.getString(2)+ ); show.append(rs.getString(3)+ ); show.append(rs.getString(4)+ ); show.append(rs.getInt(5)+ ); show.append(rs.getInt(6)+ ); show.append(rs.getInt(7)+n); catch(Exception ee) class Mysql3 implements ActionListener public void actionPerformed(ActionEvent e) try String ss=field2.getText().trim(); String sql=select * from ScoreInfo where name=+ss+; ResultSet rs=st.executeQuery(sql); show.setText(); show.append(序号 学号 姓名 班级 语文 英语 数学+n); while(rs.next() show.append(rs.getInt(1)+ ); show.append(rs.getString(2)+ ); show.append(rs.getString(3)+ ); show.append(rs.getString(4)+ ); show.append(rs.getInt(5)+ ); show.append(rs.getInt(6)+ ); show.append(rs.getInt(7)+n); catch(Exception ee) class Mysql4 implements ActionListener public void actionPerformed(ActionEvent e) try String ss=field3.getText().trim(); String sql=select * from ScoreInfo where class=+ss+; ResultSet rs=st.executeQuery(sql); show.setText(); show.append(序号 学号 姓名 班级 语文 英语 数学+n); while(rs.next() show.append(rs.getInt(1)+ ); show.append(rs.getString(2)+ ); show.append(rs.getString(3)+ ); show.append(rs.getString(4)+ ); show.append(rs.getInt(5)+ ); show.append(rs.getInt(6)+ ); show.append(rs.getInt(7)+n); catch(Exception ee) class Mysql5 implements ActionListener public void actionPerformed(ActionEvent e) try String sql=; String ss=comoBox.getSelectedItem().toString(); if(ss.equals(语文) sql=select ID,name,class,Chinese from ScoreInfo ; show.setText(); show.append(序号 学号 姓名 班级 语文+n); else if(ss.equals(英语) sql=select ID,name,class,English from ScoreInfo ; show.setText(); show.append(序号 学号 姓名 班级 英语 +n); else if(ss.equals(数学) sql=select ID,name,class,Maths from ScoreInfo ; show.setText(); show.append(序号 学号 姓名 班级 数学+n); ResultSet rs=st.executeQuery(sql); int i=0; while(rs.next() i+; show.append(+i+ +rs.getString(1)+ ); show.append(rs.getString(2)+ ); show.append(rs.getString(3)+ ); show.append(rs.getInt(4)+n); catch(Exception ee) Modify 类类 import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.sql.*; public class Modify extends JFrame JTextField input1,input2,input3,input4,input5,input6; JLabel label1,label2,label3,label4,label5; JButton button; static Statement st; static try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); Connection con=DriverManager.getConnection(jdbc:odbc:student); st=con.createStatement(); catch(Exception e) ResultSet rs; public Modify() input1=new JTextField(15); input2=new JTextField(15); input3=new JTextField(15); input4=new JTextField(15); input5=new JTextField(15); input6=new JTextField(15); JPanel panel=new JPanel(); panel.setLayout(new GridLayout(6,2); panel.add(new JLabel(学号); panel.add(input1); panel.add(new JLabel(姓名); panel.add(input2); panel.add(new JLabel(班级); panel.add(input3); panel.add(new JLabel(语文); panel.add(input4); panel.add(new JLabel(英语); panel.add(input5); panel.add(new JLabel(数学); panel.add(input6); button=new JButton(修改); button.addActionListener(new mysql(); Container container=getContentPane(); container.add(panel,BorderLayout.CENTER); container.add(button,BorderLayout.SOUTH); setTitle(修改数据窗口); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); setSize(300,150); Toolkit kit = Toolkit.getDefaultToolkit(); Dimension screenSize = kit.getScreenSize(); int screenWidth = screenSize.width/2; int screenHeight = screenSize.height/2; int height = this.getHeight(); int width = this.getWidth(); setLocation(screenWidth-width/2, screenHeight-height/2); setVisible(true); class mysql implements ActionListener public void actionPerformed(ActionEvent e) try String number=input1.getText().trim(); String name=input2.getText().trim(); String clas=input3.getText().trim(); String temp=input4.getText(); int chinese=Integer.parseInt(temp); temp=input4.getText(); int english=Integer.parseInt(temp); temp=input4.getText(); int maths=Integer.parseInt(temp); if(number.equals() JOptionPane.showMessageDialog(Modify.this,学号不能为空!,提 示对话框,1); else try String sql=update ScoreInfo set name=+name+,class=+clas+,Chinese=+chinese+,English=+english+,Maths=+maths+ where ID=+number+; st.executeUpdate(sql); JOptionPane.showMessageDialog(Modify.this, 数据修改成功,提示 对话框,1); input1.setText(); input2.setText(); input3.setText(); input4.setText(); input5.setText(); input6.setText(); catch(Exception ee) JOptionPane.showMessageDialog(Modify.this,请确认需要修改的 学号是否存在,提示对话框,1); System.out.println(ee); catch(Exception eee) System.out.println(eee); Delete 类类 import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.sql.*; public class Delete extends JFrame JButton search; JTextField input; JTextArea show; Connection con; Statement st; public Delete() JPa
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 未来商业发展中的高效焊接技术探索
- 智能制造与工业互联网项目合作协议
- 2025年软泡聚醚合作协议书
- 珠宝玉石采购合同
- 2025年度国有土地使用权收回拆迁补偿协议范本
- 二零二五年度网络安全监测与防护聘用协议
- 现代营销策略在体育产业中的运用及成效
- 2025年度房产分销合作伙伴权益保护合同
- 社会环保活动与市场营销的融合探索报告
- 中国pu-A阻燃剂项目投资可行性研究报告
- 2025年四川司法警官职业学院高职单招职业适应性测试近5年常考版参考题库含答案解析
- 山东省德州市2024-2025学年高三上学期1月期末生物试题(有答案)
- 本人报废车辆委托书
- 双减政策与五项管理解读
- 2025年道德与法治小学六年级下册教学计划(含进度表)
- 过桥资金操作流程
- 货物学 课件1.2货物的特性
- 新时代中国特色社会主义理论与实践2024版研究生教材课件全集2章
- 2024年公路水运工程施工企业主要负责人和安全生产管理人员安全生产考核试题库(含答案)
- (2023年最新版)医师执业、变更执业、多机构备案申请审核表
- 医疗器械临床试验质量管理规范培训课件
评论
0/150
提交评论