计算机软件实践报告.docx
《计算机软件实践报告.docx》由会员分享,可在线阅读,更多相关《计算机软件实践报告.docx(18页珍藏版)》请在冰点文库上搜索。
计算机软件实践报告
计算机软件技术
实践报告
学院:
电自学院
班级:
姓名:
学号:
2011年1月
一、设计目的
学生成绩管理系统是学院重要的一部分,其内容对于学院管理者和学生至关重要,所以学生成绩管理系统应该为用户提供所需要的信息及其方便的管理作为主要目标。
现代成绩查询系统理论已经不拘泥于传统的理论基础,不强调对教学活动的绝对控制,放弃了繁琐的设计模式,开始注重教学设计的关系性灵活性,这些优点能够极大地提高学生成绩查询的效率,从而更加有利于学生的管理和提高学生的主动性。
二、设计题目
编辑学习成绩管理系统
三、系统需求分析
需求分析是设计数据库的起点,需求分析的结果是否准确地反映了用户的实际要求,将直接影响到后面各个阶段的设计,并影响到设计结果是否合理和使用。
所以,准确而无遗漏地弄清用户对系统的要求,是系统设计取得成功的重要前提。
1、功能需求:
(1)掌握每个学生每一门课的成绩信息,并记录在数据库中以便其他管理信息系统的使用。
(2)分权限的管理。
在成绩管理中,教师可以对任何一个学生的成绩进行查询和管理;但是对学生用户,它只能对自己的成绩进行查看,而且不能对其进行更改。
(3)教师类用户可以对成绩按照学生进行管理,可以对每一学生所选的课程成绩进行添加、删除和修改。
(4)教师类用户可以对成绩按照课程进行管理,可以对每一门课所修的学生进行添加、删除和修改。
(5)可以针对某一门课的学生列表及其成绩生成报表中。
(6)可以针对某一个学生所选课程及其对应的成绩生成报表。
2、组成模块:
(1)登录系统:
模块功能概述:
提供身份验证功能
界面描述:
本界面有一个登录框,输入正确的信息则成功登录进入到教师页或学生页进行相应的操作。
如果输入错误,则提示相应的错误信息。
(2)查阅成绩
模块功能概述:
登录成功进入主页时,可以查阅自己的成绩。
界面描述:
本界面是标准的对话框窗口,显示学生的考试成绩。
(3)修改授课考试成绩
模块功能概述:
当教师已经进入显示此课程的成绩信息的对话框窗口时,即可在窗口中修改每条记录,并直接存储到数据库相应的表中。
界面描述:
同样是显示某一课程的成绩信息的对话框窗口,在此窗口中修改记录。
四、系统功能模块
五、数据库概念结构设计
所谓概念结构设计即将需求分析得到的用户需求抽象为信息结构,它是整个数据库设计的关键。
概念结构的主要特点是:
能真实、充分地反映现实世界、包括事物与事物之间的联系,能满足用户对数据的处理要求;易于理解;易于更改;易于向关系、网状、层次等各种数据模型转换。
描述概念模型的有力工具是E-R模型。
该模型有两个明显优点:
一是接近人的思想,容易理解;二是与计算机无关,用户容易接受。
E-R图提供了表示实体型、属性和联系的方法。
实体型:
用矩形表示,矩形框内写明实体名。
属性:
用椭圆形表示,并用无向边将其与相应的实体连接起来。
联系:
用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(1:
1,1:
n,m:
n)。
在设计概念结构的时候,我们采用的策略是自底向上的方法,即首先定义各局部应用的概念结构,然后将它们集成起来,得到全局概念结构。
局部E-R模型:
这里最关键的步骤是确定实体和属性。
就是说,首先要决定在每一个应用中包含哪些实体,这些实体又包含哪些属性。
当各子系统的分E-R模型设计好以后,就要将各个应用的分E-R模型综合成系统总的概念模型,采用的是合并分E-R图的方法,但由于通常各个局部的E-R图是由不同的设计人员设计的,导致各个分E-R图之间必定会存在一些不一致的地方,称之为冲突,各分E-R图之间的冲突主要有三类:
属性冲突、命名冲突、结构冲突。
属性冲突:
包括属性值的类型、取值范围、取值单位的不同。
命名冲突:
包括实体名、联系名、属性名之间异名同义或同名异义等。
结构冲突:
例如同一对象在一个局部E-R图中作为实体,而在另一个局部E-R图中作为属性,同一实体在不同的E-R图中属性个数和类型不同等。
在绘制总E-R图时,要注意合理消除各分E-R图的冲突,这是合并分E-R图的主要工作与关键所在。
总的E-R图:
六、数据库的逻辑结构
在关系模型中,现实世界的实体以及实体间的各种联系均用关系来表示。
在用户看来,关系模型中数据的逻辑结构是一张二维表。
关系模型中常用的关系操作包括:
选择、投影、连接、除、并、交、差等查询操作,以及增、删、改等更新操作两大部分。
而查询的表达能力是其中最主要的部分。
根据E-R图,需要制作5张数据表来存放学生成绩信息,数据表如下:
1.成绩表的设计
成绩表(Score)
字段
字段说明
类型
宽度
备注
Id
学生学号
字符
10
主键1,对应于stuinfo表中的Id字段
Num
课程编号
字符
6
主键2,对应于course表中的Num字段
score
分数
短整型
1
2.学生表的设计
学生表(Student)
字段
字段说明
类型
宽度
备注
Id
学生学号
字符
10
主键1,对应于stuinfo表中的Id字段
Name
姓名
长字符
10
NOTNULL
Sex
性别
字符
2
NOTNULL
Age
年龄
数字
1
NOTNULL
Pro
专业名
长字符
20
NOTNULL
3.课程表和课程类型表
课程表(Course)
字段
字段说明
类型
宽度
备注
Num
课程编号
字符
6
主键2,对应于course表中的Num字段
Name
课程名
长字符
20
NOTNULL
Credit
学分
整型
4
NOTNULL
5.以上各表的关系
上述所涉及的各个表之间存在着紧密的联系。
根据这一情况,需要建立各个表相应字段之间的关系,如下图所示。
七、功能实现及运行结果
登录界面
系统主界面
学生管理信息系统
添加、修改学生信息界面
学生成绩查询界面
选课信息界面
学生个人成绩情况系统
八、系统核心代码的设计
前台程序与数据库的关联模块
PublicconnAsNewADODB.Connection
PublicrsAsNewADODB.Recordset
PublicSubopenconn()
OnErrorGoTochek
Setconn=NewADODB.Connection
conn.ConnectionString="provider=sqloledb.1;integratedsecurity=sspi;PersistSecurityInfo=False;InitialCatalog=学生管理系统;DataSource=127.0.0.1"
conn.Open
ExitSub
chek:
MsgBox"开操作失败!
",vbRetryCancel+vbExclamation,"错误提示"
EndSub
登陆
登陆按钮
PrivateSubcmdLogin_Click()
IftxtUser.Text=""Then
MsgBox("请输入用户名!
")
txtUser.SetFocus
Else
Callopenconn
sql="select*fromloginwhereusername='"&Trim(txtUser.Text)&"'andpassword='"&Trim(txtPwd.Text)&"'"
rs.Opensql,conn,adOpenDynamic,adLockOptimistic
Ifrs.EOFThen
MsgBox"用户不存在!
"
Else
UnloadMe
frmMain.Show
EndIf
EndIf
EndSub
退出按钮
PrivateSubcmdRegister_Click()
UnloadMe
EndSub
学生管理
查找按钮
PrivateSubcmdFind_Click()'查询功能
IfcboFind.Text="学号"Then
IftxtInput.Text=""Then
MsgBox("学号输入不能为空!
")
txtInput.SetFocus
Else
Dimsql1AsString
Setrs1=NewADODB.Recordset
sql1="select*fromstuInfowhereID='"&txtInput.Text&"'"
rs1.CursorLocation=adUseClient
rs1.Opensql1,conn,adOpenDynamic,adLockOptimistic,adCmdText
Ifrs.EOFThen
MsgBox("查不到相关信息")
txtInput.SetFocus
Else
SetDataGrid1.DataSource=rs1
DataGrid1.Refresh
EndIf
EndIf
Else
IftxtInput.Text=""Then
MsgBox("姓名输入不能为空!
")
txtInput.SetFocus
Else
Dimsql2AsString
Setrs2=NewADODB.Recordset
sql2="select*fromstuInfowherename='"&txtInput.Text&"'"
rs2.CursorLocation=adUseClient
rs2.Opensql2,conn,adOpenDynamic,adLockOptimistic,adCmdText
Ifrs.EOFThen
MsgBox("查不到相关信息")
txtInput.SetFocus
Else
SetDataGrid1.DataSource=rs2
DataGrid1.Refresh
EndIf
EndIf
EndIf
EndSub
成绩查询
确定按钮
PrivateSubCommand1_Click()
lblGrade.Caption=Trim(cboCourse.Text)+"课程成绩"
Dimsql1AsString
Setrs1=NewADODB.Recordset
sql1="selectscore.ID,score.Num,score.scorefromscore,coursewherename='"&cboCourse.Text&"'andscore.Num=course.Num"
'sql1="select*fromcourse"
rs1.CursorLocation=adUseClient
rs1.Opensql1,conn,adOpenDynamic,adLockOptimistic,adCmdText
SetDataGrid1.DataSource=rs1
EndSub
选课管理
提交按钮
PrivateSubcmdSubmit_Click()
IftxtID=""Then
MsgBox("请输入学号!
!
")
txtID.SetFocus
ElseIflstCourse.Text=""Then
MsgBox("请选择课程!
!
")
Else
Dimsql1AsString
Dimsql2,nameAsString
Setrs2=NewADODB.Recordset
Setrs1=NewADODB.Recordset
sql1="selectscore.ID,score.Numfromscore,coursewhereID='"&txtID.Text&"'andname='"&lstCourse.Text&"'andscore.Num=course.Num"
name=lstCourse.Text
sql2="selectNumfromcoursewherename='"&name&"'"
rs1.Opensql1,conn,adOpenDynamic,adLockOptimistic
rs2.Opensql2,conn,adOpenDynamic,adLockOptimistic
Ifrs1.EOFThen
rs1.AddNew
rs1("ID")=txtID.Text
rs1("Num")=rs2("Num")
rs1.Update
MsgBox("选课成功!
!
")
rs1.Close
Else
MsgBox("已选过该课!
!
")
EndIf
EndIf
EndSub
查询
确定按钮
PrivateSubcmdOK_Click()
IftxtID=""Then
MsgBox("学号不能为空!
!
")
txtID.SetFocus
Else
DimsqlAsString
Dimsum1,sum2AsSingle
DimnAsInteger
Setconn=NewADODB.Connection
Setrs=NewADODB.Recordset
Callopenconn
sql="selectcourse.name,score.score,course.creditfromscore,coursewherescore.ID='"&txtID.Text&"'andscore.Num=course.Num"
rs.CursorLocation=adUseClient
rs.Opensql,conn,adOpenDynamic,adLockOptimistic,adCmdText
SetDataGrid1.DataSource=rs
sum1=0
sum2=0
n=0
DoWhileNotrs.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=sum2
EndIf
EndSub
九、实践心得
通过这段时间的系统开发,我们从对SQLSever和VB6.0由初学者到开发系统,最后我们使用它可以完成一个系统的开发,在这个过程中确实得到了很大的锻炼,学到了很多的知识。
同时我也深深感到了自己的不足,在编程技巧方面还有很大的欠缺,许多东西不得不求助于网络。
所以我们以后还要继续学习,并决心以此次课程设计为开端,深入学习编程知识,在实践中应用所学知识。
一方面提高自己的编程水平,一方面提高自己的学习和工作效率。