课程设计报告.docx
《课程设计报告.docx》由会员分享,可在线阅读,更多相关《课程设计报告.docx(52页珍藏版)》请在冰豆网上搜索。
课程设计报告
第1章问题描述………………………………………………………………1
1.1学生管理系统简介…………………………………………………1
1.2数据需求……………………………………………………………1
1.3事务需求……………………………………………………………1
1.4系统开发平台………………………………………………………2
1.5网络拓扑结构………………………………………………………2
第2章解决方案………………………………………………………………3
2.1E-R模型设计………………………………………………………3
2.1.1实体列表……………………………………………………3
2.1.2系统的E-R模型……………………………………………3
2.2设计数据库…………………………………………………………4
2.2.1创建数据库…………………………………………………4
2.2.2创建数据表…………………………………………………4
2.3主窗体设计…………………………………………………………5
2.3.1添加控件……………………………………………………5
2.3.2设计登录界面………………………………………………5
2.3.3设计用户显示界面…………………………………………5
2.3.4设计管理员显示界面………………………………………5
第3章系统实现………………………………………………………………6
3.1系统流程图…………………………………………………………6
3.2程序调试情况………………………………………………………6
3.3功能显示……………………………………………………………7
第4章结束语…………………………………………………………………11
附录:
源代码清单……………………………………………………………12
学院:
信息科学与工程学院
班级:
自动化XXXX
学号:
XXXXXXXXXXX
姓名:
XXXXXXX
第一章问题描述
1.1学生管理系统简介
本系统利用VB处理数据库的功能,实现对学生信息的管理。
主要功能为管理有用户、课程、成绩和管理者的信息等。
本系统的结构分为用户信息管理模块、课程信息管理模块、成绩信息管理模块、管理者管理信息模块、查询处理模块。
1.2数据需求
根据系统的需求,首先将要记录的信息分类,要记录的信息如下。
(1)用户信息:
包括学号、姓名、密码、性别、出生日期、联系方式(联系电话、电子邮件、联系地址)等。
(2)课程信息:
包括学号、课程编号、课程名、学分、类别、任课教师等。
(3)成绩信息:
包括学号、课程编号、课程名、成绩、取得学分等。
(4)管理者信息:
包括管理者编号、姓名、密码、性别、出生日期、联系方式(联系电话、电子邮件、联系地址)等。
根据这些需要,本系统需要“用户信息”表,“课程信息”表,“成绩信息”表和“管理者信息”表。
1.3事务需求
经过实际考察、咨询和分析,学生管理系统主要应该具有以下功能模块,如1.1图。
(1)在用户信息管理部分,要求如下:
●可以浏览用户自身信息。
●可以修改自身登陆密码和用户基本信息(除学号外)。
●可以查询自身课程信息及成绩信息等
(2)在管理员信息管理部分,要求如下:
●可以浏览所有用户信息。
●可以浏览管理员自身信息。
●可以对所有用户信息进行维护,包括查询、修改、添加及删除等操作。
●可以修改自身登陆密码和管理员基本信息(除管理员编号外)。
●可以添加管理员。
●可以对所有用户的课程信息进行维护,包括查询、修改、添加及删除等操作。
●可以对所有用户的成绩信息进行维护,包括查询、修改、添加及删除等操作等。
图1.1系统业务逻辑关系
1.4系统开发平台
操作系统:
MicrosoftWindows2000/XP
开发工具:
MicrosoftVisualBasic6.0
数据库服务器:
MicrosoftSQL2000Server
1.5网络拓扑结构
本设计采用客户机/服务器(C/S)体系,数据的储存管理功能较为透明性,可以合理均衡事务的处理,充分保证数据的完整性和一致性。
图1.2C/S模式结构
第二章解决方案
数据库主要着重于数据对象的属性和数据对象之间的关系的分析。
一般采用E-R图,即实体-关系模型来分析数据对象的属性和数据对象之间的关系。
2.1E-R模型设计
2.1.1实体列表
实体
描述
用户
所有用户,由用户学号标识
课程
所有课程,由课程编号标识
成绩
用户学号、课程编号、课程名、成绩,由用户学号和课程编号标识
系统管理员
老师,由管理员编号标识
2.1.2系统的E-R模型
图2.1学生管理系统的E-R图
2.2设计数据库
2.2.1创建数据库
(1)打开MSSQL工具“查询分析器”
(2)在查询窗口中键入下列SQL语句
createdatabase学生管理系统数据库
执行上述SQL语句即可新建一名为“学生管理系统数据库”的数据库
2.2.2创建数据表
创建数据库后,为“学生管理系统数据库”添加数据表,步骤如下。
(1)新建查询窗口
(2)在查询窗口中键入下列SQL语句
createtableUsers(//创建用户信息表
Uidchar(10)primarykey,//学号
Unamechar(10)notnull,//姓名
Upwdchar(10),//登陆密码
Usexchar
(2)check(Usexin('男','女')),//性别
Uborndatetime,//出生日期
Utelchar(10),//联系电话
Uemailchar(10),//电子邮件
Uaddrchar(10),//联系地址
)
createtableManagers(//创建管理员信息表
Midchar(10)primarykey,//管理员编号
Mnamechar(10)notnull,//姓名
Mpwdchar(10),//登陆密码
Msexchar
(2)check(Msexin('男','女')),//性别
Mborndatetime,//出生日期
Mtelchar(10),//联系电话
Memailchar(10),//电子邮件
Maddrchar(10),//联系地址
)
createtableCouese(//创建课程信息表
Cidchar(10)primarykey,//课程编号
Cnamechar(10)notnull,//课程名
Ccreditchar(10),//学分
Ctypechar(10),//类别
Cteacherchar(10),//任课教师
Uidchar(10)primarykey,//学号)
createtableAchievement(//创建成绩信息表
Uidchar(10),//用户编号
Cidchar(10),//课程编号
Cnamechar(10),//课程名
Ccreditchar(10),//学分
Over_timesmallint,//类别
Amarkchar(10),//成绩
Agoalchar(10),//取得学分
foreignkey(Uid)referencesUsers(Uid),//外来键
foreignkey(Cid)referencesCourse(Cid)//外来键
)
(3)执行上述SQL语句即可创建相关表格
2.3主窗体设计
创建一个新的“标准EXE”类型的工程,在工程属性里设置工程名为“学生管理系统”。
2.3.1添加控件
在控件箱中右击空白处,选择“部件”,在弹出的对话框中勾选
MicrosoftADODataControl6.0(SP6)(OLEDB)//用于连接数据库
MicrosoftDataGridControl6.0(SP6)(OLEDB)//用于显示数据
MicrosoftTabbedDialogControl6.0(SP6)//用于多窗口显示
这3个控件,点击确定。
2.3.2设计登录界面
设计登录界面,添加一个新的“窗体”,名为FrmLogin,作为本系统的登录界面.在登录窗体上添加5个Label控件,2个CommandButton控件,1个ComboBox控件和3个TextBox控件。
2.3.3设计用户显示界面
在当前工程中添加一个“窗体”,将窗体命名为“FrmUser”。
在窗体上添加1个ADODC控件、1个CheckBox控件、1个ComboBox控件、6个CommandButton控件、1个DataGrid控件、9个Label控件、1个SSTab控件、3个PictureBox控件和8个TextBox控件。
各按钮控件是为了执行相应的操作。
各TextBox控件和CheckBox控件用来显示数据库中的数据,这个功能通过设置DataBindings属性来实现。
2.3.4设计管理员显示界面
在当前工程中添加一个“窗体”,将窗体命名为“FrmMger”。
在窗体上添加1个ComboBox控件、5个CommandButton控件、1个DataGrid控件、3个Label控件、1个SSTab控件和1个TextBox控件。
各按钮控件是为了执行相应的操作。
各TextBox控件和CheckBox控件用来显示数据库中的数据,这个功能通过设置DataBindings属性来实现。
第三章系统实现
3.1系统流程图
在本系统中准备通过如下窗体来实现数据维护的功能。
(1)登录窗体:
进行用户登录、连接子窗体。
(2)“用户”子窗体:
管理用户信息、显示课程信息及成绩信息
(3)“管理员”子窗体:
管理用户、课程信息及成绩信息。
系统流程图如图3.1所示:
图3.1系统流程图
3.2程序调试情况
在把系统从一台计算机移植到另一台计算机时一定要把数据文件学生管理系统数据库.mdf和学生管理系统数据库_log.ldf同时移植,并对相应的提供服务的SQLServer服务器进行相应的修改,否则数据不能正确连接并显示。
3.3功能显示
运行程序后首先显示登录界面,如图3.1所示。
图3.1登陆界面
在登录对话框中输入帐号和密码,选择“普通用户”,单击“登录”按钮,就会对用户身份进行认证,如果认证通过,那么就会弹出如图3.2、图3.3、
图3.4所示的用户窗体。
图3.2用户窗体(课程信息查询)
图3.3用户窗体(用户基本信息)
图3.4用户窗体(成绩信息查询)
点击注销即可返回登录窗体。
在登录对话框中输入管理员编号和密码,选择“管理员”,单击“登录”按钮,就会对管理员身份进行认证,如果认证通过,那么就会弹出如图3.5、图3.6、图3.7、图3.8所示的管理员窗体。
图3.5管理员窗体(课程信息)
图3.6管理员窗体(管理员基本信息)
图3.7管理员窗体(用户信息)
图3.8管理员窗体(成绩信息)
第四章结束语
通过做课程设计,有几点感想,归纳如下。
1.扎实的理论基础。
如果不掌握它们,很难写出高水平的程序。
而这一点又是我们所缺乏的。
2.不钻牛角尖。
当遇到障碍的时候,暂时远离电脑,当重新开始的时候,也许会发现那些难题现在竟然可以迎刃而解。
3.多与别人交流。
三人行必有我师。
4.良好的编程风格。
注意养成良好的习惯,代码的缩进编排,变量的命名规则要始终保持一致。
如果注释和代码不一致,那就更加糟糕。
5.数据库讲求的是整体,只有在整体的情况下完善局部,才能做出一个好的数据库。
但数据库的连接问题一直困扰着我。
某些机器无论如何加载数据库,都是无法和程序正常连接。
还有就是表的关系问题,一团糟,添加、修改、删除的时候有可能会受到表的一些限制,这是一个很大的缺陷!
这个问题在我完成了设计之后都无法解决。
希望老师能给些指点。
附录:
源代码清单
1.1通用模块程序
OptionExplicit
PublicconstrAsString'数据库连接信息
PublicrstAsADODB.Recordset'数据库内的记录
PublicconAsADODB.Connection
PublicSubconnect_db()
constr="Provider=SQLOLEDB.1;IntegratedSecurity=SSPI;PersistSecurityInfo=False;InitialCatalog=学生管理数据库;DataSource="'数据库引擎+路径
Setcon=NewADODB.Connection'新建一个数据库连接
con.CursorLocation=adUseClient'用于客户端(ADOR)Recordset对象,游标库属性必须为adUseClient
con.ConnectionString=constr'连接信息
con.Openconstr
EndSub
PublicSubsel_table(table_nameAsString,where_strAsString)
DimsqlAsString
Setrst=NewADODB.Recordset
sql="select*from"&table_name&""&where_str&""
rst.Opensql,con,adOpenDynamic,adLockOptimistic
rst.Requery
EndSub
PublicSubupd_table(table_nameAsString,set_strAsString,where_strAsString)
DimsqlAsString
sql="update"&table_name&"set"&set_str&"where"&where_str&""
con.BeginTrans
con.Executesql
con.CommitTrans
EndSub
PublicSubdel_table(table_nameAsString,whereAsString)
DimsqlAsString
sql="deletefrom"&table_name&""&where&""
con.Executesql
EndSub
PublicSubins_table(table_nameAsString,intoAsString,valuesAsString)
DimsqlAsString
sql="insertinto"&table_name&into&""&values&""
con.Executesql
EndSub
1.2登录窗体程序
PrivateSubCommand1_Click()
OnErrorGoToExecuteSQL_Error
IfText1.Text=""Then
MsgBox("用户名不能空")
ExitSub
EndIf
IfText2.Text<>Text3.TextOrText2.Text=""OrText3.Text=""Then
MsgBox("密码输入错误")
ExitSub
EndIf
Callconnect_db
IfCombo1.Text="普通用户"Then
Callsel_table("Users","whereUid='"&Text1.Text&"'andUpwd='"&Text2.Text&"'")
Ifrst.RecordCount>0Then
WithFrmUser
.SSTab.Tab=1
.Text1.Text=Text1.Text
.SSTab.Tab=1
.Picture1.Visible=False
.Picture2.Visible=True
.Picture3.Visible=True
EndWith
Callconnect_db
Callsel_table("Course","whereUid='"&Text1.Text&"'")
SetFrmUser.DataGrid1.DataSource=rst
WithFrmUser
.DataGrid1.Columns(0).Caption="学号"
.DataGrid1.Columns
(1).Caption="课程编号"
.DataGrid1.Columns
(2).Caption="课程名"
.DataGrid1.Columns(3).Caption="学分"
.DataGrid1.Columns(4).Caption="类别"
.DataGrid1.Columns(5).Caption="任课教师"
EndWith
UnloadMe
FrmUser.Show
UnloadFrmLogin
ExitSub
EndIf
Else
Callsel_table("Managers","whereMid='"&Text1.Text&"'andMpwd='"&Text2.Text&"'")
Ifrst.RecordCount>0Then
UnloadMe
FrmMger.SSTab1.Tab=2
Callconnect_db
Callsel_table("Course","")
SetFrmMger.DataGrid1.DataSource=rst
WithFrmMger
.DataGrid1.Columns(0).Caption="学号"
.DataGrid1.Columns
(1).Caption="课程编号"
.DataGrid1.Columns
(2).Caption="课程名"
.DataGrid1.Columns(3).Caption="学分"
.DataGrid1.Columns(4).Caption="类别"
.DataGrid1.Columns(5).Caption="任课教师"
EndWith
FrmMger.Show
UnloadFrmLogin
ExitSub
EndIf
EndIf
MsgBox("用户名或密码错误")
ExitSub
ExecuteSQL_Error:
MsgBox("数据库连接失败")
EndSub
PrivateSubCommand2_Click()
MsgBox("谢谢使用学生管理系统!
")
UnloadMe
EndSub
PrivateSubForm_Load()
WithCombo1
.Clear
.List(0)="普通用户"
.List
(1)="管理员"
.Text="普通用户"
EndWith
EndSub
1.3用户窗体程序
PrivateSubForm_Unload(CancelAsInteger)
FrmLogin.Show
EndSub
PrivateSubSSTab_Click(PreviousTabAsInteger)
SelectCaseSSTab.Tab
Case0:
Picture1.Visible=True
Picture2.Visible=False
Callconnect_db
Callsel_table("Users","whereUid='"&Text1.Text&"'")
Ifrst.RecordCount>0Then
Text2.Text=rst("Uname")
Text3.Text=rst("Usex")&""
Text4.Text=rst("Uborn")&""
Text5.Text=rst("Utel")&""
Text6.Text=rst("Uemail")&""
Text7.Text=rst("Uaddr")&""
EndIf
Case1:
Combo1.Clear
WithCombo1
.List(0)="课程编号"
.List
(1)="课程名"
.List
(2)="任课教师"
.Text="课程编号"
EndWith
Picture1.Visible=False
Picture2.Visible=True
Picture3.Visible=True
Callconnect_db
Callsel_table("Course","whereUid='"&Text1.Text&"'")
SetDataGrid1.DataSource=rst
WithDataGrid1
.Columns(0).Caption="学号"
.Columns
(1).Caption="课程编号"
.Columns
(2).Caption="课程名"
.Columns(3).Caption="学分"
.Columns(4).Caption="类别"
.Columns(5).Caption="任课教师"
EndWith
Case2:
WithCombo1
.Clear
.List(0)="课程编号"
.List
(1)="课程名"
.Text="课程编号"
EndWith
Picture1.Visible=False
Picture2.Visible=True
Picture3.Visible=True
Callconnect_db
Callsel_table("Achievement","whereUid='"&Text1.Text&"'")
SetDataGrid1.DataSource=rst
WithDataGrid1
.Columns(0).Caption="学号"
.Columns
(1).Caption="课程编号"
.