VC实训学生信息管理系统DOC.docx

上传人:b****5 文档编号:12596171 上传时间:2023-04-20 格式:DOCX 页数:18 大小:90.28KB
下载 相关 举报
VC实训学生信息管理系统DOC.docx_第1页
第1页 / 共18页
VC实训学生信息管理系统DOC.docx_第2页
第2页 / 共18页
VC实训学生信息管理系统DOC.docx_第3页
第3页 / 共18页
VC实训学生信息管理系统DOC.docx_第4页
第4页 / 共18页
VC实训学生信息管理系统DOC.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

VC实训学生信息管理系统DOC.docx

《VC实训学生信息管理系统DOC.docx》由会员分享,可在线阅读,更多相关《VC实训学生信息管理系统DOC.docx(18页珍藏版)》请在冰豆网上搜索。

VC实训学生信息管理系统DOC.docx

VC实训学生信息管理系统DOC

信息科学与工程学院

报告书

专业:

计算机科学与技术

课程名称:

《VC++实训》

题目:

学生信息管理系统

班级:

设计者:

完成时间:

总成绩

教师签名

 

学生信息管理系统

一系统总体方案

系统基本实现了对学生信息的查询,添加,修改,删除,保存功能。

二设计思路和主要步骤

思路主要是设计一个单文档用来实现主界面,然后在菜单栏添加一个菜单项,下面包含录入学生基本信息,查询学生基本信息,和修改学生基本信息等多项子菜单,每项子菜单都对应一个对话框对数据进行处理。

在主对话框中添加列表控件用来显示学生的基本信息,以方便学生信息的修改,具体修改哪一项。

对于学生信息的录入,查询,修改,删除都用按钮控件,并为每个按钮添加消息响应函数用来处理学生的信息操作。

接下来就是要把学生的基本信息能够保存下来,因此要用到文件的操作,fstream可以满足要求。

综上所述,必须先掌握按钮控件,列表控件,新对话框的构建,编辑控件和消息的响应与处理原理!

三各功能模块和流程图

1.功能模块实现

主界面

对话框一

对话框2

对话框3

四设计代码

1.主体框架代码:

intCMainFrame:

:

OnCreate(LPCREATESTRUCTlpCreateStruct)

{

if(CFrameWnd:

:

OnCreate(lpCreateStruct)==-1)

return-1;

if(!

m_wndToolBar.CreateEx(this,TBSTYLE_FLAT,WS_CHILD|WS_VISIBLE|CBRS_TOP|CBRS_GRIPPER|CBRS_TOOLTIPS|CBRS_FLYBY|CBRS_SIZE_DYNAMIC)||!

m_wndToolBar.LoadToolBar(IDR_MAINFRAME))

{

TRACE0("Failedtocreatetoolbar\n");

return-1;//failtocreate

}

If(!

m_wndStatusBar.Create(this)||!

m_wndStatusBar.SetIndicators(indicators,sizeof(indicators)/sizeof(UINT)))

{

TRACE0("Failedtocreatestatusbar\n");

return-1;//failtocreate

}

m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);

EnableDocking(CBRS_ALIGN_ANY);

DockControlBar(&m_wndToolBar);

return0;

}

voidCMainFrame:

:

OnMenuitemadd()

{

CMyDlgAdddlg1;

dlg1.DoModal();

}

voidCMainFrame:

:

OnMenuitemmodify()

{

CMyDlgModifydlg2;

dlg2.DoModal();

}

voidCMainFrame:

:

OnMenuitemseek()

{

CMyDlgSeekdlg3;

dlg3.DoModal();

}

2.录入消息对话框的消息映射:

HBRUSHCMyDlgAdd:

:

OnCtlColor(CDC*pDC,CWnd*pWnd,UINTnCtlColor)

{

HBRUSHhbr=CDialog:

:

OnCtlColor(pDC,pWnd,nCtlColor);if(nCtlColor==CTLCOLOR_BTN||nCtlColor==CTLCOLOR_STATIC)

{

pDC->SetTextColor(RGB(0,0,255));

pDC->SetBkMode(TRANSPARENT);

}

pDC->SetTextColor(RGB(0,0,255));

pDC->SetBkMode(TRANSPARENT);

returnhbr;

}

voidCMyDlgAdd:

:

OnPaint()

{

CPaintDCdc(this);//devicecontextforpainting

LOGFONTlf;

memset(&lf,0,sizeof(LOGFONT));

lf.lfHeight=28;

lf.lfCharSet=GB2312_CHARSET;

strcpy((LPSTR)&(lf.lfFaceName),"华文新魏");

CFontcf;

cf.CreateFontIndirect(&lf);

m_Title.SetFont(&cf);

}

voidCMyDlgAdd:

:

OnOK()

{

UpdateData();

structRecord*re=per;

fstreamfile;

CFilefile1;

file.open("record.txt",ios:

:

in|ios:

:

out|ios:

:

app);

intnIndex=m_Speciality.GetCurSel();

inti=GetCheckedRadioButton(IDC_RADIO1,IDC_RADIO2);

constintsize=sizeof(structRecord);

if((re)->id==0||(re)->name==0||re->speciality==0||re->grade==0||i==0)

MessageBox("输入不完整,不能提交!

");

else

{

strcpy((re)->id,m_Num);

strcpy((re)->name,m_Name);

CStringstr;

inty,m,d;

y=m_Birth.GetYear();

m=m_Birth.GetMonth();

d=m_Birth.GetDay();

str.Format("%d-%d-%d",y,m,d);

strcpy(re->date,str);

if(i==IDC_RADIO1)

strcpy(re->sex,"男");

if(i==IDC_RADIO2)

strcpy(re->sex,"女");

if(nIndex==0)

strcpy(re->speciality,"计算机");

if(nIndex==1)

strcpy(re->speciality,"数学");

strcpy(re->grade,m_Grade);

file<id<<""<name<<""<sex<<""<speciality<<""<grade<<""<date<

}

file.close();

CDialog:

:

OnOK();

MessageBox("添加成功!

",MB_OK,MB_ICONASTERISK);

}

2.学生信息修改对话框消息映射:

BOOLCMyDlgModify:

:

OnInitDialog()

{

CDialog:

:

OnInitDialog();

UpdateData(false);

constintnColumns=6;

m_list1.InsertColumn(0,"学号");

m_list1.InsertColumn(1,"姓名");

m_list1.InsertColumn(2,"性别");

m_list1.InsertColumn(3,"专业");

m_list1.InsertColumn(4,"年级");

m_list1.InsertColumn(5,"出生日期");

CRectrect4;

m_list1.GetClientRect(rect4);

for(inti=0;i

m_list1.SetColumnWidth(i,rect4.Width()/nColumns);

fstreamfile;

structRecordper;

memset(&per,0,sizeof(structRecord));

file.open("record.txt",ios:

:

in|ios:

:

out);

if(!

file)

{

MessageBox("Openerror!

");

}

for(intj=0;!

file.eof();j++)

{

file>>per.id>>per.name>>per.sex>>per.speciality>>per.grade>>per.date;

m_list1.InsertItem(j,per.id);

m_list1.SetItemText(j,1,per.name);

m_list1.SetItemText(j,2,per.sex);

m_list1.SetItemText(j,3,per.speciality);

m_list1.SetItemText(j,4,per.grade);

m_list1.SetItemText(j,5,per.date);

strcpy(per.id,"");

strcpy(per.name,"");

strcpy(per.sex,"");

strcpy(per.speciality,"");

strcpy(per.grade,"");

strcpy(per.date,"");

}

file.close();

ListView_SetExtendedListViewStyle(m_list1.m_hWnd,LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);//设置可以选整行

returnTRUE;

}

voidCMyDlgModify:

:

OnClickList1(NMHDR*pNMHDR,LRESULT*pResult)

{

UpdateData();

structRecordper;

memset(&per,0,sizeof(structRecord));

CListCtrl*pListCtrl=(CListCtrl*)GetDlgItem(IDC_LIST1);

ASSERT(pListCtrl!

=NULL);

POSITIONpos=m_list1.GetFirstSelectedItemPosition();

if(pos!

=NULL)

{

nItem=m_list1.GetNextSelectedItem(pos);

m_Id=m_list1.GetItemText(nItem,0);

m_Name=m_list1.GetItemText(nItem,1);

if(m_list1.GetItemText(nItem,2)=="男")

CheckRadioButton(IDC_RADIO1,IDC_RADIO2,IDC_RADIO1);

else

CheckRadioButton(IDC_RADIO1,IDC_RADIO2,IDC_RADIO2);

m_Speciality=m_list1.GetItemText(nItem,3);

m_Grade=m_list1.GetItemText(nItem,4);

m_Date=m_list1.GetItemText(nItem,5);

m_Num.Format("%d",nItem+1);

UpdateData(false);

}

*pResult=0;

}

voidCMyDlgModify:

:

OnOK()

{

if(IDNO==MessageBox("确定要修改吗?

","提问",MB_YESNO|MB_ICONQUESTION))

{

return;

}

UpdateData();

fstreamfile1,file2;

structRecordper;

file1.open("record.txt",ios:

:

in);

file2.open("record1.txt",ios:

:

out);

if(!

file1||!

file2)

{

MessageBox("Openerror!

");

return;

}

intn=0,m=0;

while(!

file1.eof())

{

n++;

file1>>per.id>>per.name>>per.sex>>per.speciality>>per.grade>>per.date;

}

n--;m=n;

file1.close();

file1.open("record.txt",ios:

:

in);

intnIndex=m_list1.GetSelectionMark();

charid[20]="0";

strcpy(id,m_list1.GetItemText(nIndex,0));

memset(&per,0,sizeof(structRecord));

while(n)

{

file1>>per.id>>per.name>>per.sex>>per.speciality>>per.grade>>per.date;

if(strcmp(per.id,id)!

=0)

{

file2<

}

else//要修改的记录

{

strcpy(per.id,m_Id);

strcpy(per.name,m_Name);

inti=GetCheckedRadioButton(IDC_RADIO1,IDC_RADIO2);

if(i==IDC_RADIO1)

{

strcpy(per.sex,"男");

}

if(i==IDC_RADIO2)

{

strcpy(per.sex,"女");

}

strcpy(per.speciality,m_Speciality);

strcpy(per.grade,m_Grade);

strcpy(per.date,m_Date);

file2<

}

n--;

}

file1.close();

file2.close();

remove("record.txt");

rename("record1.txt","record.txt");

m_Num="";

m_Name="";

m_Speciality="";

m_Grade="";

UpdateData(FALSE);

RefreshData(m);

}

voidCMyDlgModify:

:

RefreshData(intm)

{

structRecordper;

fstreamfile;

file.open("record.txt",ios:

:

in);

memset(&per,0,sizeof(structRecord));

m_list1.DeleteAllItems();

m_list1.SetRedraw(FALSE);

inti=0;

while(i

{

file>>per.id>>per.name>>per.sex>>per.speciality>>per.grade>>per.date;

m_list1.InsertItem(i,per.id);

m_list1.SetItemText(i,1,per.name);

m_list1.SetItemText(i,2,per.sex);

m_list1.SetItemText(i,3,per.speciality);

m_list1.SetItemText(i,4,per.grade);

m_list1.SetItemText(i,5,per.date);

i++;

}

file.close();

m_list1.SetRedraw(TRUE);

}

4.学生信息查找代码:

voidCMyDlgSeek:

:

OnButton1()

{

UpdateData();

fstreamfile1,file2;

structRecordper;

file1.open("record.txt",ios:

:

in);

file2.open("record1.txt",ios:

:

out);

if(!

file1||!

file2)

{

MessageBox("Openerror!

");

return;

}

intn=0;

while(!

file1.eof())

{

n++;

file1>>per.id>>per.name>>per.sex>>per.speciality>>per.grade>>per.date;

}

n--;

file1.close();

file1.open("record.txt",ios:

:

in);

charid[20]="0";

strcpy(id,m_Num);

memset(&per,0,sizeof(structRecord));

while(n)

{file1>>per.id>>per.name>>per.sex>>per.speciality>>per.grade>>per.date;

if(strcmp(per.id,id)!

=0)

{

file2<

}

n--;

}

if(IDNO==MessageBox("确定要删除吗?

","提问",MB_YESNO|MB_ICONQUESTION))

{

return;

}

file1.close();

file2.close();

remove("record.txt");

rename("record1.txt","record.txt");

m_Num="";

m_Name="";

m_Speciality="";

m_Grade="";

m_Birth="";

UpdateData(FALSE);

}

voidCMyDlgSeek:

:

OnButton2()

{CDialog:

:

OnCancel();}

voidCMyDlgSeek:

:

OnOK()

{

UpdateData();

fstreamfile;

file.open("record.txt",ios:

:

in|ios:

:

out);

structRecordper;

intflag;

if(!

file)

{

MessageBox("Error!

");

return;

}

flag=0;

while(!

file.eof()&&!

flag)

{

file>>per.id>>per.name>>per.sex>>per.speciality>>per.grade>>per.date;

if(m_Num==per.id)

{

m_Name=per.name;

if(strcmp(per.sex,"男")==0)

CheckRadioButton(IDC_RADIO1,IDC_RADIO2,IDC_RADIO1);

else

CheckRadioButton(IDC_RADIO1,IDC_RADIO2,IDC_RADIO2);

m_Speciality=per.speciality;

m_Grade=per.grade;

m_Birth=per.date;

flag=1;

}

}

if(flag==0)

MessageBox("查无此人!

");

file.close();

UpdateData(false);

}

五心得体会和参考资料

工程中还存在很多不足,不是很完善。

通过工程的构思,构建,到模块的实现,最后代码的编写,以及令人头痛的改错过程。

制作中不断遇到新问题,自己努力去看书,去图书馆查询资料,实在不会就去请教学的比较好的同学,大家一起思考怎么解决一个个难题,不断的错误,不断的更正,有点摸着石头过河的意思。

自己也发现了自己还存在许多问题,但是在工程的制作中,我觉得我很有收获,对各方面的知识有了新的认识,有了更加深刻的理解,增加了自己的构建工程能力,提高自己解决问题的能力。

在以后的生活中,要自己主动去做一些工程,因为我觉得在工程项目中可以学习到很多知识和经验,可以实实在在得提高自己的能力。

参考资料:

《VisualC++》郑阿奇主编清华大学出版社

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

当前位置:首页 > 工程科技 > 建筑土木

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

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