南京理工大学泰州科技学院计算机科学与技术系08计算机专业1班级课程名:学生成绩管理系统课程设计说明书姓名:王浩学号0809030133指导老师:朱长水设计地点:4306起讫时间:2011.1.05—2011.1.15完成报告书时间:2011年1月15日计算机科学与技术系编印年月课程设计要求各专业学生应根据课程任教老师的要求,做出选题计划,并按下列要求完成课程设计任务。一、学生应按照老师的要求完成规定的课程设计任务量。二、课程设计报告书要求格式统一,字迹工整,语言简练,文字通顺,按课程设计格式要求书写。程序清单不够填写时统一用A4纸补充并粘贴。对不按格式要求书写或打印的报告书一律不收,也不得进行答辩和评分。三、必须独立完成课程设计,不得相互抄袭。在答辩和批阅过程中发现源程序相同或有大面积抄袭现象,课程任教老师有权通知学生重做,不得给予评分,并通知相关系部做出处理。四、学生课程设计结束后应提交的材料:(1)课程设计说明书(3000字以上);(2)包含完整的、正确的源程序代码(含电子文档);(3)答辨材料(介绍课程设计要点)。课程设计说明书第2页参考文献情况序号名称编著者出版社1C语言课程设计(第2版)梁旭,谷晓琳,黄明电子工业出版社2Java灵感编程飞思实例剧场飞思科技产品研发中心电子工业出版社3Java语言程序设计郑莉王行言清华大学出版社4Java程序设计使用教程张永常中国商业出版社5JAVA课程设计——程序设计语言课程设计丛书黄明,梁旭,周绍斌电子工业出版社课程设计说明书第3页课程设计考核情况教师评价情况指导老师评语:指导老师:_____________(签名)日期:年月日学生答辩情况答辩(组)评语:主答辩老师:____________(签名)答辩日期:年月日综合成绩评定情况综合评价等级:__________________注:共分五个等级(1.优秀2、良好3、中等4、及格5、不合格)课程设计说明书第4页课程设计报告书目录一、设计课题二、设计目的三、操作环境。四、设计场所(机房号、机器号或自己机器)五、设计过程(设计内容及主要程序模块)六、本次设计中用到的课程知识点(列出主要知识点)七、设计过程中遇到的问题及解决办法八、程序清单课程设计说明书第5页一、设计课题及内容学生成绩管理系统能够进行简单的用户登录,及对信息的增加与修改。二、设计目的1.使用图形用户界面登录。2.利用Access数据库建立一个数据库SMS,再在该数据库中建三张表STUDENT(学生信息表)、Teacher(教师账号管理表)、zhanghao(学生账号管理表)。3.设计当以学生身份登录时只能进行查询,当以教师身份登录时可以查询,修改,删除,添加操作。三、操作环境操作系统:MicrosoftWindowsXPProfessionalCPU:IntelPentium43.06GHz内存:512M四、设计场所4306教室课程设计说明书第6页五、设计过程(设计内容及主要模块,不少于3000字)1.设计要求:1)简单的图形界面登录功能。2)对数据库的的信息的查询功能。3)对数据库的的信息的修改功能。4)对数据库的的信息的删除功能。5)对数据库的的信息的添加功能。6)当以学生身份登录时只有查询的功能。7)当教师登陆时既可以查询也可以进行修改、删除、添加的操作。2.总体设计功能模块图:课程设计说明书第7页3.详细设计:1)程序流程图:开始进入主登录界面按钮监听当按tf1时,进入student当按tf2时,进入Teacher输入学生账号登录输入教师账号登录以表格的形式输出STUDENT表的信息退出选择操作选择操作查询删除插入退出结束课程设计说明书第8页2)流程描述:(1)首先在类Studentms创建一个新的窗体添加学生登录和教师登录两个按钮,如图1。图1主登录界面图(2)用f.addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){System.exit(0);}});来监听事件当按可以关闭窗口。(3)创建一个新类RegistSystem1,并用new方法来实现新类的功能,分别新增两个登录窗口,分别为图2、图3。图2Student登录界面图课程设计说明书第9页图3Teacher登录界面图(4)在新类中创建构造方法RegistSystem1(),该类中有相应的按钮,文本框等的窗体所需的控件,增加密码和按钮监听,并用语句连接数据库如下获取密码:try{Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);Connectioncon=DriverManager.getConnection(jdbc:odbc:SMS,Test,123);//加载驱动器stmt=con.createStatement();////创建STATEMENT对象inti=0;intj=0;inta[][]=newint[10][10];intb[][]=newint[10][10];//intc[][]=newint[10][10];//intd[][]=newint[10][10];rs=stmt.executeQuery(select*fromzhanghao);number1=Integer.parseInt(t1.getText());pwd1=Integer.parseInt(pwd);//从表中读数据while(rs.next()){//rs.next()读的是一行的数据a[i][j]=rs.getInt(ID);//用二维数组来存放读出来的数据,b[i][j]=rs.getInt(密码);(5)设置密码检错功能:A.当账号输入为空时检错如图4:图4账号输入不能为空的检错B.当密码输入为空时检错如图5:图5密码输入不能为空值C.当账号和密码输入有错时如图6:课程设计说明书第10页图6账号或密码有错(6)当以学生的身份登录成功时,在以上述同样的方法生成一个有查询、退出的窗口如图7:图7进入查询信息界面(7)点击查询,根据语句Stringcmd=e.getActionCommand();if(cmd.equals(查询)){//链接数据库,从数据库中输出信息Statementstmt=null;ResultSetrs=null;JFramejf=newJFrame(学生信息查询系统);JPaneljpl=newJPanel();finalString[]colHeads={ID,NAME,DEPARTMENT,C++,ENG,GAOSHU,ZUYUAN};Object[][]base=newObject[11][7];//创建对象数组try{Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);//注意是JdbcOdbcDriver,而不是JdbcDriver!!!!!!!Connectioncon=DriverManager.getConnection(jdbc:odbc:SMS,Test,123);//加载驱动器stmt=con.createStatement();////创建STATEMENT对象inti=0;rs=stmt.executeQuery(select*fromSTUDENT);//从表中读数据while(rs.next()){//rs.next()读的是一行的数据base[i][0]=rs.getInt(ID);//课程设计说明书第11页用二维数组来存放读出来的数据,base[i][1]=rs.getString(NAME);base[i][2]=rs.getString(DEPARTMENT);base[i][3]=rs.getString(C++);base[i][4]=rs.getString(ENG);base[i][5]=rs.getString(GAOSHU);base[i][6]=rs.getString(ZUYUAN);i++;};//注意有一个分号!!!!!!stmt.close();con.close();//关闭与数据库的连接}catch(ClassNotFoundExceptione1){e1.printStackTrace();}catch(SQLExceptione1){e1.printStackTrace();创建一个二维表来存放从数据库中查询的数据如图8:图8查询出的信息显示出来(8)当以教师的身份登录时产生一个新类,出现一个新的具有查询,添加,删除,退出功能的窗体,且那些用菜单形式给出如图9:图9新的具有查询,添加,删除,退出功能(9)点击查询与上(7)一样的语句类型输出学生的成绩信息图与图8一样。(10)点击删除跳出新的出口如图10:课程设计说明书第12页图10输入需要删除学生的信息(11)程序elseif(cmd.equals(退出)){System.exit(0);}用来增加按钮监听当按下退出键时退出窗体。课程设计说明书第13页六、设计中用到的课程知识点1.掌握创建一个新的窗口。2.掌握在窗口中添加文本框、按钮、容器。3.对添加的文本框、按钮添加事件监听器。4.掌握构造方法的调用。5.掌握类的继承。6.掌握java与数据库之间的连接语句。Java语言程序设计:布局管理器:BorderLayout、GridLayout输入输出流:InputStream、OutputStream数据库原理:结构化查询语句:select、insert数据库表的设计:定义一个二维数组用于存放查询的数据,在窗体上设置一个表格以便可以用来输出查询的数据。七、设计中遇到的问题及解决方法1.当点击按钮无法达到想要的需求,跳不出另一个窗口。原因可能为:没有设置监听器,以及没有设置相应的实现方法。2.无法把在文本框中输入的数和数据库中的数匹配已达到密码的验证功能:通过代码:publicvoidactionPerformed(ActionEvente){Stringcmd=e.getActionCommand();if(cmd.equals(退出)){System.exit(0);}Stringnumber=t1.getText();Stringpwd=String.valueOf(pwdPwd.getText());intnumber1;intpwd1;if(number.equals()){JOptionPane.showMessageDialog(null,账号不能为空,错误,JOptionPane.ERROR_MESSAGE);return;}elseif(pwd.equals()){课程设计说明书第14页//把String类型转换为整形JOptionPane.showMessageDialog(null,密码不能为空,错误,JOptionPane.ERROR_MESSAGE);return;}elseif((Integer.parseInt(t1.getText())!=-1)&&((Integer.parseInt(pwd)!=-1))){number1=Integer.parseInt(t1.getText());//将学号和密码转换为整形的数,并赋给number1,pwd1pwd1=Integer.parseInt(pwd);}Statementstmt=null;ResultSetrs=null;try{Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);//注意是JdbcOdbcDriver,而不是JdbcDriver!!!!!!!Connectioncon=DriverManager.getConnection(jdbc:odbc:SMS,Test,123);//加载驱动器stmt=con.createStatement();////创建STATEMENT对象inti=0;intj=0;inta[][]=newint[10][10];int