学生选修课系统的设计.docx
《学生选修课系统的设计.docx》由会员分享,可在线阅读,更多相关《学生选修课系统的设计.docx(44页珍藏版)》请在冰豆网上搜索。
![学生选修课系统的设计.docx](https://file1.bdocx.com/fileroot1/2023-1/5/bb15d811-e8c8-4042-80ce-9581d6c37c4b/bb15d811-e8c8-4042-80ce-9581d6c37c4b1.gif)
学生选修课系统的设计
郑州大学物理工程学院
管理信息系统课程论文
题目:
学生选修课信息管理系统设计
年级:
2009级专业:
电子信息科学与技术
姓名:
柳炯学号:
20092250117
2012年6月日
学生选修课信息管理系统设计
摘要:
随着现在计算机技术和网络技术的发展,管理信息系统的作用越来越明显和重要。
作为计算机技术的一部分,使用管理信息系统对学生选修课系统进行管理,具有手工管理所无法媲美的优点。
系统分析:
1、系统流程图如下:
2、系统可行性分析
A、管理上的可行性:
该学生选修课系统管理方法科学,而且现有的管理制度已经成熟、规章制度已经齐全。
B、技术上的可行性:
软件需求:
操作系统WINDOWS2000AdvanceServer以上
硬件需求:
赛扬1.7GCPU、512M内存80G硬盘的计算机
使用语言为:
C语言
编辑工具为:
VC++6.0
C、经济上的可行性:
开发成本:
300元人民币。
效益:
暂时无法具体衡量。
效益/投资比:
暂时无法估算。
投资回收期:
大约2个月。
D、开发工具的选择:
VC++6.0作为前台的开发工具;用记事文本作为后台支持数据库;通过VC来连接到文本数据库并对其编程来实现各种功能。
结论:
综上所述,学生选修课信息管理系统在技术上非常成熟,主客观条件都具备,且具有良好的效益,因此开发此系统是可行的。
3、功能模块划分:
B、功能描述:
1、学生注册信息模块
学生信息添加:
学生进入注册页面,输入学号、密码、院系、班级、年级,然后进行提交。
系统把数据录入学生资料数据库中。
2、课程信息模块
(1)课程信息添加:
管理员用户登录后,进入课程信息管理功能单元,输入课程号,课序号,课程名称,教师姓名,开设院系这些数据后提交数据,完成课程信息地添加操作,此时在选课表中将出现刚才添加的课程的有关信息。
(2)课程信息修改:
管理员用户登录后,进入课程信息管理功能单元,如果是已经登录了,选择要修改的课序号,选定后就可以修改该选定课程的课程编号,课序号,课程名称,教师姓名,开设院系,提交后就得到该门课程修改后的信息。
(3)课程信息删除:
管理员用户登录后,进入课程信息管理功能单元,如果是已经登录了,选择要删除的课程的课序号,提交后,就将选定课程删除了。
(4)已选课程信息的维护:
管理员用户登录后,进入选课程功能单元,就可以看到学生已选的课程,可以通过选择相应的课程号来将相应学生的选课记录删除。
3、学生登录功能模块
输入学生的用户名和密码,然后连接数据库,检验用户登录信息。
如果存在,则进入选课页面;如果用户名不存在或密码不正确,则给出登录失败的提示框。
4、选课功能模块
进入选课页面,选定所要选的课程后,然后提交。
系统自动修改课程数据库的信息,然后在学生数据库添加相关已选定的课程信息。
5、选修课查询模块
该学生登录后进入选修课选课页面后,从学生数据库中调出该学生的信息以及已选的课程信息,显示在下面。
系统设计:
1、根据系统需求分析和系统功能模块结构图来看,该系统应具备如下基本功能:
●学生选课的查询
●学生注册
●已注册管理员的发布、修改、删除选修课程信息
其功能模块结构图如下:
系统层次模块图:
2、模块设计:
(1)用户注册模块:
填写用户名、密码、确认密码
(2)用户登录模块:
填写已注册的用户名称,填写正确的密码,进入主控制页面。
(3)用户选课模块:
学生可以根据选修课信息选择自己所要选择的课程。
(4)用户查询模块:
可以进行查看所选课程的操作。
2、各模块C语言详细设计
(1)登录模块
功能:
本模块主要用于对用户身份进行鉴别。
用户通过表单提供用户名和密码信息,系统根据用户提供的登录信息对用户进行身份查询鉴别。
如果身份合法,则将用户导向系统的选课页面。
输入:
用户名、密码
处理:
(1)输入用户的登录信息:
在页面提供的表单出输入用户的用户名和密码信息,点击“登录”按钮提交表单信息到身份验证页面。
或点击“重置”按钮,重新输入。
(2)用户身份进行验证:
连接数据库,打开用户文本档案信息,检验用户登录信息。
以输入数据“用户名”为查询条件创建数据集查看输入用户名是否存在。
如果存在,继续检验输入的密码是否正确。
密码和用户名都正确,则进入选课页面;如果用户名不存在或密码不正确,则给出登录失败的提示框。
输出:
学生选课页面
(2)学生登录页面图如下图所示:
登录后通过此方法从检索是否有此用户:
#include"stdafx.h"
#include"Ver1.h"
#include"Ver1Dlg.h"
#include"MainWindow.h"
#include"AdminDlg.h"
#include"Student.h"
#include
#include
usingnamespacestd;
#ifdef_DEBUG
#definenewDEBUG_NEW
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
//CAboutDlgdialogusedforAppAbout
classCAboutDlg:
publicCDialog
{
public:
CAboutDlg();
//DialogData
//{{AFX_DATA(CAboutDlg)
enum{IDD=IDD_ABOUTBOX};
//}}AFX_DATA
//ClassWizardgeneratedvirtualfunctionoverrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDVsupport
//}}AFX_VIRTUAL
//Implementation
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg:
:
CAboutDlg():
CDialog(CAboutDlg:
:
IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
voidCAboutDlg:
:
DoDataExchange(CDataExchange*pDX)
{
CDialog:
:
DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
//Nomessagehandlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
//CVer1Dlgdialog
CVer1Dlg:
:
CVer1Dlg(CWnd*pParent/*=NULL*/)
:
CDialog(CVer1Dlg:
:
IDD,pParent)
{
//{{AFX_DATA_INIT(CVer1Dlg)
m_strUserName=_T("");
m_strPassword=_T("");
m_iAdmin=1;
m_nCurLogin=-1;
m_bIsExistUser=FALSE;//默认为不存在用户
//m_StuInfo.clear();
//}}AFX_DATA_INIT
//NotethatLoadIcondoesnotrequireasubsequentDestroyIconinWin32
m_hIcon=AfxGetApp()->LoadIcon(IDI_ICON2);
m_brush.CreateSolidBrush(RGB(208,231,250));
}
voidCVer1Dlg:
:
DoDataExchange(CDataExchange*pDX)
{
CDialog:
:
DoDataExchange(pDX);
//{{AFX_DATA_MAP(CVer1Dlg)
DDX_Text(pDX,IDC_USER,m_strUserName);
DDX_Text(pDX,IDC_PASSWORD,m_strPassword);
DDX_Radio(pDX,IDC_ADMIN,m_iAdmin);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CVer1Dlg,CDialog)
//{{AFX_MSG_MAP(CVer1Dlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(BTN_RESET,OnReset)
ON_BN_CLICKED(BTN_ENTER,OnEnter)
ON_WM_CTLCOLOR()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
//CVer1Dlgmessagehandlers
BOOLCVer1Dlg:
:
OnInitDialog()
{
CDialog:
:
OnInitDialog();
//Add"About..."menuitemtosystemmenu.
//IDM_ABOUTBOXmustbeinthesystemcommandrange.
ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX<0xF000);
CMenu*pSysMenu=GetSystemMenu(FALSE);
if(pSysMenu!
=NULL)
{
CStringstrAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if(!
strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);
}
}
//Settheiconforthisdialog.Theframeworkdoesthisautomatically
//whentheapplication'smainwindowisnotadialog
SetIcon(m_hIcon,TRUE);//Setbigicon
SetIcon(m_hIcon,FALSE);//Setsmallicon
//TODO:
Addextrainitializationhere
//SetDialogBkCo
LoadStudentInfo();//Loadstudentinfomation
returnTRUE;//returnTRUEunlessyousetthefocustoacontrol
}
voidCVer1Dlg:
:
OnSysCommand(UINTnID,LPARAMlParam)
{
if((nID&0xFFF0)==IDM_ABOUTBOX)
{
CAboutDlgdlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog:
:
OnSysCommand(nID,lParam);
}
}
//Ifyouaddaminimizebuttontoyourdialog,youwillneedthecodebelow
//todrawtheicon.ForMFCapplicationsusingthedocument/viewmodel,
//thisisautomaticallydoneforyoubytheframework.
voidCVer1Dlg:
:
OnPaint()
{
if(IsIconic())
{
CPaintDCdc(this);//devicecontextforpainting
SendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc(),0);
//Centericoninclientrectangle
intcxIcon=GetSystemMetrics(SM_CXICON);
intcyIcon=GetSystemMetrics(SM_CYICON);
CRectrect;
GetClientRect(&rect);
intx=(rect.Width()-cxIcon+1)/2;
inty=(rect.Height()-cyIcon+1)/2;
//Drawtheicon
dc.DrawIcon(x,y,m_hIcon);
}
else
{
CDialog:
:
OnPaint();
}
}
//Thesystemcallsthistoobtainthecursortodisplaywhiletheuserdrags
//theminimizedwindow.
HCURSORCVer1Dlg:
:
OnQueryDragIcon()
{
return(HCURSOR)m_hIcon;
}
voidCVer1Dlg:
:
OnReset()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
m_strUserName=_T("");
m_strPassword=_T("");
m_iAdmin=1;
UpdateData(FALSE);
}
voidCVer1Dlg:
:
OnEnter()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
UpdateData(TRUE);
switch(m_iAdmin)
{
case1:
{
if(!
m_strUserName.GetLength())
{
MessageBox("用户名不能为空!
","提示",MB_OK|
MB_ICONINFORMATION);
return;
}
if(checkPassword())
{
ShowWindow(SW_HIDE);//先隐藏登录窗口
CMainWindowdlg;
dlg.pDlg=this;
dlg.DoModal();
}
}
break;
case0:
if(m_strUserName=="admin"&&m_strPassword=="admin")
{
ShowWindow(SW_HIDE);//先隐藏登录窗口
CAdminDlgdlg;
dlg.pDlg=this;
dlg.DoModal();
}
else
MessageBox("用户名或密码错误!
\t","提示",MB_OK|MB_ICONINFORMATION);
break;
}
ShowWindow(SW_NORMAL);
m_strUserName="";
m_strPassword="";
UpdateData(FALSE);
}
voidCVer1Dlg:
:
LoadStudentInfo()
{
//Loadstudentinfomation
ifstreaminfile;
infile.open("data\\student.txt",ios:
:
in);
if(infile)
{
charbuf[50];
while(!
infile.eof())
{
CStudenttmpStuInfo;
infile>>buf;
tmpStuInfo.m_strID=buf;
infile>>buf;
tmpStuInfo.m_strName=buf;
infile>>buf;
tmpStuInfo.m_strPassword=buf;
infile>>buf;
tmpStuInfo.m_strDepartment=buf;
infile>>buf;
tmpStuInfo.m_strGreade=buf;
infile>>buf;
tmpStuInfo.m_strClass=buf;
infile>>tmpStuInfo.m_nCourseCnt;
for(inti=0;i{
intnCourseID;
infile>>nCourseID;
tmpStuInfo.m_nSelCourse.insert(nCourseID);
}
m_StuInfo.push_back(tmpStuInfo);
}
infile.close();
}
}
BOOLCVer1Dlg:
:
checkPassword()
{
UpdateData();
for(inti=0;i!
=m_StuInfo.size();i++)
{
if(m_StuInfo[i].m_strID==m_strUserName)
{
if(m_StuInfo[i].m_strPassword!
=m_strPassword)
{
MessageBox("密码错误,请重新输入!
",
"提示",MB_OK|MB_ICONINFORMATION);
m_strPassword="";
UpdateData(FALSE);
returnFALSE;
}
else
{
m_nCurLogin=i;
returnTRUE;
}
}
}
MessageBox("用户名不存在,请重新输入!
",
"提示",MB_OK|MB_ICONINFORMATION);
m_strPassword="";
UpdateData(FALSE);
returnFALSE;
}
voidCVer1Dlg:
:
SaveStudentInfo()
{
ofstreamoutfile;
outfile.open("data\\student.txt",ios:
:
out);
for(inti=0;i!
=m_StuInfo.size();i++)
{
if(i)outfile<<"\n";
outfile<<(LPCTSTR)(m_StuInfo[i].m_strID);//写入学号
outfile<<"\t";
outfile<<(LPCTSTR)(m_StuInfo[i].m_strName);//写入姓名
outfile<<"\t";
outfile<<(LPCTSTR)(m_StuInfo[i].m_strPassword);//写入密码
outfile<<"\t";
outfile<<(LPCTSTR)(m_StuInfo[i].m_strDepartment);
outfile<<"\t";
outfile<<(LPCTSTR)(m_StuInfo[i].m_strGreade);
outfile<<"\t";
outfile<<(LPCTSTR)(m_StuInfo[i].m_strClass);
outfile<<"\t";
outfile<//写入各门课程编号
for(set:
:
iteratorit=m_StuInfo[i].m_nSelCourse.begin();
it!
=m_StuInfo[i].m_nSelCourse.end();it++)
{
outfile<<"\t"<<*it;
}
}
outfile.close();
}
HBRUSHCVer1Dlg:
:
OnCtlColor(CDC*pDC,CWnd*pWnd,UINTnCtlColor)
{
HBRUSHhbr=CDialog:
:
OnCtlColor(pDC,pWnd,nCtlColor);
//TODO:
ChangeanyattributesoftheDChere
if(pWnd->GetDlgCtrlID()==IDC_ADMIN||pWnd->GetDlgCtrlID()==IDC_STUDENT)
{
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(0,0,255));
returnm_brush;
}
//TODO:
Returnadifferentbrushifthedefaultisnotdesired
returnhbr;
}
(3)学生注