数据库设计大作业.docx
- 文档编号:7430541
- 上传时间:2023-01-23
- 格式:DOCX
- 页数:19
- 大小:1.07MB
数据库设计大作业.docx
《数据库设计大作业.docx》由会员分享,可在线阅读,更多相关《数据库设计大作业.docx(19页珍藏版)》请在冰豆网上搜索。
数据库设计大作业
数据库设计大作业
----学生成绩管理系统
学院:
信息工程与自动化
班级:
通信111
学号:
姓名:
指导老师:
谢涛
1、设计目的
学生成绩管理系统主要目的即使利用软件实现成绩的录入、查询、修改等功能,使教师对学生成绩的管理更加容易,提高工作效率、降低管理成本。
2、技术平台
利用VisualC++6.0的MFC和MicrosoftAccess数据库,编写了一个可以管理学生成绩及相关的学生成绩管理系统
3、程序功能设计说明
系统功能如下:
1.程序运行,进入“系统登录”界面,输入用户名和密码,系统查询文件中相应信息进行验证,不正确不能进入系统,正确则根据权限进入不同界面。
2.系统管理功能:
(1)修改密码:
任何用户可以重新设置自己的密码。
(2)用户管理:
管理员才能操作,可以查看拥护状态,能添加,删除用户,修改用户权限。
3.学生信息管理:
a)学生管理:
对学生基本信息进行添加,修改和删除,学生的基本信息包括学号,姓名,性别,年龄,电话号码地址等,操作后信息存入数据库文件。
b)教师管理:
对教师基本信息进行添加,修改和删除,教师的基本信息包括教师编号,姓名,性别,年龄,职称等,操作后信息存入文件。
c)课程管理:
对课程基本信息进行添加修改和删除,课程基本信息包括课程编号,课程名称,学时,学分,及授课教师等,操作后信息存入数据库文件。
d)成绩管理:
输入课程名称,进行选修该课程同学成绩的输入,然后存入数据库文件以备查询。
4.信息查询:
a)成绩查询:
可以按学生查,查询该学生所有课程成绩,也可以按课程查,查询该课程学生的所有成绩,并进行统计。
b)课程查询:
可以查询某些教师所教授的所有课程情况,也可以查询某门课有哪些教师教授过。
5.退出系统。
程序模块图
通过ODBC访问ACCESS数据库
成绩查询
授课查询
信息查询
成绩管理
课程管理
教师管理
学生管理
基本信息管理
用户管理
修改密码
系统管理
用户登录
4、对象设计和算法设计描述
1.数据库设计
如图:
一门课程可以有多个学生的成绩,一个学生也可以有多门课程的成绩,课程实体与学生实体是多对多的关系。
一个教师可以教授多门课程,一门课程也可以由多个不同的教师教授,课程实体与教师实体也是多对多的关系。
2.MFC设计
分为登录窗口、系统主窗口、修改密码窗口、用户管理窗口、学生管理窗口、教师管理窗口、课程管理窗口、成绩管理窗口、成绩查询窗口、授课查询窗口和帮助关于窗口。
每个窗口都至少有一个类和它对应,如要调用数据库,则需增加一个有关数据库操作的类。
如用户管理窗口:
窗口类名为CuserDlg,并从CRecordSet继承过来了一个数据库的记录集类CuserSet.下面就以该窗口为例,描述一下建立窗口的方法。
首先插入对话框资源,并添加控件。
并为各个控件对应其成员变量。
然后用函数重用的方法添加RefreshList函数和ResetButton函数。
5、调用实例
首先注册数据库名为:
studentscore
管理员:
用户名spider密码ak47
教师:
用户名头脑tnk密码sss
学生:
用户名tttz密码aaa
管理员权限最高,所用功能都可使用。
教师只能成绩管理,修改自己的密码和查询信息。
学生权限最低,只能修改自己的密码和查询信息。
下面就以管理员的身份进入:
登陆框,输入用户名密码:
如密码错误,提示:
输入正确后进入系统:
进入修改界面:
添加界面:
删除界面:
用户名为tttz的用户就被删除了:
进入基本信息管理,学生管理界面:
添加修改及删除界面类似用户管理
教师管理界面:
课程管理界面:
成绩管理界面:
以上各窗口添加、修改、删除等按扭均类似于用户管理窗口,故不再一一介绍。
再进入信息查询功能。
首先是成绩查询,可按学生查询也可按课程查询:
接着是授课查询,可通过课程查询授课老师,也可通过老师查询其所教课程:
最后是帮助关于窗口:
至此,学生成绩管理窗口的功能调试用例就介绍完了。
六、心得体会
回顾该系统从选题,到需求分析、设计、编码实现、测试等,论文的撰写,这系列连贯的过程,感想颇多,收获也很多。
大致的总结几点,如下:
1.在开发一个系统时,前期的分析准备工作非常的重要。
对于系统的需求要明确,这样才能做到有的放矢。
特别是对于系统中数据的存储和重要算法的设计,设计的不好会出现大量的冗余,不仅浪费存储空间,还影响查询效率。
2.在设计的初期,对一个功能模块的设计,要想出两种或两种以上方案,这样可以进行比较,从而获得更佳的设计方案,设计开发过程中一定要吸取经验教训,避免返工。
尤其是一些重要算法或功能。
在对具体实现功能模块进行编程时,要养成良好的加注释的习惯,这样的话不仅能理清思路,而且可以为以后的调试带来很大的方便。
3.懂得充分利用网络资源,因为实地调研的时间是非常有限的,所以需求分析中大部分分析结构都是在我阅读专业书籍,网络资料后得出的。
由于在外面工作以及其他原因,我无法借到专业书籍,只好在浩瀚的网络中寻找我所需要的资料,这无形当中培养了我通过网络获取资料信息的能力。
最后也谢谢老师这一学期下来的指导,学习、工作、生活方面都学到了很多道理,受益匪浅。
附录
voidCUserDlg:
:
RefreshList()
{
m_list.DeleteAllItems();//删除CList的所有内容
m_userSet.Open();
m_userSet.m_strFilter="active_status='Y'";
m_userSet.Requery();
//将记录集显示到CList中
for(inti=0;i CStringtemp; m_userSet.GetFieldValue("user_id",temp); m_list.InsertItem(i,temp); m_userSet.GetFieldValue("user_name",temp); m_list.SetItemText(i,1,temp); m_userSet.GetFieldValue("user_password",temp); m_list.SetItemText(i,2,temp); m_userSet.GetFieldValue("user_level",temp); m_list.SetItemText(i,3,temp); m_userSet.MoveNext(); } m_userSet.Close(); } voidCUserDlg: : ResetButton() { m_strUser.EnableWindow(false); m_strPassword.EnableWindow(false); m_cLevel.EnableWindow(false); m_bConfirm.EnableWindow(false); m_bAdd.EnableWindow(true); m_bDel.EnableWindow(true); m_bEdit.EnableWindow(true); } 然后初始化对话框OnInitDialog方法: BOOLCUserDlg: : OnInitDialog() { CDialog: : OnInitDialog();//初始化CList控件和header LONGstyles; styles=GetWindowLong(m_list.m_hWnd,GWL_STYLE); SetWindowLong(m_list.m_hWnd,GWL_STYLE,styles|LVS_REPORT); m_list.InsertColumn(0,"用户编号"); m_list.InsertColumn(1,"用户名"); m_list.InsertColumn(2,"密码"); m_list.InsertColumn(3,"用户权限"); //设置header宽度 RECTrectList; m_list.GetWindowRect(&rectList); intwid=rectList.right-rectList.left-4; for(inti=0;i<4;i++) m_list.SetColumnWidth(i,wid/4); m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT); RefreshList(); m_cLevel.AddString("管理员"); m_cLevel.AddString("教师"); m_cLevel.AddString("学生"); m_cLevel.SelectString(0,"管理员"); ResetButton(); returnTRUE; } 接着为各个控件添加响应的函数: voidCUserDlg: : OnClickListUser(NMHDR*pNMHDR,LRESULT*pResult) { //TODO: Addyourcontrolnotificationhandlercodehere introw=m_list.GetSelectionMark(); CStrings; s=m_list.GetItemText(row,1); m_strUser.SetWindowText(s); s=m_list.GetItemText(row,2); m_strPassword.SetWindowText(s); s=m_list.GetItemText(row,3); if(s=="0")m_cLevel.SelectString(0,"管理员"); elseif(s=="1")m_cLevel.SelectString(1,"教师"); elseif(s=="2")m_cLevel.SelectString(0,"学生"); *pResult=0; } voidCUserDlg: : OnUserAdd() { //TODO: Addyourcontrolnotificationhandlercodehere m_strUser.EnableWindow(true); m_strUser.SetWindowText(""); m_strPassword.EnableWindow(true); m_strPassword.SetWindowText(""); m_cLevel.EnableWindow(true); m_cLevel.SelectString(0,"管理员"); m_userSet.Open(); m_userSet.AddNew(); m_bConfirm.EnableWindow(true); m_bAdd.EnableWindow(false); m_bEdit.EnableWindow(false); m_bDel.EnableWindow(false); } voidCUserDlg: : OnUserEdit() { //TODO: Addyourcontrolnotificationhandlercodehere introw=m_list.GetSelectionMark(); CStrings,strSQL; s=m_list.GetItemText(row,0); if(s=="") {MessageBox("请选择一行! "); } else { //定义查询条件 strSQL.Format("user_id=%s",s); m_userSet.Open(); m_userSet.m_strFilter=strSQL; m_userSet.Requery(); m_userSet.Edit(); m_bConfirm.EnableWindow(true); m_bAdd.EnableWindow(false); m_bEdit.EnableWindow(false); m_bDel.EnableWindow(false); m_strUser.EnableWindow(true); m_strPassword.EnableWindow(true); m_cLevel.EnableWindow(true); } } voidCUserDlg: : OnUserDel() { //TODO: Addyourcontrolnotificationhandlercodehere introw=m_list.GetSelectionMark(); CStrings,strSQL; s=m_list.GetItemText(row,0); if(s=="") {MessageBox("请选择一行! "); } else { if(MessageBox("确定要删除记录吗? ","删除查询",MB_OKCANCEL|MB_ICONQUESTION)==IDOK) { strSQL.Format("user_id=%s",s); m_userSet.Open(); m_userSet.m_strFilter=strSQL; m_userSet.Requery(); m_userSet.Edit(); //设置active_status="N" m_userSet.m_active_status="N"; m_userSet.Update(); m_userSet.Close(); RefreshList(); } } } voidCUserDlg: : OnUserOk() { //TODO: Addyourcontrolnotificationhandlercodehere CStringusername,password,level; m_strUser.GetWindowText(username); m_strPassword.GetWindowText(password); if(username=="") { MessageBox("请输入用户名"); } elseif(password=="") { MessageBox("请输入密码"); } else { //获取下拉列表中的值 inti=m_cLevel.GetCurSel(); if(i==0) level="0"; if(i==1) level="1"; if(i==2) level="2"; m_userSet.m_user_name=username; m_userSet.m_user_password=password; m_userSet.m_user_level=level; m_userSet.m_active_status="Y"; m_userSet.Update(); m_userSet.Close(); RefreshList(); ResetButton(); } } voidCUserDlg: : OnCancel() { //TODO: Addextracleanuphere if(m_userSet.IsOpen()) m_userSet.Close(); ResetButton(); CDialog: : OnCancel(); } 再在头文件中添加相关操作的函数关于用户管理的窗口就基本完成里。 其他窗口方法类似。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 设计 作业
![提示](https://static.bdocx.com/images/bang_tan.gif)