基于java的简单学生信息管理程序(共18页).doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《基于java的简单学生信息管理程序(共18页).doc》由会员分享,可在线阅读,更多相关《基于java的简单学生信息管理程序(共18页).doc(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上基于java的简单学生信息管理程序一、目的:1、复习、巩固Java语言的基础知识,进一步加深对Java语言的理解和掌握;2、课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生适应实际,实践编程的能力;3、培养学生在项目开发中团队合作精神、创新意识及能力。二、要求:1、对系统进行功能模块分析、控制模块分析正确,符合课题要求,实现相应功能;可以加以其他功能或修饰,使程序更加完善、合理;2、系统设计要实用,编程简练,可用,功能全面3、说明书、流程图要清楚4、记录设计情况(备查,也为编写设计
2、说明书作好准备);5、要求采用模块化程序设计方法,及锯齿型书写格式,要求上机调试通过和按设计报告格式。6、设计上交内容:设计报告一份(按格式书写);源程序文件(刻录成光盘)。三、课程设计内容:1、开发背景:u 某学校中有很多学生,为了方便管理,要求实现一个程序对该学校学生的信息进行统一管理。u 学生的属性及程序功能如下: 学生公有信息:ID、姓名、年龄。 学生有成绩。 所有信息要求保存在文件和数据库中,可以对信息进行添加、修改、查询和删除等操作。 在查询信息时要求由高到低排序输出(学生按成绩高低,如果相等,则按年龄由高到低排序输出。)。2、分析开发背景:ID、姓名和年龄为学生分有信息,而学生有
3、成绩,因此定义一个抽象类Person(ID、姓名、年龄),学生是其子类,有成绩。在程序中ID是自动生成,最好的方式是采用如下的编码方式: 标记 + 时间戳 + 三位随机数例如:2012年12月12日 18:10:10:345学生的标记为S生成的ID号:学生 S 因为程序要求要满足对文件和数据库的操作,而对文件和数据库操作是一种标准,因此应该定义一个公共的标准 接口 查询信息的时候要求对查询出的信息进行排序操作,这一操作可以使用Comparable接口完成。整个程序代码中牵扯到数据层的操作,而数据层就是指对真实的数据的操作,最终操作的是一个人,操作的是学生管理。数据层操作标准定义完成之后,可以有
4、两种选择,一种是直接使用子类实现,但是此种做法以后的修改不是很方便,另一种是使用代理设计的思路完成。因此要做一个中间层,代码关系如下:Main Menu PersonOperate DAO因为程序要求保存在文件的数据库中,所以此处可以设计出一个工厂,通过此工厂进行DAO的操作子类实例取得。3、分析总结:根据上面对开发背景的分析,总结出以下模块:l 程序运行入口层模块(main):此模块主要是作为程序运行入口点,调用主菜单模块相应的类。用到的类:Mainl 主菜单层模块(menu):显示主菜单,主菜单要有全部的学生信息管理,应该还有一个退出操作。在学生信息管理的界面中分别有对学生信息的增加信息、
5、列出全部信息、查询信息、删除信息、修改信息和返回上一级的操作。用到的类:Menul 操作层模块(operate):该模块主要是实现对学生的增加信息、列出全部信息、查询信息、删除信息和修改信息。为了使程序有较大的伸缩性,首先定义一个操作标准-接口,让对学生的操作去实现该接口,然后根据需要增加相应功能。此模块的操作方法首先调用工厂层模块中的方法取得相应实例,然后通过实例调用数据操作层模块中相应的方法来实现相对应的功能。用到的类:PersonOperate StudentOperate WorkerOperatel 数据操作层模块(dao):该模块主要是定义对具体数据的操作,首先定义一个标准,在标准
6、中有相应的对数据具体操作的方法。让子类(实现模块中的子类)去实现这个标准,然后根据需要增加相应的功能。此子类调用IO操作模块的保存方法将对象保存。用到的类:PersonDAOl 文件操作层模块(io):该模块主要是将对象(学生信息)保存在文件和数据库且能把对象(学生信息)从文件和数据库中读出来。用到的类:FileOperatel 数据库连接模块(dbc):该模块主要是连接数据库。用到的类:DataBaseConnectionl 实现层模块(impl):该模块主要是定义子类去实现数据操作模块(dao)中定义的标准。在这一模块中有一个子类功能是将对象(学生信息)保存在文件(*.txt)中,有一个则
7、是将对象(学生信息)保存在数据库(MySQL)中。保存在文件中的子类去调用文件操作模块(io)中的相应方法实现,保存在数据库中的子类直接通过SQL语句将对象(学生的信息)保存在数据库中。用到的类:PersonDAOImplFile PersonDAOImplJDBCl 代理操作模块(proxy):该模块主要是为了清晰开发思路,使用了代理设计思路去开发,实现层模块(impl)不直接去操作,而是将操作交给代理层去操作。用到的类:PersonDAOProxyFile PersonDAOProxyJDBCl 工具层模块(util):该层一是实现输入数据,并对数据的合法性进行检验,使用正则表达式检验;二
8、是实现对学生ID号的生成。用到的类:InputData TimeStampl 对象层模块(vo):该模块主要是存放实实在在的对象。定义一个抽象类,然后在定义一个子类(学生类)去继承。用到的类:Person Student Workerl 工厂层模块(factory):该模块主要是根据操作层模块传来的参数产生实现层模块的对象,参数也传递过去,参数主要是为了在查询时能指明要查询哪种类型的对象。用到的类:DAOFactory4、 用例图: 系统管理员增加学生信息列出全部学生信息查询学生信息修改学生信息删除学生信息学生信息管理系统 类与类之间关系图:5、使用到的知识:Java基础知识(分支选择、循环等
9、),Java面向对象,抽象类,接口,异常,I/O操作(序列化和反序列化等),JDBC操作MySQL数据库,类集(Collection(Set TreeSet) 、Iterator等),正则表达式,java类库中一些常用类。6、程序测试程序做完之后我准备了一些数据对做好的程序进行测试,测试数据在文件中的java课程设计测试数据里。测试数据分为正确和不正确数据,所谓正确与不正确是相对客观存在的事物进行对比的,比如说人的年龄不可能小于0,学生的成绩不可能小于0等。在测试时出现了以下问题:一个人的名字不可能是数字(在这个程序中只考虑数字、字母和汉字,其他特殊符号不考虑),但能正确的增加;一个人的年龄不
10、可能小于0,学生成绩不可能小于0;对以上的问题,可以用正则表达式来解决,正则表达式在程序中除了以上作用以外,还有一个作用就是检验输入的内容是否为数字。1、import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.S
11、tatement;/这个类用于添加、修改、搜索和删除记录。class StudentDetails /* 声明一个Statement对象。 */PreparedStatement stmtObj = null;/* 声明一个String变量。 */String strSql = null;/* 声明一Connection个对象。 */Connection con = null;/* 声明一个BufferedReader对象 */BufferedReader bufferObj = null;/创建一个数据库连接对象private DataBaseConnection dbc = null;/*
12、 * 这是构造方法。 */public StudentDetails() bufferObj = new BufferedReader(new InputStreamReader(System.in);dbc = new DataBaseConnection();/* * 该方法用于将记录添加到数据库中。 */void addRecord() try System.out.print(n 请输入学号: );int roll = Integer.parseInt(bufferObj.readLine();System.out.print(n 请输入学生的姓名: );String name = b
13、ufferObj.readLine();System.out.print(n 请输入课程名称: );String course = bufferObj.readLine();/strSql = Insert into student values( + roll;/strSql = strSql + , + name + , + course + );strSql = insert into student values(+roll+,+name+,+course+);stmtObj = this.dbc.getConnection().prepareStatement(strSql);stm
14、tObj.executeUpdate();stmtObj.close();System.out.print(n 记录已成功添加!n);System.out.println(*n); catch (SQLException ioe) System.out.println( 错误 2 );ioe.printStackTrace(); catch (Exception e) e.printStackTrace();/* * 该方法用于修改数据库中的记录。 */void modifyRecord() try System.out.print(n 请输入要修改记录的学号:);int roll = Int
15、eger.parseInt(bufferObj.readLine();System.out.print(n 请输入学生的姓名:);String name = bufferObj.readLine();System.out.print(n 请输入课程名称:);String course = bufferObj.readLine();strSql = Update student set 姓名 = + name;strSql = strSql + + ,课程 = + course;strSql = strSql + where 学号 = + roll;/strSql = update studen
16、t set stmtObj = this.dbc.getConnection().prepareStatement(strSql);stmtObj.executeUpdate();stmtObj.close();System.out.print(n 记录已成功修改!n);System.out.println(*n); catch (SQLException ioe) System.out.println(ioe); catch (Exception e) e.printStackTrace();/* * 该方法用于删除数据库中的记录。 */void deleteRecord() try Sys
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 java 简单 学生 信息管理 程序 18
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内