1、数据库设计大作业数据库设计大作业-学生成绩管理系统学院:信息工程与自动化班级:通信111学号:姓名:指导老师:谢涛1、设计目的学生成绩管理系统主要目的即使利用软件实现成绩的录入、查询、修改等功能,使教师对学生成绩的管理更加容易,提高工作效率、降低管理成本。2、技术平台 利用Visual C+6.0的MFC和Microsoft Access数据库,编写了一个可以管理学生成绩及相关的学生成绩管理系统3、程序功能设计说明系统功能如下:1 程序运行,进入“系统登录”界面,输入用户名和密码,系统查询文件中相应信息进行验证,不正确不能进入系统,正确则根据权限进入不同界面。2 系统管理功能:(1) 修改密码
2、:任何用户可以重新设置自己的密码。(2) 用户管理:管理员才能操作,可以查看拥护状态,能添加,删除用户,修改用户权限。3 学生信息管理:a) 学生管理:对学生基本信息进行添加,修改和删除,学生的基本信息包括学号,姓名,性别,年龄,电话号码地址等,操作后信息存入数据库文件。b) 教师管理:对教师基本信息进行添加,修改和删除,教师的基本信息包括教师编号,姓名,性别,年龄,职称等,操作后信息存入文件。c) 课程管理:对课程基本信息进行添加修改和删除,课程基本信息包括课程编号,课程名称,学时,学分,及授课教师等,操作后信息存入数据库文件。d) 成绩管理:输入课程名称,进行选修该课程同学成绩的输入,然后
3、存入数据库文件以备查询。4 信息查询:a) 成绩查询:可以按学生查,查询该学生所有课程成绩,也可以按课程查,查询该课程学生的所有成绩,并进行统计。b) 课程查询:可以查询某些教师所教授的所有课程情况,也可以查询某门课有哪些教师教授过。5 退出系统。程序模块图通过ODBC访问 ACCESS数据库成绩查询授课查询信息查询成绩管理课程管理教师管理学生管理基 本 信 息 管 理用户管理修改密码系统管理用 户 登 录4、对象设计和算法设计描述1 数据库设计如图:一门课程可以有多个学生的成绩,一个学生也可以有多门课程的成绩,课程实体与学生实体是多对多的关系。一个教师可以教授多门课程,一门课程也可以由多个不
4、同的教师教授,课程实体与教师实体也是多对多的关系。2 MFC设计分为登录窗口、系统主窗口、修改密码窗口、用户管理窗口、学生管理窗口、教师管理窗口、课程管理窗口、成绩管理窗口、成绩查询窗口、授课查询窗口和帮助关于窗口。每个窗口都至少有一个类和它对应,如要调用数据库,则需增加一个有关数据库操作的类。如用户管理窗口:窗口类名为CuserDlg,并从CRecordSet继承过来了一个数据库的记录集类CuserSet. 下面就以该窗口为例,描述一下建立窗口的方法。首先插入对话框资源,并添加控件。并为各个控件对应其成员变量。然后用函数重用的方法添加RefreshList函数和ResetButton函数。5
5、、调用实例首先注册数据库名为:studentscore管理员:用户名spider密码ak47教师:用户名头脑tnk密码sss学生:用户名tttz密码aaa管理员权限最高,所用功能都可使用。教师只能成绩管理,修改自己的密码和查询信息。学生权限最低,只能修改自己的密码和查询信息。下面就以管理员的身份进入:登陆框,输入用户名密码:如密码错误,提示:输入正确后进入系统:进入修改界面:添加界面:删除界面:用户名为 tttz的用户就被删除了:进入基本信息管理,学生管理界面:添加修改及删除界面类似用户管理教师管理界面:课程管理界面:成绩管理界面:以上各窗口添加、修改、删除等按扭均类似于用户管理窗口,故不再一
6、一介绍。再进入信息查询功能。 首先是成绩查询,可按学生查询也可按课程查询:接着是授课查询,可通过课程查询授课老师,也可通过老师查询其所教课程: 最后是帮助关于窗口:至此,学生成绩管理窗口的功能调试用例就介绍完了。六、心得体会回顾该系统从选题,到需求分析、设计、编码实现、测试等,论文的撰写,这系列连贯的过程,感想颇多,收获也很多。大致的总结几点,如下:1. 在开发一个系统时,前期的分析准备工作非常的重要。对于系统的需求要明确,这样才能做到有的放矢。特别是对于系统中数据的存储和重要算法的设计,设计的不好会出现大量的冗余,不仅浪费存储空间,还影响查询效率。2.在设计的初期,对一个功能模块的设计,要想
7、出两种或两种以上方案,这样可以进行比较,从而获得更佳的设计方案,设计开发过程中一定要吸取经验教训,避免返工。尤其是一些重要算法或功能。在对具体实现功能模块进行编程时,要养成良好的加注释的习惯,这样的话不仅能理清思路,而且可以为以后的调试带来很大的方便。3. 懂得充分利用网络资源,因为实地调研的时间是非常有限的,所以需求分析中大部分分析结构都是在我阅读专业书籍,网络资料后得出的。由于在外面工作以及其他原因,我无法借到专业书籍,只好在浩瀚的网络中寻找我所需要的资料,这无形当中培养了我通过网络获取资料信息的能力。最后也谢谢老师这一学期下来的指导,学习、工作、生活方面都学到了很多道理,受益匪浅。附录v
8、oid CUserDlg:RefreshList()m_list.DeleteAllItems();/删除CList的所有内容m_userSet.Open();m_userSet.m_strFilter=active_status=Y;m_userSet.Requery();/将记录集显示到CList中for(int i=0;im_userSet.GetRecordCount();i+) CString temp; m_userSet.GetFieldValue(user_id,temp); m_list.InsertItem(i,temp); m_userSet.GetFieldValue(
9、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();void CUserDlg:ResetButton()m_strUser.EnableWindow(false);m_strPassw
10、ord.EnableWindow(false);m_cLevel.EnableWindow(false);m_bConfirm.EnableWindow(false);m_bAdd.EnableWindow(true);m_bDel.EnableWindow(true);m_bEdit.EnableWindow(true);然后初始化对话框OnInitDialog方法:BOOL CUserDlg:OnInitDialog() CDialog:OnInitDialog();/初始化CList控件和header LONG styles; styles=GetWindowLong(m_list.m_
11、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宽度 RECT rectList; m_list.GetWindowRect(&rectList); int wid=rectList.right-rectList.left-4; for(int i=
12、0;i4;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(); return TRUE;接着为各个控件添加响应的函数:void CUserDlg:OnClickListUser(NMHDR* pNMHDR, LRESULT
13、* pResult) / TODO: Add your control notification handler code here int row=m_list.GetSelectionMark(); CString s; 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,管理员); el
14、se if(s=1) m_cLevel.SelectString(1,教师); else if(s=2) m_cLevel.SelectString(0,学生); *pResult = 0;void CUserDlg:OnUserAdd() / TODO: Add your control notification handler code here m_strUser.EnableWindow(true); m_strUser.SetWindowText(); m_strPassword.EnableWindow(true); m_strPassword.SetWindowText(); m
15、_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);void CUserDlg:OnUserEdit() / TODO: Add your control notification handler code here int ro
16、w=m_list.GetSelectionMark(); CString s,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.E
17、nableWindow(false); m_bDel.EnableWindow(false); m_strUser.EnableWindow(true); m_strPassword.EnableWindow(true); m_cLevel.EnableWindow(true); void CUserDlg:OnUserDel() / TODO: Add your control notification handler code here int row=m_list.GetSelectionMark(); CString s,strSQL; s=m_list.GetItemText(row
18、,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
19、(); RefreshList(); void CUserDlg:OnUserOk() / TODO: Add your control notification handler code here CString username,password,level; m_strUser.GetWindowText(username); m_strPassword.GetWindowText(password); if(username=) MessageBox(请输入用户名); else if(password=) MessageBox(请输入密码); else /获取下拉列表中的值 int i
20、=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(); void CUserDlg:OnCancel() / TODO: Add extra cleanup here if(m_userSet.IsOpen() m_userSet.Close(); ResetButton(); CDialog:OnCancel();再在头文件中添加相关操作的函数关于用户管理的窗口就基本完成里。其他窗口方法类似。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1