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

来源:网络收集 时间:2025-04-26 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xuecool-com或QQ:370150219 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

信息科学与工程学院 报告书

专 业:计算机科学与技术 课程 名称:《VC++实训》 题 目:学生信息管理系统 班 级: 设 计 者: 完 成 时 间:

总 成 绩 教师签名

学生信息管理系统

一 系统总体方案

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

二 设计思路和主要步骤

思路主要是设计一个单文档用来实现主界面,然后在菜单栏添加一个菜单项,下面包含录入学生基本信息,查询学生基本信息,和修改学生基本信息等多项子菜单,每项子菜单都对应一个对话框对数据进行处理。在主对话框中添加列表控件用来显示学生的基本信息,以方便学生信息的修改,具体修改哪一项。对于学生信息的录入,查询,修改,删除都用按钮控件,并为每个按钮添加消息响应函数用来处理学生的信息操作。

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

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

三 各功能模块和流程图

1.功能模块实现

主界面

对话框一

对话框2

对话框

3

四 设计代码

1.主体框架代码:

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) {

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(\ return -1; // fail to create }

If(!m_wndStatusBar.Create(this)||!m_wndStatusBar.SetIndicators(indicators,sizeof(indicators)/sizeof(UINT))) {

TRACE0(\ return -1; // fail to create

}

m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY); EnableDocking(CBRS_ALIGN_ANY); DockControlBar(&m_wndToolBar); return 0; }

void CMainFrame::OnMenuitemadd() {

CMyDlgAdd dlg1; dlg1.DoModal(); }

void CMainFrame::OnMenuitemmodify() {

CMyDlgModify dlg2; dlg2.DoModal(); }

void CMainFrame::OnMenuitemseek() {

CMyDlgSeek dlg3; dlg3.DoModal(); }

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

HBRUSH CMyDlgAdd::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) {

HBRUSH hbr = 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); return hbr; }

void CMyDlgAdd::OnPaint()

{

CPaintDC dc(this); // device context for painting LOGFONT lf;

memset(&lf,0,sizeof(LOGFONT)); lf.lfHeight=28;

lf.lfCharSet=GB2312_CHARSET;

strcpy((LPSTR)&(lf.lfFaceName),\华文新魏\ CFont cf;

cf.CreateFontIndirect(&lf); m_Title.SetFont(&cf); }

void CMyDlgAdd::OnOK() {

UpdateData();

struct Record *re=per; fstream file; CFile file1;

file.open(\ int nIndex=m_Speciality.GetCurSel();

int i=GetCheckedRadioButton(IDC_RADIO1,IDC_RADIO2); const int size=sizeof(struct Record);

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); CString str; int y,m,d;

y=m_Birth.GetYear(); m=m_Birth.GetMonth(); d=m_Birth.GetDay();

str.Format(\ 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<<\\\ \ }

file.close();

CDialog::OnOK();

MessageBox(\添加成功!\}

2.学生信息修改对话框消息映射: BOOL CMyDlgModify::OnInitDialog() {

CDialog::OnInitDialog(); UpdateData(false); const int nColumns=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,\出生日期\

CRect rect4;

m_list1.GetClientRect(rect4); for(int i=0;i

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

struct Record per;

memset(&per,0,sizeof(struct Record)); file.open(\ if(!file) {

MessageBox(\ }

for(int j=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); //设置可以选整行 return TRUE; }

void CMyDlgModify::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult) {

UpdateData(); struct Record per;

memset(&per,0,sizeof(struct Record));

CListCtrl* pListCtrl = (CListCtrl*) GetDlgItem(IDC_LIST1); ASSERT(pListCtrl != NULL);

POSITION pos = 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);

}

*pResult = 0; }

void CMyDlgModify::OnOK() {

if(IDNO == MessageBox(\确定要修改吗?\提问\ {

return ; }

UpdateData(); fstream file1,file2; struct Record per;

file1.open(\ file2.open(\ if(!file1||!file2) {

MessageBox(\ return ; }

int n =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(\

int nIndex = m_list1.GetSelectionMark();

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(\UpdateData(false);

char id[20]=\

strcpy(id,m_list1.GetItemText(nIndex,0)); memset(&per,0,sizeof(struct Record)); 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);

int i=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<

file1.close(); file2.close();

remove(\

rename(\

m_Num = \ m_Name = \ m_Speciality = \ m_Grade = \ UpdateData(FALSE); RefreshData(m); }

void CMyDlgModify::RefreshData(int m ) {

struct Record per; fstream file;

file.open(\

memset(&per,0,sizeof(struct Record)); m_list1.DeleteAllItems(); m_list1.SetRedraw(FALSE); int i = 0 ; while( i < m ) {

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.学生信息查找代码:

void CMyDlgSeek::OnButton1() {

UpdateData(); fstream file1,file2; struct Record per;

file1.open(\ file2.open(\

if(!file1||!file2) {

MessageBox(\ return ; }

int n =0;

while(!file1.eof()) {

n++ ;

file1>>per.id>>per.name>>per.sex>>per.speciality>>per.grade>>per.date; } n--;

file1.close();

file1.open(\ char id[20]=\ strcpy(id,m_Num);

memset(&per,0,sizeof(struct Record)); while(n) {

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

if(strcmp(per.id,id) != 0 ) {

file2<

if(IDNO == MessageBox(\确定要删除吗?\提问\ {

return ; }

file1.close(); file2.close();

remove(\

rename(\

m_Num = \ m_Name = \ m_Speciality = \ m_Grade = \ m_Birth = \ UpdateData(FALSE); }

void CMyDlgSeek::OnButton2() {CDialog::OnCancel();}

void CMyDlgSeek::OnOK() {

UpdateData(); fstream file;

file.open(\ struct Record per; int flag; if(!file) {

MessageBox(\ 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,\男\

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

五 心得体会和参考资料

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

通过工程的构思,构建,到模块的实现,最后代码的编写,以及令人头痛的改错过程。制作中不断遇到新问题,自己努力去看书,去图书馆查询资料,实在不会就去请教学的比较好的同学,大家一起思考怎么解决一个个难题,不断的错误,不断的更正,有点摸着石头过河的意思。自己也发现了自己还存在许多问题,但是在工程的制作中,我觉得我很有收获,对各方面的知识有了新的认识,有了更加深刻的理解,增加了自己的构建工程能力,提高自己解决问题的能力。在以后的生活中,要自己主动去做一些工程,因为我觉得在工程项目中可以学习到很多知识和经验,可以实实在在得提高自己的能力。

参考资料:《Visual C++》 郑阿奇主编 清华大学出版社

百度搜索“70edu”或“70教育网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,70教育网,提供经典综合文库VC 实训--学生信息管理系统(DOC)在线全文阅读。

VC 实训--学生信息管理系统(DOC).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.70edu.com/wenku/206029.html(转载请注明文章来源)
Copyright © 2020-2025 70教育网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:370150219 邮箱:370150219@qq.com
苏ICP备16052595号-17
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:7 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219