1、数据库实习报告河 南 工 程 学 院实 习 报 告系(部) 计算机科学与工程系 专 业 计算机科学与技术 班 级 0942 班 负责人学号及姓名 * 井密 成 员学号及姓名 * 孙晨康 200910913203 尹蕊 2011年 12 月 30 日数据库系统原理课程设计指导教师评分表课程设计题目学生信息管理系统成员姓名学号任务分工井密200910913247实现登录、信息添加与查询界面 孙晨康200910913213实现JAVA程序与MYSQL数据库的连接、整个程序的调试与主要实习报告的撰写尹蕊200910913203实现信息删除、修改界面评分项目及分值要素成绩评定项 目最高分评 分 要 素成
2、 绩1学习态度20上机出勤及端正的学习态度、认真刻苦程度,工作量饱满程度等2软件设计质量40采用的算法、设计方案,设计结果,界面友好等方面进行综合评定3答辩过程20能简明扼要地阐述设计的主要内容,能准确流利地回答各种问题4设计报告书写10内容按要求步骤书写,条理清晰,表述清楚、措词得当5实际动手能力10熟练使用开发工具,能够迅速准确的进行调试、纠错和运行;组长全面负责,承担复杂的模块设计分值就高总 成 绩实 习 (训) 报 告 评 语等 级: 评阅人: 职称: 年 月 日河南工程学院实习(训)报告实习目的(内容): 学习和掌握数据库原理及SQL Server 2000 数据库开发工具,培养数据
3、库程序开发能力。实习时间: 自 12 月 26 日 至 12 月 30日 共 5 天。实习地点: 3C411机房 实习单位: 计算机科学与工程系 指导教师: 李华 系主任: 曲宏山1.需求分析1.1 任务分析现在高校学生信息的管理趋向于复杂化和多元化, 计算机科学的发展使的人们已不满足于使用传统的信息管理方式来管理各种文档和数据。人们的目光开始转向一种基于公共数据源的数据管理系统,即可以实现数据共享,又能像使用单机系统一样,进行便捷地各种数据添加、修改、删除、查询和统计等操作,并且具有相当的安全性和可靠性。特别像学校系统显得非常有必要。学生信息管理系统,不仅可以作为学生信息系统的一部分,也能在
4、学生的信息管理方面发挥重要作用,如果使用这样的信息平台,那么学校各部门对学生信息管理将更加方便,且各部门之间的配合也将更加紧密,效率大大提高。在这种情况下,开发学生信息管理为单独的一个系统,为了使学校管理人员在学生信息管理方面实现信息共享,对信息操作更加方便快捷。作为计算机应用的一部分,使用计算机对学生信息进行管理,具有着手工管理所无法比拟的优点。例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高学生信息管理的效率,也是学校的科学化、正规化管理,与社会接轨的重要条件。在该系统中,不仅可以对学生的信息进行添加、修改、删除和查询,还能对学生成绩与课程信
5、息进行添加、修改、删除和查询,其功能如图1-1所示。 图1-1 功能实现图图1-2 数据流图1.2 数据字典(1) 数据项:Sno=Sno,学生学号,char,9,*-*,该数据项与另几个数据项一一对应Sna=Sname,学生姓名,char,20,该数据项与另几个数据项一一对应Sbir=Sbir,学生出生年月,char,30,0000.019999.12, 该数据项对应Sno项与Sname 项Ssex=Ssex,学生性别,char,2,男女Sdept=Sdept,学生系别,char,20, ,该数据项与Sno 项对应Cno=Cno,课程号,char,4, 该数据项与Sno 项对应Grade=G
6、rade,学生成绩, smallint,2,0-100, 该数据项与Sno 项与Sname项对应Cname=Cname,课程名,char,40,该数据项Cno项对应Ccredit= Ccredit,学分,char,2, ,该数据项与Cname项对应Uuser= Uuser,用户名,char,20 Upassword= Upassword,密码,char,40,该数据项与Uuser项对应(2) 数据结构:学生信息=Student,学生个人信息,组成:Sno,Sname,Sbir,Ssex, Sdept课程信息=Course,课程信息,组成:Cno, Cname, Ccredit 成绩信息=SC,
7、成绩信息,组成: Sno ,Cno,Grade 用户信息=User,用户个人信息,组成:Uuser,Upassword3有何安全性与完整性方面的要求(参照所给出的语义规则)。如是否需要定义具有什么功能的存储过程、需定义具有什么功能的触发器、对不同的用户有何不同的系统使用权限等。1.3创建数据表经分析至少需要建立三个基本表,分别为学生基本信息表,课程基本信息表和学生课程关系表。现设计其详细属性如下:(1)学生基本信息表(Student):学号(Sno)、姓名(Sname)、出生年月(Sbir)、性别(Ssex)、所在系(Sdept)。 (2)课程基本信息表(Course):课程号(Cno)、课程
8、名(Cname)、学分(Ccredit)。 (3)成绩信息表(Grade):学号(Sno)、课程号(Cno)、成绩(Gra)。1.4数据库完整性设计(1)给每个关系表实施主键及外键约束,主键如学号、课程号。(2)设置非空约束,如学生的姓名,性别等。 (3)实施CHECK约束,如性别只能为“男”或“女”两值。 (4)实施规则,如学号必须为8位数字,并前四位为2009等。1.5小组分工本组三名同学共同商讨完成需求分析、概念结构、逻辑结构及物理结构的设计部分。然后三名同学分别使用JAVA语言编程实现各自界面:井密负责实现登录、信息添加与查询界面;尹蕊负责实现信息删除、修改界面;孙晨康负责实现JAVA
9、程序与MYSQL数据库的连接、整个程序的调试与主要实习报告的撰写。2.概念结构设计2.1 设计方法设计概念结构通常有四类方法:(1) 自顶向下 即首先定义全局概念结构的框架,然后逐步细化。(2) 自底向上 即首先定义各局部应用的概念结构,然后将其集合得到全局概念模式。(3) 逐渐扩张 首先定义最重要的核心概念结构,然后向外扩充,以滚雪球的方式逐步生成其他的概念结构,直至总体概念结构。(4) 混合策略 即将自顶向下和自底向上相结合,用自顶向下策略设计一个全局概念结构的框架,以它为骨架继承由自底向上策略中设计的各局部概念结构。2.2 设计步骤概念结构的设计分为两步:第一步是抽象数据并设计局部视图,
10、第二步是集成局部视图,得到全局的概念结构2.3 E-R图 (1) 学生信息的E-R图如下:图2-1 学生实体E-R图(2) 课程信息的E-R图如下:图2-2 课程实体E-R图(3) 登录用户信息的E-R图如下:图2-3 用户信息E-R图(4) 学生信息管理的E-R图如下: 图 2-4 整体E-R图3.逻辑结构设计3.1 E-R图向关系模型的转换Student(Sno,Sname,Sbir,Ssex,Sdept)此为学生实体对应的关系模式。Course(Cno,Cname,Ccredit)此为课程实体对应的关系模式。 Grade(Sno,Cno,Gra) 此为联系“主修”对应的关系模式。3.2各
11、个基本表的设计结果表3-1 学生基本信息表列名数据类型说明SnameChar学生姓名Sno(主码)Char学生学号,非空,唯一SsexChar性别SdeptChar学生系别SbirChar学生出生年月表3-2 课程基本信息表列名数据类型说明Cno(主码)Char课程号,非空,唯一CnameChar课程名CcreditChar学分表3-3 成绩信息表列名数据类型说明SnoChar学生学号CnoChar课程号GraChar成绩4.物理结构设计(1)确定数据的存储结构确定数据库存储结构时要综合考虑存取时间、存储空间利用率和维护代价三方面的因素。这三个方面常常是相互矛盾的,例如消除一切冗余数据虽然能够
12、节约存储空间,但往往会导致检索代价的增加,因此必须进行权衡,选择一个折中方案。因此在本系统中选择顺序存储结构。(2)设计数据的存取路径在关系数据库中,选择存取路径主要是指确定如何建立索引。例如,应把哪些域作为次码建立次索引,建立单码索引还是组合索引,建立多少个为合适,是否建立聚簇索引等。在本系统中建立聚簇索引来存放数据库信息。(3)确定数据的存放位置为了提高系统性能,数据应该根据应用情况将易变部分与稳定部分、经常存取部分和存取频率较低部分分开存放。学生信息一旦录入后,就很少改变,因此学生信息数据库应放在存取频率较低部分存放。而成绩信息与课程信息在每学期末的的时候被大量的修改,因此将学生成绩表与
13、课程信息表放入易变部分进行存放。5.数据库设计实现及运行5.1数据库的创建CREATE DATABASE Student ON ( NAME=Student, FILENAME= C:program filesmicrosoft.sql servermssqldataStudent_data.mdf, SIZE=1MB, MAXSIZE=10MB, FILEGROWTH=10% )LOG ON( NAME=Student, FILENAME= C:program filesmicrosoft.sql servermssqldataStudent_log.ldf, SIZE=1MB,MAXSIZ
14、E=10MB, FILEGROWTH=1MB)5.2数据表的创建 CREATE TABLE Student ( Sname CHAR(20) NOT NULL, Sno CHAR(20) PRIMARY KEY, Ssex CHAR(10) CHECK (Ssex IN(男, 女), Sdept CHAR(10), Sbir CHAR(10) ) CREATE TABLE Course ( Cno CHAR(6) PRIMARY KEY,Cname CHAR(20) NOT NULL,Ccredit CHAR(5) ) CREATE TABLE Grade ( Sno CHAR(20), Cn
15、o CHAR(6),Gra CHAR(10) CHECK(Gra=0 and Gra=100),FOREIGN KEY(Sno) REFENRENCES Student(Sno),FOREIGN KEY(Cno) REFENRENCES Course(Cno)5.3数据的插入、更新、查询、删除(1)数据的插入语句:insert into Student(Sno,Sname,Ssex,Sage,Sdept)values(200215121,李勇,男,20,CS);insert into Student(Sno,Sname,Ssex,Sage,Sdept)values(200215122,刘晨,女
16、,19,CS);insert into Course(Cno,Cname,Cpno,Ccredit)values(1,数据库,null,4);insert into Course(Cno,Cname,Cpno,Ccredit)values(2,数学,null,2);insert into Grade(Sno,Cno,Grade)values(200215121,1,92);insert into Grade(Sno,Cno,Grade)values(200215121,2,85);(2)数据的更新语句:update Courseset Cpno=5where Cno=1;update Cour
17、seset Cpno=1where Cno=3;(3)数据的查询语句select Sno,Sname from Studentselect * from Course where Cname in(数学,java)select * from Grade where Grade=85(4)数据的删除语句delete from stuview2 where Sname=赵军(4)登录用户的创建sp_addlogin rootsp_addrolemember System Administrators,rootsp_adduser root,rootsp_helpuser root5.4各模块涉及的
18、操作语句(1)插入数据操作输入相关学生信息或成绩信息,然后点击“添加”键。可将相关信息分别插入数据库中的Student表或Grade表。功能界面如下图5-1及图5-2所示。 图5-1 添加学生信息界面图5-2 添加学生成绩界面MYSQL语句与Java嵌套使用代码段如下:public void actionPerformed(ActionEvent e) if(e.getSource()=JBAdd|e.getSource()=JTSde) String sno=JTNumber.getText(); String sna=JTName.getText(); String sde=JTSde.g
19、etText(); String ssex=女,sql; if(JRB1.isSelected() ssex=男; String sbir=JTBir.getText(); sql=select * from student where Sno=+sno+; try Class.forName(com.mysql.jdbc.Driver); String url=jdbc:mysql:/localhost/student?user=root&password=root; Connection conn=DriverManager.getConnection(url); Statement st
20、m=conn.createStatement(); ResultSet rs=stm.executeQuery(sql); if(rs.next() JOptionPane.showMessageDialog(null,该号已经存在!); else sql=insert into student values(+sno+,+sna+,+sde+,+ssex+,+sbir+); int i=stm.executeUpdate(sql); if(i0) JOptionPane.showMessageDialog(null,添加成功!); else JOptionPane.showMessageDi
21、alog(null,添加失败!); catch(Exception ee) if(e.getSource()=JBNext) JTNumber.setText(null); JTName.setText(null); JTSde.setText(null); JTBir.setText(null); if(e.getSource()=JBExit) System.exit(0); 测试结果如下图5-3所示。图 5-3 添加视图界面(2)删除数据操作输入学生学号,即可实现删除该学号学生的相关信息的功能。功能界面如图5-4所示。 图 5-4 删除学生信息界面MYSQL语句与Java嵌套使用代码段如
22、下:public void actionPerformed(ActionEvent e) if (e.getSource()=JBDel|e.getSource()=JTNumber) String sno = JTNumber.getText(); sql = select * from student where sno= + sno + ; try Class.forName(com.mysql.jdbc.Driver); String url = jdbc:mysql:/localhost/student?user=root&password=root; Connection conn
23、 = DriverManager.getConnection(url); Statement stm = conn.createStatement(); ResultSet rs = stm.executeQuery(sql); if (rs.next() String s=select * from grade where sno=+sno+; Statement statment = conn.createStatement(); ResultSet result=statment.executeQuery(s); if(result.next() JOptionPane.showMess
24、ageDialog(null, 有其他表使用该信息不能删除!); else sql = delete from student where sno= + sno + ; int m = stm.executeUpdate(sql); if (m 0) JOptionPane.showMessageDialog(null, 删除成功!); else JOptionPane.showMessageDialog(null, 删除失败!); else JOptionPane.showMessageDialog(null, 此用户不存在!); catch (Exception er) if (e.get
25、Source() = JBNext) JTNumber.setText(null); if (e.getSource() = JBExit) setVisible(false); 测试结果如下图5-5所示。图 5-6 删除操作视图(3)修改数据操作输入要修改的学生的相关成绩,并按下“修改”键,可完成学生成绩的修改。功能界面如图5-7所示。 图5-7 修改学生成绩界面MYSQL语句与Java嵌套使用代码段如下:public void actionPerformed(ActionEvent e) if (e.getSource() = JBSet) String sno = JTNumber.ge
26、tText(); String sname = JTName.getText(); String sdept = JTSde.getText(); String ssex=女,sql; if(JRB1.isSelected() ssex=男; String sbir=JTBir.getText(); sql=select * from student where Sno=+sno+; try Class.forName (com.mysql.jdbc.Driver);Connection cot=DriverManager.getConnection(jdbc:mysql:/localhost
27、/student?user=root&password=root);Statement stm=cot.createStatement(1005,1008); ResultSet rs=stm.executeQuery(sql);/执行sql语句 if(rs.next() sql=update student set sna=+sname+,sde=+sdept+,sex=+ssex+,bir=+sbir+ where Sno=+sno+; int n=stm.executeUpdate(sql); /修改成功则返回修改失败信息 if(n0)JOptionPane.showMessageDia
28、log(null,修改成功!); /else/修改失败则返回失败信息 else JOptionPane.showMessageDialog(null,修改失败!); else /否则将提示不存在该学号学生 JOptionPane.showMessageDialog(null,不存在该学号学生!); catch(Exception er)if(e.getSource()=JBNext) JTNumber.setText(null); JTName.setText(null); JTSde.setText(null); JTBir.setText(null);if(e.getSource()=JBExit) setVisible(false);测试结果如下图5-8所示。图 5-8 修改视图6.系统详细设计及实现6.1系统环境简介本系统选用MYSQL数据库作为后台,与Java编写的前台界面相连接实现对于数据的查询、修
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1