《VBNet程序设计》概要.docx

上传人:b****5 文档编号:27739694 上传时间:2023-07-04 格式:DOCX 页数:20 大小:22.40KB
下载 相关 举报
《VBNet程序设计》概要.docx_第1页
第1页 / 共20页
《VBNet程序设计》概要.docx_第2页
第2页 / 共20页
《VBNet程序设计》概要.docx_第3页
第3页 / 共20页
《VBNet程序设计》概要.docx_第4页
第4页 / 共20页
《VBNet程序设计》概要.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

《VBNet程序设计》概要.docx

《《VBNet程序设计》概要.docx》由会员分享,可在线阅读,更多相关《《VBNet程序设计》概要.docx(20页珍藏版)》请在冰豆网上搜索。

《VBNet程序设计》概要.docx

《VBNet程序设计》概要

 

《VB.Net程序设计》

实训指导书

 

班级:

06级计算机网络技术

指导教师:

丁巨澜

一、实训目的

目的是通过本综合实训,使学生加强对系统功能设计、系统模块设计、数据库设计和系统详细设计等方面的了解和运用。

二、实训内容

1.制作图书管理信息系统

1)首先设计数据库必须包含学生的基本信息(字段可根据需要自己设计)

2)程序运行必须有用户登录界面用户名和密码正确才能进入系统

3)图书管理模块包含图书基本信息添加、查询和修改功能

2.制作员工信息管理系统

3.制作学生成绩管理系统

三、评分标准

序号

实训报告内容

分值

1

用户登录介绍

20分

2

信息添加功能介绍

20分

3

信息查询功能介绍

20分

4

信息修改功能介绍

20分

5

实训总结

20分

四、成绩评定

总成绩=实训报告*50%+上机测试*50%

五、时间安排计划

时间

内容

12-29

选题、需求分析

12-30

设计数据库、界面、流程图

1-5

程序代码编写

1-6

调试

1-7

总结报告

六、案例设计(学生成绩管理)描述

(一)程序功能:

1.基本功能:

1)根据教务处分配的教师ID和密码进行身份验证登录。

2)根据课程参数文件、学生名册文件输入成绩。

3)设定平时成绩、期中成绩、期末成绩等比例分配,计算出学期成绩。

4)生成成绩统计文件,其中包括各分数段的人数统计。

5)显示成绩统计文件内容。

2.扩展功能:

1)打印成绩统计文件内容。

2)能根据根据设定的分数段,计算等级,学分绩点。

3)能根据选定字段进行排序。

4)生成成绩统计文件具有一定的容错和防止篡改的功能。

(二)操作说明:

a)将Grade.exe可执行程序和Access数据库bolide.mdb放在同一工作路径下.

b)选择一个教师ID,输入教务处分配的密码,进行身份验证和登录(注:

所有的教师ID所对应的密码均为:

99001166)。

c)如密码正确则进入界面,在班级下拉列表框中选择您所教的班级,在课程下拉列表框中选择你所教的课程。

之后会在表格中出现这个班的学生的相关信息。

d)点击相表格的字段表头,可以对表格的内容进行按相应字段进行排序,方便了查看与设置。

e)在查看控制的控件中有四个按钮:

首项按钮,前一项按钮,下一项按钮,末项按钮。

点击首项按钮可以查看第一项记录,点击前一项按钮可以查看当前选择记录的前一项记录(pre),点击下一项按钮可以查看当前记录的下一项记录(next)。

点击末项按钮可以查看表格中的最一项记录。

操作小技巧:

当要读取下一个记录时,按快捷键:

Alt+D,当要读取前一个记录时,按快捷键Alt+A或者按↑↓键进行选择

f)在查看控件的下面是一些编辑控件:

如姓名,学号,平时成绩,期中成绩,期末成绩,备注,学期成绩。

其中姓名,学号,学期成绩是不可编辑的因为这些信息是教务处给定的,不可更改。

而其中的平时成绩,期中成绩,期末成绩是可更改的。

是给老师用于输入学生成绩的。

g)当要对学生成绩信息进行录入和修改的时候,直接在这四个编辑框中输入信息,便按回车键。

h)当到了学期结束的时候,可以选择平时成绩比例下拉列表里的比例,和期中成绩比例列表框里的比例后,点击“统计学期成绩”对学期成绩进行成绩统计。

i)当统计完学期成绩,可以单击“打印按钮”。

其打印结果与显示一致。

(三)程序结构描述:

此软件是用visual2003.net平台,结合微软Access数据库开发的。

用Access新建一个数据库bolide.mdb,在数据库中新建三个基本表:

Tec、T_C、Student。

其结构如下:

数据库Bolide.mdb(Tec、T_C、Student)

基本表Tec(Num、Tec_ID、Tec_Passwor、d)

T_C(ClassID、Tec_ID、Course)

Student(班级、课程、学号、姓名、平时成绩、期中成绩、期末成绩、学期成绩、备注)

(四)主要算法和源程序说明:

教师登录:

voidCGradeDlg:

:

OnBnClickedLogin()

{//TODO:

在此添加控件通知处理程序代码

UpdateData();

CStringsPath;

CDaoRecordsetRecSet(&db);//读取数据库的记录集

CStringstrName;

COleVariantvar;

CStringteacher;

longTec_num;

longi=List_Tec.GetCurSel();

GetCurrentDirectory(MAX_PATH,sPath.GetBuffer(MAX_PATH));//得到当前路径

sPath.ReleaseBuffer();

CStringlpszFile=sPath"\\bolide.mdb";//得到文件的精确路径

CFileFindfFind;

BOOLbSuccess;

bSuccess=fFind.FindFile(lpszFile);//判断是否找到数据库的文件

fFind.Close();

if(bSuccess)

//db.Open(lpszFile);

//****************************************************

db.Open(lpszFile,0,0,";PWD=99001166");//数据库密码

//****************************************************

RecSet.Open(AFX_DAO_USE_DEFAULT_TYPE,"SELECT*FROMTec",NULL);//打开记录集

while(!

RecSet.IsEOF())//有没有到表结尾

{

RecSet.GetFieldValue("Tec_Password",var);

strName=(LPCSTR)var.pbstrVal;

RecSet.GetFieldValue("num",var);

Tec_num=(long)var.plVal;

if(strName==Tec_Password&&i==Tec_num)

{

List_Tec.GetLBText(i,teacher);

InfoDlgmodlg;

modlg.ChildTeacher=teacher;

EndDialog(FALSE);//关闭登登录对话框

modlg.DoModal();//显示编辑对话框

break;

}

RecSet.MoveNext();//记录下移

}

if(RecSet.IsEOF())//如果找到记录尾,也没有找到符合条件的记录,则弹出对话框,提示用户ID或密码不正确。

AfxMessageBox("用户ID或密码不正确,无法登录.");

//关闭记录集及库

RecSet.Close();//关闭记录集

db.Close();//关闭数据库

}

Ø点击列标对相关字段进行排序:

voidInfoDlg:

:

OnColumnclickList1(NMHDR*pNMHDR,LRESULT*pResult)

{

if(Stu_ListCtrl.GetItemCount()<=0)

return;

NM_LISTVIEW*pNMListView=(NM_LISTVIEW*)pNMHDR;

CDaoFieldInfom_fieldinfo;

switch(pNMListView->iSubItem){

case0:

RecSet->GetFieldInfo(0,m_fieldinfo);

LoadSortList(CString(m_fieldinfo.m_strName));//得到第一个标头的字段名

break;

case1:

RecSet->GetFieldInfo(1,m_fieldinfo);

LoadSortList(CString(m_fieldinfo.m_strName));//得到第二个标头的字段名

break;

case2:

RecSet->GetFieldInfo(2,m_fieldinfo);

LoadSortList(CString(m_fieldinfo.m_strName));//得到第三个标头的字段名

break;

case3:

RecSet->GetFieldInfo(3,m_fieldinfo);

LoadSortList(CString(m_fieldinfo.m_strName));//得到第四个标头的字段名

break;

case4:

RecSet->GetFieldInfo(4,m_fieldinfo);

LoadSortList(CString(m_fieldinfo.m_strName));//得到第五个标头的字段名

break;

case5:

RecSet->GetFieldInfo(5,m_fieldinfo);

LoadSortList(CString(m_fieldinfo.m_strName));//得到第六个标头的字段名

break;

case6:

RecSet->GetFieldInfo(6,m_fieldinfo);

LoadSortList(CString(m_fieldinfo.m_strName));//得到第七个标头的字段名

break;

default:

LoadSortList(CString(""));//default:

nosort.

break;

}

//*pResult=0;

}

Ø对CListCtrl控件中的内容进行打印:

voidInfoDlg:

:

OnPrint()

{//TODO:

在此添加控件通知处理程序代码

if(Stu_ListCtrl.GetItemCount()<=0)//如果CListCtrl控件中的行为空则返加,什么都不做

return;

PRNINFOPrnInfo={0};//设置打印信息

PrnInfo.hListView=Stu_ListCtrl.m_hWnd;//设置打印视图句柄

PrnInfo.hWnd=this->m_hWnd;//设置打印句柄

PrnInfo.IsPrint=FALSE;//是否打印

PrnInfo.nCurPage=1;//当前页

PrnInfo.nMaxLine=Stu_ListCtrl.GetItemCount();//最大行数

CPreParentDlgPreView;//定义一个CpreParent对象

DlgPreView.SetCallBackFun(DrawInfo,PrnInfo);//设置打印视图的信息

DlgPreView.DoModal();//执行打印对话框

}

voidInfoDlg:

:

DrawInfo(CDC&memDC,PRNINFOPrnInfo)

{

if(memDC.m_hDC==NULL)

return;

intnCurPage=PrnInfo.nCurPage;//当前页

BOOLIsPrint=PrnInfo.IsPrint;//是否打印

intnMaxPage=PrnInfo.nCountPage;//最大页码

HWNDhWnd=PrnInfo.hWnd;

HWNDhList=PrnInfo.hListView;

CStringcsLFinality,csRFinality;

CTimetime;

time=CTime:

:

GetCurrentTime();//获得当前的日期

csLFinality=time.Format("报表日期:

%Y-%m-%d");

csRFinality.Format("第%i页/共%i页",nCurPage,nMaxPage);

CStringszTitle=str_class;//设置打印的标题,即打印的第一页的最上面的标题

CRectrc,rt1,rt2,rt3,rt4,rt5,rt6,rt7;//为打印的七列设置矩形区域

CPen*hPenOld;//定义画笔

CPencPen;//定义画笔

CFontTitleFont,DetailFont,*oldfont;//定义字体

//标题字体

TitleFont.CreateFont(-MulDiv(14,memDC.GetDeviceCaps(LOGPIXELSY),72),

0,0,0,FW_NORMAL,0,0,0,GB2312_CHARSET,

OUT_STROKE_PRECIS,CLIP_STROKE_PRECIS,DRAFT_QUALITY,

VARIABLE_PITCH|FF_SWISS,_T("黑体"));

//细节字体

DetailFont.CreateFont(-MulDiv(10,memDC.GetDeviceCaps(LOGPIXELSY),72),

0,0,0,FW_NORMAL,0,0,0,GB2312_CHARSET,

OUT_STROKE_PRECIS,CLIP_STROKE_PRECIS,DRAFT_QUALITY,

VARIABLE_PITCH|FF_SWISS,_T("宋体"));//粗笔

cPen.CreatePen(PS_SOLID,2,RGB(0,0,0));

intxP=GetDeviceCaps(memDC.m_hDC,LOGPIXELSX);//x方向每英寸像素点数

intyP=GetDeviceCaps(memDC.m_hDC,LOGPIXELSY);//y方向每英寸像素点数

DOUBLExPix=(DOUBLE)xP*10/254;//每mm宽度的像素

DOUBLEyPix=(DOUBLE)yP*10/254;//每mm高度的像素

DOUBLEfAdd=7*yPix;//每格递增量

DOUBLEnTop=25*yPix;//第一页最上线

intiStart=0;//从第几行开始读取

DOUBLEnBottom=nTopB5_ONELINE*fAdd;

if(nCurPage!

=1)

nTop=25*yPix-fAdd;//非第一页最上线

if(nCurPage==2)

iStart=B5_ONELINE;

if(nCurPage>2)

iStart=B5_ONELINE(nCurPage-2)*B5_OTHERLINE;

DOUBLEnLeft=15*xPix;//最左线

DOUBLEnRight=xPix*(B5_W-15);//最右线

DOUBLEnTextAdd=1.5*xPix;

if(IsPrint)

{

//真正打印部分

staticDOCINFOdi={sizeof(DOCINFO),szTitle};//设置文档的信息

//开始文档打印

if(memDC.StartDoc(&di)<0)

{

:

:

MessageBox(hWnd,"连接到打印机化败!

","错误",MB_ICONSTOP);

}

else

{

iStart=0;

nTop=25*yPix;//第一页最上线

for(intiTotalPages=1;iTotalPages<=nMaxPage;iTotalPages)

{

intnCurPage=iTotalPages;

csRFinality.Format("第%i页/共%i页",nCurPage,nMaxPage);

time=CTime:

:

GetCurrentTime();

csLFinality=time.Format("报表日期:

%Y-%m-%d");

if(nCurPage!

=1)

nTop=25*yPix-fAdd;//非第一页最上线

if(nCurPage==2)

iStart=B5_ONELINE;

if(nCurPage>2)

iStart=B5_ONELINE(nCurPage-2)*B5_OTHERLINE;

//开始页

if(memDC.StartPage()<0)

{

:

:

MessageBox(hWnd,_T("打印失败!

"),"错误",MB_ICONSTOP);

memDC.AbortDoc();

return;

}

else

{

//打印

//标题

oldfont=memDC.SelectObject(&TitleFont);

intnItem=B5_OTHERLINE;

if(nCurPage==1)

{

nItem=B5_ONELINE;

rc.SetRect(0,yPix*8,B5_W*xPix,yPix*17);

memDC.DrawText(szTitle,&rc,DT_CENTER|DT_VCENTER|DT_SINGLELINE);

memDC.SelectObject(&DetailFont);

rc.SetRect(15*xPix,yPix*19,B5_W*xPix,yPix*22);

memDC.DrawText("课程名称:

"str_course"教师姓名:

"str_teacher""csLFinality,&rc,DT_CENTER|DT_VCENTER|DT_SINGLELINE);

}

//细节

memDC.SelectObject(&DetailFont);

rc.SetRect(nLeft,nTop,nRight,nTopfAdd);

//上横线

memDC.MoveTo(rc.left,rc.top);

memDC.LineTo(rc.right,rc.top);

rt1.SetRect(nLeft,nTop,nLeft25*xPix,nTopfAdd);//学号

rt2.SetRect(rt1.right,rt1.top,rt1.right21*xPix,rt1.bottom);//姓名

rt3.SetRect(rt2.right,rt1.top,rt2.right21*xPix,rt1.bottom);//平时成绩

rt4.SetRect(rt3.right,rt1.top,rt3.right21*xPix,rt1.bottom);//期中成绩

rt5.SetRect(rt4.right,rt1.top,rt4.right21*xPix,rt1.bottom);//期末成绩

rt6.SetRect(rt5.right,rt1.top,rt5.right21*xPix,rt1.bottom);//学期成绩

rt7.SetRect(rt6.right,rt1.top,rc.right,rt1.bottom);//学分

memDC.DrawText("学号",&rt1,DT_CENTER|DT_VCENTER|DT_SINGLELINE);//打印字段学号

memDC.DrawText("姓名",&rt2,DT_CENTER|DT_VCENTER|DT_SINGLELINE);//打印字段姓名

memDC.DrawText("平时成绩",&rt3,DT_CENTER|DT_VCENTER|DT_SINGLELINE);//打印字段平时成绩

memDC.DrawText("期中成绩",&rt4,DT_CENTER|DT_VCENTER|DT_SINGLELINE);//打印字段期中成绩

memDC.DrawText("期末成绩",&rt5,DT_CENTER|DT_VCENTER|DT_SINGLELINE);//打印字段期末成绩

memDC.DrawText("学期成绩",&rt6,DT_CENTER|DT_VCENTER|DT_SINGLELINE);//打印字段学期成绩

memDC.DrawText("备注",&rt7,DT_CENTER|DT_VCENTER|DT_SINGLELINE);//打印字段备注

memDC.MoveTo(rt1.right,rt1.top);//画线

memDC.LineTo(rt1.right,rt1.bottom);//画线

memDC.MoveTo(rt2.right,rt1.top);//画线

memDC.LineTo(rt2.right,rt1.bottom);//画线

memDC.MoveTo(rt3.right,rt1.top);//画线

memDC.LineTo(rt3.right,rt1.bottom);//画线

memDC.MoveTo(rt4.right,rt1.top);//画线

memDC.LineTo(rt4.right,rt1.bottom);//画线

memDC.MoveTo(rt5.right,rt1.top);//画线

memDC.LineTo(rt5.right,rt1.bottom);//画线

memDC.MoveTo(rt6.right,rt1.top);//画线

memDC.LineTo(rt6.right,rt1.bottom);//画线

memDC.MoveTo(rc.left,rt1.bottom);//画线

memDC.LineTo(rc.right,rt1.bottom);//画线

TCHARszID[32]={0},szName[32]={0},score_normal[32]={0},score_middle[32]={0},score_final[32]={0},score_term[32]={0},score_credit[32]={0};//为要打印的各字段设置变量

rc.SetRect(nLeft,nTopfAdd,nRight,nTop2*fAdd);

rt1.SetRect(nLeftnTextAdd,rc.top,nLeft25*xPix,rc.bottom);//学号

rt2.SetRect(rt1.rightnTextAdd,rt1.top,rt1.right21*xPix,rt1.bottom);//姓名

rt3.SetRect(rt2.rightnTextAdd,rt1.top,rt2.right21*xPix,rt1.bottom);//平时成绩

rt4.SetRect(rt3.rightnTextAdd,rt1.top,rt3.right

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

当前位置:首页 > 初中教育 > 学科竞赛

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

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