学生选课管理系统设计报告.docx

上传人:b****8 文档编号:10339884 上传时间:2023-02-10 格式:DOCX 页数:27 大小:1.20MB
下载 相关 举报
学生选课管理系统设计报告.docx_第1页
第1页 / 共27页
学生选课管理系统设计报告.docx_第2页
第2页 / 共27页
学生选课管理系统设计报告.docx_第3页
第3页 / 共27页
学生选课管理系统设计报告.docx_第4页
第4页 / 共27页
学生选课管理系统设计报告.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

学生选课管理系统设计报告.docx

《学生选课管理系统设计报告.docx》由会员分享,可在线阅读,更多相关《学生选课管理系统设计报告.docx(27页珍藏版)》请在冰豆网上搜索。

学生选课管理系统设计报告.docx

学生选课管理系统设计报告

 

《学生选课系统》课程设计

学院 信 息工 程专业网络工程 班级 130461

课题名称学生选课管理系统设计      

组长学号 姓 名     成绩  

组员学号  姓名    成绩  

组员学号   姓名  成绩     

开课时间 2014至 2015学年第一 学期地点D509 

 

一、课程设计的目的和要求

  本次学生选课管理系统的课程设计,明白整个系统架构,使得自己所学的MicrosoftVisualC++6.0和MicrosoftAccess知识的相互结合,加深对数据库的认识,同时又复习了MicrosoftVisualC++ 6.0的编写。

为以后能够合理的、精确地、独立的完成数据库提供了前提。

数据库运用到数据库建立,建立表以及表与表的连接等等,前台用Microsoft Visual6.0中MFC工程建立需要的界面与编写界面之间连接代码等。

我们想通过本实验解决后台数据库与前台界面连接问题,这也是主要问题所在,只有正确连接才能保证前台用户操作正确的数据,达到数据库中数据资源的共享目的。

本次课程设计开发一套选课系统,由学生选课系统、教师系统和管理员系统三部分组成。

管理员可以通过管理员系统进行管理课程,查看课程选修情况,查看教师授课情况,修改或删除课程或者学生的信息。

教师可以通过教师系统进行查看自己教授的的课程,可以进行对学生的评分,以及对自己密码的修改。

学生可以通过学生选课系统进行查看备选课程及该课程的信息,选择希望选修的课程,以及对自己密码的修改。

二、设计

 2.1本次课程设计建立学生选课管理系统,通过用户名、密码分别进入3个类别系统,分别是教理系统,教师管理系统,学生选课系统,

 

图2.1学生管理系统基本图

通过管理员,进入系统界面可以执行以下操作:

 

 

图2.2教务处管理系统

通过学生,进入系统界面可以执行以下操作:

 

 

图2.3学生管理系统

通过教师,进入界面可以执行以下操作:

图2.4 教师管理系统

   数据需求

(1)学生表信息:

学号,姓名,性别,院系,班级,密码,年龄。

(2)课程表信息:

课程编号,课程名称,学分,学时,开课学期。

(3)选表信息:

学号,课程编号,课程名称,姓名,学分,成绩。

(4)教师表信息:

教师编号,姓名,性别,密码,课程名称,年龄。

(5)管理员表信息:

姓名,编号,密码。

2.2后台数据库与基本表的设计

图2.5 管理员表

图2.9教师表

图2.6课程表以及其连接的表

图2.7  选课表

图2.8  学生表以及其连接的表

2.3资源视图设计

 建立完MFC工程之后进入前台界面制作,在MicrosoftVisualC++6.0中界面制作分为三个模块:

类视图,资源视图,文件视图。

资源视图的设计是前台制作的第一步,资源视图里分为对话框制作与菜单制作,下面就分别介绍:

(1)主菜单设计:

学生选课管理系统主菜单分为学生选课与管理员管理两个主菜单。

(2)对话框设计:

学生选课管理系统对话框设计为25个,具体见截图:

豆豆学生选课系统教师,学生,管理员登录界面

图2.10登陆界面

2.4文件视图设计

我们知道MicrosoftVisualC++6.0编程需要有头文件,界面涉及的头文件更多,在文件视图里我们可以看到学生选课对话框涉及的所有头文件,本次课程设计选课系统头文件有如下:

管理员添加学生信息

三、编码

下面是应用程序的部分代码:

(1)登录主界面与管理员操作界面,学生界面,老师界面的连接

#include"stdafx.h"

#include "Student.h"

#include"LogonDialog.h"

#include"AdmDialog.h"

#include"StuDialog.h"

#include"TeacherDialog.h"

CStringusernumber;

CStringusername;

#ifdef_DEBUG

#definenewDEBUG_NEW

#undef THIS_charTHIS_FILE[] = __FILE__;

#endif

/////////////////////////////////////////////////////////////////////////////

//CLogonDialogdialog

 

CLogonDialog:

:

CLogonDialog(CWnd*pParent/*=NULL*/)

ﻩ:

 CDialog(CLogonDialog:

IDD,pParent)

{

//{{AFX_DATA_INIT(CLogonDialog)

ﻩ//NOTE:

 theClassWizardwilladd member initializationhere

//}}AFX_DATA_INIT

 

voidCLogonDialog:

:

DoDataExchange(CDataExchange*pDX)

{

ﻩCDialog:

:

DoDataExchange(pDX);

ﻩ//{{AFX_DATA_MAP(CLogonDialog)

ﻩ//NOTE:

theClassWizardwill addDDXandDDVcallshere

ﻩ//}}AFX_DATA_MAP

 

BEGIN_MESSAGE_MAP(CLogonDialog, CDialog)

ﻩ//{{AFX_MSG_MAP(CLogonDialog)

ON_BN_CLICKED(IDC_LOG,OnLog)

ON_BN_CLICKED(IDC_LOGCANCLE,OnLogcancle)

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

//CLogonDialogmessagehandlers

void CLogonDialog:

:

OnLog()

{

ﻩ// TODO:

Addyourcontrolnotificationhandlercode here

CDatabasedb;

db.OpenEx("DSN=Student");

ﻩCStringtype,key,user;

ﻩGetDlgItemText(IDC_TYPE,type);

GetDlgItemText(IDC_USER,user);

ﻩGetDlgItemText(IDC_KEY,key);

ﻩif(key.IsEmpty()||user.IsEmpty()||type.IsEmpty())

{

AfxMessageBox("用户名或密码或类别不能为空!

");

ﻩreturn;

ﻩ}

CStringstrSQL;

CRecordsetrs(&db);

int i;

if(type=="管理员")

ﻩ{

ﻩstrSQL.Format("selectAnamefrom Admini where Anum='%s'and Akey='%s'",user,key);

ﻩrs.Open(CRecordset:

snapshot,strSQL);

ﻩi=rs.GetRecordCount();

ﻩif(i==0)

ﻩﻩ{

ﻩAfxMessageBox("用户名或密码错误!

");

ﻩﻩﻩSetDlgItemText(IDC_USER,"");

ﻩSetDlgItemText(IDC_KEY,"");

return;

ﻩ}

rs.GetFieldValue("Aname",username);

ﻩﻩusernumber=user;

SendMessage(WM_CLOSE);

ﻩCAdmDialogadm;

ﻩﻩadm.DoModal();

}

ﻩelseif(type=="老师")

ﻩ{

ﻩstrSQL.Format("select TnamefromTeacherwhereTnum='%s'andTkey='%s'",user,key);

rs.Open(CRecordset:

:

snapshot,strSQL);

i=rs.GetRecordCount();

ﻩﻩif(i==0)

ﻩﻩAfxMessageBox("用户名或密码错误!

");

ﻩﻩSetDlgItemText(IDC_USER,"");

ﻩﻩSetDlgItemText(IDC_KEY,"");

ﻩﻩreturn;

}

ﻩrs.GetFieldValue("Tname",username);

ﻩﻩusernumber=user;

ﻩﻩSendMessage(WM_CLOSE);

ﻩCTeacherDialogtea;

ﻩtea.DoModal();

ﻩ}

elseif(type=="学生")

ﻩ{

ﻩﻩstrSQL.Format("selectName fromStudentwhereNum='%s'and Skey='%s'",user,key);

ﻩrs.Open(CRecordset:

:

snapshot,strSQL);

ﻩﻩi=rs.GetRecordCount();

ﻩif(i==0)

ﻩ{

ﻩAfxMessageBox("用户名或密码错误!

");

ﻩSetDlgItemText(IDC_USER,"");

ﻩﻩSetDlgItemText(IDC_KEY,"");

ﻩﻩreturn;

ﻩ}

ﻩrs.GetFieldValue("Name",username);

ﻩusernumber=user;

ﻩSendMessage(WM_CLOSE);

CStuDialog stu;

ﻩstu.DoModal();

ﻩ}

else

{

ﻩﻩAfxMessageBox("没有该类型!

");

ﻩﻩSetDlgItemText(IDC_USER,"");

SetDlgItemText(IDC_KEY,"");

SetDlgItemText(IDC_TYPE,"");

ﻩﻩreturn;

ﻩ}

}

void CLogonDialog:

:

OnLogcancle() 

{

//TODO:

Add yourcontrolnotificationhandlercode here

ﻩSendMessage(WM_CLOSE);

}

BOOLCLogonDialog:

:

OnInitDialog()

{

ﻩCDialog:

:

OnInitDialog();

ﻩ//TODO:

 Addextra initializationhere

CComboBox* pComb =(CComboBox*)GetDlgItem(IDC_TYPE);

ASSERT(pComb);

ﻩpComb->SetCurSel(0);

returnTRUE; //returnTRUE unless yousetthefocustoacontrol

ﻩ       //EXCEPTION:

OCXPropertyPages shouldreturnFALSE

}

(2)登录界面与学生选课界面连接

#include"stdafx.h"

#include "Student.h"

#include"StuDialog.h"

#include"StudentAdd.h"

#include"LogonDialog.h"

#include "SCCCourseDialog.h"

#include "SCCourseDialog.h"

#include"ChangeKey.h"

#include"CJDialog.h"

#ifdef_DEBUG

#definenewDEBUG_NEW

#undefTHIS_charTHIS_FILE[] =__FILE__;

#endif

/////////////////////////////////////////////////////////////////////////////

// CStuDialogdialog

 

CStuDialog:

CStuDialog(CWnd*pParent/*=NULL*/)

ﻩ:

CDialog(CStuDialog:

:

IDD, pParent)

ﻩ//{{AFX_DATA_INIT(CStuDialog)

//NOTE:

the ClassWizardwilladdmember initialization here

ﻩ//}}AFX_DATA_INIT

}

 

voidCStuDialog:

:

DoDataExchange(CDataExchange*pDX)

{

ﻩCDialog:

DoDataExchange(pDX);

ﻩ//{{AFX_DATA_MAP(CStuDialog)

ﻩ//NOTE:

the ClassWizardwilladdDDXandDDVcallshere

ﻩ//}}AFX_DATA_MAP

}

 

BEGIN_MESSAGE_MAP(CStuDialog,CDialog)

ﻩ//{{AFX_MSG_MAP(CStuDialog)

ON_COMMAND(ID_MENUADDCOURSE,OnMenuaddcourse)

ﻩON_COMMAND(ID_MENURELOG, OnMenurelog)

ON_COMMAND(ID_MENUSTUEXIT,OnMenustuexit)

ON_COMMAND(ID_MENUSEECHOICED, OnMenuseechoiced)

ﻩON_COMMAND(ID_MENUCHANGEKEY, OnMenuchangekey)

ﻩON_COMMAND(ID_MENUCJ, OnMenucj)

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

//CStuDialogmessagehandlers

voidCStuDialog:

OnMenuaddcourse() 

{

ﻩ// TODO:

Addyour command handlercodehere

ﻩCStudentAddcs;

cs.DoModal();

 

void CStuDialog:

OnMenurelog()

ﻩ//TODO:

 Add yourcommand handler code here

SendMessage(WM_CLOSE);

CLogonDialogcl;

ﻩcl.DoModal();

void CStuDialog:

OnMenustuexit()

{

//TODO:

Add yourcommandhandlercodehere

ﻩSendMessage(WM_CLOSE);

voidCStuDialog:

OnMenuseechoiced()

{

ﻩ//TODO:

 Addyourcommand handlercodehere

ﻩCSCCCourseDialogscc;

ﻩscc.DoModal();

}

voidCStuDialog:

OnMenuchangekey()

{

ﻩ// TODO:

 Add yourcommandhandler code here

CChangeKeycck;

ﻩcck.DoModal();

}

void CStuDialog:

:

OnMenucj() 

{

ﻩ//TODO:

Addyourcommandhandlercode here

ﻩCCJDialogccj;

ﻩccj.DoModal();

}

BOOLCStuDialog:

:

OnInitDialog()

{

CDialog:

:

OnInitDialog();

ﻩ//TODO:

Addextra initialization here

CDatabasedb;

db.OpenEx("DSN=Student");

ﻩCRecordsetrs(&db);

CStringstrSQL;

ﻩstrSQL.Format("select Num,Name,Sdepar,Sclass,Sage,Sbitfrom Student where Num='%s'",usernumber);

ﻩrs.Open(CRecordset:

:

snapshot,strSQL);

CString temp1,temp2,temp3,temp4,temp6,temp5;

if(!

rs.IsEOF())

ﻩ{

ﻩrs.GetFieldValue("Num",temp1);

rs.GetFieldValue("Name",temp2);

ﻩrs.GetFieldValue("Sdepar",temp3);

ﻩrs.GetFieldValue("Sclass",temp4);

ﻩrs.GetFieldValue("Sbit",temp5);

ﻩﻩrs.GetFieldValue("Sage",temp6);

}

ﻩSetDlgItemText(IDC_XUEHAO,temp1);

SetDlgItemText(IDC_XINGMING,temp2);

SetDlgItemText(IDC_YUANXI,temp3);

ﻩSetDlgItemText(IDC_BANJI,temp4);

//SetDlgItemText(IDC_AGE,"男");

ﻩif (temp5=="0")

ﻩSetDlgItemText(IDC_AGE,"男");

ﻩ}

else

ﻩ{

ﻩSetDlgItemText(IDC_AGE,"女");

ﻩ}

ﻩSetDlgItemText(IDC_XINGBIE,temp6);

returnTRUE;// return TRUEunlessyou setthefocus to acontrol

   //EXCEPTION:

OCX Property PagesshouldreturnFALSE

}

(3)此外还有登录界面与教师评分界面连接、登录界面与学生修改密码界面连接、与学生删除选修课程界面之间的连接等等。

四、调试和运行

1、数据源连接:

添加数据源

2、选择数据源以及连接成功

 

3、选课系统教师,学生,管理员登录界面

4、管理员查看课程信息

5、管理员修改学生信息

6、管理员添加课程

7、教师查看班上学生

8、教师对学生评分

9、学生登录

10、学生查看成绩

11、学生选课

12、学生修改密码

 

五、总结(心得体会)

通过这数周的努力,这个学生选课管理系统终于完成了。

想想当初,刚开时动工的时候,那真是毫无头绪,根本不知道从哪入手,首先对MFC的相关知识不是很了解,再者对Microsoft Access程序的操作不是很熟悉。

但我们并没有灰心气馁。

通过几天的学习,请教,上网咨询,慢慢的有了一些眉目,同时也感觉不再那么无助。

 虽然,对MicrosoftAccess的了解还不是很充足,但一些简单的操作还是很令我们兴奋。

我也深深体验到要熟练掌握一种操作软件的难度时那么的大。

在制作过程中,有失败,有兴奋。

但我们坚持了下来,遇到困难我们没有灰心,首先的困难就是对信息的收集,对各个表建立属性的调查,通过书本上的介绍和网上的一些资料的启发,这个困难不再困扰着我们。

但最大的困难就是对MFC的操作的学习,从一无所知到作出自己的程序,我们经历了许多的困难。

在座的过程中我们一遍又一遍的建立工程项目,不对出错的时候又一遍又一遍的删除,还有一个困难就是对语句的输入,一个细微的细节都必须十分的注意,如果不认真思考决策,就会出现或大或小的错误,如果早期的错误隐藏下来,对后面的工作影响就会很大,甚至有时要推倒很多前面做的工作重来。

再不懂的地方,上网查询,查看书籍,向同学请问,总之在做MFC的时候花费了我们很多的时间。

有时候,我们自己觉得我们写的程序非常的正确,但是就是编译通不过,在查找错误的过程中,面临着否定自己的过程,非常的痛苦,而且由于自己的经验及各方面的能力的不足,所以进展很缓慢。

最后还是限期的完成本次课程设计。

这次课程设计并不是完全由我们三个人完成的,虽然其他人都有不同的题目要求,但是我们还是相互讨论,相互学习,在自己一筹莫展的时候,其他同学有时候能够想出意想不到的方法!

解决了我们的困难。

总之,通过这个学生选课管理系统的设计,我感到受益匪浅。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1