学生选修课系统的设计Word文档下载推荐.docx
《学生选修课系统的设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《学生选修课系统的设计Word文档下载推荐.docx(44页珍藏版)》请在冰豆网上搜索。
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"
Ver1.h"
Ver1Dlg.h"
MainWindow.h"
AdminDlg.h"
Student.h"
#include<
fstream>
vector>
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();
//NotethatLoadIcondoesnotrequireasubsequentDestroyIconinWin32
m_hIcon=AfxGetApp()->
LoadIcon(IDI_ICON2);
m_brush.CreateSolidBrush(RGB(208,231,250));
voidCVer1Dlg:
//{{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);
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()
//CVer1Dlgmessagehandlers
BOOLCVer1Dlg:
OnInitDialog()
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);
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
OnSysCommand(UINTnID,LPARAMlParam)
if((nID&
0xFFF0)==IDM_ABOUTBOX)
CAboutDlgdlgAbout;
dlgAbout.DoModal();
else
CDialog:
OnSysCommand(nID,lParam);
//Ifyouaddaminimizebuttontoyourdialog,youwillneedthecodebelow
//todrawtheicon.ForMFCapplicationsusingthedocument/viewmodel,
//thisisautomaticallydoneforyoubytheframework.
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);
OnPaint();
//Thesystemcallsthistoobtainthecursortodisplaywhiletheuserdrags
//theminimizedwindow.
HCURSORCVer1Dlg:
OnQueryDragIcon()
return(HCURSOR)m_hIcon;
OnReset()
Addyourcontrolnotificationhandlercodehere
UpdateData(FALSE);
OnEnter()
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=="
)
ShowWindow(SW_HIDE);
CAdminDlgdlg;
dlg.pDlg=this;
dlg.DoModal();
else
MessageBox("
用户名或密码错误!
\t"
MB_OK|MB_ICONINFORMATION);
ShowWindow(SW_NORMAL);
m_strUserName="
;
m_strPassword="
LoadStudentInfo()
//Loadstudentinfomation
ifstreaminfile;
infile.open("
data\\student.txt"
ios:
in);
if(infile)
charbuf[50];
while(!
infile.eof())
CStudenttmpStuInfo;
infile>
>
buf;
tmpStuInfo.m_strID=buf;
tmpStuInfo.m_strName=buf;
tmpStuInfo.m_strPassword=buf;
tmpStuInfo.m_strDepartment=buf;
tmpStuInfo.m_strGreade=buf;
tmpStuInfo.m_strClass=buf;
tmpStuInfo.m_nCourseCnt;
for(inti=0;
i<
i++)
intnCourseID;
infile>
nCourseID;
tmpStuInfo.m_nSelCourse.insert(nCourseID);
}
m_StuInfo.push_back(tmpStuInfo);
infile.close();
checkPassword()
UpdateData();
for(inti=0;
i!
=m_StuInfo.size();
if(m_StuInfo[i].m_strID==m_strUserName)
if(m_StuInfo[i].m_strPassword!
=m_strPassword)
密码错误,请重新输入!
"
m_strPassword="
UpdateData(FALSE);
returnFALSE;
else
m_nCurLogin=i;
returnTRUE;
}
MessageBox("
用户名不存在,请重新输入!
"
returnFALSE;
SaveStudentInfo()
ofstreamoutfile;
outfile.open("
out);
if(i)outfile<
<
\n"
outfile<
(LPCTSTR)(m_StuInfo[i].m_strID);
//写入学号
(LPCTSTR)(m_StuInfo[i].m_strName);
//写入姓名
(LPCTSTR)(m_StuInfo[i].m_strPassword);
//写入密码
(LPCTSTR)(m_StuInfo[i].m_strDepartment);
(LPCTSTR)(m_StuInfo[i].m_strGreade);
(LPCTSTR)(m_StuInfo[i].m_strClass);
m_StuInfo[i].m_nCourseCnt;
//写入所选课程总数
//写入各门课程编号
for(set<
int>
iteratorit=m_StuInfo[i].m_nSelCourse.begin();
it!
=m_StuInfo[i].m_nSelCourse.end();
it++)
outfile<
*it;
outfile.close();
HBRUSHCVer1Dlg:
OnCtlColor(CDC*pDC,CWnd*pWnd,UINTnCtlColor)
HBRUSHhbr=CDialog:
OnCtlColor(pDC,pWnd,nCtlColor);
ChangeanyattributesoftheDChere
if(pWnd->
GetDlgCtrlID()==IDC_ADMIN||pWnd->
GetDlgCtrlID()==IDC_STUDENT)
pDC->
SetBkMode(TRANSPARENT);
SetTextColor(RGB(0,0,255));
returnm_brush;
Returnadifferentbrushifthedefaultisnotdesired
returnhbr;
(3)学生注