《数据库课程设计java学生学籍信息管理系统.docx》由会员分享,可在线阅读,更多相关《数据库课程设计java学生学籍信息管理系统.docx(36页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、数 据 库课程设计说明书题 目: 学生学籍信息管理系统 院 系: 专业班级: 学 号: 学生姓名: 指导教师: 2010年5月 31日学 号学生姓名专业班级设计题目 学生学籍信息管理系统设计技术参数数据库:MYSQL 开发语言:JAVA1主要的数据表: 学生信息数据表,专业班级数据表,系统用户数据表等。 (2) 主要功能模块系统管理:管理员帐号添加、修改、删除、密码修改等。专业班级管理:实现专业班级的添加、删除、修改、查询等功能。学生信息管理:实现学生信息的添加、删除、修改、查询等功能。学生检索:要求提供多种检索方式。设计要求(1) 三到四人为一个小组,小组成员既要有团队协作精神,又要分工明确
2、。每个学生都必须充分了解整个设计的全过程。(3) 从开场的系统需求分析到最后的系统测试,都要有详细的方案,设计文档应按照软件工程的要求书写。(3) 系统中的数据表设计应合理、高效,尽量减少数据冗余。(4) 系统平安性高。工作量 课程设计说明书字数要求3000以上,不包括图表。工作计划第2周:需求分析,总体设计 第39周:详细设计,上机调试第1011周:编写课程设计说明书和验收参考资料1 王珊,萨师煊. 数据库系统概论M. 北京:高等教育出版社,2007.2Java语言程序设计 北京:清华大学出版社,2005.3SQL Server 2000实验指导第2版北京:清华大学出版社,2021.指导教师
3、签字教研室主任签字学生姓名: 学号: 专业班级: 课程设计题目: 学生学籍信息管理系统 指导教师评语: 成绩: 指导教师: 年 月 日目录1、问题描述51.1 主要的数据表:51.2 主要功能模块52、可行性研究53、需求分析54、总体设计6主要表的设计:6学生学籍信息管理系统流程图7数据库关系图85、详细设计8主菜单设计8函数设计和主要功能描述96、编码和单元测试97、综合测试10各函数测试结果10测试118、软件维护129、总结1210、参考文献131、问题描述1.1 主要的数据表: 学生信息数据表,专业班级数据表,系统用户数据表等。1.2 主要功能模块系统管理:管理员帐号添加、修改、删除
4、、密码修改等。专业班级管理:实现专业班级的添加、删除、修改、查询等功能。学生信息管理:实现学生信息的添加、删除、修改、查询等功能。学生检索:要求提供多种检索方式。2、可行性研究对于所要求的功能模块,可以通过JAVA程序连接到数据库。通过相对应的操作要求,可以通过用户或管理员的方式登录,然后通过提示完成上述一系列的操作,包括:账号的添加、修改,学生信息的添加、修改、删除,班级信息的添加、修改、删除等等操作。3、需求分析用户登录:操作员可以分为两种,一种是管理员,一种是普通用户。两者的权限是不一样的,所以在通过不同身份进入到系统里面会出现不同的操作界面。其中管理员多了添加、修改、删除操作,还有就是
5、用户管理操作;而一般的用户只有查看和修改自己密码的权限。查看当前信息:主要是通过对数据库的访问,查看当前数据库中的信息是否完整,然后才能进展其它操作。这一功能是普通用户和管理员都有的权限,所以两个方法可以合二为一,而不用去分别写了。查看的信息包括:学生信息和班级信息。管理员还包括一个用户信息查询。当然也可以对个别学生通过不同的查找方式来查看对应学生的信息和班级信息。修改密码:管理员可能通过不同的方法对自己的密码和其它所有用户的密码进展修改。而普通用户只能通过此功能修改自己的密码。用户管理:管理员特权。其中包括:创立用户、删除用户、修改用户密码等。通过对已经用户的查看,如果有必要创立一个新用户的
6、话就可以通过此方法来创立。当然用户名一样的不能再次创立。如果有用户不再使用此系统,为保证平安性可以尽快将其删除。而修改密码是和上一个方法联系在一起的。插入操作:管理员特权!在系统之初,数据库里面可能包含太少的学生信息和班级信息。而管理员那么可以此方法向数据库中添加数据。其中包括添加学生信息和班级信息。删除操作:管理员特权!如果系统用的时间比拟长的话,那么学生信息和班级信息不可能一直不变。如果出现了学生离校或者班级编排方式不同,那么有可能出现多余的信息,此时可以通过此方法将多余的信息删除掉。其中包括删除学生信息和班级信息。修改操作:管理员特权!在管理员添加信息的时候,出错是难以防止的,而有时候一
7、个学生的信息只是错了个班级。如果将其删除然后再重新添加费时又费力。相反可以通过此方法对一条记录中的个别错误进展修改。这样可以节约很多添加和删除操作。其中包括修改学生信息和班级信息。主函数:主要用于整体框架的构建。并通过输入说明将方法分解开来,因此,用户可以完成准确的操作。4、总体设计4.1主要表的设计:此系统包括三个表:学生学籍信息表图4-1、班级信息表图4-2、用户表图4-3图4-1图4-2图4-34.2学生学籍信息管理系统流程图图4-4图4-44.3数据库关系图(图4-5)图4-55、详细设计5.1主菜单设计图5-1、5-2图5-1 图5-25.2函数设计和主要功能描述(1) public
8、 static void log_in(String name, String pwd): 用户登录验证。通过传入用户输入的用户名和密码与数据库中的users表中的用户名和密码一一对照。如果用户名和密码在users表中,那么登录成功。否那么登录失败。并且失败次数不得超过三次。超过三次会自动退出系统。同时,如果用户名是Administrator,将标志位flag 设为true。用于后面登录界面的用户的区别。(2) public static void student_watch():查看当前学生信息。直接连接数据库。将数据库中的student表里面的内容全部输出到界面上。(3) public s
9、tatic void change_secret():修改密码。用户和管理员均可使用。中间有重复输入新密码并校对两次输入的密码是否一样。(4) public static void admin_watch_users():查看当前用户信息,管理员特权。直接连接数据库将数据库中的users表里面的内容全部输出到界面上。(7) public static void admin_create_user():创立新用户,管理员特权。如果有新的用户要求创立用户名,管理员那么可以通过此方法创立用户需要的账号。 (6) public static void admin_delete_user():删除不用的
10、用户名和密码,管理员特权。(7) public static void admin_student_insert():插入学生信息,管理员特权。在系统之初,需要向数据库中添加许多学生信息。管理员可以通过此方法完成相应的功能。(8) public static void admin_change():修改学生信息,管理员特权。可以对特定学生的各样属性进展修改。(9) public static void admin_student_delete()throws Exception:删除学生信息,管理员特权。对无用的学生信息进删除。(10) public static void class_wat
11、ch()throws Exception:查看班级信息,公用功能。通过连接数据库,将数据库中class表输出到界面。(11) public static void admin_class_change():修改班级,管理员特权。可以对班级特定的属性进展修改。(12) public static void student_search():查找学生,公用功能方法。可以通过学生的各个属性查找特定的学生。然后输出该学生的信息。(13) public static void main(String args):主方法,整个程序的入口。完成不同方法的正常调用。6、编码和单元测试通过详细设计之后,应用程序
12、中所有的方法和其调用方式都已经设计好。接下来就是把详细设计的结果翻译成JAVA代码。在编写代码的时候,难免会遇到一些问题,大概用了一周的时间编写完成。编写完成扣进展了仔细测试编写出的每一个模块。7、综合测试7.1各函数测试结果如下列图所示:1查看学生信息(图7-1)图7-1(2) 插入学生信息(图7-2)图7-2(3) 查看班级信息(图7-3) 图7-3(4)查找特定学生信息(图7-4)图7-47用户操作删除用户(图7-5)图7-5 通过不了解此代码的人通过屡次各种各样的测试,发现系统中出现了很多错误。如通过管理员却进入了一般用户的界面、在要求选择的时候出现输入字母后直接退出等等问题。说明此系
13、统还需要用户的进一部使用,也需要我进一步去完善。8、软件维护维护阶段的关键任务是,通过各和必要的维护活动使系统持久地满足用户的需要。而且是在实际软件设计中花时间最长的一项。但由于此次只是编写课程设计。所以此项未能进展9、总结通过此次课程设计,掌握到了数据库系统的开发方法。同时也加深了对刚刚学习的JAVA的印象。编写代码的那个星期里面,几乎每天晚上上完自习回来都在编写,总共七个模块,一天大概写一个模块。虽然感觉非常的累,但却也感觉到了一种充实感。有事做总比没事做去打游戏要好的多!整个代码在写的过程中出现了很多问题。有的实在解决不了的问题,就抱着笔记本电脑到下课的时候问教我们JAVA的石文兵教师,
14、教师也非常乐意帮助我解决一些困难。有的时候不懂的问题没必要上网搜,或者自己去看书。因为那样可能用了一上午的时间还不如教师的一句话有用。对这一点我颇有感触。记得书上面只教会了我插入已经给出的内容,但是如果让用户输入要插入的内容,那么花了我很长一段时间去搞明白。后来实在找不到解决方法。只能在实验课上问教师了。结果教师花了不到十分钟的时间,不仅给我讲了如何实现插入用户输入的内容。而且还给我讲到了连接数据库的实质以和如何设置数据库的平安性、添加数据库用户等等。而这些之前我只是会把代码抄下来,并没能完全理解。此次课程设计完毕之后,我还意犹未尽,因为从中感觉到了写代码的趣味。于是,我就开场想方设法找点小的
15、应用程序去写。因为这样的学习方法是最快也是最有效的方式。比教师上课讲要好的多。而且大学生也应该培养自己的动手能力。而动手能力只能来自于自己从头到尾的去写一个不大的应用程序。了解整个创作的一个大体思路,在写的过程中还要不断地去请教我们的教师。因为他们对实际应用程序的把握比我们要强的多。当看到自己写这个1000行的JAVA程序能够很顺畅的运行的时候,心里是无比的快乐。也许其它人看到我这个只能在DOS下运行的程序,感觉非常的不美观;也许他们从网上下到的东西比我这好看的多。但是,我想,从中得到的快乐肯定不可同日而语。虽然现在网络很兴旺,很多东西都能在网上找的到,但是要从中真正学到东西,才能发挥网络的真
16、正作用。像有的同学把源代码下下来后,跑过来问我数据源怎么创立。当然搞的我相当无语。当然,学无止境,不能因为这么一点小的成就就止步不前。前路很漫长,但我相信只要自己肯用心去学习,Nothing is impossible!10、参考文献1王珊,萨师煊. 数据库系统概论M. 北京:高等教育出版社,2007.2Java语言程序设计 北京:清华大学出版社,2005.3SQL Server 2000实验指导第2版北京:清华大学出版社,2021.11、附源程序import java.util.Scanner;import java.sql.*;public class Student static boo
17、lean flag; /标记是否为管理员static int i =0; /限制密码输入次数static String present_name; /记录当前用户public static void log_in(String name,String pwd) throws Exception/用户登录验证String DBDrive = sun.jdbc.odbc.JdbcOdbcDriver;String connectionStr = jdbc:odbc:conn;Connection con = null;Statement stmt = null;ResultSet rs = nul
18、l;Class.forName(DBDrive); con = DriverManager.getConnection(connectionStr,sa,sa);stmt = con.createStatement();rs = stmt.executeQuery(Select * From users where username= +name+ and password= +pwd+);if(rs.next()System.out.println(登录成功!);else /设置三秒后关闭程序i+;if(i = 3)int j; System.out.println(登录错误次数已经三次。系
19、统将在三秒后关闭!);for(j=0; j3; j+) Thread.sleep(1000);System.out.println(3-j);if(j = 3)System.exit(0);elseSystem.out.println(您的用户名或密码不正确!请重新登录!);System.out.println(您还有+(3-i)+次时机);Scanner reader = new Scanner(System.in);System.out.println(请输入您的用户名:);String username = reader.nextLine();System.out.println(请输入
20、您的密码:);String password = reader.nextLine();log_in(username,password);if(name.equals(Administrator)flag = true; /设个管理员的标志位elseflag = false;public static void student_watch()throws Exception /当前学生信息String DBDrive = sun.jdbc.odbc.JdbcOdbcDriver;String connectionStr = jdbc:odbc:conn;Connection con = nul
21、l;Statement stmt = null;ResultSet rs = null;Class.forName(DBDrive); con = DriverManager.getConnection(connectionStr,sa,sa);stmt = con.createStatement();rs = stmt.executeQuery(Select * From student);while(rs.next()System.out.print(rs.getString(sno)+ );System.out.print(rs.getString(sname)+ );System.ou
22、t.print(rs.getString(ssex)+ );System.out.print(rs.getInt(sclass)+ );System.out.print(rs.getInt(sage)+ );System.out.println(rs.getString(sdept)+ );public static void change_secret()throws Exception /修改密码_通用 (出现点问题。密码修改不了!)String DBDrive = sun.jdbc.odbc.JdbcOdbcDriver;String connectionStr = jdbc:odbc:
23、conn;Connection con = null;Statement stmt = null;/*ResultSet rs = null;*/Class.forName(DBDrive); con = DriverManager.getConnection(connectionStr,sa,sa);stmt = con.createStatement(); System.out.println(您想把密码改为:);Scanner reader = new Scanner(System.in);String pwd1 = reader.nextLine();System.out.printl
24、n(请重复新密码:);String pwd2 = reader.nextLine();if(pwd1.equals(pwd2)String sql = update users set password = +pwd1+ where username = +present_name+;trystmt.executeQuery(sql);catch(Exception e);System.out.println(密码修改成功!下次登录请用新的密码!);/*String sql1 = select * from users where username = +present_name+;rs =
25、stmt.executeQuery(sql1);System.out.println(rs.getString(password);if(pwd1.equals(rs.getString(password)System.out.println(密码修改成功!下次登录请用新的密码!);*/elseSystem.out.println(两次密码输入不一样。无法完成修改!);public static void admin_watch_users()throws Exception /查看当前用户信息_管理员String DBDrive = sun.jdbc.odbc.JdbcOdbcDriver;
26、String connectionStr = jdbc:odbc:conn;Connection con = null;Statement stmt = null;ResultSet rs = null;Class.forName(DBDrive); con = DriverManager.getConnection(connectionStr,sa,sa);stmt = con.createStatement();rs = stmt.executeQuery(Select * From users);while(rs.next()System.out.println(rs.getString
27、(username)+ );public static void admin_create_user()throws Exception/创立用户_管理员String DBDrive = sun.jdbc.odbc.JdbcOdbcDriver;String connectionStr = jdbc:odbc:conn;Connection con = null;Statement stmt = null;ResultSet rs = null;Class.forName(DBDrive); con = DriverManager.getConnection(connectionStr,sa,
28、sa);stmt = con.createStatement();boolean a = true;while(a)Scanner scr = new Scanner(System.in);System.out.println(请输入用户名:);String username =scr.nextLine();String strsql = (select * from users where username =+username+);rs = stmt.executeQuery(strsql);if(rs.next()a = false;System.out.println(输入有误!此用户
29、名已经存在!);break;System.out.println(请输入密码:);Scanner reader = new Scanner(System.in);String pwd1 = reader.nextLine();System.out.println(请重复密码:);String pwd2 = reader.nextLine();if(pwd1.equals(pwd2)String sql = insert into users values(,);PreparedStatement pstmt = con.prepareStatement(sql);pstmt.setString
30、(1, username);pstmt.setString(2, pwd1);int intTemp = pstmt.executeUpdate();if(intTemp != 0)a = false;System.out.println(用户创立成功!);elseSystem.out.println(两次密码输入不一样。无法完成创立!);public static void admin_delete_user()throws Exception/删除用户_管理员String DBDrive = sun.jdbc.odbc.JdbcOdbcDriver;String connectionStr
31、 = jdbc:odbc:conn;Connection con = null;Statement stmt = null;Class.forName(DBDrive); con = DriverManager.getConnection(connectionStr,sa,sa);stmt = con.createStatement();System.out.println(请输入所要删除用户名:);Scanner reader = new Scanner(System.in);String name_d = reader.nextLine();String sql = delete from
32、 users WHERE username = +name_d+;stmt.executeUpdate(sql);System.out.println(删除成功!);public static void admin_student_insert()throws Exception / 插入学生信息String DBDrive = sun.jdbc.odbc.JdbcOdbcDriver;String connectionStr = jdbc:odbc:conn;Connection con = null;Statement stmt = null;ResultSet rs = null;Cla
33、ss.forName(DBDrive); con = DriverManager.getConnection(connectionStr,sa,sa);stmt = con.createStatement();boolean a = true;while(a)Scanner scr = new Scanner(System.in);System.out.println(请输入学生的学号:);String sno =scr.nextLine();String strsql = (select * from student where sno =+sno+);rs = stmt.executeQu
34、ery(strsql);if(rs.next()a = false;System.out.println(输入有误!此学号已经存在!);break;System.out.println(请输入学生的姓名:);String sname = scr.nextLine();System.out.println(请输入学生的性别:);String ssex = scr.nextLine();System.out.println(请输入学生的班级:);int sclass = Integer.parseInt(scr.nextLine();System.out.println(请输入学生的年龄:);in
35、t sage = Integer.parseInt(scr.nextLine();System.out.println(请输入学生的专业:);String sdept= scr.nextLine();System.out.println(您所要插入的信息为:+sno+ +sname+ +ssex+ +sclass+ +sage+ +sdept);System.out.println(确认填加信息吗(y/n):);String chioce = scr.nextLine();if(chioce.equals(y)String sql = insert into student values(,)
36、;PreparedStatement pstmt = con.prepareStatement(sql);pstmt.setString(1, sno);pstmt.setString(2, sname);pstmt.setString(3, ssex);pstmt.setInt(4, sclass);pstmt.setInt(5, sage);pstmt.setString(6, sdept);int intTemp = pstmt.executeUpdate();if(intTemp != 0)System.out.println(插入成功!);a = false;elseSystem.o
37、ut.println(插入已经取消!);a = false; public static void admin_change()throws Exception /修改学生信息String DBDrive = sun.jdbc.odbc.JdbcOdbcDriver;String connectionStr = jdbc:odbc:conn;Connection con = null;Statement stmt = null;ResultSet rs = null;Class.forName(DBDrive); con = DriverManager.getConnection(connec
38、tionStr,sa,sa);stmt = con.createStatement();Scanner reader = new Scanner(System.in);System.out.println(请输入您所要修改的学生的学号:);String sno_before = reader.nextLine();String sql = select * from student where sno=+sno_before+;rs = stmt.executeQuery(sql);boolean a = true;if(rs.next()while(a)System.out.println(
39、您可以有以下操作: ); System.out.println( 1、 修改学号); System.out.println( 2、 修改姓名 ); System.out.println( 3、 修改性别 ); System.out.println( 4、 修改班级); System.out.println( 5、 修改年龄); System.out.println( 6、 修改专业); System.out.println( 0、 返回上一步 ); System.out.println(请输入您的选择:); int chioce_change = Integer.parseInt(reader.nextLine(); String strsql = null; switch(chioce_change) case 1: System.out.println(请输入您所要更改为:); String sno_after = reader.nextLine(); strsql = update student set sno = +sno_after+ where sno = +sno_before+; /此处不知错在何处。如何不使用异常处理。 try stmt.executeQuery(strs