1数据库原理与应用课程设计报告课程名称数据库原理与应用实验名称学生成绩管理系统学生学院自动化学院_____专业班级______xxxx________学号_xxxx学生姓名_xxxx_____指导教师______黄永慧_______2012年5月20日2一、课程设计的内容:当前,应用数据库技术编写信息管理软件,已是很成熟的技术,关键是如何实现设计要求,如何设计出友好的人机界面,使程序运行稳定、使用方便、操作简便,建立学生成绩管理系统,采用计算机对学生成绩进行管理,进一步提高办学效益和现代化水平。学生成绩管理系统的设计与实现主要包括如下内容:1)原始数据录入(包括学生信息、课程信息和学生成绩的录入);2)课程查询、学生信息和成绩查询查询;3)报表输出(包括学生成绩汇总报表、需重修的学生统计表、班级单科成绩表等);4)数据维护(包括数据备份、数据恢复等),该部分内容选做。5)随着网络技术的发展,可考虑提供网络在线查询功能。二、课程设计的要求与数据对于课程设计要求按照如下步骤进行:1)选题与搜集资料:根据分组,选择设计题目,在小组内进行分工,进行应用系统调查,搜集相关资料。2)分析与设计:根据搜集的资料,进行功能与数据分析,并进行数据库、系统功能等设计。撰写数据字典、使用E-R图为该数据库设计概念模型、将E-R数据模型转换成关系模型、对于设计好关系模式集,利用SQL语句定义各个关系模式,定义各关系模式之间的联系,以及参照完整性的约束。3)程序设计:运用掌握的高级语言(如VB、VC、ASP、JSP等),结合选择的数据库管理系统(要求选择SQLSERVER2000,或SQLSERVER2005),编写程序,实现所设计的模块功能。4)调试与测试:装入初始数据,自行调试程序,成员交叉测试程序,并记录测试情况。装入一定量的测试数据,调试系统,并完成各项操作要求。三、课程设计应完成的工作:学生成绩管理系统至少需要完成以下功能:1、基本信息的管理系统,基本功能如下:(1)能够完成新、老生信息的输入、修改、删除等工作,学生的基本信息,包括学号、姓名、性别、籍贯等,具体可根据需求自行设计;(2)能够完成课程信息的输入、修改、删除等工作,课程的基本信息,包括课程编号、课程名称、学时、学分、先修课等,具体可根据需求自行设计;3学生成绩管理系统以管理员身份登陆以学生身份登陆基本信息管理个人基本信息以及成绩管理成绩管理(3)可以按照特定的信息进行查找,并按照特定的要求进行排序;2、学生成绩的管理,基本功能如下:(1)学生成绩的输入、修改、删除等基本操作;(2)成绩的查询功能,可以按学号、姓名等进行成绩查询;(3)成绩的综合统计功能,包括学生成绩按照不同条件进行排名,管理人员可以选择不同的排序条件。(4)计算每个学生的总成绩、平均成绩,所有学生单科的平均成绩,找出总成绩和单科成绩最高的学生并输出;(5)计算各班的总分和平均分,并按照平均分将各班成绩进行排序。(6)统计不及格考生的信息;(7)学生奖励统计,自动生成每班获得奖学金的同学的信息,并可以将奖学金分成不同的等级,以及所得奖学金的数目。四、设计:1)总体设计:系统功能模块(概要)基本功能:其中的实体包括:(1)学生基本信息:学号,姓名,性别,地址,年龄,专业班级,联系方式。(学号为主码)(2)课程基本信息:课程编号,课程名,学时,学分。(课程编号为主码)(3)成绩:学号,课程编号,成绩。(学号+课程编号作为主码)4按课程信息进行按学生信息进行查询修改删除输入基本操作统计计算2)详细设计:E-R图:CREATEDATABASE学生管理ONPRIMARY(NAME=学生管理,FILENAME='D:\新建文件夹\学生管理',SIZE=3MB)首先在本机的数据库sever2005建立一个名为学生管理的数据库。数据字典:5学生信息表字段名类型NULL备注SnoVarchar(20)Notnull学号SnameVarchar(20)Notnull姓名SexChar(5)Notnull性别SageIntNotnull年龄SdeptVarchar(20)null宿舍地址StelVarchar(15)null联系电话SclassVarchar(20)null专业班级学生信息表的SQL语句:createtableStudent(Snovarchar(20)primarykey,Snamevarchar(20)notnull,Sexchar(1)notnull,Sageintcheck(Sage0)notnull,Sdeptvarchar(20)null,Stelvarchar(15)null,Sclassvarchar(20)null)课程信息表字段名类型NULL备注CnoVarchar(15)Notnull课程号CnameVarchar(20)Notnull课程名称CtimeIntNotnull学时CreditsDecimal(2,1)Null学分课程信息表的SQL语句:createtableCourse(Cnovarchar(15)primarykey,Cnamevarchar(20)notnull,Ctimeintnotnull,Creditsdecimal(2,1)null)学生成绩表字段名类型NULL备注SnoVarchar(20)Notnull学生学号CnoVarchar(15)Notnull课程编号ScoreDecimal(3,1)null成绩学生成绩表的SQL语句:createtableSC(Snovarchar(20)foreignkey(Sno)referencesStudent(Sno),Cnovarchar(15)foreignkey(Cno)referencesCourse(Cno),Scoredecimal(3,1)check(Score=0andScore=100)null,primarykey(Sno,Cno))6用户信息表字段名类型NULL备注UnoVarchar(20)Notnull用户账号UpasswordVarchar(15)Notnull用户密码UCreatedateSmalldatetimedefaultgetdate(),创建日期用户信息表的SQL语句:createtableUser_Info(Unovarchar(20)foreignkey(Uno)referencesStudent(Sno),Upasswordvarchar(15)notnull,UCreatedatesmalldatetimedefaultgetdate())关系模型:(1)学生:学号,姓名,性别,地址,年龄,专业班级,联系方式。(学号为主码)(2)课程:课程编号,课程名,学时,学分。(课程编号为主码)(3)成绩:学号,课程编号,成绩。(学号+课程编号作为主码,学号、课程编号均为外键)(4)用户:用户名,密码,创建日期。(其中用户名作主键同时引用学生表的学号作为外键)其中:学生表的姓名,性别,年龄字段不为空,且年龄应大于0;课程表的课程名,学时不为空;成绩表的成绩字段大于0小于100。五、实现和测试:1)数据库中各个表的实现:2)数据库连接和参数传递类得实现://数据库连接类详细代码..从外界传入SQL语句,执行并返回相应的结果//dbConn.java类packagecn.class0803.studentmanager;importjava.sql.*;7importjavax.swing.JOptionPane;publicclassdbConn{publicdbConn(){try{jbInit();}catch(Exceptionex){ex.printStackTrace();}}publicStatementconn(){Connectionconn=null;try{Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);Stringurl=jdbc:odbc:学生管理;StringUsername=;StringPassword=;conn=DriverManager.getConnection(url,Username,Password);Statementstat=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);returnstat;}catch(Exceptionex){JOptionPane.showMessageDialog(null,数据库连接失败!);ex.printStackTrace();this.close(conn);}returnnull;}publicvoidclose(Connectionconn){//关闭连接try{if(conn!=null)conn.close();}catch(SQLExceptionex){System.out.println(关闭Connection失败!);ex.printStackTrace();}}/***取得数据库里某个表的总记录数。*@paramsql*@return*/publicintgetRowNum(StringtableName){8intnum=0;Statementstat=this.conn();Stringsql=selectcount(*)from+tableName+;try{ResultSetrs=stat.executeQuery(sql);rs.next();num=rs.getInt(1);}catch(SQLExceptione){e.printStackTrace();}returnnum;}publicResultSetgetRs(Stringsql){try{Statementstat=conn();ResultSetrs=stat.executeQuery(sql);returnrs;}catch(SQLExceptionex){System.err.println(------------+ex.getMessage());returnnull;}}publicintgetUpdate(Stringsql){try{Statementstat=conn();inti=stat.executeUpdate(sql);returni;}catch(Exceptionex){System.out.println(+ex.getMessage());return-1;}}privatevoidjbInit()throwsException{}}/**参数传递类:Tranfparam*采用单例模式来传递用户id等参数。*@authorAdministrator*/packagecn.class0803.studentmanager;publicclassTranfparam{privatestaticTranfparaminstance=newTranfparam();9privateTranfparam(){}publicstaticTranfparamgetInstance(){returninstance;}privatestaticStringstr;privatestaticStringqueryFrameID;publicstaticStringgetStr(){returnstr;}publicstaticvoidsetStr(Stringstr){Tranfparam.str=str;}publicstaticStringgetQueryFrameID(){returnqueryFrameID;}publicstaticvoidsetQueryFrameID(StringqueryFrameID){Tranfparam.queryFrameID=queryFrameID;}}3)登陆界面