学生信息管理系统分析毕业论文.doc_第1页
学生信息管理系统分析毕业论文.doc_第2页
学生信息管理系统分析毕业论文.doc_第3页
学生信息管理系统分析毕业论文.doc_第4页
学生信息管理系统分析毕业论文.doc_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

学生信息管理系统分析毕业论文一、设计题目学生信息管理系统是学校日常信息管理的一个重要内容。随着学校考试次数越来越多,学生信息管理的工作量也变得越来越大。如果能对学生信息做系统的管理,就能更好更方便地快速查询或者修改学生的考试成绩,省去了文件管理的繁琐与麻烦,无疑将给学校的管理部门带来很大的方便。学生信息管理系统就是把学生的考试成绩实行统一、集中、规范的收集管理,建立现代化、专业化的管理系统。学生信息管理系统的对象是在校学生,信息管理系统为学生提供了成绩查询等服务;为学校及老师提供了添加、修改、删除学生成绩等服务。本系统基本上能够满足当今学校学生学习成绩信息管理的需求。学生个人成绩信息录入项目齐全、完整、系统。本信息管理系统简单明了,可以很方便查询、阅读、修改及重复使用。二、需求分析本系统设计者力求根据学生信息管理的需要,而建立一个“学生信息管理系统”,以方便对学生信息的各项管理操作。开发目的如:能对成绩进行录入和修改;能添加该学生的记录;能删除该学生的记录;能查询学生的补考情况。三、开发环境1.VC+ 6.0 2.SQL Server 2000四、功能要求1.登陆功能2.读取记录3.增加记录4.修改记录5.删除记录6.查询记录五、实现方法1.该系统为基于对话框的程序2.用ADO的方法访问数据库六、系统设计(一)概念分析:概念结构设计阶段是整个数据库设计的关键,它通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型设计成绩管理数据库包括学生、成绩、课程、班级、年级五个关系。E-R图六一和图六二所示。学生班级名学号年级名课程名任课教师课程号课程名年级名年级年级号姓名总评成绩成绩课程班级班主任年级人数性别班级名平时成绩考试成绩班级人数年级主任学分学号补考图六一实体及其属性图年级年级主任年级名年级人数所属班级成绩学生所属班主任班级名班级人数年级名学号姓名性别班级名年级名学习课程任课教师学分课程号课程名平时成绩总评成绩补考学名课程号考试成绩考试图六二完整的实体-联系图(二)逻辑设计:逻辑结构是独立于任何一种数据模型的信息结构。逻辑结构的任务是把概念结构设计阶段设计好的基本E-R图转化为宜选用的DBMS所支持的数据模型相符合的逻辑结构,并对其进行优化。设计学生成绩管理数据库,包括年级、班级、学生、课程、成绩五个关系,考虑到数据库完整性,其关系模式中对每个实体定义的属性如下:年级表年级:(年级名,年级主任、年级人数)班级表班级:(班级名,年级名,班主任、班级人数)课程表课程:(课程号,课程名,任课教师,学分)学生表学生:(学号,姓名,性别,班号名、年级名)成绩表成绩:(学号,课程号,考试成绩、平时成绩、总评成绩、补考)用户表:用户:(用户名,密码)(三)物理设计:定义每个表的数据类型以及字段限制,使数据库达到一定的完整性。1、每个表的物理设计如下: 学生:字段名类型长度主码学号int 4是姓名Char 20性别Char 2班级名Char 15年级名Char 10 成绩:字段名类型长度主码学号int 4是课程号Char 20考试成绩float8平时成绩float8总评成绩float 8补考bit1课程字段名类型长度主码课程号Char 20是课程名Char 20任课老师Char 20学分float8 班级字段名类型长度主码班主任Char 20班级人数Smallint 2班级名Char 15是年级名Char 10 年级字段名类型长度主码年级主任Char 20年级人数Smallint 2年级名Char 10是 用户 字段名类型长度主码用户名Char 20是密码Char 202、数据库概要说明新建一个数据库,名字为score中包括course,student,sc,class,grate5个数据表。下图所示的即为本系统中数据库中的数据表结构图,该数据表结构图包含系统所有数据表。可以清晰地反应数据库信息。3、数据关系图:如图所示,student表中的学号与sc表中的学号存在约束关系,sc表中的课程号与course中的课程号也存在约束关系,class中的年级名与grate中的年级名也存在约束关系。(四)部分功能实现代码1、VC应用程序连接数据库BOOL CMyDlg:OnInitDialog()CDialog:OnInitDialog();:CoInitialize(NULL);CMenu* pSysMenu = GetSystemMenu(FALSE);SetIcon(m_hIcon, TRUE);SetIcon(m_hIcon, FALSE);try m_DBCnt.CreateInstance(_uuidof(Connection); m_DBCnt-ConnectionString=driver=SQL Server;server=(local); UID=teacher;PWD=; database=score; _variant_t vs; vs.vt=VT_BSTR; vs.bstrVal=SysAllocString(LPrompt);_variant_t vl; vl.vt=VT_I2; vl.iVal=adPromptAlways;m_DBCnt-Properties-GetItem(vs)-Value=vl;m_DBCnt-Open(,-1); catch(_com_error e)AfxMessageBox(无法连接数据库!);this-EndDialog(0); _bstr_t str=m_DBCnt-ConnectionString;2、查询学生资料void CMyDlg:Readstudent() m_list.DeleteAllItems(); _RecordsetPtr prst=NULL; _bstr_t strsql(select * from v_student ORDER BY 学号 DESC); int i=0; try prst.CreateInstance(_uuidof(Recordset); if(key)prst=m_DBCnt-Execute(_bstr_t(ZSQL),NULL,adCmdText); else prst=m_DBCnt-Execute(strsql,NULL,adCmdText); _variant_t holder; if(prst-adoEOF) AfxMessageBox(没有相关记录!);key=false;return; while(!prst-adoEOF) holder=prst-GetCollect(学号); if(holder.vt!=VT_NULL)m_list.InsertItem(i,(char*)(_bstr_t)holder); holder=prst-GetCollect(姓名); if(holder.vt!=VT_NULL)m_list.SetItemText(i,1,(char*)(_bstr_t)holder); holder=prst-GetCollect(性别); if(holder.vt!=VT_NULL)m_list.SetItemText(i,2,(char*)(_bstr_t)holder); holder=prst-GetCollect(年龄); if(holder.vt!=VT_NULL)m_list.SetItemText(i,3,(char*)(_bstr_t)holder); holder=prst-GetCollect(班级名); if(holder.vt!=VT_NULL)m_list.SetItemText(i,4,(char*)(_bstr_t)holder); holder=prst-GetCollect(年级名); if(holder.vt!=VT_NULL)m_list.SetItemText(i,5,(char*)(_bstr_t)holder); prst-MoveNext(); prst-Close(); key=false; catch(_com_error e) AfxMessageBox(操作异常!); return; 3、修改学生资料信息 void CMyDlg:updatestu() UpdateData(); POSITION pos=m_list.GetFirstSelectedItemPosition(); if(pos=NULL) AfxMessageBox(没有选中记录!); return; if(m_stu_xh=) return; CString strSql,stuxh,stuxm,stuxb,stunl,stuclass,stugrate; m_STU_XH.GetWindowText(stuxh); m_STU_XM.GetWindowText(stuxm); m_STU_XB.GetWindowText(stuxb); m_STU_NL.GetWindowText(stunl); m_STU_CLASSNAME.GetWindowText(stuclass); m_STU_NIJINAME.GetWindowText(stugrate); try strSql.Format(update v_student set 姓名=%s,性别=%s,年龄=%d,班级名=%s,年级名=%s, where 学号=%d, stuxm,stuxb,atoi(stunl),stuclass,stugrate,atoi(stuxh);_RecordsetPtr prst=NULL;prst.CreateInstance(_uuidof(Recordset); prst=m_DBCnt-Execute(_bstr_t(strSql),NULL,adCmdText); Readstudent(); MessageBox(修改成功!); catch(_com_error e) AfxMessageBox(操作异常或者是你所在的用户组无此权限!); return; 4、补考通知单void CMyDlg:Readbukaotongzhi()m_list.DeleteAllItems(); _RecordsetPtr prst=NULL; _bstr_t strsql(select * from v_bukaotongzhi); int i=0; try prst.CreateInstance(_uuidof(Recordset);/MessageBox(1); prst=m_DBCnt-Execute(strsql,NULL,adCmdText); _variant_t holder; while(!prst-adoEOF) holder=prst-GetCollect(学号); if(holder.vt!=VT_NULL) m_list.InsertItem(i,(char*)(_bstr_t)holder); holder=prst-GetCollect(姓名); if(holder.vt!=VT_NULL) m_list.SetItemText(i,1,(char*)(_bstr_t)holder); holder=prst-GetCollect(班级名); if(holder.vt!=VT_NULL)m_list.SetItemText(i,2,(char*)(_bstr_t)holder); holder=prst-GetCollect(年级名); if(holder.vt!=VT_NULL) m_list.SetItemText(i,3,(char*)(_bstr_t)holder); holder=prst-GetCollect(课程号); if(holder.vt!=VT_NULL)m_list.SetItemText(i,4,(char*)(_bstr_t)holder); holder=prst-GetCollect(课程名); if(holder.vt!=VT_NULL)m_list.SetItemText(i,5,(char*)(_bstr_t)holder); holder=prst-GetCollect(学分); if(holder.vt!=VT_NULL) m_list.SetItemText(i,6,(char*)(_bstr_t)holder); holder=prst-GetCollect(总评成绩); if(holder.vt!=VT_NULL)m_list.SetItemText(i,7,(char*)(_bstr_t)holder); prst-MoveNext(); prst-Close(); catch(_com_error e) AfxMessageBox(操作异常!); return; void CMyDlg:upbukaotongzhi() UpdateData(); _RecordsetPtr prst=NULL; prst.CreateInstance(_uuidof(Recordset); POSITION pos=m_list.GetFirstSelectedItemPosition(); if(pos=NULL) AfxMessageBox(没有选中记录!); return; CString strSql,xh,xm,classname,nijiname,kch,kcm,xf,zpcj; m_STU_XM.GetWindowText(xm); m_STU_CLASSNAME.GetWindowText(classname); m_STU_NIJINAME.GetWindowText(nijiname); m_KC_KCH.GetWindowText(kch); m_KC_KCM.GetWindowText(kcm); m_KC_XF.GetWindowText(xf); m_XXQK_XH.GetWindowText(xh); m_XXQK_KCH.GetWindowText(kch);trystrSql.Format(update v_bukaotongzhi set 姓名=%s,班级名=%s,年级名=%s,课程名=%s,学分=%f, where 学号=%d and 课程号=%s, xm,classname,nijiname,kcm,atof(xf),atoi(xh),kch); prst=m_DBCnt-Execute(_bstr_t(strSql),NULL,adCmdText); Readbukaotongzhi(); MessageBox(修改成功!); catch(_com_error e) AfxMessageBox(操作异常或者是你所在的用户组无此权限!); return; void CMyDlg:OnDel() CString lb; m_LB.GetLBText(m_LB.GetCurSel(),lb); if(lb=学生资料)delstu(); if(lb=课程表)delcourse(); if(lb=成绩表)delsc(); if(lb=班级资料)delclass(); if(lb=年级资料)delgrate(); if(lb=补考通知单)delbukaotongzhi();5、删除学生信息 void CMyDlg:delstu() CString sID,strsQL;int item;_RecordsetPtr prst=NULL; prst.CreateInstance(_uuidof(Recordset); try _bstr_t strsql(select * from student); prst=m_DBCnt-Execute(strsql,NULL,adCmdText); if(!prst-BOF) prst-MoveFirst();else AfxMessageBox(表内数据为空);return; POSITION pos=m_list.GetFirstSelectedItemPosition();if(pos=NULL) AfxMessageBox(没有选中记录!); return; else while(pos) item=m_list.GetNextSelectedItem(pos); sID=m_list.GetItemText(item,0); if(AfxMessageBox(是否删除?,MB_YESNO)=IDYES)strsQL.Format(delete from v_student where 学号=+sID+); prst=m_DBCnt-Execute(_bstr_t(strsQL),NULL,adCmdText); Readstudent(); catch(_com_error e) AfxMessageBox(操作异常或者是你所在的用户组无此权限!); return; void CMyDlg:delsc()CString sID,strsQL;int item; _RecordsetPtr prst=NULL; prst.CreateInstance(_uuidof(Recordset); try _bstr_t strsql(select * from v_sc); prst=m_DBCnt-Execute(strsql,NULL,adCmdText); if(!prst-BOF)prst-MoveFirst(); elseAfxMessageBox(表内数据为空);return; POSITION pos=m_list.GetFirstSelectedItemPosition(); if(pos=NULL) AfxMessageBox(没有选中记录!); return; else while(pos) item=m_list.GetNextSelectedItem(pos); sID=m_list.GetItemText(item,0); if(AfxMessageBox(是否删除?,MB_YESNO) = IDYES) strsQL.Format(delete from v_sc where 学号=%s,sID); prst=m_DBCnt-Execute(_bstr_t(strsQL),NULL,adCmdText); ReadSC(); catch(_com_error e) AfxMessageBox(操作异常或者是你所在的用户组无此权限!); return; void CMyDlg:Clean()CString lb; m_LB.GetLBText(m_LB.GetCurSel(),lb); m_STU_XH.SetWindowText(); m_STU_XM.SetWindowText(); m_STU_XB.SetWindowText(); m_STU_NL.SetWindowText(); m_STU_CLASSNAME.SetWindowText(); m_STU_NIJINAME.SetWindowText(); m_KC_KCH.SetWindowText(); m_KC_KCM.SetWindowText(); m_KC_RKLS.SetWindowText(); m_KC_XF.SetWindowText(); m_CLA_NAME.SetWindowText(); m_CLA_NIJINAME.SetWindowText(); m_CLA_NUM.SetWindowText(); m_CLA_HEAD.SetWindowText(); m_XUQK_KSCJ.SetWindowText(); m_XXQK_XH.SetWindowText(); m_XXQK_KCH.SetWindowText(); m_XXQK_PSCJ.SetWindowText(); m_XXQK_BK.SetCheck(0); m_GRATE_NAME.SetWindowText(); m_GRATE_NUM.SetWindowText(); m_GRATE_HEAD.SetWindowText(); void CMyDlg:cxinit(CString s) CString lb; m_LB.GetLBText(m_LB.GetCurSel(),lb); LONG lStyle = m_list.SendMessage (LVM_GETEXTENDEDLISTVIEWSTYLE); lStyle |= LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES| LVS_EX_HEADERDRAGDROP; m_list.SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0,(LPARAM)lStyle); m_list.SetExtendedStyle(lStyle); int nWidth=100; int nColumnCount = m_list.GetHeaderCtrl()-GetItemCount(); m_dy.EnableWindow(true); if(zcxlb=学生资料) m_LB.SetCurSel(0); for (int i=0;i nColumnCount;i+) m_list.DeleteColumn(0); Clean(); m_sc.EnableWindow(TRUE); m_xg.EnableWindow(TRUE); m_list.EnableWindow(TRUE); m_list.SetRedraw(TRUE);m_list.UpdateData(TRUE); m_list.InsertColumn(0,学号,LVCFMT_LEFT,nWidth); m_list.InsertColumn(1,姓名,LVCFMT_LEFT,nWidth); m_list.InsertColumn(2,性别,LVCFMT_LEFT,nWidth); m_list.InsertColumn(3,年龄,LVCFMT_LEFT,nWidth); m_list.InsertColumn(4,班级名,LVCFMT_LEFT,nWidth); m_list.InsertColumn(5,年级名,LVCFMT_LEFT,nWidth); Readstudent(); if(zcxlb=课程表) m_LB.SetCurSel(1); for (int i=0;i nColumnCount;i+) m_list.DeleteColumn(0);Clean(); m_sc.EnableWindow(TRUE); m_xg.EnableWindow(TRUE); m_list.EnableWindow(TRUE); m_list.DeleteAllItems();m_list.Update(TRUE); m_list.InsertColumn(0,课程号,LVCFMT_LEFT,nWidth); m_list.InsertColumn(1,课程名,LVCFMT_LEFT,nWidth); m_list.InsertColumn(2,任课老师,LVCFMT_LEFT,nWidth); m_list.InsertColumn(3,学分,LVCFMT_LEFT,nWidth); Readcourse(); if(zcxlb=成绩表) m_LB.SetCurSel(2); for (int i=0;i nColumnCount;i+) m_list.DeleteColumn(0); Clean();m_sc.EnableWindow(TRUE); m_xg.EnableWindow(TRUE); m_list.EnableWindow(TRUE); m_list.InsertColumn(0,学号,LVCFMT_LEFT,nWidth); m_list.InsertColumn(1,课程号,LVCFMT_LEFT,nWidth); m_list.InsertColumn(2,考试成绩,LVCFMT_LEFT,nWidth); m_list.InsertColumn(3,平时成绩,LVCFMT_LEFT,nWidth); m_list.InsertColumn(4,总评成绩,LVCFMT_LEFT,nWidth); m_list.InsertColumn(5,补考,LVCFMT_LEFT,nWidth); ReadSC(); if(zcxlb=班级资料) m_LB.SetCurSel(3); for (int i=0;i nColumnCount;i+) m_list.DeleteColumn(0); Clean(); m_sc.EnableWindow(TRUE); m_xg.EnableWindow(TRUE); m_list.EnableWindow(TRUE); m_list.InsertColumn(0,班级名,LVCFMT_LEFT,nWidth); m_list.InsertColumn(1,年级名,LVCFMT_LEFT,nWidth); m_list.InsertColumn(2,班级人数,LVCFMT_LEFT,nWidth); m_list.InsertColumn(3,班主任,LVCFMT_LEFT,nWidth); Readclass(); if(lb=年级资料) m_LB.SetCurSel(4); for (int i=0;i Execute(_bstr_t(strSql),NULL,adCmdText); MessageBox(添加成功!); catch(_com_error e) AfxMessageBox(操作异常或者是你所在的用户组无此权限!); return;6、新增插入数据BOOL XZ:OnInitDialog() CDialog:OnInitDialog(); :CoInitialize(NULL); xzyhm=zyhm; xzmm=zmm; try m_DBCnt.CreateInstance(_uuidof(Connection); CString strCn; strCn.Empty(); strCn=driver=SQL Server;server=(local); +xzyhm +;+xzmm +;database=score;M _DBCnt-Open(_bstr_t(strCn),_bstr_t(),_bstr_t(),-1); catch(_com_error e)AfxMessageBox(无法连接数据库!); this-EndDialog(0); m_bk=false; Readstuxh(); Readcourkch();return TRUE; void CHAXUN:OnOK() m_CX_LB.GetLBText(m_CX_LB.GetCurSel(),cxlb); CString zl,tj,gjz; if(cxlb=学生资料) m_CXSTU_ZL.GetWindowText(zl); m_CXSTU_TJ.GetWindowText(tj); m_CXSTU_GJZ.GetWindowText(gjz); CXSQL.Format(select * from v_student where %s %s %s ORDER BY 学号 DESC,zl,tj,gjz); If(cxlb=课程表) m_CXKC_ZL.GetWindowText(zl); m_CXKC_TJ.GetWindowText(tj); m_CXKC_GJZ.GetWindowText(gjz);CXSQL.Form

温馨提示

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

评论

0/150

提交评论