大综合应用学生学习成绩管理程序刘吉林.docx

上传人:b****5 文档编号:7598792 上传时间:2023-01-25 格式:DOCX 页数:25 大小:20.69KB
下载 相关 举报
大综合应用学生学习成绩管理程序刘吉林.docx_第1页
第1页 / 共25页
大综合应用学生学习成绩管理程序刘吉林.docx_第2页
第2页 / 共25页
大综合应用学生学习成绩管理程序刘吉林.docx_第3页
第3页 / 共25页
大综合应用学生学习成绩管理程序刘吉林.docx_第4页
第4页 / 共25页
大综合应用学生学习成绩管理程序刘吉林.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

大综合应用学生学习成绩管理程序刘吉林.docx

《大综合应用学生学习成绩管理程序刘吉林.docx》由会员分享,可在线阅读,更多相关《大综合应用学生学习成绩管理程序刘吉林.docx(25页珍藏版)》请在冰豆网上搜索。

大综合应用学生学习成绩管理程序刘吉林.docx

大综合应用学生学习成绩管理程序刘吉林

 

课程实验报告

 

课程名称VC++程序设计

设计题目学生成绩管理系统

专业班级2010级计算机科学与技术专业2班

学号20101030402XX

姓名XXX

指导教师刘吉林

 

设计流程

一、设计理念

开发一款学生成绩管理程序,实现学生基本信息的录入、查询及浏览和修改操作。

以及学生成绩的录入、查询、浏览以及统计分析等功能。

以上功能以可视化界面方式进行操作,并将学生成绩信息保存。

二、数据库设计

在这个程序中,所用到的数据库是ACCESS数据库。

在数据库中,添加了8个表,分别是NO1OBJECT、NO1STUDENT、NO1STUINFO、NO1TEACHER、NO2OBJECT、NO2STUDENT、NO2STUINFO、NO2TEACHER.

这8个表分别记录着两个班的:

成绩概况、学生成绩、学生信息、教师信息。

三、程序设计

此成绩管理系统共有两个模块:

一个是学生成绩管理模块,一个是学生信息管理模块。

在登录成功后(登录用户名和密码都是:

admin)会出现主窗口。

在主窗口中可以通过单击两个模块的按钮实现来实现两个模块间的切换。

学生成绩模块所实现的功能是:

根据班级选项显示学上成绩信息,并且实现成绩的添加、修改、删除、查询功能。

学生信息模块能够实现学生信息的显示、添加、修改和删除功能。

四、此程序的介绍

此程序是基于对话框的MFC程序。

所有的弹出式对话框是模态对话框,由于用到的对话框较多,所以定义的类较多,看起来有点眼花缭乱。

由于我对MFC掌握程度有限,这个程序做的有点粗糙,既不美观,在功能上也有许多不尽人意的地方,或许还会存在bug。

五、程序的实现

1)、修改APP类

由于此程序用到数据库,所以需要先连接数据源。

此程序通过采用代码来连接到所设计的数据源。

首先将设计的数据库复制到工程所在根目录下,再在APP中的initInstance()函数中添加如下代码:

///////加载数据源

if(!

AfxSocketInit())

{

AfxMessageBox(IDP_SOCKETS_INIT_FAILED);

returnFALSE;

}

CStringsPath;

GetModuleFileName(NULL,sPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);

sPath.ReleaseBuffer();

intnPos;

nPos=sPath.ReverseFind('\\');

sPath=sPath.Left(nPos);

nPos=sPath.ReverseFind('\\');

sPath=sPath.Left(nPos);

CStringlpszFile=sPath+"\\mydb.mdb";

char*szDesc;

intmlen;

szDesc=newchar[256];

sprintf(szDesc,"DSN=%s?

DESCRIPTION=TOCsupportsource?

DBQ=%s?

FIL=MicrosoftAccess?

DEFAULTDIR=%s?

?

","mydb",lpszFile,sPath);

 

mlen=strlen(szDesc);

for(inti=0;i

{

if(szDesc[i]=='?

')

szDesc[i]='\0';

}

if(FALSE==SQLConfigDataSource(NULL,ODBC_ADD_DSN,"MicrosoftAccessDriver(*.mdb)\0",(LPCSTR)szDesc))

AfxMessageBox("SQLConfigDataSourceFailed");

try

{

CStringstrConnect;

strConnect.Format("DSN=mydb;");

if(!

m_DB.OpenEx(strConnect,CDatabase:

:

useCursorLib))

{

AfxMessageBox("UnabletoConnecttotheSpecifiedDataSource");

returnFALSE;

}

}

catch(CDBException*pE)

{

pE->ReportError();

pE->Delete();

returnFALSE;

}

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

其中m_DB是定义的一个CDatabase对象,用来指向数据库mymdb。

2)、新建CRecordset数据集类

在项目中,共有四个数据集类,分别是CDRecordset、CBRecordset、CTRecordset、CSinfoRecordset。

它们分别对应学生成绩表、成绩概况表、教师表和学生信息表。

3)、学生成绩模块的代码

BOOLCBaDialog:

:

OnInitDialog()

{

CDialog:

:

OnInitDialog();

CDRecordsetm_Set(&theApp.m_DB);

CBRecordsetm_bSet(&theApp.m_DB);

CTRecordsetm_tSet(&theApp.m_DB);

//////////初始化列表控件ListCtrlx

unsignedi=0;

CODBCFieldInfoInfo;

m_Set.Open();

m_ListCtrlx.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);

for(i=0;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.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;

returnTRUE;//returnTRUEunlessyousetthefocustoacontrol

//EXCEPTION:

OCXPropertyPagesshouldreturnFALSE

}

voidCBaDialog:

:

OnStatr()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

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);

}

intCBaDialog:

:

Show()

{

inti=0;

m_Set.MoveFirst();

do

{

CStrings;

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);

s.Format("%.1f",m_Set.m_column8);

m_ListCtrlx.SetItemText(i,7,s);

s.Format("%.2f",m_Set.m_column9);

m_ListCtrlx.SetItemText(i,8,s);

i++;

m_Set.MoveNext();

}while(!

m_Set.IsEOF());

m_Set.Close();

returni;

}

voidCBaDialog:

:

display()

{

inti=0;

m_bSet.MoveFirst();

do

{

CStrings;

m_ListCtrlb.InsertItem(i,m_bSet.m_column1,0);

s.Format("%.1f",m_bSet.m_column2);

m_ListCtrlb.SetItemText(i,1,s);

s.Format("%.2f",m_bSet.m_column3);

m_ListCtrlb.SetItemText(i,2,s);

s.Format("%d",m_bSet.m_column4);

m_ListCtrlb.SetItemText(i,3,s);

s.Format("%d",m_bSet.m_column5);

m_ListCtrlb.SetItemText(i,4,s);

i++;

m_bSet.MoveNext();

}while(!

m_bSet.IsEOF());

m_bSet.Close();

}

voidCBaDialog:

:

exhibit()

{

inti=0;

do

{

m_ListCtrll.InsertItem(i,m_tSet.m_column1,0);

m_ListCtrll.SetItemText(i,1,m_tSet.m_column2);

i++;

m_tSet.MoveNext();

}while(!

m_tSet.IsEOF());

m_tSet.Close();

}

voidCBaDialog:

:

Enable(BOOLp)

{

BOOLHB;

HB=p;

GetDlgItem(IDC_ADD)->EnableWindow(HB);

GetDlgItem(IDC_DELECT)->EnableWindow(HB);

GetDlgItem(IDC_EDIT)->EnableWindow(HB);

GetDlgItem(IDC_FIND)->EnableWindow(HB);

GetDlgItem(IDC_ALL)->EnableWindow(HB);

}

CStringCBaDialog:

:

Select()//班级的选择

{

if(m_Getstring=="计本一班")

{

m_Set.Open();

m_bSet.Open();

}

else

{

m_Set.Open(AFX_DB_USE_DEFAULT_TYPE,"[NO2STUDENT]");

m_bSet.Open(AFX_DB_USE_DEFAULT_TYPE,"[NO2OBJECT]");

}

returnm_Getstring;

}

voidCBaDialog:

:

Equal()

{

for(inti=0;i<5;i++)

{

floatp=0;

if(i==0)

p=m_Set.m_column3;

if(i==1)

p=m_Set.m_column4;

if(i==2)

p=m_Set.m_column5;

if(i==3)

p=m_Set.m_column6;

if(i==4)

p=m_Set.m_column7;

 

m_bSet.Edit();

if(Selec==FALSE)

{

m_bSet.m_column2-=p;

m_bSet.m_column3=(float)(m_bSet.m_column2/m_nRecordCount);

if(p>=60)

m_bSet.m_column4-=1;

if(p>=80)

m_bSet.m_column5-=1;

}

else

{

m_bSet.m_column2+=p;

m_bSet.m_column3=(float)(m_bSet.m_column2/m_nRecordCount);

if(p>=60)

m_bSet.m_column4+=1;

if(p>=80)

m_bSet.m_column5+=1;

}

m_bSet.Update();

if(!

m_bSet.IsEOF())

m_bSet.MoveNext();

else

break;

}

}

voidCBaDialog:

:

Xuan()

{

m_ListCtrlb.DeleteAllItems();

this->display();

m_ListCtrlx.DeleteAllItems();

this->Show();

}

voidCBaDialog:

:

OnTimer(UINTnIDEvent)

{

//TODO:

Addyourmessagehandlercodehereand/orcalldefault

CStringm_string;

m_cob.GetLBText(m_cob.GetCurSel(),m_string);

if(m_Getstring!

=m_string)

{

GetDlgItem(IDC_STATR)->EnableWindow(TRUE);

this->Enable(FALSE);

}

CDialog:

:

OnTimer(nIDEvent);

}

voidCBaDialog:

:

OnAdd()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

Selec=TRUE;

CAddialogdlg;

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

if(m_Set.IsOpen())

m_Set.Close();

if(m_bSet.IsOpen())

m_bSet.Close();

if(m_tSet.IsOpen())

m_tSet.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]");

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

if(dlg.DoModal()==IDOK)

{

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_fmaths;

m_Set.m_column4=dlg.m_fphysical;

m_Set.m_column5=dlg.m_fchemistry;

m_Set.m_column6=dlg.m_fenglish;

m_Set.m_column7=dlg.m_fpolitic;

m_Set.m_column8=dlg.m_fmaths+dlg.m_fphysical+dlg.m_fchemistry+dlg.m_fenglish+dlg.m_fpolitic;

m_Set.m_column9=(float)(m_Set.m_column8/5);

this->Equal();

m_Set.Update();//Update()一定放在Equal()后

m_Set.Requery();

this->Xuan();

}

}

 

voidCBaDialog:

:

OnDelect()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

CDelectDialogdlg;

Selec=FALSE;

if(dlg.DoModal()==IDOK)

{

this->Select();

m_Set.MoveFirst();

BOOLsel=FALSE;

do

{

if(m_Set.m_column1!

=dlg.m_nxue)

m_Set.MoveNext();

else

{

m_nRecordCount-=1;

sel=TRUE;

m_bSet.MoveFirst();

this->Equal();

m_Set.Delete();

m_Set.Requery();

break;

}

}while(!

m_Set.IsEOF());

if(sel==FALSE)

{

AfxMessageBox("没有此记录");

return;

}

else

this->Xuan();

}

}

voidCBaDialog:

:

OnFind()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

CFinDialogdlg;

if(dlg.DoModal()==IDOK)

{

this->Select();//选择班级

m_bSet.Close();

if(dlg.m_Getstring2==">=")

m_Set.m_strFilter.Format("[%s]>=%.2f",dlg.m_Getstring1,dlg.m_find);

if(dlg.m_Getstring2=="=")

m_Set.m_strFilter.Format("[%s]=%.2f",dlg.m_Getstring1,dlg.m_find);

if(dlg.m_Getstring2=="<=")

m_Set.m_strFilter.Format("[%s]<=%.2f",dlg.m_Getstring1,dlg.m_find);

m_ListCtrlx.DeleteAllItems();

m_Set.Requery();

if(m_Set.IsEOF())

{

AfxMessageBox("没有符合条件的记录");

m_Set.Close();

return;

}

else

this->Show();

}

}

voidCBaDialog:

:

OnAll()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

this->Select();

m_bSet.Close();

m_Set.m_strFilter.Empty();

m_Set.Requery();

m_ListCtrlx.DeleteAllItems();

this->Show();

}

voidCBaDialog:

:

OnEdit()

{

//TODO:

Addyourcon

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

当前位置:首页 > 农林牧渔 > 林学

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

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