VC课程设计学生成绩管理系统详解和源码

阅读: 评论:0

VC++课程设计
设计项目:学生成绩管理系统
设计者:张守阳(20102973)拉配
班级:计本10级二班
使用软件:    VC++6.0
使用数据库:  ACCESS
设计流程
一、设计理念
开发一款学生成绩管理程序,实现学生基本信息的录入、查询与浏览和修改操作。以与学生成绩的录入、查询、浏览以与统计分析等功能。以上功能以可视化界面方式进行操作,并将学生成绩信息保存。
二、数据库设计
在这个程序中,所用到的数据库是ACCESS数据库。在数据库中,添加了8个表,分别是NO1OBJECT、NO1STUDENT、NO1STUINFO、NO1TEACHER、NO2OBJECT、NO2STUDENT、NO2STUINFO、NO2TEACHER.
这8个表分别记录着两个班的:成绩概况、学生成绩、学生信息、教师信息。
三、程序设计
u型卡子此成绩管理系统共有两个模块:一个是学生成绩管理模块,一个是学生信息管理模块。在登录成功后(登录用户名和密码都是:admin)会出现主窗口。
149aa在主窗口中可以通过单击两个模块的按钮实现来实现两个模块间的切换。
学生成绩模块所实现的功能是:根据班级选项显示学上成绩信息,并且实现成绩的添加、修改、删除、查询功能。
通用积分学生信息模块能够实现学生信息的显示、添加、修改和删除功能。
四、此程序的介绍
此程序是基于对话框的MFC程序。
所有的弹出式对话框是模态对话框,由于用到的对话框较多,所以定义的类较多,看起来有点眼花缭乱。由于我对MFC掌握程度有限,这个程序做的有点粗糙,既不美观,在功能上也有许多不尽人意的地方,或许还会存在bug。
五、程序的实现
1)、修改APP类
由于此程序用到数据库,所以需要先连接数据源。此程序通过采用代码来连接到所设计的数据源。
首先将设计的数据库复制到工程所在根目录下,再在APP中的initInstance()函数中添加如下代码:
///////加载数据源
if (!AfxSocketInit())
{
AfxMessageBox(IDP_SOCKETS_INIT_FAILED);
return FALSE;
}
CString sPath;
GetModule(NULL,sPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);
sPath.ReleaseBuffer ();
int nPos;
nPos=sPath.ReverseFind ('\\');
sPath=sPath.Left (nPos);
nPos=sPath.ReverseFind('\\');
sPath=sPath.Left (nPos);
CString lpszFile = sPath + "\\mydb.mdb";
char* szDesc;
int mlen;
szDesc=new char[256];
sprintf(szDesc,"DSN=%s? DESCRIPTION=TOC support source? DBQ=%s?
FIL=MicrosoftAccess? DEFAULTDIR=%s?? ","mydb",lpsz);
mlen = strlen(szDesc);
for (int i=0; i<mlen; i++)
{
if (szDesc[i] == '?')
szDesc[i] = '\0';
}
if (FALSE == SQLConfigDataSource(NULL,ODBC_ADD_DSN,"Microsoft Access Driver (*.mdb)\0",(LPCSTR)szDesc))
AfxMessageBox("SQLConfigDataSource Failed");
try
{
CString strConnect;
strConnect.Format("DSN=mydb;");
if(!m_DB.OpenEx(strConnect,CDatabase::useCursorLib))
{
AfxMessageBox("Unable to Connect to the Specified Data Source");
return FALSE ;
}
}
catch(CDBException *pE)
{
pE->ReportError();
pE->Delete();
return FALSE;
}
//////////////////////////////ofp002
其中m_DB是定义的一个CDatabase 对象,用来指向数据库mymdb。
2)、新建CRecordset 数据集类
在项目中,共有四个数据集类,分别是CDRecordset、 CBRecordset、 CTRecordset、CSinfoRecordset。它们分别对应学生成绩表、成绩概况表、教师表和学生信息表。3)、学生成绩模块的代码
BOOL CBaDialog::OnInitDialog()
{
CDialog::OnInitDialog();
CDRecordset m_Set(&theApp.m_DB);
CBRecordset m_bSet(&theApp.m_DB);
CTRecordset m_tSet(&theApp.m_DB);
//////////初始化列表控件ListCtrlx
unsigned 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,LVCFMT_LEFT,80);
}
m_Set.Close();
//////////初始化列表控件ListCtrlb
m_bSet.Open();
m_ListCtrlb.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
for( i=0;i<m_bSet.m_nFields;i++)
{
m_bSet.GetODBCFieldInfo(i,Info);
m_ListCtrlb.InsertColumn(i,Info.m_strName,LVCFMT_LEFT,80);
}
m_bSet.Close();
////////////////////////////////////
/////////////初始化列表控件ListCtrll
m_ListCtrll.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);    m_ListCtrll.InsertColumn(0,_T("科目"),LVCFMT_IMAGE|LVCFMT_LEFT);
m_ListCtrll.InsertColumn(1,"任课老师");
for(i=0;i<2;i++)
m_ListCtrll.SetColumnWidth(i,80);
m_cob.SetCurSel(1);
this->Enable(FALSE);
m_Timer=SetTimer(1,2,NULL);
m_bIsAsc=TRUE;
m_bS=TRUE;
return TRUE;  // return TRUE unless you set the focus to a control              // EXCEPTION: OCX Property Pages should return FALSE }
void CBaDialog::OnStatr()
{
// TODO: Add your control notification handler code here
m_ListCtrlx.DeleteAllItems();
m_ListCtrlb.DeleteAllItems();
m_ListCtrll.DeleteAllItems();
if(m_Set.IsOpen())
m_Set.Close();
if(m_bSet.IsOpen())
m_bSet.Close();
m_cob.GetLBText(m_cob.GetCurSel(),m_Getstring);
this->Select();
if(m_Getstring=="计本一班")
m_tSet.Open();
if(m_Getstring=="计本二班")
m_tSet.Open(AFX_DB_USE_DEFAULT_TYPE,"[NO2TECHER]");
m_nRecordCount=this->Show();    //初始化“学生成绩详单”,并返回字段数    this->display();              //初始化“各科成绩概况”
this->exhibit();              //将teacher表中的记录加载到“任课教师”    m_bS = GetDlgItem(IDC_STATR)->EnableWindow(true);
this->Enable(TRUE);
}
int  CBaDialog::Show()
{
int i=0;
m_Set.MoveFirst();
do
{
CString s;
s.Format("%d",m_Set.m_column1);
m_ListCtrlx.InsertItem(i,s,0);
m_ListCtrlx.SetItemText(i,1,m_Set.m_column2);
s.Format("%.1f",m_Set.m_column3);
m_ListCtrlx.SetItemText(i,2,s);
s.Format("%.1f",m_Set.m_column4);
m_ListCtrlx.SetItemText(i,3,s);
s.Format("%.1f",m_Set.m_column5);
m_ListCtrlx.SetItemText(i,4,s);
s.Format("%.1f",m_Set.m_column6);
m_ListCtrlx.SetItemText(i,5,s);
s.Format("%.1f",m_Set.m_column7);
m_ListCtrlx.SetItemText(i,6,s);

本文发布于:2023-07-02 10:07:39,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/2/160800.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:学生   成绩   数据库
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图