#学生选课和管理系统使用vb和SQL Server.docx
- 文档编号:24640135
- 上传时间:2023-05-29
- 格式:DOCX
- 页数:43
- 大小:401.69KB
#学生选课和管理系统使用vb和SQL Server.docx
《#学生选课和管理系统使用vb和SQL Server.docx》由会员分享,可在线阅读,更多相关《#学生选课和管理系统使用vb和SQL Server.docx(43页珍藏版)》请在冰豆网上搜索。
#学生选课和管理系统使用vb和SQLServer
实验七:
数据库使用系统开发(综合性实验)
一、指导思想
培养学生利用所学的数据库原理及使用的知识,选择某一编程工具,进行数据库使用系统的开发;培养学生独立思考问题、解决问题的能力和学生计算机使用编程的能力。
二、实验目的及要求
要求学生选择一种开发工具(如VB,C#,Java,PB,Delphi,ASP等),利用前面设计的数据库,建立一个基于C/S或B/S结构的数据库管理系统,要求涉及:
数据维护(输入,修改,删除)、数据查询和统计、报表打印等。
三、涉及的内容或知识点
综合利用数据库原理及使用所有知识,所选择的开发工具的知识,专业知识中要解决的某个方面的问题的领域知识。
四、采用的教学方法和手段
根据所选设计项目,对项目进行需求分析和设计方法,形成一个问题的解决方案,学生分为2-3人一组,每组提出一个要解决的问题;先对问题进行分析,明确问题的目标和解决问题的思路,同样设计出问题的解决方案。
最后采用一种开发工具进行设计和实现来解决问题。
小组成员各自承担不同的设计任务。
最后的实验报告包括:
问题解决方案(系统分析和设计报告、数据库设计方案,功能设计,界面设计),设计的系统,系统运行报告等。
附录:
综合性实验报告要求:
一、系统分析和设计报告
二、数据库设计方案,功能设计,界面设计
三、设计的系统
四、系统测试运行报告
五、个人完成的程序模块和文档清单
六、个人遇到的困难和获得的主要成果
使用仪器、材料
WindowXP
VisualBasic2008
SQLServer2008
一系统分析和设计
1.1需求分析
选课管理系统的主要目的是利用软件实现选课的录入、查询、修改等功能,针对不同表的用户(学生、教师、管理员)提供不同的操作,使学生选课及对其的管理更加方便,提高工作效率,降低管理成本。
选课的管理一般包括选课查询和选课维护两部分,在实际的选课过程中,学生主要对课程进行选择,了解自己的选课情况,而教师除了能够对选择教师自己教授的课程的学生进行查询之外,还要对课程成绩进行录入,修改等操作。
对于整个系统而言,为了便于对各种数据进行维护,还要增设管理员,方便对学生和教师信息以及课程等基本信息的维护,从而达到灵活的管理选课的效果。
因此从安全角度考虑,有必要针对不同的用户对数据的访问和编辑进行控制。
学生、教师和管理员对选课信息的操作权限如表1-1所示。
表1-1
用户所在表
操作
查询
修改
删除
录入
学生
可以
不可以
不可以
不可以
教师
可以
可以
不可以
可以
管理员
可以
可以
可以
可以
而管理员还具有对整个系统其他信息,如课程信息,的全部操作权限。
功能需求分析具体如下。
1.1.1系统登陆
用户输入用户名和密码,系统查询数据库中的信息对用户名和密码进行验证。
如果用户名或密码不正确则不能进入系统。
如果用户名存在且密码正确,系统会自动根据该用户所在的表进入不同的界面且显示该用户相对应的基本信息。
1.1.2学生界面
a.基本信息
学生登陆成功,可看到自己的基本信息包括学号、姓名、性别、年龄、系别。
b.选课
可查看学生本人的选课情况,包括课程名、授课老师、课室、分数。
并可进一步进行选择和删除。
1.1.3教师界面
a.基本信息
教师登陆成功,可看到自己的基本信息包括教师号、姓名、性别、职称、系别。
还可看到自己教授的所有课程
b.查看学生信息
可查看选择自己教授的课程的学生名单,并可进一步对选择该门课程的学生成绩进行录入和修改。
1.1.4管理员界面
a.查询
可查询学生信息、教师信息以及其他的一些基本选课信息包括课程信息、选课信息、课室信息、教授课程和授课地点。
b.编辑
可对正在浏览的学生和教师信息进行编辑操作包括修改、删除,并可进行学生或教师基本信息的录入。
当未进行浏览时,仅可录入信息而不能进行修改和删除。
c.报表
可显示所有学生的选课信息包括课程名、教师和授课老师。
并可进一步打印或导出。
除此之外,每个用户均可重新设置自己的密码(需要旧密码验证)。
1.2模块设计
1.2.1系统架构
系统的模块划分如图1-1所示,将系统分为4个大模块,每个模块负责的功能和用户所在的表有关。
其中用户登陆模块根据用户所在的表显示不同的界面和提供不同的操作。
本系统采用VB.NET的ADO.NET数据库访问技术实现对数据库的访问操作。
系统的最底层是数据库,本系统采用SQLServer2008作为
后台数据库。
图1-1模块划分图
1.2.2用户登录模块
用户登陆模块实现对用户合法性的检查,读取不同的用户表,根据用户所在的表展示不同的界面。
用户登陆界面的类为“frmLogin”。
1.2.3学生模块、教师模块和管理员模块
功能介绍详见功能需求具体分析1.1.2~1.1.4。
学生界面对应类“frmStudent”,选课功能对应类“dlgSChooseCourse”;
教师界面对应类“frmTeacher”,查看相应课程学生信息对应类“frmTStudentInfo”,录入、修改学生分数对应类“dlgTModifyGrade”;
管理员界面对应类“frmAdmin”,录入、修改学生信息对应类“dlgAModifyStudentInfo”,录入、修改教师信息对应类“dlgAModifyTeacherInfo”,查看和编辑其他选课信息对应类“dlgAOthers”,报表对应类“Report”。
所有用户修改密码统一使用类“dlgModifyPWC”。
此外,还定义了几个公共类方便操作。
“PublicVar”类存储全局变量;“CUser”类保存用户登录名和密码以及提供了修改密码的方法;CDBOperation”类的作用是提供统一的方法执行SQL语句,并对SQL语句进行判断是添加、删除、更新操作还是查询操作,若为前者,弹出对应信息框通知用户。
二数据库分析和设计
2.1概念设计
在以上的系统分析基础上,设计出系统的E-R图,如图2-1所示。
图2-1E-R图
主要包括4个实体,分别是学生、教师、课程、教室及三个关系,即选修、讲授和授课地。
一门课程可由多个老师教授,一个老师也可以教授多门课程,课程实体和教师实体是多对多关系。
一门课程可由多个学生选择,一个学生也可以选择多门课程,课程实体和学生实体是多对多关系。
一门课程可安排在多个教室上,一个教室也可以作为多门课程的授课地点,课程实体和教室之间是多对多关系。
2.2逻辑设计
在根据以上实体和实体的关系,形成表和表之间的逻辑关系,如图2-2所示。
图2-2逻辑关系图
表的具体项如下所示(为方便编程,英语部分为实际表名,中文部分为解释,除了课程表项的类别),
学生Student(学号Sno、姓名Sname、性别Ssex、年龄Sage、系别Sdept)
教师Teacher(教师号Tno,姓名Tname,性别Tsex,职称Ttitle,系别Tdept)
课程Course(课程号Cno、课程名Cname,学分Credit,类别)
教室Classroom(教室号CRno,多媒体CRmultiMedia,座位CRseat)
讲授TC(教师号Tno,课程号Cno)
选修SC(学号Sno,课程号Cno,成绩Grade)
授课地Venue(课程号Cno,教室号CRno)
2.3数据库的实现
各个表内列的名称、含义、是否主键等基本信息可从2.2获知,这里不再赘述。
在数据库中创建各个表的SQL语句见附录一。
三系统实现
新建一个VB项目,使用默认配置,保存为“DBExperiment7”。
关于项目中各个类的代码部分详见附录二。
代码部分带有注释,就不重复解释了。
3.1设置全局变量和自定义用户类以及操作类
添加一个模块,用于保存全局变量。
单击“项目”->“添加模块”,并命名为“PublicVar”。
代码部分详见附录二。
添加一个类,操作同上,保存为“CUser”。
之所以使用CUser类,是为了能保存用户的登陆信息,和在修改密码时能传递信息,而不需要重新执行SQL语句进行查询。
再添加一个类,保存为“CDBOperation”。
其功能为执行SQL语句,并对SQL语句进行判断是添加、删除、更新操作还是查询操作,若为前者,弹出对应信息框通知用户。
3.2登陆窗口
添加Windows窗体,保存为“frmLogin.vb”,使用工具箱(视图->工具箱),添加各控件后登陆窗口如图3-1所示。
图3-1
3.3学生界面
如果是用户是学生,则登陆后界面如图3-2所示。
对应的项目文件为“frmStudent.vb”。
图3-2
学生信息界面可看到基本信息(除了密码项)。
单击“选课”按钮,弹出选课对话框,如图3-3所示,对应项目文件为“dlgSChooseCourse.vb”
图3-3
代码中主要使用SQL语句执行并进行数据填充,如其中自定义的填充数据集方法FillDataGrid。
还使用了其他几个SQL语句进行查询,至于具体的代码详见目录,这里只给出执行的SQL语句。
查找对应课程名的课程号
SQLString="selectCnofromCoursewhereCname='"_
&cboChooseCourse.Text&"'"
查找对应学号和课程号的记录
SQLString=_
"select*fromSCwhereSno='"&User.UserID&"'"_
&"andCno='"&Cno&"'"
插入选课记录
SQLString="insertintoSC(Cno,Sno)values('"&Cno&"','"&User.UserID&"')"
删除选课记录
SQLString="deleteSCwhereCno='"&Cno&"'andSno='"&User.UserID&"'"
单击“修改密码”按钮进入修改密码对话框,如图3-4所示,对应项目文件为“dlgModifyPW.vb”。
注:
所有用户修改密码都是使用该窗口界面,可节省空间。
图3-4
主要判断“旧密码”和“新密码”是否一致,通过CUser类保存的密码进行对比,而不是使用SQL语句重新查询。
之后调用CUser类中的修改密码方法进行密码更新。
3.4教师界面
教师用户登陆后的界面如图3-5所示,所对应的项目文件为“frmTeacher.vb”。
图3-5
基本代码和学生界面的代码类似,主要不同的地方有:
增加了一个表格,需要对表格进行填充,并且对双击表格单元格内容时编程使其可以查看选修该门课程的学生信息。
双击表格单元格内容需要使用表格的CellContentDoubleClick过程,具体代码如下:
注:
下面的第一二行代码应该在同一行,由于排版问题分开了。
PrivateSubgrdTC_CellContentDoubleClick(ByValsenderAsObject,ByValeAsSystem.Windows.Forms.DataGridViewCellEventArgs)HandlesgrdTC.CellContentDoubleClick
'判断有没超过范围并获取当前活动单元的值
IfgrdTC.CurrentCell.RowIndex 'storeCnameforpassingittofrmTStudengInfo Cname=grdTC.Item(0,grdTC.CurrentRow.Index).Value frmTStudentInfo.ShowDialog() EndIf EndSub 双击单元格内容查看选修该门课程的学生信息,界面如图3-6所示,对应的项目文件为“frmTStudentInfo.vb” 图3-6 可看到选修该门课程的学生信息(学号、姓名、系别、分数,列名还没修改) 双击学生基本信息表格的单元格内容可修改该行记录的学生的分数,界面如图3-7所示,对应的项目文件为“dlgTModifyGrade.vb”。 图3-7 仅可以修改分数项。 提交修改即可修改分数。 3.5管理员界面 管理员用户登陆后的界面如图3-8所示,对应项目文件为“frmAdmin.vb”。 图3-8 由于管理员的功能比较多,所以代码也相对较多和复杂,主要代码部分都有注释详加解释,故不再此赘述。 菜单栏各下拉项如图3-9所示。 图3-9 查询菜单仅可以查询,表格属性为只读。 需要修改或者删除,需要在编辑项中选中修改或删除才可以进行编辑。 当没有选中查询菜单中的项时,编辑菜单中的修改和删除是灰白的,不能被选择。 查询后选择修改,则可以在表格中双击需要修改的记录,弹出修改对话框。 例: 单击查询->学生信息,然后选择编辑->修改,弹出“修改学生信息对话框”,如图3-10所示。 图3-10 修改时,不能修改学号项。 单击查询->教师信息,然后选择编辑->修改,则弹出“修改教师信息对话框”。 查询后选择删除,则可以在表格中双击需要修改的记录,进行删除,并且自动退出修改状态。 例: 单击查询->学生信息,然后选择编辑->删除,如图3-11所示: 图3-11 选择“编辑->录入->学生信息”,弹出“录入学生信息对话框”,如图3-12所示。 图3-12 选择“编辑->录入->教师信息”,则弹出“录入教师信息对话框”。 为了节省空间,查看课程信息等其他信息时,只给出了表格,并可以直接在表格上编辑,如图3-13所示。 图3-13 报表显示的是学生的选课信息(课程名称、课室、授课老师姓名)如图3-14所示,使用水晶报表制作,可导出为excel表格。 图3-14 录入、修改学生信息对应项目文件“dlgAModifyStudentInfo.vb”,录入、修改教师信息对应项目文件“dlgAModifyTeacherInfo.vb”,查看和编辑其他选课信息对应项目文件“dlgAOthers.vb”,报表对应项目文件“Report.vb”。 四系统测试运行 大部分正常运行的界面在第三部分的系统实现部分已经展示在此仅展示部分错误输入的情况。 1用户名输入错误时给出的提示。 2学生选课时添加已经选择的课程时给出的提示。 3修改密码时输入的旧密码不正确时给出的提示。 4录入学生信息时学号为空给出的提示。 由于时间匆忙,可能存在部分未被测试到的安全性隐患。 五程序模块和文档清单 主要程序代码段 ***********************PublicVar.vb*********************** '设置全局变量 'ImportDataandSqlClientnamespaces... ImportsSystem.Data ImportsSystem.Data.SqlClient ModulePublicVar PublicobjConnectionAsNewSqlConnection PublicobjDataAdapterAsNewSqlDataAdapter() PublicSQLStringAsString'保存SQL语句 PublicstrInfoAsString'保存消息窗口标题 PublicUserAsCUser'保存登陆用户账号、密码信息 '调用main过程,以适应不同的测试界面 Submain() '初始化 objDataAdapter.SelectCommand=NewSqlCommand() strInfo="信息框" EndSub PublicSubobjOpen() 'Opentheconnection,ifalreadyopenthenskipover IfobjConnection.State<>ConnectionState.OpenThen objConnection.Open() EndIf EndSub PublicSubobjClose() 'Closetheconnection,ifalreadyclosethenskipover IfobjConnection.State<>ConnectionState.ClosedThen objConnection.Close() EndIf EndSub EndModule ***********************CUser.vb*********************** '保存用户的登陆信息,和在修改密码时能传递信息,而不需要重新执行SQL语句进行查询。 PublicClassCUser Privatem_UserIDAsString'保存用户名 Privatem_PasswordAsString'保存密码 Privatem_UserTypeAsInteger'0表示管理员,1表示学生,2表示老师 PropertyUserID()AsString Get Returnm_UserID EndGet Set(ByValvalueAsString) m_UserID=value EndSet EndProperty PropertyPassword()AsString Get Returnm_Password EndGet Set(ByValvalueAsString) m_Password=value EndSet EndProperty PropertyUserType()AsString Get Returnm_UserType EndGet Set(ByValvalueAsString) m_UserType=value EndSet EndProperty SubNew(ByValIDAsString,ByValPWAsString) '传递账号信息 m_UserID=ID m_Password=PW EndSub FunctionPasswordModify(ByValNewPasswordAsString,ByValUserTypeAsString)AsBoolean DimstrTypeAsString'对应不同的登陆用户查询的表名 DimstrCharAsChar'对应不同的登陆用户的账号和密码查询的首字母 strType="" '0表示管理员,1表示学生,2表示老师 IfUserType=0Then strType="Admin" strChar="A" ElseIfUserType=1Then strType="Student" strChar="S" ElseIfUserType=2Then strType="Teacher" strChar="T" EndIf 'DimSQLStringAsString SQLString=_ "update"&strType&"set"&strChar&"password='"_ &NewPassword&"'where"&strChar&"no='"_ &User.m_UserID&"'" '使用自定义类执行SQL语句 CDBOperation.DBoperate(SQLString) 'Refreshpassword m_Password=NewPassword EndFunction EndClass ***********************CDBOperation.vb*********************** PublicClassCDBOperation SharedFunctionDBoperate(ByValSQLStringAsString) '执行SQL语句,并对SQL语句进行判断是添加、删除、更新操作还是查询操作, '若为前者,弹出对应信息框通知用户。 Try objDataAdapter.SelectCommand.CommandText=SQLString objDataAdapter.SelectCommand.CommandType=CommandType.Text DimsTokens()AsString'declareanArray 'Splitstringby"" sTokens=SQLString.Split("") 'Opentheconnection objOpen() '将添加、删除、更新操作中使用的SQL语句的第一个单词和 '要执行的SQL语句的第一个单词进行比较,若为前者的操作,则执行SQL语句并给予用户对应的提示 '否则仅执行语句 IfStrings.InStr("INSERT,DELETE,UPDATE",sTokens(0).ToUpper)Then 'Executethecommand objDataAdapter.SelectCommand.ExecuteNonQuery() IfsTokens(0).ToUpper="INSERT"Then MsgBox("插入成功",MsgBoxStyle.Information,strInfo) '不可直接return,因为还需要关闭数据库连接节省资源 EndIf IfsTokens(0).ToUpper="DELETE"Then MsgBox("删除成功",MsgBoxStyle.Information,strInfo) EndIf IfsTokens(0).ToUpper="UPDATE"Then MsgBox("更新成功",MsgBoxStyle.Information,strInfo) EndIf Else 'Executethecommand objDataAdapter.SelectCommand.ExecuteNonQuery() EndIf objClose() CatchexAsException MsgBox(ex.Message) EndTry ReturnNothing EndFunction EndClass ***********************frmLogin.vb**********
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- #学生选课和管理系统使用vb和SQL Server 学生 选课 管理 系统 使用 vb SQL
![提示](https://static.bdocx.com/images/bang_tan.gif)