1、计算机软件技术实践报告学院: 电自学院 班级: 姓名: 学号: 2011年1月一、 设计目的学生成绩管理系统是学院重要的一部分,其内容对于学院管理者和学生至关重要,所以学生成绩管理系统应该为用户提供所需要的信息及其方便的管理作为主要目标。现代成绩查询系统理论已经不拘泥于传统的理论基础,不强调对教学活动的绝对控制,放弃了繁琐的设计模式,开始注重教学设计的关系性灵活性,这些优点能够极大地提高学生成绩查询的效率,从而更加有利于学生的管理和提高学生的主动性。二、 设计题目编辑学习成绩管理系统三、 系统需求分析需求分析是设计数据库的起点,需求分析的结果是否准确地反映了用户的实际要求,将直接影响到后面各个
2、阶段的设计,并影响到设计结果是否合理和使用。所以,准确而无遗漏地弄清用户对系统的要求,是系统设计取得成功的重要前提。1、功能需求:(1)掌握每个学生每一门课的成绩信息,并记录在数据库中以便其他管理信息系统的使用。(2)分权限的管理。在成绩管理中,教师可以对任何一个学生的成绩进行查询和管理;但是对学生用户,它只能对自己的成绩进行查看,而且不能对其进行更改。(3)教师类用户可以对成绩按照学生进行管理,可以对每一学生所选的课程成绩进行添加、删除和修改。(4)教师类用户可以对成绩按照课程进行管理,可以对每一门课所修的学生进行添加、删除和修改。(5)可以针对某一门课的学生列表及其成绩生成报表中。(6)可
3、以针对某一个学生所选课程及其对应的成绩生成报表。2、组成模块:(1)登录系统:模块功能概述:提供身份验证功能界面描述:本界面有一个登录框,输入正确的信息则成功登录进入到教师页或学生页进行相应的操作。如果输入错误,则提示相应的错误信息。(2)查阅成绩模块功能概述:登录成功进入主页时,可以查阅自己的成绩。界面描述:本界面是标准的对话框窗口,显示学生的考试成绩。(3)修改授课考试成绩模块功能概述:当教师已经进入显示此课程的成绩信息的对话框窗口时,即可在窗口中修改每条记录,并直接存储到数据库相应的表中。界面描述:同样是显示某一课程的成绩信息的对话框窗口,在此窗口中修改记录。四、系统功能模块五、数据库概
4、念结构设计所谓概念结构设计即将需求分析得到的用户需求抽象为信息结构,它是整个数据库设计的关键。概念结构的主要特点是:能真实、充分地反映现实世界、包括事物与事物之间的联系,能满足用户对数据的处理要求;易于理解;易于更改;易于向关系、网状、层次等各种数据模型转换。描述概念模型的有力工具是E-R模型。该模型有两个明显优点:一是接近人的思想,容易理解;二是与计算机无关,用户容易接受。E-R图提供了表示实体型、属性和联系的方法。实体型:用矩形表示,矩形框内写明实体名。属性:用椭圆形表示,并用无向边将其与相应的实体连接起来。联系:用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向
5、边旁标上联系的类型(1:1,1:n,m:n)。在设计概念结构的时候,我们采用的策略是自底向上的方法,即首先定义各局部应用的概念结构,然后将它们集成起来,得到全局概念结构。局部E-R模型:这里最关键的步骤是确定实体和属性。就是说,首先要决定在每一个应用中包含哪些实体,这些实体又包含哪些属性。当各子系统的分E-R模型设计好以后,就要将各个应用的分E-R模型综合成系统总的概念模型,采用的是合并分E-R图的方法,但由于通常各个局部的E-R图是由不同的设计人员设计的,导致各个分E-R图之间必定会存在一些不一致的地方,称之为冲突,各分E-R图之间的冲突主要有三类:属性冲突、命名冲突、结构冲突。属性冲突:包
6、括属性值的类型、取值范围、取值单位的不同。命名冲突:包括实体名、联系名、属性名之间异名同义或同名异义等。结构冲突:例如同一对象在一个局部E-R图中作为实体,而在另一个局部E-R图中作为属性,同一实体在不同的E-R图中属性个数和类型不同等。在绘制总E-R图时,要注意合理消除各分E-R图的冲突,这是合并分E-R图的主要工作与关键所在。总的E-R图:六、数据库的逻辑结构在关系模型中,现实世界的实体以及实体间的各种联系均用关系来表示。在用户看来,关系模型中数据的逻辑结构是一张二维表。关系模型中常用的关系操作包括:选择、投影、连接、除、并、交、差等查询操作,以及增、删、改等更新操作两大部分。而查询的表达
7、能力是其中最主要的部分。根据E-R图,需要制作5张数据表来存放学生成绩信息,数据表如下:1. 成绩表的设计成绩表(Score)字段字段说明类型宽度备注Id学生学号字符10主键1,对应于stuinfo表中的Id字段Num课程编号字符6主键2,对应于course表中的Num字段score分数短整型12. 学生表的设计学生表(Student)字段字段说明类型宽度备注Id学生学号字符10主键1,对应于stuinfo表中的Id字段Name姓名长字符10NOT NULLSex性别字符2NOT NULLAge年龄数字1NOT NULLPro专业名长字符20NOT NULL3. 课程表和课程类型表课程表(Co
8、urse)字段字段说明类型宽度备注Num课程编号字符6主键2,对应于course表中的Num字段Name课程名长字符20NOT NULLCredit学分整型4NOT NULL5. 以上各表的关系上述所涉及的各个表之间存在着紧密的联系。根据这一情况,需要建立各个表相应字段之间的关系,如下图所示。七、功能实现及运行结果登录界面系统主界面学生管理信息系统添加、修改学生信息界面学生成绩查询界面选课信息界面学生个人成绩情况系统八、系统核心代码的设计前台程序与数据库的关联模块Public conn As New ADODB.ConnectionPublic rs As New ADODB.Recordse
9、tPublic Sub openconn()On Error GoTo chekSet conn = New ADODB.Connectionconn.ConnectionString = provider=sqloledb.1;integrated security=sspi;Persist Security Info=False;Initial Catalog=学生管理系统;Data Source=127.0.0.1conn.OpenExit Subchek:MsgBox 开操作失败!, vbRetryCancel + vbExclamation, 错误提示End Sub登陆登陆按钮Pri
10、vate Sub cmdLogin_Click()If txtUser.Text = Then MsgBox (请输入用户名!) txtUser.SetFocusElse Call openconn sql = select * from login where username= & Trim(txtUser.Text) & and password= & Trim(txtPwd.Text) & rs.Open sql, conn, adOpenDynamic, adLockOptimistic If rs.EOF Then MsgBox 用户不存在! Else Unload Me frmM
11、ain.Show End IfEnd IfEnd Sub退出按钮Private Sub cmdRegister_Click()Unload MeEnd Sub学生管理查找按钮Private Sub cmdFind_Click() 查询功能If cboFind.Text = 学号 Then If txtInput.Text = Then MsgBox (学号输入不能为空!) txtInput.SetFocus Else Dim sql1 As String Set rs1 = New ADODB.Recordset sql1 = select * from stuInfo where ID= &
12、 txtInput.Text & rs1.CursorLocation = adUseClient rs1.Open sql1, conn, adOpenDynamic, adLockOptimistic, adCmdText If rs.EOF Then MsgBox (查不到相关信息) txtInput.SetFocus Else Set DataGrid1.DataSource = rs1 DataGrid1.Refresh End If End IfElse If txtInput.Text = Then MsgBox (姓名输入不能为空!) txtInput.SetFocus Els
13、e Dim sql2 As String Set rs2 = New ADODB.Recordset sql2 = select * from stuInfo where name= & txtInput.Text & rs2.CursorLocation = adUseClient rs2.Open sql2, conn, adOpenDynamic, adLockOptimistic, adCmdText If rs.EOF Then MsgBox (查不到相关信息) txtInput.SetFocus Else Set DataGrid1.DataSource = rs2 DataGri
14、d1.Refresh End If End IfEnd IfEnd Sub成绩查询确定按钮Private Sub Command1_Click() lblGrade.Caption = Trim(cboCourse.Text) + 课程成绩 Dim sql1 As String Set rs1 = New ADODB.Recordset sql1 = select score.ID,score.Num,score.score from score, course where name= & cboCourse.Text & and score.Num=course.Num sql1 = sel
15、ect * from course rs1.CursorLocation = adUseClient rs1.Open sql1, conn, adOpenDynamic, adLockOptimistic, adCmdText Set DataGrid1.DataSource = rs1End Sub选课管理提交按钮Private Sub cmdSubmit_Click()If txtID = Then MsgBox (请输入学号!) txtID.SetFocusElseIf lstCourse.Text = Then MsgBox (请选择课程!)Else Dim sql1 As Stri
16、ng Dim sql2, name As String Set rs2 = New ADODB.Recordset Set rs1 = New ADODB.Recordset sql1 = select score.ID, score.Num from score , course where ID= & txtID.Text & and name= & lstCourse.Text & and score.Num=course.Num name = lstCourse.Text sql2 = select Num from course where name= & name & rs1.Op
17、en sql1, conn, adOpenDynamic, adLockOptimistic rs2.Open sql2, conn, adOpenDynamic, adLockOptimistic If rs1.EOF Then rs1.AddNew rs1(ID) = txtID.Text rs1(Num) = rs2(Num) rs1.Update MsgBox (选课成功!) rs1.Close Else MsgBox (已选过该课!) End IfEnd IfEnd Sub查询确定按钮Private Sub cmdOK_Click()If txtID = Then MsgBox (学
18、号不能为空!) txtID.SetFocusElse Dim sql As String Dim sum1, sum2 As Single Dim n As Integer Set conn = New ADODB.Connection Set rs = New ADODB.Recordset Call openconn sql = select course.name , score.score , course.credit from score , course where score.ID= & txtID.Text & and score.Num=course.Num rs.Curs
19、orLocation = adUseClient rs.Open sql, conn, adOpenDynamic, adLockOptimistic, adCmdText Set DataGrid1.DataSource = rs sum1 = 0 sum2 = 0 n = 0 Do While Not rs.EOF sum1 = sum1 + Val(rs(score) sum2 = sum2 + Val(rs(credit) n = n + 1 rs.MoveNext Loop lblAvg.Caption = Format(sum1 / n, 0.0) lblCredit.Caption = sum2End IfEnd Sub九、实践心得 通过这段时间的系统开发,我们从对SQL Sever和VB6.0由初学者到开发系统,最后我们使用它可以完成一个系统的开发,在这个过程中确实得到了很大的锻炼,学到了很多的知识。同时我也深深感到了自己的不足,在编程技巧方面还有很大的欠缺,许多东西不得不求助于网络。所以我们以后还要继续学习,并决心以此次课程设计为开端,深入学习编程知识,在实践中应用所学知识。一方面提高自己的编程水平,一方面提高自己的学习和工作效率。