基于java的简单学生信息管理程序_第1页
基于java的简单学生信息管理程序_第2页
基于java的简单学生信息管理程序_第3页
基于java的简单学生信息管理程序_第4页
基于java的简单学生信息管理程序_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上基于java的简单学生信息管理程序一、目的:1、复习、巩固Java语言的基础知识,进一步加深对Java语言的理解和掌握;2、课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生适应实际,实践编程的能力;3、培养学生在项目开发中团队合作精神、创新意识及能力。二、要求:1、对系统进行功能模块分析、控制模块分析正确,符合课题要求,实现相应功能;可以加以其他功能或修饰,使程序更加完善、合理;2、系统设计要实用,编程简练,可用,功能全面3、说明书、流程图要清楚4、记录设计情况(备查,也为编写设计

2、说明书作好准备);5、要求采用模块化程序设计方法,及锯齿型书写格式,要求上机调试通过和按设计报告格式。6、设计上交内容:设计报告一份(按格式书写);源程序文件(刻录成光盘)。三、课程设计内容:1、开发背景:u 某学校中有很多学生,为了方便管理,要求实现一个程序对该学校学生的信息进行统一管理。u 学生的属性及程序功能如下:Ø 学生公有信息:ID、姓名、年龄。Ø 学生有成绩。Ø 所有信息要求保存在文件和数据库中,可以对信息进行添加、修改、查询和删除等操作。Ø 在查询信息时要求由高到低排序输出(学生按成绩高低,如果相等,则按年龄由高到低排序输出。)。2、分析开

3、发背景:ID、姓名和年龄为学生分有信息,而学生有成绩,因此定义一个抽象类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)中定义的标准。在这一模块中有一个子类

7、功能是将对象(学生信息)保存在文件(*.txt)中,有一个则是将对象(学生信息)保存在数据库(MySQL)中。保存在文件中的子类去调用文件操作模块(io)中的相应方法实现,保存在数据库中的子类直接通过SQL语句将对象(学生的信息)保存在数据库中。用到的类:PersonDAOImplFile PersonDAOImplJDBCl 代理操作模块(proxy):该模块主要是为了清晰开发思路,使用了代理设计思路去开发,实现层模块(impl)不直接去操作,而是将操作交给代理层去操作。用到的类:PersonDAOProxyFile PersonDAOProxyJDBCl 工具层模块(util):该层一是实

8、现输入数据,并对数据的合法性进行检验,使用正则表达式检验;二是实现对学生ID号的生成。用到的类:InputData TimeStampl 对象层模块(vo):该模块主要是存放实实在在的对象。定义一个抽象类,然后在定义一个子类(学生类)去继承。用到的类:Person Student Workerl 工厂层模块(factory):该模块主要是根据操作层模块传来的参数产生实现层模块的对象,参数也传递过去,参数主要是为了在查询时能指明要查询哪种类型的对象。用到的类:DAOFactory4、 用例图: 系统管理员增加学生信息列出全部学生信息查询学生信息修改学生信息删除学生信息学生信息管理系统 类与类之间

9、关系图:5、使用到的知识:Java基础知识(分支选择、循环等),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.

11、SQLException;import java.sql.Statement;/这个类用于添加、修改、搜索和删除记录。class StudentDetails /* 声明一个Statement对象。 */PreparedStatement stmtObj = null;/* 声明一个String变量。 */String strSql = null;/* 声明一Connection个对象。 */Connection con = null;/* 声明一个BufferedReader对象 */BufferedReader bufferObj = null;/创建一个数据库连接对象private Da

12、taBaseConnection dbc = null;/* * 这是构造方法。 */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();Syst

13、em.out.print("n 请输入学生的姓名: ");String name = bufferObj.readLine();System.out.print("n 请输入课程名称: ");String course = bufferObj.readLine();/strSql = "Insert into student values('" + roll;/strSql = strSql + "' , " + name + ",'" + course + "

14、')"strSql = "insert into student values('"+roll+"','"+name+"','"+course+"')"stmtObj = this.dbc.getConnection().prepareStatement(strSql);stmtObj.executeUpdate();stmtObj.close();System.out.print("n 记录已成功添加!n");System.ou

15、t.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 = Integer.parseInt(bufferObj.readLine();Syst

16、em.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 + &

17、quot; ' where 学号 = " + roll;/strSql = "update student 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(

18、ioe); catch (Exception e) e.printStackTrace();/* * 该方法用于删除数据库中的记录。 */void deleteRecord() try System.out.print("n 请输入要删除记录的学号:");int roll = Integer.parseInt(bufferObj.readLine();/*System.out.print("n 输入要删除的学生的姓名:");String name = bufferObj.readLine();*/strSql = "Delete from st

19、udent where rtrim(姓名) like '" + name;strSql = "Delete from student where 学号 = " + roll;/strSql = strSql + " ' and 学号 = " + roll;stmtObj = this.dbc.getConnection().prepareStatement(strSql);stmtObj.executeUpdate();stmtObj.close();System.out.print("n 记录已成功删除!n"

20、;);System.out.println("*n"); catch (SQLException ioe) System.out.println(" 删除时出错 3 ");ioe.printStackTrace(); catch (Exception e) System.out.println(" 错误 4 " );e.printStackTrace();/* * 该方法用于搜索数据库中的记录。 */void searchRecord() try System.out.print("n 请输入" + "要

21、搜索记录的学号:");int roll = Integer.parseInt(bufferObj.readLine();/*System.out.print("n 请输入要搜的学生姓名:");String name = bufferObj.readLine(); */strSql = "select * from student where 姓名 like '" + name;strSql = "select * from student where 学号 = " + roll;/strSql = strSql +

22、"' and 学号 = " + roll;stmtObj = this.dbc.getConnection().prepareStatement(strSql);ResultSet rs = stmtObj.executeQuery();/ResultSet rs = stmtObj.executeQuery(strSql);if (!rs.next() System.out.println("n 记录没有找到!");System.out.println("*"); else System.out.print("n

23、姓名:");System.out.print(rs.getString(2) + "t");System.out.print("n 学号:");System.out.print(rs.getInt(1) + "t");System.out.print("n 课程:");System.out.print(rs.getString(3) + "n");stmtObj.close(); catch (SQLException ioe) System.out.println(ioe); cat

24、ch (Exception e) System.out.println(e);/* * 该方法用于向用户显示一个选择。 */public void menudisplay() throws IOException char choice;System.out.println("nnn");System.out.println(" * ");System.out.println(" * * ");System.out.println(" * * * ");System.out.println(" * * &

25、quot;);System.out.println(" * ");System.out.println(" 信 息 ");System.out.println(" 生 * * * * 管 ");System.out.println(" 学 * * 理 ");System.out.println(" * * ");System.out.println(" * * ");System.out.println();System.out.println(" dyf 承 制

26、");System.out.println(" 版权所有 翻录必究 ");System.out.println();System.out.println();System.out.print(" 是否确认要进入?(Y/N):");BufferedReader br = new BufferedReader(new InputStreamReader(System.in);choice = (char) br.read();switch (choice) case 'y': System.out.println("*&q

27、uot;);while (true) System.out.println();System.out.println(" 欢迎使用学生信息管理系统 ");System.out.println();System.out.println(" * ");System.out.println(" * ");System.out.println(" * * ");System.out.println(" * 目 录 * ");System.out.println(" * 1 . 添加记录 * &

28、quot;);System.out.println(" * 2 . 修改记录 * ");System.out.println(" * 3 . 删除记录 * ");System.out.println(" * 4 . 搜索记录 * ");System.out.println(" * 5 . 退 出 * ");System.out.println(" * * ");System.out.println(" * ");System.out.println(" * &quo

29、t;);System.out.println("n");System.out.print(" 开发者:dyf");System.out.println("n");System.out.println(" dyf 制 作");System.out.println();System.out.println(" 2010年12月");System.out.println();System.out.print(" 请输入您要选择的操作序号: ");BufferedReader br1

30、 = new BufferedReader(new InputStreamReader(System.in);choice = (char) br1.read();switch (choice) case '1':System.out.println("n 正在添加记录.");addRecord();break;case '2':System.out.println("n 正在修改记录.");modifyRecord();break;case '3':System.out.println("n 正

31、在删除记录.");deleteRecord();break;case '4':System.out.println("n 正在搜索记录.");searchRecord();break;case '5':System.out.println();System.out.print(" 是否确认退出?(Y/N):");BufferedReader br2 = new BufferedReader(new InputStreamReader(System.in);choice = (char) br2.read();if

32、 (choice = (char) 'y') System.out.println();System.out.println(" 谢谢您的使用,再见!");System.out.println("*");System.exit(0); else menudisplay();break;default:System.out.println("n 对不起,您输入的数字不在范围内,请重新输入一个有效数字!");System.out.println("*");break;case 'n':S

33、ystem.out.println();System.out.println(" 谢谢您的使用,再见!");System.out.println("*");System.exit(0);break;2、import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;/ 数据库的连接操作类public class DataBaseConnection private static final String DBDRIVER = "org.g

34、jt.mm.mysql.Driver"private static final String DBURL = "jdbc:mysql:/localhost:3306/test"private static final String DBUSER = "test"private static final String DBPASSWORD = "123"private Connection conn = null;public DataBaseConnection() try Class.forName(DBDRIVER); catch (ClassNotFoundException e) / TODO Auto-generated catch blocke.printStackTrace();try this.conn = DriverManager.getConnection(DBURL,DBUS

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论