C小组作业学生信息管理系统.docx
《C小组作业学生信息管理系统.docx》由会员分享,可在线阅读,更多相关《C小组作业学生信息管理系统.docx(24页珍藏版)》请在冰点文库上搜索。
C小组作业学生信息管理系统
课程:
《C++课程设计》
课程设计题目:
学生信息管理系统
组员:
指导老师:
杨永平
日期:
2014年5月8日
1,引言.....................................................................................................................3
1.1课程背景及意义.........................................................................................3
1.2可行性分析................................................................................................3
2,系统需求分析........................................................................................................4
2.1功能需求分析...............................................................................................4
2.2性能需求分析...............................................................................................4
2.3系统总体结构设计.......................................................................................4
3,详细设计................................................................................................................5
3.1具体操作步骤分析.........................................................................................5
4,设计测试流程........................................................................................................14
5,结束语...................................................................................................................18
参考文献................................................................................................................18
6,小组分工记录.....................................................................................................19
自我评价...................................................................................................................20
1,引言
为了方便对学生的信息进行高效的管理,编写了该程序来提高学生信息管理效率,使用该程序之后学校管理者可以对某位学生的相关信息进行查询,还可以对某个学生的信息进行数据的修改,删除,添加等操作,那么学生也可以通过某些特殊情况更新自己的相关信息,通过本系统的操作练习可以让我们更好的掌握学生在校的一些基本信息情况,减轻学校的相关管理人员的负担,也使学生的信息长期的保留下来。
1.1课题背景及意义
一直以来人们使用传统的人工方式管理在校学生的基本信息情况,那么随着大数据时代的来临,人们越来越多依赖于计算机,也就是网络时代,在计算机尚未在广泛使用之前学生的信息管理主要靠手工进行记录,一个做典型的例子就是,当我们的学生要进行信息添加的时候就要一个一个去查找然后再进行添加写上去,我们知道当老师所要保存学生的信息的时候必须把学生的信息记录下来而且进行查找的工作是非常困难的如果我们对于学号进行排序之后查找某个学生的信息就变得十分简单了所以为了极大的方便老师和学生们,为了提高管理效率减轻管理人员的负担有必要去开发这样一个小型的学生信息管理系统。
1.2可行性分析
1)经济可行性分析
作为学校这样的商业性质较小的场所,其经济成分比重相对少很多,主要
是支出的费用:
其中包括设备购买费,软件开发费,管理和维护费,人员工资和培训费等,由于各个学校实施统一的管理操作,系统信息共享,其设备购置,人员工资,维护费用相对少,而且该系统的费用也很低。
2)技术可行分析
技术上的可行性分析:
现有技术条件是否顺利完成开发工作,硬件,软件配置是否满足开发者的需求,各类技术和人员的数量,水平,来源等,学生信息管理系统的工作主要是给学生和老师之间架起一座桥梁,能够方便相互沟通信息和处理信息,这一点非常适合计算机特点,通过网络技术,发挥计算机信息传输速度快,准确度高的优势,计算机硬件和软件技术的飞速发展为系统的建设提供了技术的条件。
3)社会可行性分析
社会可行性分析有时也称为操作可行性,主要论证该系统在企业或者机构开发行业运行的可能行及运行之后对于企业产生的影响,及组织内外是否具备接受和使用该系统的条件,在当前信息技术飞速发展的环境下,计算机技术和软件技术的更新是学校完全有可能也有能力去采用这样的新进管理技术,它对于学校所带来的影响可以看到:
使学校在一定的可能下进行机构精简,迫使工作人员继续学习知识扩宽学校在市场环境下的生存空间,对于学生和管理人员业务方式的转变和扩充。
2,系统需求分析
2.1功能需求分析
1)录入信息:
将学生的姓名,学号,专业,成绩写入文件。
2)增加人员:
增加学生,并把学生的相关信息写入文件中。
3)删除人员:
删除某个学生的基本信息。
4)修改数据:
修改学生的信息。
2.2性能需求分析
1,硬件环境
处理器:
InterCR300或是更高。
内存:
128MB
硬盘空间:
20MB
2,软件环境:
操作系统:
win7/XP/VisualC++
2.3系统总体结构设计
对学生信息进行管理系统,只要划分以下2个模块:
1)操作:
包括录入数据,增加人员,删除人员,修改人数据。
2)查询:
包括按学号,姓名进行查询。
图2.1系统总体结构如下图所示:
3详细设计
3.1具体操作步骤分析
1)一、用acess创建一个xinxi.Mdb文件,数据的初始值如下
二、设置数据源
三、用mfcappwizard创建一个基于CListview的默认单文档应用程序student
在选择数据源时选择已经设置好的学生信息数据库
四、在studentView.cpp源文件中添加头文件#include"studentSet.h"
添加代码,设置报表风格为“报表视图”显示方式
BOOLCstudentView:
:
PreCreateWindow(CREATESTRUCT&cs)
{
cs.style|=LVS_REPORT;
returnCListView:
:
PreCreateWindow(cs);
}
添加代码获取列表信息
voidCstudentView:
:
OnInitialUpdate()
{
CListView:
:
OnInitialUpdate();
//调用GetListCtrl()直接访问ListView的列表控件,从而可以用项填充ListView。
注意获得的控件为引用,就是控件自身,不能使用对象。
CListCtrl&m_listctrl=GetListCtrl();//获取内嵌在列表视图中的列表控件
m_listctrl.SetExtendedStyle(LVS_EX_FULLROWSELECT);
CstudentSetcset;
cset.Open();//打开记录集
CODBCFieldInfofield;
//创建列表头
for(UINTi=0;i{
cset.GetODBCFieldInfo(i,field);
m_listctrl.InsertColumn(i,field.m_strName,LVCFMT_LEFT,100);
}
cset.Close();//关闭记录集
UpdateListItemData();
//TODO:
调用GetListCtrl()直接访问ListView的列表控件,
//从而可以用项填充ListView。
}
以上内容放入OnInitUpdate()重载函数。
给视图类添加自定义函数UpdateListItemData()成员函数:
voidCstudentView:
:
UpdateListItemData(void)//更新数据库,当数据有变动时,用此函数更新
{
CListCtrl&m_listctrl=GetListCtrl();
m_listctrl.DeleteAllItems();
CstudentSetcset;
cset.m_strSort="studentName,studentNo";
cset.Open();
intnItem=0;
CStringstr;
while(!
cset.IsEOF())
{
for(UINTi=0;i{
cset.GetFieldValue(i,str);
if(i==0)
m_listctrl.InsertItem(nItem,str);
else
m_listctrl.SetItemText(nItem,i,str);
}
nItem++;
cset.MoveNext();
}
cset.Close();
}
当以上步骤设置好后,运行结果
五、添加控件,设置成类名为StudentDlg
在StudentDlg类中添加相应的控件变量如下:
控件ID
变量类别
变量类型
变量名
范围和大小
IDC_EDIT1
Value
CString
m_strStuName
20
IDC_EDIT2
Value
CString
m_strStuNO
20
IDC_EDIT3
Value
CString
m_strPhone
20
IDC_EDIT4
Value
CString
m_strStuAD
20
IDC_EDIT5
Value
CString
m_strStuSP
20
用MFCClassWizard为StudentDlg添加IDOK按钮的BN_CLICKED消息映射,添加如下代码:
voidCStudentDlg:
:
OnBnClickedOk()//确定按钮的代码处理
{
//TODO:
在此添加控件通知处理程序代码
UpdateData();
m_strStuName.TrimLeft();
m_strStuNO.TrimLeft();
if(m_strStuNO.IsEmpty())//检测学号的输入是否为空
AfxMessageBox("ID号不能为空!
");
elseif(m_strStuName.IsEmpty())//检测姓名的输入是否为空
AfxMessageBox("姓名不能为空!
");
elseOnOK();
}
在CstudentView。
Cpp添加头文件#include"StudentDlg.h"
六、添加、修改、删除功能
1、设置菜单
2、用mfcappwizard为CstudentView类添加
ID_32771、ID_32772、ID_32773command消息映射
并添加如下代码
voidCstudentView:
:
On32771()//添加功能的代码处理
{
CStudentDlgdlg;
if(dlg.DoModal()!
=IDOK)
return;
CstudentSetcset;
cset.m_strFilter.Format("studentNo='%s'ANDstudentName='%s'",dlg.m_strStuNO,dlg.m_strStuName);
cset.Open();
if(!
cset.IsEOF())
{
AfxMessageBox("有相同的记录存在!
");
cset.Close();
return;
}
//信息的获取
cset.AddNew();
cset.m_studentName=dlg.m_strStuName;
cset.m_studentNo=dlg.m_strStuNO;
cset.m_phone=dlg.m_strPhone;
cset.m_address=dlg.m_strStuAD;
cset.m_special=dlg.m_strStuSP;
cset.Update();
cset.Requery();
cset.Close();
AfxMessageBox("记录已添加!
");
UpdateListItemData();//更新列表
}
voidCstudentView:
:
On32772()
{
CListCtrl&m_listctrl=GetListCtrl();
POSITIONpos;
pos=m_listctrl.GetFirstSelectedItemPosition();
if(pos==NULL)
{
AfxMessageBox("你还没有选中一项!
");
return;
}
intnItem=m_listctrl.GetNextSelectedItem(pos);
CStringstrName=m_listctrl.GetItemText(nItem,0);
CStringstrID=m_listctrl.GetItemText(nItem,1);
CstudentSetcset;
cset.m_strFilter.Format("studentName='%s'ANDstudentNo='%s'",strName,strID);
cset.Open();
CStudentDlgdlg;
dlg.m_strStuName=m_listctrl.GetItemText(nItem,0);
dlg.m_strStuNO=m_listctrl.GetItemText(nItem,1);
dlg.m_strPhone=m_listctrl.GetItemText(nItem,2);
dlg.m_strStuAD=m_listctrl.GetItemText(nItem,3);
dlg.m_strStuSP=m_listctrl.GetItemText(nItem,4);
if(
IDOK!
=dlg.DoModal())
{
if(cset.IsOpen())
cset.Close();
return;
}
cset.Edit();
cset.m_studentName=dlg.m_strStuName;
cset.m_studentNo=dlg.m_strStuNO;
cset.m_phone=dlg.m_strPhone;
cset.m_address=dlg.m_strStuAD;
cset.m_special=dlg.m_strStuSP;
cset.Update();
cset.Requery();
if(cset.IsOpen())
cset.Close();
AfxMessageBox("修改成功!
");
UpdateListItemData();
}
voidCstudentView:
:
On32773()
{
CListCtrl&m_listctrl=GetListCtrl();
POSITIONpos;
pos=m_listctrl.GetFirstSelectedItemPosition();
if(pos==NULL)
{
AfxMessageBox("你还没有选中一项!
");
return;
}
intnItem=m_listctrl.GetNextSelectedItem(pos);
CStringstrItem,str;
strItem=m_listctrl.GetItemText(nItem,0);
str.Format("你确实要删除%s记录吗?
",strItem);
if(IDOK!
=MessageBox(str,"删除确认",MB_ICONQUESTION|MB_OKCANCEL))
return;
CStringstrName=m_listctrl.GetItemText(nItem,0);
CStringstrID=m_listctrl.GetItemText(nItem,1);
CstudentSetcset;
cset.m_strFilter.Format("studentName='%s'ANDstudentNo='%s'",strName,strID);
cset.Open();
if(!
cset.IsEOF())
{
CRecordsetStatusstatus;
cset.GetStatus(status);
cset.Delete();
if(status.m_lCurrentRecord==0)
cset.MoveNext();
elsecset.MoveFirst();
}
if(cset.IsOpen())
cset.Close();
AfxMessageBox("当前指定的记录已删除!
");
UpdateListItemData();
}
六、为CstudentView添加OnNMDblclk(双击事件)
添加如下代码
voidCstudentView:
:
OnNMDblclk(NMHDR*pNMHDR,LRESULT*pResult)//添加双击命令,实现添加
{
On32772();
*pResult=0;
}
4,设计测试流程
截图结果显示:
5,结束语
在本次课程设计过程中,我们小组人员通过不断的学习查阅相关书籍,和在老师的指导下完成了为期两周的课程设计,对此我们小组也不断地在测试过程中进步,刚开始我们大家对于MFC这个操作不是很熟练以及加上数据库的连接之后学起来有些困难,不过我们小组并没有放弃而是继续努力学下去,最后经过我们不断得查资料进行学习之后最后将问题解决。
同时在进行这次小组作业过程中我们彼此都认识到自己的不足希望通过以后的学习生活中继续努力,,完善自己。
参考文献
【1】郑阿齐,VisualC++实用教程/北京:
电子工业出版社,2013.8
【2】谭浩强,C++程序设计。
北京:
北京师范大学出版社,2004.6
6,小组人员分工记录
组长:
李万成
主要负责:
该系统的思路结构设计,以及对于相关代码进行完善工作,包括函数的设计,控件的操作等。
组员:
王立
主要负责:
该系统的测试工作,以及找出一些程序错误进行修改。
组员:
周欢欢
主要负责:
系统文档的编辑,对于该系统的总结进行相关函数的完善操作。
仅供个人用于学习、研究;不得用于商业用途。
Forpersonaluseonlyinstudyandresearch;notforcommercialuse.
NurfürdenpersönlichenfürStudien,Forschung,zukommerziellenZweckenverwendetwerden.
Pourl'étudeetlarechercheuniquementàdesfinspersonnelles;pasàdesfinscommerciales.
толькодлялюдей,которыеиспользуютсядляобучения,исследованийинедолжныиспользоватьсявкоммерческихцелях.
以下无正文