《VBNet程序设计》概要.docx
- 文档编号:27739694
- 上传时间:2023-07-04
- 格式:DOCX
- 页数:20
- 大小:22.40KB
《VBNet程序设计》概要.docx
《《VBNet程序设计》概要.docx》由会员分享,可在线阅读,更多相关《《VBNet程序设计》概要.docx(20页珍藏版)》请在冰豆网上搜索。
《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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VBNet程序设计 VBNet 程序设计 概要