MFC学生信息管理系统详解
- 格式:docx
- 大小:123.03 KB
- 文档页数:11
面向对象程序课程设计》报告
题目: 学生信息管理系统
班级:
学号:
姓名:
成绩:
指导教师:
日期: 2012 年 6 月 21 日报告内容
、程序功能
1) 学生基本信息录入功能(输入的学生信息用磁盘文件保存)
2) 学生信息查询功能
3) 学生信息排序功能
4) 学生信息的删除与修改 学生信息包括: 姓名、性别、学号、出生年月、手机号码、班级、已经获得学分等
二、课题分析
设计一个基于MFC对话框的C++应用程序开发,因此要 创建一个主对话框,和一些必要的子对话框。在主对话框中 添加列表控件用来显示学生的基本信息,并且列表控件有较 强的数据处理函数。因此选择列表控件。对于学生信息的录 入,查询,排序,删除与修改都用按钮控件,并为每个按钮 添加消息响应函数用来处理学生的信息操作。对于录入功能, 可以为它设置一个子对话框来填写学生基本信息。
接下来就是要把学生的基本信息能够保存下来,因此要 用到文件的操作, fstream 可以满足要求。
综上所述,必须先掌握按钮控件,列表控件,新对话框 的构建,编辑控件和消息的响应与处理原理!
以上就是设计思路!
三、设计中的问题与解决方法
问题 1:在录入学生信息时,当已经存在此学生能够识别的来。
由于要在子窗口中调用父窗口的数据成员,他们是不同的对话框 类,因此操作起来不容易。
解决方法:可以在子窗口中得到父窗口的指针,这样就能得到父 窗口的成员。
CMyDlg *dlga=(CMyDlg*)GetParent(); // 得到主对话框的指 针
问题 2:删除与修改操作时怎么得到要删除与修改的学生信息 解决方法:由于列表控件有强大的数处理函数,当点击那一条记 录时,会有一个被选中的消息, 这样就可以用它来判断要修改和删除 的是哪个学生。 问题3:怎么进行排序操作,因为数据是放在列表控件的,并且 每一个学生都有较多的信息。
解决方法:用到结构体来存放学生的信息,排序的话可以通过结 构体的冒泡排序实现。过程是先从列表控件中得到所有学生的信息存 放在结构体数组里,然后进行冒泡排序,最后再放回列表控件中。
四、测试数据组(含数据测试及结果)
导入操作:
舲 I觀I藏 禺 出生年月 ]手聘码 I哉学芬I
1111 6
110 6
13054424T83 5
909090909 I
录入操作: 1991-99-1
2030-2-2
11-1
201IH1-1
199M1-9
11111-11-11 66012 9.9
999 9 3110002982
311000888
1202
311000999
3110002954
min U1S匕1S1I
一
冃一-一冃居手机号码 输入字生信凰
66012
删除操作:
选中就可以删除了
修改操作: 先选中学生接着按下修改按钮学生宿>1除 mill Hlll-il-lf 909M0W9 ] 1
转入学生信窟 909090909
排序操作:
按下排序就可以根据学分进行排序
已获学分
9.9
g 6
6
5 1
学生信息保存:
学生信息查询:
成功查询结果学生倍息操作
学生信息录入 转入学生信息
学生信息删除
学生信息修改
成錶排序 学生信息
姓名
性别
班级
学号
出生年月
手机号码
已获学分
關定 3110002984
1991-11-9
1305^2^1783
取消
学生信息查i甸
诸输入名字阿 查询|
性别:
班级: 学号:[
出生年月 学生噸苛理盂址(Kiduil
荻学分:- student txt 文本文裆
i殳有此学生的记录!
请输入名字黒晅 [匚药!二二|
学号' | 手机号圖[I3O544Z4T83
出生年月 :|1991-11-9 — 已获学分:
五、感想和心得
通过这次的C++课程设计,了解了 windows的消息机制。 学会通过MFC的对话框设计学生信息管理系统。 其中也包
含了许多知识,文件操作,按键的消息响应处理,对话框的 创建,对话框的消息传递。排序算法。以及强大的列表控件 的使用。
六、参考文献
《Visual C++ 6.0 使用教程》
附录:源程序代码(含注释)
初始化列表控件:
list-SptExtende(JStyle(LUS_EX GRIDLINES |LUS
EX_FULLROWSELECT) list-InsertColum( 0,"^名6LIJCFMTJ_EFT ,80■二)~
list - InsertColunn(1性别・・,LUCFMT【LEFT
円叫-1);
list _InsertColumn(2 ,LUCFMT LEFT ,98,-1);
list .InsertColumnta/^^'^LUCFMT^LEFT ,120,-1);
"由坐年月
*\LUCFMT_LEFT ,100,-1);
手机守码,・.LUCFHrZLEFT .120.-1);
“己获学分J 学生信息查询
性刖厂
班级:匣廊
"对LiH控件的初始化操作
m m
list ■ I nsertColumn(4.v
list■InsertColumn(5「
m list .1 nsertColumn(6/lt£^^5^tftffLUCFMTjLEFT f80,-1);
MessageBoxC*系统提示二请先写入学生信息? ■■亍: 学生信息录入:uoid CMyDlg: :0nBUTT0Nluru() "学生信息录入
// TODD: Add your control notification handler code here Inputrecord dig;
if(I tOK—dig ,DoModal ()) 〃每次都在第一个记录处插入
m l 1st _ Insprtlt@m( OPdlg. ni name);
m_list-SetItemText(0,1,dlg.n_sex);
m_list _SetItemTextC0,2,dlg.m
mlist-SetltemTextf 0f3,dlg.m
mlist - Set ItemText (O,it,dlg .n
m_115t-SetItemT ext(0,5,dlg.m
mlist-Set TtemText(目.6,dlg.m
删除学生信息:
void CMpDlg::QnBUTTONdelete()"删除所选择的学生记录
<
// TODO: Add you旷 control notification handler code here int i;
BOOL findok-FftLSE;
For(i=0;i
<
if(n_ilst.GetIteNState(1,LUis SELECTED)=-LUIS_SELECTED)
< - - -
m_list *DeleteTle(n(i);
findok=TRUE;
lF(findokf-TRUE)
MessageBox(-请先选择要删除的学生,T ; UpdateData(FALSE);
退出本系统操作:
void CMi/Dlg : :0nBUTT0Nexit() "退出系统
<
// TOIDO: Add your control notification handler code here MessageBoxC"^谢使剧本系统(版权所有>?");
EndDialogCS);
学生信息保存:grade);
nuniber);
birthday);
telephone);
getpoint); void CHyDig: :0nDUTT0Hsaue () "学生信息保存 <
// TO DO': Add lyomr control inotLfic^tioni handler9 ciode here
CStringi str:;
佔卵咛m outfiiPr studenUtxf Mqs-oiJt];"输出方式打开「内存输岀到文件.每次都会覆盖原有内容 int count-n_list,Get]temCount();
for(int i=count-l
<
F叶"nt j-0; j<7; j+*>
str-n_li5t.GetItenTextfi pj);
str+=' 1;
nutfile<<5tr;
}
outfi lewenm; "把字符串写进文件
outflie ・close();
He^Sagt?BDX(M文祚保存成功U ;
学生信息导入:
uoid CMpDlg: :QnBUTTDNdaoru() "学生信戶舟入 < // TODO: Add youF control notification handler code here
BOOL end-FALSE; "是否已经谀到末尾了
char pf100l; "定义数组淳板缓冲数组
int row= O,colur*n-0;
Fstrean infile( "student ,txtib ,ios: :in |ios::nocreate); "打开文件 iF(?infile)
{ MessageBoxC您没有保存过信息严); return;
>
uhile(1)
< ni_list.Inser11 tem(n_list .GetItemCount() .NULL .NULL);
For(column-u;colunn<7;colur»n++)
if(f(inFile»p)) "每遇到空幡停一下判断是否为读到文件的末昂
<
end-TRUE;
break;"结束F叶循坏
> n_list.SetItemText(rou,column,p);
> " rou++;
if(TRUE==end)
<
break;"结 while 循坏
inFile,close();
学生信息查找: