VC学生成绩管理系统实验报告.doc_第1页
VC学生成绩管理系统实验报告.doc_第2页
VC学生成绩管理系统实验报告.doc_第3页
VC学生成绩管理系统实验报告.doc_第4页
VC学生成绩管理系统实验报告.doc_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

西安科技大学数据库课程设计报告题目: 学生成绩管理系统 班级: 软件工程0901 学号: 0908010103 姓名: 朱婷 2011年6月目 录21 绪论21.1 选题目的及意义21.2 设计内容32 需求分析32.1 功能需求32.2 数据需求32.3 其他需求43数据库设计43.1概念结构设计43.2逻辑结构设计43.3物理结构设计54 系统功能设计75 系统实现75.1 开发环境75.2 关键技术85.3 主要功能的运行结果及代码86 总结33参考文献33摘 要 本系统是一个简单的学生成绩管理系统,可以完成学生成绩,教师,授课信息的录入,查询,修改以及维护等基本功能。本系统采用了可视化的集成开发环境Visual C+ 6.0编辑用户操作界面、以Microsoft Office Access为后台数据库并以CRecordSet类访问数据库信息的管理系统,该系统能够完成有关教师,学生,授课信息的录入,修改以及维护等等基本功能。关键字:Microsoft Office Access数据库、SQL语言、VC+、学生成绩管理系统目 录1 绪论1.1 选题目的及意义随着科学技术的发展,计算机领域不断取得新的研究成果。作为计算机应用的一部分,使用计算机对学生成绩进行管理,有着手工管理所不能比拟的优点,它能够方便用户迅速,准确的查询并处理学生成绩,提高工作效率,降低管理成本。本系统是一个简单的学生成绩管理系统,可以完成有关教师,学生,授课信息的录入,修改以及维护,查询等基本功能。同时,完成这个题目,能更好的训练数据库设计和VC编程能力。1.2 设计内容系统管理模块:修改密码,用户管理。基本信息管理模块:学生管理,教师管理,课程管理,授课管理,成绩管理。信息查询模块:成绩查询,授课查询。2 需求分析2.1 功能需求1.系统登录。用户输入用户名和密码,系统查询数据库中的信息对密码进行验证。2.系统管理.修改密码:对于任何用户,包括学生,教师和系统管理员都可以对自己的密码进行重新设置。用户管理:只针对管理员才能进行操作,管理员可以查看用户状态,当教师或学生忘记密码时能够找回其密码,并且能添加,删除用户,修改用户权限。3. 基本信息管理学生管理:能够对学生的一些基本信息进行添加,修改,删除等操作。教师管理:能够对教师的一些基本信息进行添加,修改,删除等操作。课程管理:能够对课程的一些基本信息进行添加,修改,删除等操作。授课管理:能够对教师授课的一些基本信息进行添加,修改,删除等操作。成绩管理:能够对成绩的情况进行管理,该部分是系统最主要的功能。4.信息查询成绩查询:可以按照学生或课程进行查询授课查询:可以查询每个教师授课的情况,也可以查询每门课的授课教师。2.2 数据需求用户信息表:用户编号,用户名,密码,用户权限,是否在用学生表:学生记录号,学生编号,学生姓名,性别,学生年龄,电话号码,地址,是否在用教师表:教师记录号,教师编号,教师姓名,性别,教师年龄,电话号码,地址,是否在用课程表:课程记录号,课程编号,课程名称,性别,学时,学分,是否在用授课表:授课记录号,课程编号,教师编号,是否在用成绩表:成绩记录号,学生编号,课程编号,成绩,是否在用2.3 其他需求从安全角度考虑,针对不同的用户对数据的访问与编辑进行控制。实现系统登录对话框等功能。3数据库设计3.1概念结构设计课程成绩学生课程名称课程编号学时授课授课编号分数学分学生标号学生姓名性别年龄地址电话教师职称教师姓名教师性别教师年龄教师编号3.2逻辑结构设计用户信息表(用户编号,用户名,密码,用户权限,是否在用);学生表(学生记录号,学生编号,学生姓名,性别,学生年龄,电话号码,地址,是否在用);教师表(教师记录号,教师编号,教师姓名,性别,教师年龄,电话号码,地址,是否在用);课程表(课程记录号,课程编号,课程名称,性别,学时,学分,是否在用);授课表(授课记录号,课程编号,教师编号,是否在用);成绩表(成绩记录号,学生编号,课程编号,成绩,是否在用);3.3物理结构设计 用户信息表(useinfo)序号字段名称字段描述类型位数属性1user_id用户编号自动编号 主键2user_name用户名文本50主索引,非空3user_password密码文本50非空4user_ level用户权限文本1非空5active_status是否在用文本2非空 student表序号字段名称字段描述类型位数属性1student_id学生记录号自动编号 主键2Student_no学生编号文本6主索引,非空3Student_name学生姓名文本10非空4Student_sex性别文本2非空5Student_age学生年龄文本2非空6Student_phone电话号码数字207Student_address地址文本1008active_status是否在用文本2非空 Teacher表序号字段名称字段描述类型位数属性1teacher_id教师记录号自动编号 主键2teacher t_no教师编号文本6主索引,非空3teacher _name教师姓名文本10非空4teacher _sex性别文本2非空5teacher _age教师年龄文本2非空6teacher_level教师职称文本6非空7teacher_status是否在用文本2非空 Course表序号字段名称字段描述类型位数属性1course_id教师记录号自动编号 主键2course_no教师编号文本6主索引,非空3course_name教师姓名文本10非空4Course_hour学时数字2非空5Course_credit学分数字2非空6active_status是否在用文本2非空 teach表序号字段名称字段描述类型位数属性1teacher_id授课记录号自动编号 主键2course_no课程编号文本6索引,非空,外键3teacher_no教师编号文本6索引,非空,外键4active_status是否在用文本2非空 Score表序号字段名称字段描述类型位数属性1Score_id授课记录号自动编号 主键2Student_no学生编号文本6主索引,非空3course_no课程编号文本6索引,非空,外键4score成绩数字3非空5active_status是否在用文本2非空4 系统功能设计用户登录模块系统管理模块基本信息管理模块信息查询模块修改密码用户管理学生管理教师管理课程管理授课管理成绩管理成绩查询授课查询 数据库访问接口ODBC 数据库5 系统实现5.1 开发环境软件:Microsoft Office Access,Visual C+6.0操作系统:windows75.2 关键技术采用MFC ODBC数据库访问技术5.3 主要功能的运行结果及代码1.登录窗口:启动登录窗口:BOOL CStudentScoreApp:InitInstance()AfxEnableControlContainer();/ Standard initialization/ If you are not using these features and wish to reduce the size/ of your final executable, you should remove from the following/ the specific initialization routines you do not need.#ifdef _AFXDLLEnable3dControls();/ Call this when using MFC in a shared DLL#elseEnable3dControlsStatic();/ Call this when linking to MFC statically#endif/ Change the registry key under which our settings are stored./ TODO: You should modify this string to be something appropriate/ such as the name of your company or organization.SetRegistryKey(_T(Local AppWizard-Generated Applications);LoadStdProfileSettings(); / Load standard INI file options (including MRU)/ Register the applications document templates. Document templates/ serve as the connection between documents, frame windows and views. CLoginDlg login; if(login.DoModal()=IDOK)CSingleDocTemplate* pDocTemplate;pDocTemplate = new CSingleDocTemplate(IDR_MAINFRAME,RUNTIME_CLASS(CStudentScoreDoc),RUNTIME_CLASS(CMainFrame), / main SDI frame windowRUNTIME_CLASS(CStudentScoreView);AddDocTemplate(pDocTemplate);/ Parse command line for standard shell commands, DDE, file openCCommandLineInfo cmdInfo;ParseCommandLine(cmdInfo);/ Dispatch commands specified on the command lineif (!ProcessShellCommand(cmdInfo)return FALSE;/ The one and only window has been initialized, so show and update it./m_pMainWnd-ShowWindow(SW_SHOW);CMenu* pMenu=m_pMainWnd-GetActiveWindow()-GetMenu();if(login.m_userLevel=1)pMenu-EnableMenuItem(ID_USER,MF_DISABLED|MF_GRAYED); pMenu-EnableMenuItem(ID_STUDENT,MF_DISABLED|MF_GRAYED);pMenu-EnableMenuItem(ID_TEACHER,MF_DISABLED|MF_GRAYED); pMenu-EnableMenuItem(ID_COURSE,MF_DISABLED|MF_GRAYED);else if(login.m_userLevel=2)pMenu-EnableMenuItem(ID_USER,MF_DISABLED|MF_GRAYED);pMenu-EnableMenuItem(ID_STUDENT,MF_DISABLED|MF_GRAYED);pMenu-EnableMenuItem(ID_TEACHER,MF_DISABLED|MF_GRAYED);pMenu-EnableMenuItem(ID_COURSE,MF_DISABLED|MF_GRAYED);pMenu-EnableMenuItem(ID_TEACH,MF_DISABLED|MF_GRAYED);pMenu-EnableMenuItem(ID_SCORE,MF_DISABLED|MF_GRAYED);m_pMainWnd-ShowWindow(SW_SHOWMAXIMIZED); m_pMainWnd-SetWindowText(学生成绩管理信息系统);m_pMainWnd-UpdateWindow();return TRUE;为“确定”和“取消”按钮添加事件:void CLoginDlg:OnOK() / TODO: Add extra validation hereCString username,password;m_strUserName.GetWindowText(username); m_strPassword.GetWindowText(password);if(!m_database.IsOpen()if(m_database.Open(_T(studentscore)m_recordSet.m_pDatabase=&m_database;CString strSQL; strSQL.Format(select * from userinfo where user_name=%s and user_password=%s and nactive_status=Y,username,password);m_recordSet.Open(CRecordset:forwardOnly,strSQL);if(m_recordSet.GetRecordCount()=0)MessageBox(密码错误,请重新输入,密码错误,MB_OK|MB_ICONWARNING);m_strPassword.SetWindowText(); m_strPassword.SetFocus();elsem_recordSet.GetFieldValue(user_lever,m_userLevel); CDialog:OnOK(); m_recordSet.Close();m_database.Close();elseMessageBox(不能打开数据库);void CLoginDlg:OnCancel() / TODO: Add extra cleanup hereif(MessageBox(真的要退出系统吗?,退出询问,MB_OKCANCEL|MB_ICONQUESTION)=IDOK)CDialog:OnCancel();2.系统主窗口3.修改密码窗口为修改密码窗口添加OnOK()方法。void CPasswordDlg:OnOK() / TODO: Add extra validation hereCEdit* pUsername=(CEdit*)this-GetDlgItem(IDC_EDIT_USERNAME); CEdit* pPassword=(CEdit*)this-GetDlgItem(IDC_EDIT_PASSWORD);CEdit* pNew=(CEdit*)this-GetDlgItem(IDC_EDIT_NEW);CEdit* pConfirm=(CEdit*)this-GetDlgItem(IDC_EDIT_CONFIRM);CString username,password,newPassword,confirmPassword;pUsername-GetWindowText(username); pPassword-GetWindowText(password); pNew-GetWindowText(newPassword);pConfirm-GetWindowText(confirmPassword);CDatabase m_database;CRecordset m_recordSet;if(newPassword.IsEmpty()|confirmPassword.IsEmpty()MessageBox(密码不为空);elseif(newPassword!=confirmPassword) MessageBox(2次密码不一致,请重新输入新密码); pNew-SetWindowText(); pConfirm-SetWindowText(); pNew-SetFocus();elseif(!m_database.IsOpen() if(m_database.Open(_T(studentscore)m_recordSet.m_pDatabase=&m_database;CString strSQL; strSQL.Format(select * from userinfo where user_name=%s and user_password=%s nand active_status=Y,username,password);m_recordSet.Open(CRecordset:forwardOnly,strSQL);if(m_recordSet.GetRecordCount()=0)MessageBox(密码错误,请重新输入,密码错误,MB_OK|MB_ICONWARNING);pPassword-SetWindowText(); pNew-SetWindowText();pConfirm-SetWindowText(); pPassword-SetFocus();elsestrSQL.Format(update useinfo set user_password=%s where user_name=%s,newPassword,username);m_database.ExecuteSQL(strSQL);MessageBox(修改密码成功); CDialog:OnOK(); m_recordSet.Close();m_database.Close();elseMessageBox(不能打开数据库);为修改密码窗口添加OnCancel()方法。void CPasswordDlg:OnCancel() / TODO: Add extra cleanup hereCDialog:OnCancel();4.用户管理窗口添加RefreshList()和ResetButton()的方法。void CUserDlg:RefreshList()m_list.DeleteAllItems();m_userSet.Open();m_userSet.m_strFilter=active_status=Y;m_userSet.Requery();for(int i=0;im_userSet.GetRecordCount();i+)CString temp;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_lever,temp);m_list.SetItemText(i,3,temp);m_userSet.MoveNext();m_userSet.Close();void CUserDlg: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()方法。BOOL CUserDlg:OnInitDialog()CDialog:OnInitDialog();m_list.InsertColumn(0,用户编号); m_list.InsertColumn(1,用户名);m_list.InsertColumn(2,密码);m_list.InsertColumn(3,用户权限);RECT rectList;m_list.GetWindowRect(&rectList);int wid=rectList.right-rectList.left-4;for(int i=0;iGetDlgItem(IDC_RADIO_SEX_FEMALE); CButton* maleRadio=(CButton*)this-GetDlgItem(IDC_RADIO_SEX_MALE);femaleRadio-SetCheck(true); maleRadio-SetCheck(false);else CButton* femaleRadio=(CButton*)this-GetDlgItem(IDC_RADIO_SEX_FEMALE); CButton* maleRadio=(CButton*)this-GetDlgItem(IDC_RADIO_SEX_MALE);femaleRadio-SetCheck(false); maleRadio-SetCheck(true);s=m_list.GetItemText(row,4);int i=m_strAge.FindString(0,s);m_strAge.SelectString(i,s); s=m_list.GetItemText(row,5);m_strPhone.SetWindowText(s); s=m_list.GetItemText(row,6); m_strAddress.SetWindowText(s);*pResult = 0;6.教师管理窗口7.课程管理窗口8.授课管理9.成绩管理窗口BOOL CScoreDlg:OnInitDialog() CDialog:OnInitDialog(); CRecordset m_recordSet;if(!m_database.IsOpen()m_database.Open(_T(studentscore);m_recordSet.m_pDatabase=&m_database;m_list.InsertColumn(0,用户编号); m_list.InsertColumn(1,学生名);m_list.InsertColumn(2,课程名);m_list.InsertColumn(3,分数);RECT rectList;m_list.GetWindowRect(&rectList);int wid=rectList.right-rectList.left-4;for(int i=0;i4;i+)m_list.SetColumnWidth(i,wid/4); m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT); RefreshList(); return true;void CScoreDlg:OnScoreAdd() / TODO: Add your control notification handler code hereCScoreAddDlg scoreAdd; scoreAdd.id=0;scoreAdd.DoModal();RefreshList();void CScoreDlg:OnScoreEdit() / TODO: Add your control notification handler code hereCScoreAddDlg scoreAdd;int row=m_list.GetSelectionMark(); scoreAdd.id=m_list.GetItemText(row,0);if(scoreAdd.id=)MessageBox(请选择所需要修改的记录);elsescoreAdd.DoModal();RefreshList();void CScoreDlg:OnScoreDel() / TODO: Add your control notification handler code hereint row=m_list.GetSelectionMark(); CString id=m_list.GetItemText(row,0); if(id=) MessageBox(请选择所需要删除的记录); else CString strSQL; strSQL.Format(update score set active_status=N where score_id=%s,id); m_database.ExecuteSQL(strSQL); RefreshList();void CScoreDlg:RefreshList()m_list.DeleteAllItems();CString strSQL;strSQL.Format(select * from score,student,course where student.student_no=score.student_no n and course.course_no=score.course_no and score.active_status=Y);m_recordSet.Open(CRecordset:forwardOnly,strSQL);for(int i=0;iGetDlgItem(IDC_QUERY_NAME);CEdit* pScore=(CEdit*) this-GetDlgItem(IDC_QUERY_SCORE);CComboBox* pFilter=(CComboBox*) this-GetDlgItem(IDC_COMBO_FILTER);/将控件上的值赋给字符串CString m_name,m_score,m_filter;pName-GetWindowText(m_name);pScore-G

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论