学生成绩管理系统 报告_第1页
学生成绩管理系统 报告_第2页
学生成绩管理系统 报告_第3页
学生成绩管理系统 报告_第4页
学生成绩管理系统 报告_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

1、数据库应用课程设计说明书 班级: 软件工程1404 姓名:徐螣学号: 201426811322 设计题目: 学生成绩管理系统(数据库)设计时间: 2017。6。25至 2017。7.6指导教师:廖峰峰学生成绩管理系统(数据库)设计总说明 考虑到高校学生的成绩管理工作量大、繁杂,人工处理非常困难,出现了学生成绩管理系统。它借助于计算机强大的处理能力,大大减轻了管理人员的工作量,并提高了处理的准确性。学生成绩管理系统的开发运用,实现了学生成绩管理的自动化,不仅把广大教师从繁重的成绩管理工作中解脱出来、把学校从传统的成绩管理模式中解放出来,而且对学生成绩的判断和整理也更合理、更公正,同时也给教师提供

2、了一个准确、清晰、轻松的成绩管理环境。 本系统根据我校的一些实际情况开发,用于对学校教师、学生、课程信息的管理,主要用于管理学生成绩。登录系统时需要访问数据库中的用户信息,确定登录身份.系统完成了日常的教育工作中对学生成绩档案的数字化管理,并且较为系统地对学生信息、成绩信息和课程信息进行管理.查询、增添、修改、删除都变的非常简便,减少了管理的工作量。 基于学校学生众多,为了数据的安全性,系统将学生数据保存在数据库中,以Visual C+设计前台对系统进行设计.因为成绩管理系统是一项很实用的系统,所面对的数据量很大,所以我们要求系统能够高效快速的处理这些数据,并且要保证数据的正确性、相容性和安全

3、性。C+作为前台是将数据库中的数据读取出来,有助于用户对这些数据进行相应的操作,使操作更方便,更符合用户的要求。所以该系统应该要有一个良好的界面,使用户感觉很直观,使用快捷,这就是用C+所要实现的功能。关键词 Visual C+ 6.0;SQL Server;MFC;学生成绩管理前 言本课程设计是在学习了数据库系统和C语言等有关课程后,通过实际的操作来熟悉数据库和相关软件的应用,培养独立的完成对相关课题或者项目的分析能力、设计能力和调试能力。成绩管理系统登录须有数据库中的账号信息,如无用户可及时注册。系统可以对不同的项目进行查询、添加、修改、删除等操作,方便学校的成绩管理.课程设计,着重培养的

4、是学生的自学能力,以及独立分析互联网上和图书馆里的各种资料,用来丰富自己的知识并且提高对SQL、VC+等软件的实际操作能力。通过这次的课程设计,使我们对已经学习过的数据库课程的进一步的掌握,对知识进行最大程度的消化融汇。因此这次的课程设计对我们来说具有非常重要的作用:为以后学习工作做必要的准备和实践,提高自身对数据库开发的能力。第1章数据库总体设计与实施1数据库设计1。1概念分析:概念结构设计阶段是整个数据库设计的关键,它通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型. 设计成绩管理数据库包括系别、教研室、班级、教师、学生、课程、成绩七个关系。ER图2.1.1和图2。

5、1。2所示。图2。1.1 实体及其属性图图2。1.2完整的实体联系图1。2逻辑设计: 逻辑结构是独立于任何一种数据模型的信息结构.逻辑结构的任务是把概念结构设计阶段设计好的基本E-R图转化为宜选用的DBMS所支持的数据模型相符合的逻辑结构,并对其进行优化。设计学生成绩管理数据库,包括系别、教研室、班级、教师、学生、课程、成绩七个关系,考虑到数据库完整性,其关系模式中对每个实体定义的属性如下:系别表系别:(系号,系名)教研室表教研室:(教研室号,教研室名)班级表班级:(班号,班名,系号)教师表教师:(教师号,姓名,教研室号)学生表学生:(学号,姓名,性别,班号)课程表课程:(课程号,课程名,教师

6、号,学时,学分)成绩表成绩:(学号,课程号,成绩)为了存放前台用户信息再添加一用户表用户表用户:(用户名,密码)1。3物理设计: 定义每个表的数据类型以及字段限制,使数据库达到一定的完整性。每个表的物理设计如下:表2。1.1 系别表字段名数据类型字段限制系号char(2)Primarykey系名char(20)Not null表2.1.1 教研室表字段名数据类型字段限制教研室号char(10)Primarykey教研室名char(20)Not null系号char(10)Not null表2。1。3 班级表字段名数据类型字段限制班号char(10)Primarykey班名char(14)Not

7、 null系号char(10)Not null表2.1。4教师表字段名数据类型字段限制教师号char(5)Primarykey教师姓名char(6)Not null教研室号char(10)Not null表2。1.5学生信息表字段名数据类型字段权限学号char(14)Primarykey姓名char(6)Not null性别char(2)Not null班号char(10)Not null表2。1。6课程表字段名数据类型字段权限课程号char(5)Primary key课程名char(20)Not null教师号char(5)Not null学时IntNot null学分char(3)Not

8、null表2。1。7成绩表字段名数据类型字段权限学号char(14)Primary key课程号char(5)Primary key成绩char(3)Not null表2.1。8用户表字段名数据类型字段权限用户名char(20)Primary key密码char(20)Not null第2章 数据库的实施 2。1创建数据库在SQL2000中的企业管理器中,新建一个数据库,名为“student1”,在查询分析器中 新建数据表. 2.2创建表同样在查询分析器中键入如下代码完成表的创建. create table 学生( 学号 char(14) not null primary key, 姓名 ch

9、ar(6)not null, 性别 char(2)not null,班号 char(10)not null) create table 教师( 教师号 char(5) not null primary key, 姓名 char(6)not null, 教研室号 char(4)not null) create table 课程( 课程号 char(5) not null primary key, 课程名 char(20)not null, 教师号 char(5)not null, 学时 int not null, 学分 char(3)not null) create table 成绩( 学号 c

10、har(14) not null, 课程号 char(5)not null, 成绩 char(3)not null primary key(学号,课程号) create table 用户( 用户名 char(20) not null primary key, 密码 char(20) not null)第3章 前台设计与实现3 导入数据库数据并链接BOOL CMyDlg::OnInitDialog()/CDialog::OnInitDialog();/ Add "About.。" menu item to system menu.m_db.Open(_T(”ODBC;DSN=

11、student1");m_userrs。m_pDatabase=&m_db;/ IDM_ABOUTBOX must be in the system command range。ASSERT((IDM_ABOUTBOX 0xFFF0) = IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX 0xF000);CMenu pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL)CString strAboutMenu;strAboutMenu。LoadString(IDS_ABOUTBOX);if (!strAbo

12、utMenu。IsEmpty())pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenuAppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);/ Set the icon for this dialog。 The framework does this automatically/ when the applications main window is not a dialogSetIcon(m_hIcon, TRUE);/ Set big iconSetIcon(m_hIcon, FALSE);/ Set

13、small iconreturn TRUE; / return TRUE unless you set the focus to a control3.1登录模块3。1。1登录运行程序首先要通过登录,登录的用户名和密码存于数据库中用户表中。 输入用户名和密码还有用户的类型从而进入程序.当用户名与密码不匹配时提示错误.void CMyDlg:OnOK() / TODO: Add extra validation hereUpdateData(true);if(!m_userrs。IsOpen()m_userrs。Open();m_userrs。m_strFilter。Format(”用户名=s&

14、#39; and 密码=s”,m_username,m_pass);m_userrs。Requery();tryif(m_username=”")AfxMessageBox(”请输入用户名!");return ;if(m_userrs。IsEOF())AfxMessageBox(”密码错误!”);return ;else CDialog:OnOK();CMain1Dlg main1dlg;main1dlg。DoModal();catch(CException *e)eReportError();return;3。1。2为了使系统美观,可通过设置背景图片来改变系统样式。(1)

15、实现方法如下:引入一张要加入的图片,在要添加图片的对话框类向导中Messages中选择WM_PAINT对其编辑,在OnPaint()函数中加入如下代码:CPaintDC dc(this);CRect rect;GetClientRect(rect); CDC dcMem;dcMem。CreateCompatibleDC(&dc);CBitmap bmpBackground; bmpBackground.LoadBitmap(IDB_BITMAP3);BITMAP bitmap;bmpBackground。GetBitmap(bitmap);CBitmap pbmpOld=dcMem。S

16、electObject(bmpBackground);dc.StretchBlt(0,0,rect。Width(),rect。Height(),&dcMem,0,0,bitmap.bmWidth,bitmap.bmHeight,SRCCOPY); (2)为了将界面设计更加美观,更加人性化,适合用户,将按钮加入图片。代码实现如下:在OnInitDialog中加入: HBITMAP hBitmap,hBitmap1; hBitmap= LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP1); (CButton )GetD

17、lgItem(IDOK))->SetBitmap(hBitmap); hBitmap1=LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP2); (CButton *)GetDlgItem(IDCANCEL))SetBitmap(hBitmap1); return TRUE; / return TRUE unless you set the focus to a control界面运行如下:登录界面的用户名通过数据库访问代码如下:在BOOL CMyDlg::OnInitDialog()中加入 CDialog::OnIn

18、itDialog(); m_db。Open(_T(”ODBC;DSN=student1”);m_userrs.m_pDatabase=&m_db;3.2系统的详细设计3。2.1主界面设计主界面添加了菜单栏,用于各种信息查询操作和软件帮助信息。通过引入图片设置对话框背景图片。主界面如图3。2.1所示。3。2。2菜单栏和查询设计菜单栏前两个菜单都为查询菜单,通过SQL查询语句显示查询结果。初始化状态为显示全部结果,若记录太多可按主码值查询,若要返回初始状态,点击刷新按钮即可。可以为每个窗口设置适当的图片背景.1. 查询菜单2 成绩查询(1)按学号查询(2) 按班级查询(3) 按课程查询3

19、信息查询(1) 学生信息(2) 教师信息(3) 课程信息3。2。3管理模块设计(1)总的管理模块设计(2)学生管理模块设计(3) 教师管理模块设计(4) 学生成绩管理模块(5)课程信息管理模块(6)全部显示、增加.删除、修改的功能第4章 代码设计4。1查询4.1.1成绩查询(按学号)void CStudentNumSearchDlg::OnOK() / TODO: Add extra validation hereUpdateData(TRUE);/ TODO: Add your control notification handler code hereCDatabase database;

20、database.Open(”student1”,FALSE,FALSE,”ODBC;",FALSE);CString str;CRecordset set(database);if(m_studentnum。IsEmpty()MessageBox(”请输入学号”);return;m_liststu1.DeleteAllItems();set。Open(CRecordset:dynaset,_T(”select 学生。学号, 学生.姓名, 课程.课程名, 成绩。成绩 from 学生, 成绩, 课程 where 学生.学号 = 成绩.学号 and 成绩。课程号 = 课程.课程号 and

21、 学生。学号 = ”+m_studentnum+” order by 成绩。成绩 desc”));int i=0;while(!set。IsEOF())m_liststu1.InsertItem(i,”");CString str1,str2,str3,str4;set。GetFieldValue("学号”,str1);m_liststu1。SetItemText(i,0,str1);set。GetFieldValue(”姓名”,str2);m_liststu1.SetItemText(i,1,str2);set。GetFieldValue(”课程名”,str3);m_li

22、ststu1。SetItemText(i,2,str3);set。GetFieldValue("成绩",str4);m_liststu1。SetItemText(i,3,str4);set。MoveNext();i+;set.Close();UpdateData(TRUE);database。Close();BOOL CStudentNumSearchDlg::OnInitDialog() / TODO: Add extra initialization hereCDialog:OnInitDialog();m_liststu1。InsertColumn(1,"学

23、号",LVCFMT_LEFT,100,0);m_liststu1。InsertColumn(2,”姓名",LVCFMT_LEFT,100,0);m_liststu1.InsertColumn(3,"课程”,LVCFMT_LEFT,100,0);m_liststu1。InsertColumn(4,”成绩",LVCFMT_LEFT,100,0);return TRUE; / return TRUE unless you set the focus to a control / EXCEPTION: OCX Property Pages should retu

24、rn FALSE4.1。2查询信息(学生信息)void CStudentInfoDlg::OnOK() / TODO: Add extra validation hereUpdateData(TRUE);/ TODO: Add your control notification handler code hereCDatabase database;database。Open("student1",FALSE,FALSE,"ODBC;”,FALSE);CString str;CRecordset set(&database);if(m_studentnum

25、。IsEmpty())MessageBox(”请输入学号”);return;m_liststu4。DeleteAllItems();set.Open(CRecordset::dynaset,_T("select 学生。学号, 学生.姓名, 学生。性别, 学生。班号 from 学生 where 学生.学号 = '”+m_studentnum+”'”);int i=0;while(!set.IsEOF())m_liststu4。InsertItem(i,"");CString str1,str2,str3,str4;set。GetFieldValue(

26、”学号",str1);m_liststu4。SetItemText(i,0,str1);set.GetFieldValue("姓名”,str2);m_liststu4。SetItemText(i,1,str2);set。GetFieldValue(”性别”,str3);m_liststu4。SetItemText(i,2,str3);set.GetFieldValue(”班号”,str4);m_liststu4。SetItemText(i,3,str4);set.MoveNext();i+;set.Close();UpdateData(TRUE);database。Clos

27、e();BOOL CStudentInfoDlg:OnInitDialog() CDialog::OnInitDialog();/ TODO: Add extra initialization herem_liststu4.InsertColumn(0,"学号”,LVCFMT_LEFT,100,0);m_liststu4。InsertColumn(1,"姓名",LVCFMT_LEFT,100,0);m_liststu4.InsertColumn(2,"性别”,LVCFMT_LEFT,100,0);m_liststu4.InsertColumn(3,&qu

28、ot;班号”,LVCFMT_LEFT,100,0);return TRUE; / return TRUE unless you set the focus to a control / EXCEPTION: OCX Property Pages should return FALSE4。2管理系统4。2.1学生信息管理BOOL CStudentManagementDlg:OnInitDialog() /设置表格类型,样式CDialog:OnInitDialog();/ TODO: Add extra initialization here CStudentRS m_Set; unsigned

29、i=0;CODBCFieldInfo Info;m_Set。Open();m_ListCtrlx。SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);for( i=0;i<m_Set。m_nFields;i+) m_Set.GetODBCFieldInfo(i,Info);m_ListCtrlx.InsertColumn(i,Info。m_strName); m_ListCtrlx.SetColumnWidth(i,120);m_Set。Close();return TRUE; / return TRUE unless you

30、set the focus to a control / EXCEPTION: OCX Property Pages should return FALSEvoid CStudentManagementDlg:OnSearchAll() /查询全部信息/ TODO: Add your control notification handler code hereif(m_Set.IsOpen())m_Set。Close();m_ListCtrlx.DeleteAllItems();m_Set.m_strFilter。Empty();m_Set.Open();m_nRecordCount=this

31、Show();void CStudentManagementDlg:OnAdd() /添加/ TODO: Add your control notification handler code here CAddDlg dlg;if( dlg.DoModal()=IDOK) if(!m_Set。IsOpen())m_Set。Open(); m_Set。AddNew(); m_nRecordCount+=1; m_Set。m_column1=dlg。m_nxue; m_Set。m_column2=dlg。m_strname; m_Set。m_column3=dlg。m_sex; m_Set。m_c

32、olumn4=dlg。m_class; /thisEqual(); m_Set。Update();/Update()放在Equal()后 m_Set。Requery(); thisXuan(); void CStudentManagementDlg:OnDelete() /删除/ TODO: Add your control notification handler code herePOSITION pos=m_ListCtrlx。GetFirstSelectedItemPosition();if(pos=NULL)MessageBox(”请选择你要删除的一行");return ;

33、int nIndex=m_ListCtrlx.GetNextSelectedItem(pos);CString str=m_ListCtrlx.GetItemText(nIndex,0);if(MessageBox(”你确定要删除"+str+"'这行数据吗?”,”删除功能”,MB_OKCANCEL)!=IDOK)return ;if(!m_Set。IsOpen()m_Set.Open(); m_Set。MoveFirst();BOOL sel=FALSE;doif(m_Set。m_column1!=str)m_Set。MoveNext(); elsem_nRecor

34、dCount=1;sel=TRUE;m_Set。Delete();m_Set.Requery();break;while(!m_Set。IsEOF());if(sel=FALSE)AfxMessageBox(”没有此记录”);return;elsethis>Xuan();void CStudentManagementDlg::OnChange() /修改 CChangeDlg dlg;if(dlg。DoModal()!=IDOK)return;/如果没有点“确定",则退出.POSITION pos=m_ListCtrlx。GetFirstSelectedItemPosition

35、();if(pos=NULL)/MessageBox(”请选择你要删除的一行");return ;int nIndex=m_ListCtrlx。GetNextSelectedItem(pos);CString str=m_ListCtrlx。GetItemText(nIndex,0);if(!m_Set。IsOpen())m_Set.Open(); m_Set.MoveFirst();BOOL sel=FALSE;doif(m_Set。m_column1!=str)m_Set。MoveNext(); else m_nRecordCount-=1;sel=TRUE;m_Set。Dele

36、te();m_Set。Requery();break;while(!m_Set。IsEOF(); m_Set.AddNew(); m_nRecordCount+=1; m_Set。m_column1=dlg.m_nxue; m_Set。m_column2=dlg。m_strname; m_Set.m_column3=dlg。m_sex; m_Set。m_column4=dlg。m_class; /this-Equal(); m_Set。Update();/Update()放在Equal()后 m_Set。Requery(); this->Xuan();int CStudentManage

37、mentDlg::Show()/控制输出 int k=0; do CString s; s.Format(”s”,m_Set。m_column1); m_ListCtrlx。InsertItem(k,s,0); m_ListCtrlx。SetItemText(k,1,m_Set。m_column2); s。Format(”s",m_Set.m_column3); m_ListCtrlx。SetItemText(k,2,s); s。Format(”s”,m_Set。m_column4); m_ListCtrlx。SetItemText(k,3,s); k+; m_Set.MoveNext(); while(!m_Set。IsEOF(); m_Set。Close(); return k;void CStudentManagementDlg:Xuan() m_ListCtrlx.DeleteAllItems(); this>Show();第5章 课程任务分析在这次课程设计中,我是自己一个人独立完成,虽然过程比较辛苦,但最终完成了课程设计的研究,整体的分析。首先是课程设计的概念结构设计,数据库的前台设计与实现,所有界面的总体设计,其中菜单栏,教师信息管理主要是一

温馨提示

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

最新文档

评论

0/150

提交评论