




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、. 淮 海 工 学 院 计算机工程学院课程设计报告设计名称: 面向对象课程设计 选题名称: 学生成绩管理系统的设计与实现 姓名: * 学 号: 201412* 专业班级: 软件工程 软件142 系 (院): 计算机工程学院 设计时间: 设计地点: 软件实验室、教室 成绩:指导教师评语: 签名: 年 月 日:面向对象课程设计报告 第 49 页,共 49 页1课程设计目的面向对象程序设计是一门实践性很强的计算机专业基础课程,课程设计是学习完该课程后进行的一次较全面的综合练习。其目的在于通过实践加深学生对面向对象程序设计的理论、方法和基础知识的理解,掌握使用Java语言进行面向对象设计的基本方法,提
2、高运用面向对象知识分析实际问题、解决实际问题的能力。2课程设计任务与要求:课程设计可选用NetBeans、Eclipse等作为开发平台以提高开发效率,尽可能熟练掌握其中一种集成开发环境。建议采用UML建模技术进行系统的分析设计,在Visio中画出系统用例图和类图,并将UML图复制到设计报告中。通过这次设计,要求掌握以下内容:1) 面向对象技术中的继承与多态(重载和覆盖)机制、各种修饰符的使用2) 类、包、接口的定义与使用3) 常用工具类与算法的实现(数组、向量、字符串、链表)4) Java常用标准GUI组件及其事件处理5) Java的异常处理机制6) Java的数据库连接技术选题: 学生成绩管
3、理系统选用的开发工具: Eclipse1.8 jdk1.8 mysql 3课程设计说明书3.1 需求分析如何方便有效地完成某项任务是人类发展历程中的永恒主题,随着社会的发展,这一主题显得更为突出。教师和学生是教学的两个主体对象,为了方便教师公布学生成绩,学生可以及时地了解个人的成绩,以及在班级和年级中的排名情况,。考试信息管理系统主要有两类用户,一是教师,负责对信息系统进行管理,负责添加、修改、删除学生成绩,并且能够重置学生的登录密码;二是学生,可以查询到自己的各项成绩以及总分,并且能够修改个人在平台的登录密码等操作。功能要求:1、由于本系统存在两类用户人群(教师,学生)通过本模块的识别,将授
4、予用户相应的模块下的权限进行系统的访问,保障数据间的隐私。 2、教师能够添加、修改、删除、查询学生的成绩以及登录密码3、学生只能够查询个人成绩、以及修改个人的登录密码根据上面的分析,系统用例图设计如图1-1所示。用例图 图1-1:学生成绩管理系统用例图概要设计类名方法作用Studentvarious set() and get()定义学生学生姓名、密码、学号、各科成绩、Teachervarious set() and get()定义教师工号、姓名、密码等DBAccessdbconn()dbSelect(String selString)dbUpdate(String updateString)
5、dbInsert(String insertString)dbDelete(String delString)dbclose()数据库的封装LoginGUIActionperformed()inputdata()temStatechanged() main()统一登录界面StudentGUIActionperformed()inputdata() outputdata()itemStatechanged() valuechanged()reset() display()教师操作界面完成学生成绩的录入、查找、修改、删除ScoresActionperformed()inputdata()outpu
6、tdata()学生查询个人成绩ReviseActionperformed()教师查询界面CheckEmptyCheck()检查文本框为空 LoginGUI +main() LoginGUI Scores StudentGUI ReviseJDBC的设计StudentInfo的设计TeacherInfoStudentGUI+temp:Student-多个swing组件+ reset():void + display():void + outdata():void Scores+temp:Student-多个swing组件-SearchByNo(con:int):void Revise+stuno
7、 int+stupwd1 String+stupwd2 String+resetpwd(int stuno :int,stupwd1:String,stupwd2:String )StringJFrameJFrameJFrame详细设计 JFrameLoginGUI+stuno int+stupwd1 String+db DBAccess+Test(stuno int;pwd Stirng)StringStudent-studentID:int-studentName:String-key:String-chinese:int-math:int-english:int-sum:int-aver
8、age:double+Student()+Student(studentID:int,studentNane:String,key:String,chinese:int,math:int,english:int)+getStudentID():int+setStudentID(studentID:int):void+getKey():string+setKey(key:string):void+getChinese():int+setChinese(chinese:int):void+getMath():int+setMath(math:int):void+getEnglish():int+s
9、etEnglish(english:int):void+setAverage(chinese:int,math:int,english:int):void+toString():stringTeacher-teacherID:int-teacherName:string-pwd:string-caverage: double-maverage:double-eaverage:double+Teacher()+Teacher(teacherID:int,teacherName:string,pwd:string,caverage:double,maverage:double,eaverage:d
10、ouble)+getTeacherID():int+setTeacherID(studentID:int):void+getKey():string+setKey(key:string):void+getCaverage():double+setCaverage(chinese:int):void+getMaverage():double+setMaverage(math:double):void+getEaverage():double+setEaverage(english:double):void+setTotal(chinese:double,math:double,english:d
11、ouble):void图形用户界面设计统一登录界面 学生成绩管理界面学生查询个人成绩界面学生修改个人密码界面4课程设计成果1.统一登录界面2.教师管理3.学生成绩查询4.密码修改 原密码输入错误,修改失败 程序源代码登录界面package come;public void actionPerformed(ActionEvent evt)int flag=0;if(evt.getActionCommand().equals("确定")CheckEmpty cktxt1=new CheckEmpty(textno);CheckEmpty cktxt2=new CheckEmpt
12、y(textpwd);if(cktxt1.check(1)&&cktxt2.check(1)int stuno=Integer.parseInt(textno.getText();SuppressWarnings("deprecation")String stupwd=textpwd.getText();int s=stuno/1000000;if(s!=0)/学生db.dbconn();String sql="select * from studentinfo where stuno="+stuno; db.dbSelect(sql);
13、 try while (db.rs.next() if(stupwd.equals(db.rs.getString(4) Scores k=new Scores(stuno); k.setVisible(true); flag=1; dispose(); catch (SQLException es) System.out.println(es); db.dbclose();else/教师db.dbconn();String sql="select * from teacherinfo where teaID="+stuno; db.dbSelect(sql); try w
14、hile (db.rs.next() if(stupwd.equals(db.rs.getString(3) StudentGUI k=new StudentGUI(db.rs.getString(2); k.setVisible(true); flag=1; dispose(); db.dbclose(); catch (SQLException es) System.out.println(es); db.dbclose();else/文本框为空p.setText("请输入账号和密码!");if(flag=0&&cktxt1.check(1)&&
15、amp;cktxt2.check(1)p.setText("账号和密码不匹配!");教师管理界面public void valueChanged(ListSelectionEvent evt)i=table.getSelectedRow();public void actionPerformed(ActionEvent evt)if (evt.getActionCommand().equals("添加记录")/ok cktxt = new CheckEmpty(textno); if (cktxt.check(1) stuno = Integer.par
16、seInt(textno.getText(); stuclass=Integer.parseInt(textClass.getText(); stuname = textname.getText(); stupwd=textpwd.getText(); stuchinese = Integer.parseInt(textChinese.getText(); stumath = Integer.parseInt(textMath.getText(); stuenglish = Integer.parseInt(textEnglish.getText(); stu=new Student(stun
17、o,stuclass,stuname,stuchinese,stumath,stuenglish,stupwd); int s=stu.sum; if(stuclass>5|stuclass<1|stuchinese<0|stuchinese>100|stumath<0|stumath>100|stuenglish<0|stuenglish>100) lblPrompt.setText("成绩录入有误!"); else inputData(); String sql = "insert into studentInf
18、o(stuno,stuclass,stuname,stupwd,stuchinese,stumath,stuenglish,stutotal)values("+stuno+",'"+stuclass+"','"+stuname+"','"+stupwd+"','"+stuchinese+"','"+stumath+"','"+stuenglish+"',&quo
19、t;+s+") " db.dbconn(); db.dbInsert(sql); lblPrompt.setText(db.notes); db.dbclose(); reset1(); else if(evt.getActionCommand().equals("列出记录")/ok i=0; sql="select * from studentInfo" display(sql); else if(evt.getActionCommand().equals("查找记录")/ok /*/ cktxt=new Che
20、ckEmpty(textname); if(cktxt.check(0) findflag=0; stuname=textname.getText(); sql="select * from studentInfo where stuname='"+stuname+"'" display(sql); if(findflag=0) lblPrompt.setText("没有查找到该同学成绩信息"); textname.setText(stuname); else if(evt.getActionCommand().equ
21、als("修改记录")/ok cktxt=new CheckEmpty(textno); if(cktxt.check(1) stuno = Integer.parseInt(textno.getText(); stuclass=Integer.parseInt(textClass.getText(); stuname = textname.getText(); stupwd=textpwd.getText(); stuchinese = Integer.parseInt(textChinese.getText(); stumath = Integer.parseInt(t
22、extMath.getText(); stuenglish = Integer.parseInt(textEnglish.getText(); stu=new Student(stuno,stuclass,stuname,stuchinese,stumath,stuenglish,stupwd); int s=stu.sum; dModel.setValueAt(Object)textno.getText(), i, 0); dModel.setValueAt(Object)textClass.getText(), i, 1); dModel.setValueAt(Object)textnam
23、e.getText(), i, 2); dModel.setValueAt(Object)textpwd.getText(), i, 3); dModel.setValueAt(Object)textChinese.getText(), i, 4); dModel.setValueAt(Object)textEnglish.getText(), i, 6); dModel.setValueAt(Object)textMath.getText(), i, 5); dModel.setValueAt(Object)s, i, 7); sql="update studentInfo set
24、 stuno="+stuno+",stuclass="+stuclass+",stupwd='"+stupwd+"',stuchinese="+stuchinese+",stumath="+stumath+",stuenglish="+stuenglish+",stutotal="+s+" where stuno="+stuno; db.dbconn(); db.dbUpdate(sql); lblPrompt.setText(d
25、b.notes); db.dbclose(); else if(evt.getActionCommand().equals("删除记录")/ok if(dModel.getRowCount()=0) lblPrompt.setText("没有记录可以删除!"); else int dno= Integer.parseInt(dModel.getValueAt(i, 0).toString(); dModel.removeRow(i); i=0; sql="delete from studentInfo where stuno="+dn
26、o; db.dbconn(); db.dbDelete(sql); db.dbclose(); lblPrompt.setText(db.notes); else if(evt.getActionCommand().equals("清空列表") /ok reset(); 学生查询界面 try while (db.rs.next() textno.setText(Integer.valueOf(db.rs.getInt(1).toString(); textClass.setText(Integer.valueOf(db.rs.getInt(2).toString(); te
27、xtname.setText(db.rs.getString(3); textChinese.setText(Integer.valueOf(db.rs.getInt(5).toString(); textMath.setText(Integer.valueOf(db.rs.getInt(6).toString(); textEnglish.setText(Integer.valueOf(db.rs.getInt(7).toString(); texttotal.setText(Integer.valueOf(db.rs.getInt(8).toString(); catch (SQLExce
28、ption es) System.out.println(es); db.dbclose(); setDefaultCloseOperation(DISPOSE_ON_CLOSE); public void actionPerformed(ActionEvent evt) if (evt.getActionCommand().equals("修改密码") tryRevise fr =new Revise();fr.setVisible(true); catch (Exception e) e.printStackTrace();else if(evt.getActionCo
29、mmand().equals("退出")dispose(); 学生修改密码界面 public void actionPerformed(ActionEvent evt)if(evt.getActionCommand().equals("确定")CheckEmpty cktxt1=new CheckEmpty(textno);int stuno=Integer.parseInt(textno.getText();String stupwd1=pwd1.getText();String stupwd2=pwd2.getText();if(cktxt1.che
30、ck(1)&&stupwd1.length()!=0&&stupwd2.length()!=0)if(stupwd2.length()<8)notes.setText("密码过短,请重新设置!");else db.dbconn();String sql="select * from studentInfo where stuno="+stuno; db.dbSelect(sql); try while (db.rs.next() if(stupwd1.equals(db.rs.getString(4) sql=&qu
31、ot;update studentInfo set stupwd='"+stupwd2+"' where stuno="+stuno; db.dbUpdate(sql); notes.setText("密码修改成功!"); else notes.setText("原密码输入错误,修改失败!"); db.dbclose(); catch (SQLException es) System.out.println(es); 5.课程设计心得经过一个月的艰辛努力,终于完成了本次课程设计的要求。一路走来,程序从一开始的
32、漏洞百出,毫无章法到现在的有板有眼运行流畅。我一步步见证着这个程序的成长,其实对我来说,是一个很焦急到开心的过程。课程设计目的是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在是生活中可以说得是无处不在。因此作为软件专业的学生来说掌握计算机开发技术十分重要的。 我的题目是成绩管理系统的设计与实现,对于我们这些新手来说,这是很大的考验,我一直再考虑怎样才能完成任务,怎么才能找到课堂所学与实际应用的最佳结合点?怎么才能让自己的程序在篇幅上简单,在使用价值上丰富?怎样让自己的业余更
33、靠近专业?怎样让自己的计划更具有序性,而不会忙无一用?经过一段时间的考虑,仔细地研究课本,才做到了心中有数,才了解了Java课程设计的真正用意培养自学能力,养成程序编辑的好习惯。我从来不相信车到山前必有路的说法,认为那只是懒惰者自寻懒惰的借口,我要积极,要把握,要努力。 回顾起此次课程设计,至今我仍感慨颇多,的确,从从拿到题目到完成整个编程,从理论到实践,在整整半个学期的日子里,可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起
34、来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,在以前的编程学习中,我们使用的编程工具是Textpad,代码是一个字母一个字母敲出来的,而在课程设计的过程中,我们是使用NetBeans或者使用eclipse,这现对于以前来说是十分省时省力的。在程序设计的开始的前两星期我使用的编程工具是NetBeans6.5,jdk的版本为1.6,目的是使用我们平时上课是使用的Access数据库。但当代码即将敲完的时候才发现我的NetBeans由
35、于版本问题并不能实现功能,后来我为了完成编程任务,不得不使用eclipse环境为jdk1.8。由于jdk1.8并不能实现桥接Access数据库,我又改用了mysql数据库。使得时间很紧张。因此这次课程设计让我懂得了怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪,黑夜过去了,我们收获的是黎明。在本次实践中,给我教训最大的是一定要做好准备工作,首先环境不能有问题。然后再做好设计。设计也是一项重要的工作。这次课程设计给我带来的教训非常大。Java语言是目前适用范围最广的编程语言,能够了解并使用JAVA语言完成编程任务是一项很重要的技能。这次课程设计几乎囊括了
36、我这一学期以来的java的学习成果,看着自己设计的程序可以实现一些实际的功能了,感觉很开心。这种兴奋与成就感使我更加坚定了好好努力学下去的信心,继续加油!附源代码:package come;import javax.swing.JOptionPane;import javax.swing.JTextField;public class CheckDate JTextField txtS;public CheckDate(JTextField tf) /tf为待检查的文本框txtS=tf;public boolean check() /检查文本框是否已输入数据String regex="
37、;1234567890"if(txtS.getText().length()=0)/检查文本框是否为空JOptionPane.showMessageDialog(null,"请先在文本框中输入数据!");return false;else if(txtS.getText().matches(regex) /检查输入的是否为数字 JOptionPane.showMessageDialog(null,"必须输入数字!");return false;else if(txtS.getText().length()!=8) /检查文本长度是否为8JOpt
38、ionPane.showMessageDialog(null,"日期格式不合法!");return false;else return true;/package come;import javax.swing.JOptionPane;import javax.swing.JTextField;public class CheckEmpty JTextField txtS; public CheckEmpty(JTextField tf) /tf为待检查的文本框 txtS=tf;public boolean check(int i) /检查文本框中是否已输入数据if(i=0
39、) /仅判断是否文本框为空 if(txtS.getText().length()=0)JOptionPane.showMessageDialog(null,"请先在文本框中输入数据!");return false;else return true; else /判断是否为空、负数、数字 String regex="1234567890." if(txtS.getText().length()=0)JOptionPane.showMessageDialog(null,"请先在文本框中输入数据!");return false;else i
40、f(txtS.getText().matches(regex)/正则表达式,输入必须为数字JOptionPane.showMessageDialog(null,"必须输入数字,请重新输入数据!");return false;else if(Float.parseFloat(txtS.getText()<0) JOptionPane.showMessageDialog(null,"不该为负值,请重新输入数据!"); return false; else return true; /package come;import java.sql.*;publ
41、ic class DBAccessprivate Connection conn=null;private Statement stmt=null;public ResultSet rs=null;private PreparedStatement prepstmt=null;public String notes="数据库操作提示" public void dbconn() try Class.forName("com.mysql.jdbc.Driver"); conn=DriverManager.getConnection("jdbc:my
42、sql:/localhost:3306/test","root",""); stmt=conn.createStatement(); catch(ClassNotFoundException ec) System.out.println(ec); catch(SQLException es) System.out.println(es); catch (Exception ex) System.out.println(ex); public ResultSet dbSelect(String selString) try rs=stmt.exe
43、cuteQuery(selString); catch(SQLException es) System.out.println(es); notes="出现异常" return rs; public String dbUpdate(String updateString) try prepstmt=conn.prepareStatement(updateString); prepstmt.executeUpdate(); notes="更新成功" catch (SQLException es) System.out.println(es); notes=
44、"数据更新出现异常" return notes; public String dbInsert(String insertString) try prepstmt=conn.prepareStatement(insertString); prepstmt.executeUpdate(); notes="记录插入成功" catch(SQLException es) System.out.println(es); notes="数据库插入异常" return notes; public String dbDelete(String delString) try prepstmt=conn.prepareStatement(delString); prepstmt.executeUpdate(); notes="删除记录成功" catch(SQLExcepti
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 考虑能效的自动驾驶路径规划与能量管理策略论文
- 中国医药销售外包(CSO)行业市场前景预测及投资价值评估分析报告
- 节日前队伍管理制度
- 苯加氢安全管理制度
- 茶艺师工作管理制度
- 课程推广文案范文(26篇)
- 行业处理计划微信销售履行技能策划计划胜利案例
- 流川枫灌篮作文法-具体细节描写法
- 环保小课题研究案例
- 自动化专业求职简历(15篇)
- 【MOOC】经济数学-微积分(二)-武汉理工大学 中国大学慕课MOOC答案
- DB22T 3053-2019 地理标志产品 乾安羊肉
- 《药物代谢学》课程教学大纲
- 起重机械吊具、索具检查记录表(钢丝绳)
- 信息科技大单元教学设计之七年级第二单元直播网络我来建
- 2024年山东省青岛市中考地理试题卷(含答案及解析)
- 瑞得全站仪RTS-822R3说明书
- 2024秋期国家开放大学本科《经济学(本)》一平台在线形考(形考任务1至6)试题及答案
- 形势与政策智慧树知到答案2024年黑龙江农业工程职业学院
- 2024年山东省东营市中考道德与法治试卷真题(含答案解析)
- 广东省佛山市顺德区2023-2024学年七年级下学期期末语文试题(原卷版)
评论
0/150
提交评论