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

    数据库课程设计之学生信息管理系统(共24页).doc

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

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

    数据库课程设计之学生信息管理系统(共24页).doc

    精选优质文档-倾情为你奉上数据库原理课程设计报告 题 目: 学生信息管理系统 学生姓名: 穆岭(徐清锋、冉丽华)学 号: 班 级: 计科092 院 系:计算机科学与信息学院 专业年级:计算机科学与技术 2009级2011年12月22日一、需求分析需包含内容为:(1)问题描述:学生信息的管理是学校很重要的一项工作,而人工管理学生信息的话,无疑是一个很费时费力的事情,而且效率不高,容易出错,往往是学校进行学生工作的一个瓶颈问题,有一个学生信息管理的系统就能够帮助学校更好完成学生信息管理的工作,降低管理成本。所以我们组编写了一个学生信息管理系统,使其在学生管理工作中发挥更大的作用。(2)系统功能描述:本系统是一个学生信息管理系统,主要管理学生的基本信息,课程信息,以及学生选课成绩信息等,登录的模块有两种登录类型,分别是管理员登录和学生登录,如果是管理员登录的话,进入管理员界面,要求管理员界面中可以信息的学生基本信息、课程基本信息和学生选课成绩信息的管理设置;还有信息查询,在这块儿中可以进行学生基本信息的查询,课程信息的查询,以及选课成绩信息的查询;除此之外,要求设一个用户维护模块,在这个模块中管理员可以添加管理员用户或者是学生用户,可以修改密码,并且能够切换用户登录;接着是帮助,帮助中显示系统的版本;最后要求有一个推出系统按钮。如果是学生登录,那么学生可以进行学生信息的维护,可以进行登录密码的修改,基本信息的修改,以及切换用户登录;可以进行学生基本信息的查询,学生课程学习的查询,学生选课成绩信息的查询。接着是帮助,帮助中显示系统的版本;最后要求有一个推出系统按钮。其详细的操作框架流程在下面的图中可以见到。操作流程框图:存储的数据信息:User表(用户名,密码,用户类型标识),用于存储登录用户信息;Student表(学号,姓名,性别,出生日期,电话,QQ号,专业,班级,家庭地址),用于存储学生基本信息;Course表(课程号,课程名,先行课,学分,教师姓名),用于存储课程基本信息;SC表(学号,课程号,成绩,绩点),用于存储学生选课成绩信息。(3)有何安全性与完整性方面的要求。安全性:如果是管理员登录系统:可以进行管理设置,包括(设置学生的基本信息、设置课程信息、设置学生成绩信息),设置各种信息的时候有添加,删除和修改等相应功能,然后是信息查询,包括(查询学生基本信息,查询课程信息、查询学生成绩信息),用户的维护,包括(添加用户,修改用户密码,切换用户登录),帮助,退出系统。如果是学生登录系统:可以修改自己的基本信息,修改个人登录密码,切换用户登录,同样可进行信息查询,包括(查询学生基本信息,查询课程信息、查询学生成绩信息),查看帮助,退出系统。完整性:主要是在删除学生信息和课程信息的时候如果在选课信息中存在选课成绩信息的话,那么就不能直接进行相应信息的删除,在开发中要给出相应的信息提示,在进行各种添加、和更新操作之前也有进行相应的判断,如果原来的信息中已经有了所要添加的该条信息,怎不能添添加,并给出相应的提示,如果不存在所要更新的信息的时候也不能进行更新,并给出相应的提示。具体的完整性约束在编程中具体给出。二、概念结构设计画出系统整体的E-R模型;并对模型中所出现的实体及属性等信息加以说明。概念模型物理模型三、逻辑结构设计(1)模式设计:按系统整体E-R模型,写出关系模式;并利用数据字典加以描述。(如每个关系模式有何属性、属性的类型、属性值的长度、是否可取空值、是否为主码、有何约束条件等信息); 本系统的设计中主要涉及到四个表,分别是User表、Student表,Course表,SC表,在这四个表中,User表用于存储用户信息,Student表存储学生信息表,Course表存储课程信息,SC表存储学生选课的成绩信息。这四个表的结构如下:User表属性名存储代码类型长度是否可为空主键否备注用户名unameVARCHAR20否是用户登录名密码upassVARCHAR30否用户登录密码用户类型标识bsINT 否用于标识是管理员还是学生Student表 属性名存储代码类型长度是否可为空主键否备注学号snoVARCHAR20否是学生学号姓名snameVARCHAR20否学生姓名性别sexVARCHAR2否性别出生日期birthDATE出生日期电话telVARCHAR20联系电话QQ号qqVARCHAR20QQ号码专业sdeptVARCHAR20否学生所在专业班级classVARCHAR20否所在班级家庭地址addressVARCHAR50学生家庭地址Course表属性名存储代码类型长度是否可为空主键否备注课程号cnoVARCHAR20否是课程编号课程名cnameVARCHAR20否课程名先行课cpnoVARCHAR20先行课程学分creditFLOAT否学分教师姓名tnameVARCHAR20否教师姓名SC表属性名存储代码类型长度是否可为空主键否备注学号snoVARCHAR20否是学号课程号cnoVARCHAR20否是课程编号成绩gradeFLOAT课程成绩绩点pointFLOAT课程绩点(2)子模式设计:即针对自己的设计模块的应用需定义什么样的视图表结构;并利用数据字典加以描述。 由于在查询学生成绩信息的时候要查询学生学号、姓名、课程号、课程名、学分、成绩、绩点、联系电话,这就需要涉及到三个表的连接,为了查询的方便,所以在进行设计的时候创建了一个Stu_Cou_SC视图表,表结构为Stu_Cou_SC视图(学号,姓名,课程号,课程名,学分,成绩,绩点,联系电话)Stu_Cou_SC属性名存储代码类型长度是否可为空主键否备注学号snoVARCHAR20否是学生学号姓名snameVARCHAR20否学生姓名课程号cnoVARCHAR20否是课程编号课程名cnameVARCHAR20否课程名学分creditFLOAT学分成绩gradeFLOAT成绩绩点pointFLOAT绩点联系电话telVARCHAR20联系电话(3)画出系统功能模块图,并对各功能模块进行简单介绍。在登录模块中,设置了两种登录类型,一种是管理员登录,一种是学生登录。这两种登录有着不同的使用权限。管理员登录系统可以进行管理设置,信息查询和用户维护等操作,学生登录系统可以进行信息维护和信息查询等。在管理设置模块中,用户可以进行学生信息的设置、课程信息设置、选课成绩信息的设置,在各个信息的设置中都可以进行添加、更新和删除操作。在信息查询模块中,用户可以进行学生基本信息查询,课程信息查询以及学生选课成绩信息的查询。在各个查询中又设置有精确查询和模糊查询,使其查询更智能化。在用户维护模块中,可以进行添加用户,修改用户登录密码,切换用户登录功能。在学生登录后的信息维护模块中,学生统一可以修改登录密码,修改个人基本信息,和切换用户登录。 四、数据库的物理设计 在本系统的数据库设计阶段,我们为其建立了下面的三个索引字段,分别是基于Student表建立的Stusno以sno为升序索引,基于Course表建立的Coucno以cno为升序索引,和基于SC表建立的SCno以sno为升序,以cno为降序的索引。对应的T-SQL语句如下:/*创建索引字段*/DROP INDEX Student.Stusno;CREATE INDEX Stusno ON Student(sno ASC);DROP INDEX Course.Coucno;CREATE INDEX Coucno ON Course(cno ASC);DROP INDEX SC.SCno;CREATE INDEX SCno ON SC(sno ASC,cno DESC);五、数据库设计实现及运行(1)数据库的创建T-SQL语句:CREATE DATABASE SIMS;(2)数据表的创建T-SQL语句:/*用户表*/DROP TABLE User;CREATE TABLE User( unameVARCHAR(20) NOT NULL,upassVARCHAR(30) NOT NULL,bsINT NOT NULL);/*学生表*/DROP TABLE Student;CREATE TABLE Student(sno VARCHAR(20) PRIMARY KEY,sname VARCHAR(20) NOT NULL,sex VARCHAR(2) NOT NULL,birth DATE,tel VARCHAR(20),qq VARCHAR(20),sdept VARCHAR(20) NOT NULL,class VARCHAR(20) NOT NULL,address VARCHAR(50) );/*课程表*/DROP TABLE Course;CREATE TABLE Course( cnoVARCHAR(20) PRIMARY KEY,cnameVARCHAR(20) NOT NULL,cpnoVARCHAR(20) ,creditFLOAT NOT NULL,tnameVARCHAR(20) NOT NULL);/*成绩表*/DROP TABLE SC;CREATE TABLE SC(snoVARCHAR(20),cnoVARCHAR(20),gradeFLOAT,point FLOAT,PRIMARY KEY(sno,cno),Foreign KEY (sno) REFERENCES Student(sno),Foreign KEY (cno) REFERENCES Course(cno);(3)视图的创建 T-SQL语句:/*创建Stu_Cou_SC视图*/DROP VIEW Stu_Cou_SC;CREATE VIEW Stu_Cou_SC(sno,sname,cno,cname,credit,grade,point,tel)ASSELECT s.sno,sname,o,cname,credit,grade,point,telFROM Student s,Course c,SC scWHERE s.sno=sc.sno AND o=o;(4)各模块中的功能实现a)功能界面(截图);管理员登录模块功能截图用户登录 添加学生信息 更新学生信息 删除学生信息信息查询查询学信息 精确查询 模糊查询用户维护 添加用户 修改密码 帮助 切换用户登录弹出登录窗体选择学生登录学生登录功能截图信息维护信息查询 b)功能界面简单描述; 首先是运行程序,进入用户登录界面,登录是要进行身份验证,在这登录过程系统会通过数据库中的User表存储的数据进行验证,并判断用标识检查登录的类型。当登录的类型是管理员登录时,登录成功后会进入管理员操作界面,在管理员登录界面中,管理员可以进行管理设置,如:设置学生基本信息,设置课程信息,设置成绩信息,每个设置都有相应的添加、更新、删除操作;接着是信息查询,在这儿可以查询学生的基本信息,查询课程信息,查询成绩信息,在每一种查询中都分别设置有精确查询和模糊查询等操作,模糊查询使得查询在查询的时候更加方便;还有就是用户维护操作,这里面管理员可以添加用户,修改登录密码,切换用户登录,最后是帮助中的关于和系统的退出。当登录类型为学生登录时,登录成功后会进入学生操作界面,在此界面中学生可以在信息维护下修改登录密码,更新个人基本信息,切换用户登录;然后也可以查询学生基本信息,查询课程信息,查询成绩信息,同样查询中也设置有精确查询和模糊查询;最后也有帮助中的关于和系统的退出。在界面的操作过程中,对一些在操作中可能是操作失误导致的错误进行了相应的提示,比如成绩的输入必须是字符型数字,出生日期是格式应为yyyy-MM-dd格式,如果输入格式不对,给出相应的提示,操作人员在给出对应的正确操作,这使得该系统变得更加智能化。c)T-SQL语句与宿主语言嵌套使用代码段/*JAVA数据库的连接程序*/private static final String DBDRIVER = com.microsoft.sqlserver.jdbc.SQLServerDriver"private static final String DBURL = "jdbc:sqlserver:/localhost:1433;"+ "DatabaseName=SIMS "private static final String DBUSER = "sa"private static final String DBPASS = ""/密码为空private Connection conn = null;public DatabaseConnection() try Class.forName(DBDRIVER); catch (ClassNotFoundException e) JOptionPane.showMessageDialog(null, e.getMessage();try conn = DriverManager.getConnection(DBURL, DBUSER, DBPASS); catch (SQLException e) JOptionPane.showMessageDialog(null, e.getMessage();public Connection getConnection() return this.conn;public void close() if (this.conn != null) try this.conn.close(); catch (SQLException e) JOptionPane.showMessageDialog(null, e.getMessage();/*添加用户登录查询块*/ dbconn = new DatabaseConnection(); / 初始化连接类conn = dbconn.getConnection(); / 获得连接String sql = "SELECT uname,upass,bs FROM User WHERE uname=? AND bs=?"PreparedStatement pstmt = null;try pstmt = conn.prepareStatement(sql);pstmt.setString(1, getName();pstmt.setInt(2, user.getBs();ResultSet rs = pstmt.executeQuery(); user.setUname(null);user.setUpass(null);user.setBs(2);while (rs.next() user.setUname(rs.getString(1);user.setUpass(rs.getString(2);user.setBs(rs.getInt(3); catch (SQLException e) JOptionPane.showMessageDialog(this, e.getMessage(); finally if (conn != null) dbconn.close();/*添加登录用户信息*/PreparedStatement pstmt = null;ResultSet rs = null;String sql1 = "SELECT * FROM User WHERE uname=? AND bs=?"try pstmt = conn.prepareStatement(sql1);pstmt.setString(1, username); pstmt.setInt(2, user.getBs();rs = pstmt.executeQuery();if(!rs.next()String sql3 = "INSERT INTO User(uname,upass,bs) VALUES(?,?,?) "int i=0; pstmt = conn.prepareStatement(sql3);pstmt.setString(1, username);pstmt.setString(2, pass1);pstmt.setInt(3,user.getBs(); i = pstmt.executeUpdate(); if(i>0)JOptionPane.showMessageDialog(this, "用户添加成功");jTextField1.setText(null);jPasswordField1.setText(null);jPasswordField2.setText(null);jRadioButton1.setSelected(false);jRadioButton2.setSelected(false);this.setVisible(false);elseJOptionPane.showMessageDialog(this, "用户添加失败");else / 在数据表中找到了改用户JOptionPane.showMessageDialog(this, "对不起,该用户名已经存在,请使用其他用户名!");this.jPasswordField1.setText(null);this.jPasswordField2.setText(null); catch (SQLException e1) JOptionPane.showMessageDialog(this, "用户添加失败,数据库操作异常:"+e1.getMessage(); finally if (conn != null) dbconn.close();/*修改用户登录密码*/String sql1 = "SELECT * FROM User WHERE uname=? AND upass=?"try pstmt = conn.prepareStatement(sql1);pstmt.setString(1, uname);pstmt.setString(2, passtr);rs = pstmt.executeQuery();if(!rs.next()JOptionPane.showMessageDialog(this, "密码修改失败,输入的旧密码不正!");elseString sql2 = "Update User SET upass=? WHERE uname=? AND upass=? int i=0; pstmt = conn.prepareStatement(sql2);pstmt.setString(1, pass1);pstmt.setString(2, uname);pstmt.setString(3, passtr); i = pstmt.executeUpdate(); if(i>0)JOptionPane.showMessageDialog(this, "密码修改成功");jPasswordField1.setText(null);jPasswordField2.setText(null);jPasswordField3.setText(null);this.setVisible(false);elseJOptionPane.showMessageDialog(this, "密码修改失败"); catch (SQLException e1) JOptionPane.showMessageDialog(this, "密码修改失败,数据库操作异常:"+e1.getMessage(); finally if (conn != null) dbconn.close(); /*添加学生基本信息块*/String sql1 = "SELECT * FROM Student WHERE sno=?"ResultSet rs=null;try PreparedStatement pstmt = null; pstmt = conn.prepareStatement(sql1);pstmt.setString(1, stu.getSno();rs = pstmt.executeQuery(); catch (SQLException e) JOptionPane.showMessageDialog(this,"查询时发生异常为:"+e.getMessage(); tryif (rs.next() JOptionPane.showMessageDialog(this, "该学号的学生已经存在,请使用其他学号!"); else String sql2 = "INSERT INTO Student "+ "(sno,sname,sex,birth,tel,qq,sdept,class,address) "+ "VALUES(?,?,?,?,?,?,?,?,?)"PreparedStatement pstmt = null; pstmt = conn.prepareStatement(sql2);pstmt.setString(1, stu.getSno();pstmt.setString(2, stu.getSname();pstmt.setString(3, stu.getSex();pstmt.setDate(4, new java.sql.Date(stu.getBirth().getTime();pstmt.setString(5, stu.getTel();pstmt.setString(6, stu.getQq();pstmt.setString(7, stu.getSdept();pstmt.setString(8, stu.getSclass();pstmt.setString(9, stu.getAddress();if (pstmt.executeUpdate() > 0) JOptionPane.showMessageDialog(this,"学生信息添加成功!"); this.setVisible(false); catch (SQLException e) JOptionPane.showMessageDialog(this,"学生信息添加失败!插入异常为:"+e.getMessage(); /*更新学生信息*/ String sql1 = "SELECT * FROM Student WHERE sno=?"PreparedStatement pstmt = null;try pstmt = conn.prepareStatement(sql1);pstmt.setString(1, stu.getSno();ResultSet rs = pstmt.executeQuery();if (!rs.next() JOptionPane.showMessageDialog(this, "不存在该学号的学生!不能进行删除操作!"); else / 该课程的数据存在,进行删除操作String sql2 = "DELETE FROM Student WHERE sno=?"pstmt = conn.prepareStatement(sql2);pstmt.setString(1, stu.getSno();if (pstmt.executeUpdate() > 0) JOptionPane.showMessageDialog(this, "OK!删除成功!"); catch (SQLException e) JOptionPane.showMessageDialog(this, "删除失败!"+e.getMessage(); /*删除学生信息*/String sql1 = "SELECT * FROM Student WHERE sno=?"PreparedStatement pstmt = null;try pstmt = conn.prepareStatement(sql1);pstmt.setString(1, stu.getSno();ResultSet rs = pstmt.executeQuery();if (!rs.next() JOptionPane.showMessageDialog(this, "不存在这个学号的学生,请重新输入学号!"); else stu.setSname(rs.getString(2); stu.setSex(rs.getString(3);stu.setBirth(rs.getDate(4);stu.setTel(rs.getString(5);stu.setQq(rs.getString(6);stu.setSdept(rs.getString(7);stu.setSclass(rs.getString(8);stu.setAddress(rs.getString(9);flag = true; catch (SQLException e) JOptionPane.showMessageDialog(this, "SQL异常:" + e.getMessage(),"错误提示", JOptionPane.ERROR_MESSAGE);String sql1 = "SELECT * FROM Student WHERE sno=?"PreparedStatement pstmt = null; try pstmt = conn.prepareStatement(sql1);pstmt.setString(1, stu.getSno();ResultSet rs = pstmt.executeQuery();all = new ArrayList<Student>(); while (rs.next() stu = new Student();String sno = rs.getString(1);String sname = rs.getString(2);String sex = rs.getString(3);Date birth = null;try birth = new SimpleDateFormat("yyyy-MM-DD").parse(rs.getString(4); catch (ParseException e) JOptionPane.showMessageDialog(this, "查询得到的日期格式不符合"+ e.getMessage();String tel = rs.getString(5);String qq = rs.getString(6);String sdept = rs.getString(7);String sclass = rs.getString(8);String addr = rs.getString(9);stu.setSno(sno);stu.setSname(sname);stu.setSex(sex);stu.setBirth(birth);stu.setTel(tel);stu.setQq(qq);stu.setSdept(sdept);stu.setSclass(sclass);stu.setAddress(addr); all.add(stu); if (all.size() = 0) JOptionPane.showMessageDialog(this, "没有查询到相关的数据!n"); else if (all.size() > 0) /*这段是对查询的结果进行显示的代码,这里省略*/ catch (SQLException e) JOptionPane.showMessageDialog(this, "查询学生记录失败!查询异常:"+ e.getMessage(); finally if (conn != null) dbconn.close();/*使用模糊查询方式查询学生基本信息*/String sql2 = "SELECT * FROM Student WHERE sno LIKE ? OR sname LIKE ? OR sdept LIKE ? OR class LIKE ?"PreparedStatement pstmt = null; try pstmt = conn.prepareStatement(sql2);pstmt.setString(1, "%" + keyword + "%");pstmt.setString(2, "%" + keyword + "%");pstmt.setString(3, "%" + keyword + "%");pstmt.setString(4, "%" + keyword + "%");ResultSet rs = pstmt.executeQuery();all = new ArrayList<Student>(); while (rs.next() stu = new Student();/注意这个句子不能放到外面去,每次都必须重新产生一个对象String sno = rs.getString(1);String sname = rs.getString(2);String sex = rs.getString(3);Date birth = null;try birth = new SimpleDateFormat("yyyy-MM-DD"

    注意事项

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

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




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

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

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

    收起
    展开