VC实训学生信息管理系统DOC.docx
- 文档编号:12596171
- 上传时间:2023-04-20
- 格式:DOCX
- 页数:18
- 大小:90.28KB
VC实训学生信息管理系统DOC.docx
《VC实训学生信息管理系统DOC.docx》由会员分享,可在线阅读,更多相关《VC实训学生信息管理系统DOC.docx(18页珍藏版)》请在冰豆网上搜索。
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< } 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++》郑阿奇主编清华大学出版社
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VC 实训学生信息管理系统DOC 学生 信息管理 系统 DOC