ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:260.64KB ,
资源ID:6155640      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6155640.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于java的简单学生信息管理程序.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于java的简单学生信息管理程序.docx

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

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

3、生有成绩,因此定义一个抽象类Person(ID、姓名、年龄),学生是其子类,有成绩。在程序中ID是自动生成,最好的方式是采用如下的编码方式: 标记 + 时间戳 + 三位随机数 例如:2012年12月12日 18:10:10:345 学生的标记为S 生成的ID号: 学生 S20121212181010345001 因为程序要求要满足对文件和数据库的操作,而对文件和数据库操作是一种标准,因此应该定义一个公共的标准 接口 查询信息的时候要求对查询出的信息进行排序操作,这一操作可以使用Comparable接口完成。整个程序代码中牵扯到数据层的操作,而数据层就是指对真实的数据的操作,最终操作的是一个人,

4、操作的是学生管理。数据层操作标准定义完成之后,可以有两种选择,一种是直接使用子类实现,但是此种做法以后的修改不是很方便,另一种是使用代理设计的思路完成。因此要做一个中间层,代码关系如下: Main Menu PersonOperate DAO因为程序要求保存在文件的数据库中,所以此处可以设计出一个工厂,通过此工厂进行DAO的操作子类实例取得。3、分析总结:根据上面对开发背景的分析,总结出以下模块: 程序运行入口层模块(main):此模块主要是作为程序运行入口点,调用主菜单模块相应的类。用到的类:Main 主菜单层模块(menu):显示主菜单,主菜单要有全部的学生信息管理,应该还有一个退出操作。

5、在学生信息管理的界面中分别有对学生信息的增加信息、列出全部信息、查询信息、删除信息、修改信息和返回上一级的操作。用到的类:Menu 操作层模块(operate):该模块主要是实现对学生的增加信息、列出全部信息、查询信息、删除信息和修改信息。为了使程序有较大的伸缩性,首先定义一个操作标准-接口,让对学生的操作去实现该接口,然后根据需要增加相应功能。此模块的操作方法首先调用工厂层模块中的方法取得相应实例,然后通过实例调用数据操作层模块中相应的方法来实现相对应的功能。用到的类:PersonOperate StudentOperate WorkerOperate 数据操作层模块(dao):该模块主要是

6、定义对具体数据的操作,首先定义一个标准,在标准中有相应的对数据具体操作的方法。让子类(实现模块中的子类)去实现这个标准,然后根据需要增加相应的功能。此子类调用IO操作模块的保存方法将对象保存。用到的类:PersonDAO 文件操作层模块(io):该模块主要是将对象(学生信息)保存在文件和数据库且能把对象(学生信息)从文件和数据库中读出来。用到的类:FileOperate 数据库连接模块(dbc):该模块主要是连接数据库。用到的类:DataBaseConnection 实现层模块(impl):该模块主要是定义子类去实现数据操作模块(dao)中定义的标准。在这一模块中有一个子类功能是将对象(学生信

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

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

9、ava基础知识(分支选择、循环等),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.SQLExceptio

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

12、BaseConnection 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(); System.out.

13、print(n 请输入学生的姓名: ); String name = bufferObj.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.ge

14、tConnection().prepareStatement(strSql); stmtObj.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() tr

15、y System.out.print(n 请输入要修改记录的学号:); int roll = Integer.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; st

16、rSql = strSql + 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(ioe); catch (Exception e) e.printS

17、tackTrace(); /* * 该方法用于删除数据库中的记录。 */ void deleteRecord() try System.out.print(n 请输入要删除记录的学号:); int roll = Integer.parseInt(bufferObj.readLine();/* System.out.print(n 输入要删除的学生的姓名:); String name = bufferObj.readLine();*/ /strSql = Delete from student where rtrim(姓名) like + name; strSql = Delete from s

18、tudent where 学号 = + roll; /strSql = strSql + and 学号 = + roll; 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( 删除时出错 3 ); ioe.printStackTrace(); c

19、atch (Exception e) System.out.println( 错误 4 ); e.printStackTrace(); /* * 该方法用于搜索数据库中的记录。 */ void searchRecord() try System.out.print(n 请输入 + 要搜索记录的学号:); int roll = Integer.parseInt(bufferObj.readLine(); /*System.out.print(n 请输入要搜的学生姓名:); String name = bufferObj.readLine(); */ /strSql = select * from

20、 student where 姓名 like + name; strSql = select * from student where 学号 = + roll; /strSql = strSql + and 学号 = + roll; stmtObj = this.dbc.getConnection().prepareStatement(strSql); ResultSet rs = stmtObj.executeQuery(); /ResultSet rs = stmtObj.executeQuery(strSql); if (!rs.next() System.out.println(n 记

21、录没有找到!); System.out.println(*); else System.out.print(n 姓名:); 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); catch (

22、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( * * ); System.out.println( * ); System.out.println( 信 息

23、); System.out.println( 生 * * * * 管 ); System.out.println( 学 * * 理 ); System.out.println( * * ); System.out.println( * * ); System.out.println(); System.out.println( dyf 承 制 ); System.out.println( 版权所有 翻录必究 ); System.out.println(); System.out.println(); System.out.print( 是否确认要进入?(Y/N):); BufferedRead

24、er br = new BufferedReader(new InputStreamReader(System.in); choice = (char) br.read(); switch (choice) case y: System.out.println(*); while (true) System.out.println(); System.out.println( 欢迎使用学生信息管理系统 ); System.out.println(); System.out.println( * ); System.out.println( * ); System.out.println( *

25、* ); System.out.println( * 目 录 * ); System.out.println( * 1 . 添加记录 * ); 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( * ); System.o

26、ut.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 = 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 正在删除记录.); deleteRecord(); break; case 4: System.out.println(n 正在搜索记录.); searchRecord(); break; case 5: System.out.printl

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1