您好,欢迎访问三七文档
面向对象程序设计课程设计报告-1-代码行数687项目名称个人成绩单管理系统1.实训目的面向对象程序设计课程设计是计算机科学与技术专业培养计划中的重要实践教学环节,旨在通过一个管理信息系统的开发,加深学生对Java语言的理解和应用,尤其是对面向对象编程思想、Java编码规范、图形用户接口、JDBC访问数据库的理解,巩固软件工程课程的相关知识,了解软件开发的基本流程,进一步提高学生的学习能力、理解能力、表达能力及沟通能力。2.实训内容使用MyEclipse为开发工具,使用RationalRose为建模工具,使用MySQL为数据库服务器,基于GUI和JDBC技术,分析、设计并实现一个管理信息系统。3.需求分析3.1需求描述成绩管理一直是学校教学管理中十分重要但又相当复杂的管理工作之一,一味的采用传统的手工处理已经不符合教育和管理的要求,而当今时代的计算机具有运算速度快,处理能力强等特点,很自然地进入到这一应用领域中。因此,为了保证学校的信息流畅,工作高效,很有必要设计一个学生成绩管理系统。这不但能使教务人员从繁杂的成绩管理中解脱出来,对于推动教学的发展也起到非常重要的作用。大部分学校学生成绩管理工作都是采用传统的手工管理,但是这些传统人工管理的方式存在着许多缺点,比如:效率较低,学生成绩信息是一个庞大的数据,要想查找其中一个学生的数据简直是大海捞针,庞大的数据还导致错误率较高。所以我选择Eclipse来开发学生成绩管理系统,由于以上的优点,开发该系统用来帮助广大教师提高工作效率,实现学生成绩信息管理工作流程的系统化、规范化和自动化。1.用户注册和登录(1)用户需注册新的用户名和密码并将其存储在数据库内,用户注册成功后需输入用户名和密码登录系统,用户必须在登录系统后才能进行相关操作。(2)当用户名和密码错误时,允许用户重新进行登录操作。2.增添学生成绩信息(1)用户在系统的提示下,输入相关信息,完成插入记录的操作。(2)当输入的数据类型不正确时,系统会显示失败并允许用户重新输入。3.删除学生成绩信息(1)用户可以根据人名或者id对相关记录进行删除。(2)当输入的数据类型不正确时,系统会显示删除失败并允许用户重新输入。4.查询id学生成绩信息(1)用户可以查询整条记录或输入指定id查询指定科目成绩,完成查询记录的操作。(2)当输入的数据类型不正确时,系统会显示修改失败并允许用户重新输入。5.查询名字学生成绩信息(1)用户在系统的提示下,输入相关信息,完成查询记录的操作。(2)当输入的数据类型不正确时,系统会显示查询失败并允许用户重新输入。面向对象程序设计课程设计报告-2-3.2用例描述图3.1系统用例图4.功能设计4.1系统层次方框图4.1系统结构为保证系统具有较好的可维护性和可扩展性,对系统进行分层设计,共分四层:视图层:接收个人成绩输入信息,显示界面信息和成绩信息控制层:访问流程控制业务层:完成具体功能的实现数据库访问层:完成对数据库访问操作的封装具体结构如下图所示:DataBase面向对象程序设计课程设计报告-3-图4.1系统结构图图4.1系统层次方框图4.2算法设计(活动图或时序图)1.登录功能在主界面(MainView)输入账号和密码,封装成Login对象后发后给业务层(LoginService),在业务层中组合成执行登录操作的SQL语句,再将其传递给数据库访问类(DB),由其完成数据库的查询操作。依据查询结果,如果成功则创建控制类(Controller)对象,显示欢迎信息和对用户信息进行维护的选项;如果失败,则显示提示信息并允许重新输入账号和密码。数据库访问层:DB类业务层:XxxService类控制层:Controller类、视图层:XxxView类面向对象程序设计课程设计报告-4-图4.1登录功能时序图2.注册功能在主界面输入数字1,表示进行注册操作。依次输入账户、密码和确认密码,当密码和确认密码不一致时,需要重新输入密码和确认密码。之后,账户和密码封装至Login对象中,传递给业务层(LoginService),由业务层组合成添加SQL语句,发送至数据库访问类(DB),完成添加操作。如果添加成功,则返回主界面,输入新注册的账户和密码进行登录;如果添加失败,则重新进行输入。图4.2注册功能时序图3.显示所有成绩单的基本信息功能登录成功及完成对用户信息增、删、改操作后,均需要进行所有成绩单的基本信息的显示,由控制类(Controller)调用视图层(MainView)中的方法,在方法中再利用业务层(UserService)完成对数据库访问类(DB)的访问,获取t_grade表的所有记录。图4.3显示所有成绩单信息时序图4.添加成绩单信息功能在控制类(Controller)输出的选择信息的提示下(1表示执行添加操作),利用简单工厂模式创建视图层(AddView)对象,之后回调接口方法,完成对业务层(UserService)中注册方法的调用,在该面向对象程序设计课程设计报告-5-方法中向数据库访问类(DB)发送添加SQL语句。如果添加成功,则显示所有成绩单信息(参考显示所有成绩单信息功能的实现);如果添加失败,则提示重新输入。图4.4成绩单信息添加时序图5.查询用户信息功能在控制类(Controller)输出的选择信息的提示下(4表示执行添加操作),利用简单工厂模式创建视图层(QueryView)对象,之后回调接口方法,在方法中输入要查询的用户名,再对业务层(UserService)中查询方法执行调用,在该方法中向数据库访问类(DB)发送模糊查询SQL语句。如果查询成功,则显示查询到的成绩单信息(参考显示所有成绩单信息功能的实现);如果查询失败,则提示重新输入。图4.5查询成绩单信息时序图删除成绩单信息和修改成绩单信息的功能设计请参考添加成绩单信息操作。5.数据设计5.1类图设计根据分析,系统由13个类构成,分别为:数据库访问层:DB类面向对象程序设计课程设计报告-6-数据封装类:Login类、Grade类业务层:LoginService类、UserService类控制层:Controller类视图层:AddView类、DeleteView类、ModifyView类、QueryView类、MainView类、Operation类其它:Test类系统中各类之间关系如下图所示:图5.1系统类图面向对象程序设计课程设计报告-7-5.2数据表设计根据概要设计中Login类图和Grade类图可知,系统需要两张表t_login和t_grade,其中,t_login表用于存储登录信息,t_grade表用于存储成绩单的基本信息,两张表之间没有关联关系,具体结构如下所示:面向对象程序设计课程设计报告-8-表5-1t_login表序号字段名类型长度备注1idint4主键2accountchar20唯一性、不为空3passwordchar20不为空表5-2t_grade表序号字段名类型长度备注1idint4主键2namechar20不为空3mathfloat不为空4Chinesefloat不为空5Englishfloat不为空6timedate默认创建时间6.运行结果注册:图6.1录:面向对象程序设计课程设计报告-9-图6.2添加:图6.3删除:面向对象程序设计课程设计报告-10-图6.4ID查找:图6.5姓名查找:图6.67.关键代码(DB.java)packagecn.edu.ccut.util;importjava.sql.*;publicclassDB{面向对象程序设计课程设计报告-11-privateConnectioncon;privatePreparedStatementpre;privateResultSetrs;privatestaticDBdb;static{try{Class.forName(com.mysql.jdbc.Driver);}catch(ClassNotFoundExceptione){e.printStackTrace();}}privateDB(){}publicstaticDBgetInstance(){if(db==null){db=newDB();}returndb;}privatevoidbuildConnection(){try{con=DriverManager.getConnection(jdbc:mysql://localhost:3306/4711?useSSL=false,root,kanyuhang);}catch(SQLExceptione){e.printStackTrace();}}publicResultSetexecuteQueryByParam(Stringsql,Object...o){this.buildConnection();try{pre=con.prepareStatement(sql);for(inti=0;io.length;i++){pre.setObject(i+1,o[i]);}rs=pre.executeQuery();}catch(SQLExceptione){e.printStackTrace();面向对象程序设计课程设计报告-12-}returnrs;}publicResultSetexecuteQueryNoParam(Stringsql){this.buildConnection();;try{pre=con.prepareStatement(sql);rs=pre.executeQuery();}catch(SQLExceptione){e.printStackTrace();}returnrs;}publicintexecuteUpdate(Stringsql,Object...o){this.buildConnection();try{pre=con.prepareStatement(sql);for(inti=0;io.length;i++){pre.setObject(i+1,o[i]);}intcount=pre.executeUpdate();returncount;}catch(SQLExceptione){e.printStackTrace();return0;}}publicvoidclose(){try{if(rs!=null){rs.close();}pre.close();con.close();}catch(SQLExceptione){e.printStackTrace();}}}面向对象程序设计课程设计报告-13-(controller.java)packagecn.edu.ccut.controller;importcn.edu.ccut.service.GradeService;importcn.edu.ccut.view.*;importjava.util.InputMismatchException;importjava.util.Scanner;publicclassController{publicvoidcontroller()throwsInputMismatchException{Scannerscan=newScanner(System.in);while(true){MainView.showMain();System.out.println(pleaseselectyouroperation:);System.out.println(1.insert2.delete3.modify4.query5.exit);inti=scan.nextInt();GradeServiceservice=GradeService.getInstance();Operationo=null;booleanflag=true;switch(i){case1:o=newAddView();break;case2:o=newDeleteView();break;case
本文标题:个人成绩单管理系统
链接地址:https://www.777doc.com/doc-6301611 .html