欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    基于java的简单学生信息管理程序(共18页).doc

    • 资源ID:14432812       资源大小:360KB        全文页数:18页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于java的简单学生信息管理程序(共18页).doc

    精选优质文档-倾情为你奉上基于java的简单学生信息管理程序一、目的:1、复习、巩固Java语言的基础知识,进一步加深对Java语言的理解和掌握;2、课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生适应实际,实践编程的能力;3、培养学生在项目开发中团队合作精神、创新意识及能力。二、要求:1、对系统进行功能模块分析、控制模块分析正确,符合课题要求,实现相应功能;可以加以其他功能或修饰,使程序更加完善、合理;2、系统设计要实用,编程简练,可用,功能全面3、说明书、流程图要清楚4、记录设计情况(备查,也为编写设计说明书作好准备);5、要求采用模块化程序设计方法,及锯齿型书写格式,要求上机调试通过和按设计报告格式。6、设计上交内容:设计报告一份(按格式书写);源程序文件(刻录成光盘)。三、课程设计内容:1、开发背景:u 某学校中有很多学生,为了方便管理,要求实现一个程序对该学校学生的信息进行统一管理。u 学生的属性及程序功能如下:Ø 学生公有信息:ID、姓名、年龄。Ø 学生有成绩。Ø 所有信息要求保存在文件和数据库中,可以对信息进行添加、修改、查询和删除等操作。Ø 在查询信息时要求由高到低排序输出(学生按成绩高低,如果相等,则按年龄由高到低排序输出。)。2、分析开发背景:ID、姓名和年龄为学生分有信息,而学生有成绩,因此定义一个抽象类Person(ID、姓名、年龄),学生是其子类,有成绩。在程序中ID是自动生成,最好的方式是采用如下的编码方式:· 标记 + 时间戳 + 三位随机数例如:2012年12月12日 18:10:10:345学生的标记为S生成的ID号:学生 S 因为程序要求要满足对文件和数据库的操作,而对文件和数据库操作是一种标准,因此应该定义一个公共的标准 接口 查询信息的时候要求对查询出的信息进行排序操作,这一操作可以使用Comparable接口完成。整个程序代码中牵扯到数据层的操作,而数据层就是指对真实的数据的操作,最终操作的是一个人,操作的是学生管理。数据层操作标准定义完成之后,可以有两种选择,一种是直接使用子类实现,但是此种做法以后的修改不是很方便,另一种是使用代理设计的思路完成。因此要做一个中间层,代码关系如下:Main Menu PersonOperate DAO因为程序要求保存在文件的数据库中,所以此处可以设计出一个工厂,通过此工厂进行DAO的操作子类实例取得。3、分析总结:根据上面对开发背景的分析,总结出以下模块:l 程序运行入口层模块(main):此模块主要是作为程序运行入口点,调用主菜单模块相应的类。用到的类:Mainl 主菜单层模块(menu):显示主菜单,主菜单要有全部的学生信息管理,应该还有一个退出操作。在学生信息管理的界面中分别有对学生信息的增加信息、列出全部信息、查询信息、删除信息、修改信息和返回上一级的操作。用到的类:Menul 操作层模块(operate):该模块主要是实现对学生的增加信息、列出全部信息、查询信息、删除信息和修改信息。为了使程序有较大的伸缩性,首先定义一个操作标准-接口,让对学生的操作去实现该接口,然后根据需要增加相应功能。此模块的操作方法首先调用工厂层模块中的方法取得相应实例,然后通过实例调用数据操作层模块中相应的方法来实现相对应的功能。用到的类:PersonOperate StudentOperate WorkerOperatel 数据操作层模块(dao):该模块主要是定义对具体数据的操作,首先定义一个标准,在标准中有相应的对数据具体操作的方法。让子类(实现模块中的子类)去实现这个标准,然后根据需要增加相应的功能。此子类调用IO操作模块的保存方法将对象保存。用到的类:PersonDAOl 文件操作层模块(io):该模块主要是将对象(学生信息)保存在文件和数据库且能把对象(学生信息)从文件和数据库中读出来。用到的类:FileOperatel 数据库连接模块(dbc):该模块主要是连接数据库。用到的类:DataBaseConnectionl 实现层模块(impl):该模块主要是定义子类去实现数据操作模块(dao)中定义的标准。在这一模块中有一个子类功能是将对象(学生信息)保存在文件(*.txt)中,有一个则是将对象(学生信息)保存在数据库(MySQL)中。保存在文件中的子类去调用文件操作模块(io)中的相应方法实现,保存在数据库中的子类直接通过SQL语句将对象(学生的信息)保存在数据库中。用到的类:PersonDAOImplFile PersonDAOImplJDBCl 代理操作模块(proxy):该模块主要是为了清晰开发思路,使用了代理设计思路去开发,实现层模块(impl)不直接去操作,而是将操作交给代理层去操作。用到的类:PersonDAOProxyFile PersonDAOProxyJDBCl 工具层模块(util):该层一是实现输入数据,并对数据的合法性进行检验,使用正则表达式检验;二是实现对学生ID号的生成。用到的类:InputData TimeStampl 对象层模块(vo):该模块主要是存放实实在在的对象。定义一个抽象类,然后在定义一个子类(学生类)去继承。用到的类:Person Student Workerl 工厂层模块(factory):该模块主要是根据操作层模块传来的参数产生实现层模块的对象,参数也传递过去,参数主要是为了在查询时能指明要查询哪种类型的对象。用到的类:DAOFactory4、 用例图: 系统管理员增加学生信息列出全部学生信息查询学生信息修改学生信息删除学生信息学生信息管理系统 类与类之间关系图:5、使用到的知识:Java基础知识(分支选择、循环等),Java面向对象,抽象类,接口,异常,I/O操作(序列化和反序列化等),JDBC操作MySQL数据库,类集(Collection(Set TreeSet) 、Iterator等),正则表达式,java类库中一些常用类。6、程序测试程序做完之后我准备了一些数据对做好的程序进行测试,测试数据在文件中的java课程设计测试数据里。测试数据分为正确和不正确数据,所谓正确与不正确是相对客观存在的事物进行对比的,比如说人的年龄不可能小于0,学生的成绩不可能小于0等。在测试时出现了以下问题:一个人的名字不可能是数字(在这个程序中只考虑数字、字母和汉字,其他特殊符号不考虑),但能正确的增加;一个人的年龄不可能小于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.Statement;/这个类用于添加、修改、搜索和删除记录。class StudentDetails /* 声明一个Statement对象。 */PreparedStatement stmtObj = null;/* 声明一个String变量。 */String strSql = null;/* 声明一Connection个对象。 */Connection con = null;/* 声明一个BufferedReader对象 */BufferedReader bufferObj = null;/创建一个数据库连接对象private DataBaseConnection 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.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.getConnection().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() try 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;strSql = 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.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 student 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");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 请输入" + "要搜索记录的学号:");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 + "' 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 姓名:");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 (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(" 信 息 ");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):");BufferedReader 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(" * * ");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.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 = 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.println();System.out.print(" 是否确认退出?(Y/N):");BufferedReader br2 = new BufferedReader(new InputStreamReader(System.in);choice = (char) br2.read();if (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':System.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.gjt.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,DBUSER,DBPASSWORD); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();public Connection getConnection() return this.conn;public void close()try this.conn.close() ; catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();3、import java.io.IOException;/* * 这个类用于测试 StudentDetails 类。 */class StudentDetailsTest /* * 这是构造方法。 */protected StudentDetailsTest() /* *这是 main() 方法,是执行程序的起始点。 */public static void main(String args) throws IOException StudentDetails studentObj = new StudentDetails();/studentObj.establishConnection();studentObj.menudisplay();四、设计记录与心得:1、对本次设计的各个主要界面进行截图放于文档中;2、对本次设计的关键思路和语句进行简单的记录;一个好的开发是:程序 ß à 数据库 :程序做一件事情,数据库做一件事情这次程序设计的关键思路是:定义对象的抽象类和定义对象操作的标准(接口),然后分别写子类去继承抽象类和实现操作标准,在操作数据的过程中又使用到了一些设计模式的思想。3、自己对本次设计的看法,收获和以后学习java的展望通过对本学期的java面向对象程序设计的学习,做了一个简单的学校信息管理程序,在程序中按照了实际开发的一些好的开发习惯进行开发,如所有类分别按不同的包存放(这是必需的)等。在还有在写代码时要始终考虑如果万一修改了怎么办等等。程序中参考了一些JAVAEE的实际开发的设计思路,如工厂设计思路、代理设计思路等。在这次课程设计中没有用到GUI程序设计,我主要是因为现在实际开发中GUI开发相对较少,而像类集操作、I/O操作等用得相对较多,所以这次课程设计的定位是为以后学习打基础。在开发时也参考了一些资料,经常查阅API帮助文档等,做完后发现我还有些知识没有掌握好,我会在以后的学习中会不断地学习,用努力学习来弥补自己javaSE知识的不足,为下一阶段javaEE的学习打下较好的基础。专心-专注-专业

    注意事项

    本文(基于java的简单学生信息管理程序(共18页).doc)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开