c++1学生信息管理系统
《c++1学生信息管理系统》由会员分享,可在线阅读,更多相关《c++1学生信息管理系统(22页珍藏版)》请在装配图网上搜索。
1、学生信息管理系统 1•课程设计的目的 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已 逐步成熟。管理信息系统是一个不断发展的新型学科,任何一个单位要生存要发展,要 高效率地把内部活动有机地组织起来,就必须建立与自身特点相适应的管理信息系统。 VC++程序设计课程设计是计算机科学与技术专业的《VC++程序设计》课程的综合性 实践环节。VC++程序设计是一门实用性很强的学科,是进行软件开发的主要工具,只有 进行实际操作,才能将理论知识和实际应用有机的结合起来,锻炼学生分析解决实际问 题的能力,提高学生实际运用的能力,为学生毕业设计,日后工作中的软件开发打下良 好的基
2、础。 2. 需求分析 用计算机技术实现的科学化管理,是在信息技术迅速发展的今天学校提高管理效率 的必需选择。学生信息管理系统是典型的信息管理系统(MIS),其开发主要包括后台数 据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性 和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备、易使用等特点。 学生信息管理系统用来将某一个院系按专业、班级来管理学生的基本信息、课程信 息和学生成绩。下面就其系统功能作简单的说明。该系统主要是方便查询学生的信息, 用该系统可以查到学生的姓名,年龄,学号,性别,学院,班级等。可以统计学生在某 一学期的总学分或者单科成绩、
3、总成绩。 系统主要功能包括:信息操作功能、查询功能、统计功能、分析功能。 2.1信息操作功能 (1) 学生基本信息的添加、修改和删除。学生基本信息包括:学号(学号的前6 位为班级号)、姓名、性别、出生日期和所在专业。 (2) 学生成绩信息的添加、修改和删除。学生成绩信息包括:学号、课程号、成 绩和和学分。 2・2查询功能 可以通过学号来查询学生基本信息,通过学号可以查询学生的选课信息,通过学号 和学期查询学生的成绩,通过课程号查询该课程的信息。 2・3统计功能 统计学生某个学期或所有学期课程的总学分,统计学生某个学期的或所有学期的单 科成绩或者总成绩。 2.4运行环境 (1
4、) 硬件环境 处理器:Inter Centrino Duo。 内存:521MB。 硬盘空间:80G。 (2) 软件环境 操作系统:WindowsXP Microsoft visual c++ Microsoft access 数据库 3. 总体设计 3.1系统的结构图 系统包括6大模块,添加信息,成绩导入,信息查询,威绩查询,个人信息,查看 成绩。 学生信息管理系统是对学生的基本信息和成绩信息进行管理,主要包括添加、修改 和删除学生的基本信息及课程的基本信息;录入、修改和删除学生的成绩信息,对基本 信息、成绩信息进行查询、排序及统计等操作,从而实现学生信息管理的自动化与
5、计算 机化。本课题将实现一个简化的学生信息管理系统。 (1) 添加信息:使用这个模块,可以添加学生的基本信息,包括学生的学号,姓 名,民族,性别,籍贯,出生年月日,政治面貌,学院,专业,所在年级,寝室地址, 毕业院校,身份证号,电子邮箱,联系电话,家庭住址,备注等。 (2) 成绩导入:包括学号,课程编号,课程名称,学分,成绩。 (3) 信息查询:包括学号,姓名,班级,学院。 (4) 成绩查询:包括课程名称,课程编号。 (5) 个人信息:当点击这个按钮时,可以显示当前某个人的信息。 (6) 查看成绩:点击这个按钮时,可以显示当前这个人的所有成绩。 3・2设计数据库 用Micros
6、oft Access创建一个数据库main.mdb,含有3个主要数据表:学生基本 信息表student、课程信息表couese和学生成绩表score。这3个数据表的结构如表1~3 所示。这几个表中,学号studentno和课程号courseno内容都是唯一的,分别是student 和course表中的主关键字°Score表中的studentno和student表中的同名字段相对应, 字段course和course表中的courseno字段相对应。说明:由于student和course表 中都有专业字段,因此为便于用户操作,需要一个专业数据字典。该数据字典也作为数 据库main.mdb的一个数据
7、表speical,其结构如表4所示。 表1学生基本信息表(st uden t)结构 序号 字段名称 数据类型 字段大小 小数位 字段含义 1 studentname 文本 20 姓名 2 studentno 文本 10 学号 3 xb 是/否 50 性别 4 birthday 日期/时间 出生年月 5 speical 文本 专业 表2课程信息表(course)结构 序号 字段名称 数据类型 字段大小 小数位 字段含义 1 courseno 文本 7 课程号
8、 2 special 文本 50 所属专业 3 coursename 文本 50 课程名 4 coursetype 文本 10 课程类型 5 openterm 数字 字节 开学学期 6 hours 数字 字节 课时数 7 credit 数字 单精度 1 学分 表3学生课程成绩表(score)结构 序号 字段名称 数据类型 字段大小 小数位 字段含义 1 studentno 文本 8 学号 2 course 文本 7 课程号
9、
3
score
数字
单精度
1
成绩
4
credit
数字
单精度
1
学分
4.详细设计
该系统包含多个模块,
期中重要的有6大模块,
添加信息,成绩导入,信息查询,
文件IQ 剰斤信息 堂若信理 離 辖助 的凹迎C□屢I匿 勧代忌腿导人{S.&.5L1 磁亘闻TA<=a堂看晰
n 电見報
宜…机13報 a<. 10、 计 电孑科技 电汽
Bissisi 逐 -H -M -4 fl Q ■::!■:UJJJ
1-35555KK5 ]3^EBBE£L23 ]35BBBEEEES 】•箱抽昶莊晒 ]Kflaflatt4
^St«llo
瓷窩日*KD
盘寓l#Klj 蚩离時LLD
图2系统的主界面
4.1信息查询的设计
下面我们对信息查询做详细的设计。信息查询这个模块的功能主要通过某个学生的 某一项信息,比如学号,班级,姓名,专业,年级,然后查询到这个学生的多个信息。 比如通过学生的学号,可以查询到这个学生所在学院,所在班级等。当我们点击信息查 询这个按 11、钮时,显示一个对话框,如图3所示。
xif ■?).s.sfifi -班瓦电 m 睛曲
StDInA庆&异人恒总査询勰査谒个心耳萱若克&
+ —j :am 呵 + J罚關
手号 EmnoaiioG KdKdDOE [KOKaKN KdKdDCE KCWXJKil
I S5坪眼
1|爵.号冯
1|西地址
30D噺
I3555S55S5S
^■W7tnn
3004^
J3Et8SB81E3
阿爆
1需卿卿時
ZOQ逊
JMM04-15W
rWMflKflM
■2t'WLD
图3信息查询 12、的界面
当我们点击信息查询按钮时,会立刻弹出一个对话框,期中对话框中包括一个列表 框,列表框中包括学号,姓名,学院,专业,年级,列表框中还包括2个按钮,一个查 找按钮,一个取消按钮。
使用CRecordSet类的成员变量m_strFilter、m_strSort和成员函数Open可以对 表进行记录查询。
(1)打开Ex_ODBC应用程序的表的单资源,按如图4所示的布局添加控件,七宗 添加的编辑框ID号设为IDC_EDIT_QUERY,查询按钮的ID号设为IDC_BUTTON_QUERY..
图4添加控件
(2) 用 MFC classwizard 为控件 IDC_EDIT_Q 13、UERY 添加关联变量 m_strQuery.
(3) 在 CEx_ODBCView 类中添加按钮控件 IDC_BUTTON_QUERY 的 BN_CLICKED 消息映 射,并在映射函数中添加下列代码:
void CMemberView::RemoveAll()
{
//增加指针变量指向ListView的CListCtrl
CListCtrl *ctl;
ctl二&Get Lis tCt rl();
//删除CListCtrl中的所有记录
ctl->Dele teAll It ems();
}
//strSearch查询条件 strMember关键字
void CMem 14、berView::ListMember(CString strSearch,CString strMember) {
//前此输出的用户记录
RemoveAll();
//建立一个指针,用以操作ListCtrl输出用户记录
CListCtrl *ctl;
ctl二&Get Lis tCt rl();
//创建CMemberReSet的实例
CMemberReSet m_MemberReSet;
//记录用户序号
int i=0;
//定义一个变量来保存〃%〃以便设置SQL语句
char chrTemp二
CString strTemp;
try {
if(m_Mem 15、berReSet. IsOpen()) m_MemberReSe t.Close();
//设置查询条件"MemName二s trMemberName"
if(strMember二二〃〃)
{
AfxMessageBox( 〃请输入关键字〃);
return;
}
进入信息查询模块之后就可以对信息进行查询,我们选择选择框里选择“姓名” 然后在输入框里输入“陈一”然后点查找按钮,然后就会弹出陈一的个人信息,如图5 所示。
在这个操作过程中我们需要建立一个映射控件消息。
(1) 打开Ex_DlgCtrls应用程序项目。
(2) 将项目工作区窗口切换到ResourseView 16、页面,双击Dialog资源下的标识 IDD_EX_DLGCTRLS_DLALOG,打开该对话框资源模板
(3) 删除“TODO:在这里设置对话控制”控件,添加一个按钮控件,保留其默认属性。
(4) 按快捷键CTRL+W,打开〃"MFC CLASSWIZAD"对话框,查看“class name”列表中是 否选择了 CEx_DlgCtrlsDlg,在IDs列表中选择IDS_BUTTON1,这是添加按钮后,系统自 动为此按钮设置的默认标示符,然后在Messages框中选择BN_CKICKED消息。
(5) 单吸“Add function”按钮或者双击BN_CLICKED消息,出现“Add Me 17、mber Function” 对话框。在这里可以输入成员函数的名称,系统默认的函数为ONButtonl。
(6) 单吸"OK"按钮,在MFC Class Wizard的“Member function”列表中将列出新增 加的成员函数。选择此函数,单吸“ Edit Code ”按钮,开发环境的文档窗口中将自动 打开该函数的源代码文件,并定位到该函数的实现代码处。在此成员函数中添加下列代 码:
Void CEx_DlgCtrlsDlg::onButton()
{MessageBox("确定修改记录?")
}
(7) 编译并运行,当单击按钮时,就会执行ONButton1函数,弹出一个消息一 18、个对话 框。
5. 心得体会
刚看到课程设计题目的时候,总感觉对visual c++处于一知半解的状态,开始分工 也比较混乱,但是在划分模块后明确的各自分工,渐渐的有了点眉目。
在设计的过程中,经常会遇到这样那样的问题,比如说怎样才能实现我们所要的功 能,设计过程中的图的画法,程序的编写、文档的编写、排版等。由于课本上的知识太 多,平时课间的学习并不能很好的理解和运用知识,面对这些问题,我们就自己上图书 馆借书,网上搜素资料,相互讨论来解决我们的问题。真的是体会到了只有理论知识是 远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正 的为我所用,从而提高自己的实际 19、动手能力和独立思考的能力。
此次课程设计,让我们学到了很多课内学不到的东西,比如独立思考解决问题,出 现差错的随机应变,和与人合作共同提高等等,无不让我们受益非浅。
6. 参考文献
[1] 王珊,萨师煊编著.VC++实用教程[M].北京高等教育出版社,2007.7 83-126
[2] 孙越编著.Visual C++数据库开发自学教程[M].人民邮电出版社2003.7 50-75
[3] 王彬华,李建华编著.Visual C++实例教程[M]电子科技大学出版社2004.48-95
[4] 李春葆,曾平编著.数据库原理与应用[M].北京清华大学出版社,2006.1 41-74
附录 20、:
#include "stdafx.h"
#include "member.h"
#include "memberDoc.h"
#include "memberView.h"
#include "MainFrm.h"
#include "MemberReSet.h"
#include "MemberDialog.h"
#include "MemberEditDlg.h"
#include "ScoreDlg.h"
#include "ScoreReSet.h"
#include "MemberAdd.h"
#ifdef _DEBUG
#define new DEBU 21、G_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE,
#end if
// CMemberView
IMPLEMENT_DYNCREATE(CMemberView, CListView)
BEGIN_MESSAGE_MAP(CMemberView, CListView)
//{{AFX_MSG_MAP(CMemberView)
ON_NOTIFY_REFLECT(NM_DBLCLK, OnDblclk)
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAN 22、D(ID_FILE_PRINT, CListView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_DIRECT, CListView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_PREVIEW, CListView::OnFilePrintPreview) END_MESSAGE_MAP()
// CMemberView construction/destruction
CMemberView::CMemberView()
{
// TODO: add construction code here
}
CMembe 23、rView::~CMemberView()
{
}
BOOL CMemberView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
//设置 CListCtrl 的格式为:LVS_REPORT 并且 LVS_SINGLESEL
cs.style|=LVS_REPORT|LVS_SINGLESEL; return CListView::PreCreateWindow(cs);
// C 24、MemberView drawing
void CMemberView::OnDraw(CDC* pDC)
{
CMemberDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
}
void CMemberView::OnInitialUpdate()
{
//创建一个CListCtrl指针
CListCtrl *ctl;
ctl= &GetListCtrl(); //指向 CListView 的 CListCtrl
//表格风格
ct l 25、-〉Se tExt endedS tyle(c tl-〉Ge tEx tendedS tyle()|LVS_EX_GRIDLINES|LVS_EX_FULLROWSELEC T);
//利用CLisrCtrl设置列的题头
ct l->Inser tColumn(0,"学号"丄VCFMT_LEFT,100);
ct l->Inser tColumn(l,"姓名"丄VCFMT_LEFT,100);
ct l-〉Inser tColumn(2,〃 性别〃丄VCFMT_LEFT,80);
ct l-〉Inser tColumn(4,〃 学院〃丄VCFMT_LEFT,100);
ctl-〉I 26、nsertColumn(5,"专业"丄VCFMT_LEFT,100);
ct l-〉Inser tColumn(6,〃 所在年级〃丄VCFMT_LEFT,100);
ct l-〉Inser tColumn(7,〃 联系号码〃丄VCFMT_LEFT,100);
ct l-〉Inser tColumn( 8,〃寝室地址〃丄VCFMT_LEFT,200); OnPain t();
CListView::OnInitialUpdate();
//获取CMainFrame的指针
CMainFrame *m_Frm=(CMainFrame*)::AfxGetMainWnd();
//将CMa 27、inFrame的m_ListViet指针变量指向CMemberView的实列 m_Frm—〉m_ListView二this;
// TODO: You may populate your ListView with items by directly accessing // its list control through a call to GetListCtrl().
}
// CMemberView printing
BOOL CMemberView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation 28、 return DoPreparePrinting(plnfo);
}
void CMemberView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void CMemberView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
// CMemberView diagn 29、ostics
#ifdef _DEBUG
void CMemberView::AssertValid() const
{
CListView::AssertValid();
}
void CMemberView::Dump(CDumpContext& dc) const
{
CListView::Dump(dc);
}
CMemberDoc* CMemberView::GetDocument() // non—debug version is inline
{
ASSERT(m_pDocument-〉IsKindOf(RUNTIME_CLASS(CMemberDoc)) 30、); return (CMemberDoc*)m_pDocument;
}
#endif //_DEBUG
// CMemberView message handlers void CMemberView::RemoveAll()
{
//增加指针变量指向ListView的CListCtrl
CListCtrl *ctl; ct l二&Get Lis tCt rl();
//删除CListCtrl中的所有记录 ctl-〉DeleteAllitems();
}
//strSearch查询条件 strMember关键字
void CMemberView::ListMember( 31、CString strSearch,CString strMember)
{
//前此输出的用户记录 RemoveAll();
//建立一个指针,用以操作ListCtrl输出用户记录
CListCtrl *ctl; ct l二&Get Lis tCt rl();
//创建CMemberReSet的实例
CMemberReSet m_MemberReSet;
//记录用户序号
int i=0;
//定义一个变量来保存〃%〃以便设置SQL语句 char chrTemp二'%';
CString strTemp;
try { if(m_MemberReSet. IsOpen() 32、) m_MemberReSe t.Close();
//设置查询条件"MemName=s trMemberName"
if(strMember=="”)
{
AfxMessageBox("请输入关键字”);
return;
}
if(s tr Search=二"学号")
{
CString str;
str.Format( "select * from member where MemID = '%s' order by MemID ASC",s tr Member);
m_MemberReSet. Open(CRecordset::snapshot,str ,CReco 33、rdset::none);
}
else if(s tr Search=二"姓名")
{
m_MemberReSet.m_strFilter.Format("MemName LIKE '%c%s%c' order by MemID ASC",chrTemp,s tr Member.opera tor LPCTSTR(),chrTemp);
m_MemberReSet. Open(CRecordset::snapshot,NULL,CRecordset::none);
}
else if(s tr Search二二"学院") {
m_MemberReSet.m_strFilter 34、.Format("Memins = '%s' order by MemID ASC",s tr Member.opera tor LPCTSTR());
m_MemberReSet. Open(CRecordset::snapshot,NULL,CRecordset::none);
}
else if(s tr Search=二"专业") {
m_MemberReSet.m_strFilter.Format("MemSpe LIKE '%c%s%c' order by MemID ASC",chrTemp,s tr Member.opera tor LPCTSTR(),chrTemp) 35、;
m_MemberReSet. Open(CRecordset::snapshot,NULL,CRecordset::none);
}
else if(s tr Search=二"年级") {
m_MemberReSet.m_strFilter.Format("MemYear LIKE '%c%s%c' order by MemID ASC",chrTemp,s tr Member.opera tor LPCTSTR(),chrTemp);
m_MemberReSet. Open(CRecordset::snapshot,NULL,CRecordset::none);
}
el 36、se if(strSearch=二"年级 tree") {
m_MemberReSet.m_strFilter.Format("MemYear = %s order by MemID ASC",s tr Member.opera tor LPCTSTR());
m_MemberReSet. Open(CRecordset::snapshot,NULL,CRecordset::none);
}
else
{ AfxMessageBox("条件选择错误"); return;
}
//输出匹配上查询到的用户记录,直到记录为空 while(!m_MemberReSe t.IsEOF()) 37、
{
ctl-〉InsertItem(i,m_MemberReSet.m_MemID); ctl-〉SetItemText(i ,l,m_MemberReSet.m_MemName);
ctl-〉Se tIt emTex t( i,2,m_MemberReSe t.m_MemSex);
ctl-〉Se tIt emTex t( i,3,m_MemberReSe t.m_MemIns);
ctl-〉SetItemText(i ,4,m_MemberReSet.m_MemSpe); ctl-〉Se tIt emTex t( i,5,m_MemberReSe t.m_MemYear);
38、ctl-〉Se tIt emTex t( i,6,m_MemberReSe t.m_MemPhone); ctl-〉Se tIt emTex t( i,7,m_MemberReSe t.m_MemBed); m_MemberReSe t.M oveNex t();
} if(m_MemberReSet. IsOpen()) m_MemberReSe t.Close();
}
catch(CDBException *e)
{
e-〉Dele te();
return; }
}
void CMemberView::EditCurUser()
{
//建立一个指针,用以操作Lis 39、tCtrl输出用户记录
CListCtrl *ctl;
ct l二&Get Lis tCt rl();
//寻找当前选中的记录的位置
POSITION pos=ctl-〉GetFirstSelectedltemPosition();
if (pos==NULL)
{
//如果没有选择记录,则提示并退出
AfxMessageBox("请先选择一条信息!"); return;
}
//获取当前记录的位置游标
int m_CurUser=ctl-〉GetNextSelectedltem(pos);
//创建一个MemberEditDlg的实例
CMemberEditDlg 40、m_MemberEditDlg;
CMemberReSet m_MemberReSet;
//创建一个临时字符串来保存当前用户信息
char chrTemp[201] = {'\0'};
//查找学号
ctl-〉GetitemText(m_CurUser,0,chrTemp,sizeof(char[20]));
if(m_MemberReSet. IsOpen())
m_MemberReSe t.Close();
m_MemberReSe t.m_s trFilt er.Forma t(" MemID LIKE '%s'",chrTemp); m_MemberReSet. Op 41、en(CRecordset::snapshot,NULL,CRecordset::none); //输出匹配上条件用户记录,直到记录为空
if(m_MemberReSet. IsOpen() && !m_MemberReSet. IsE0F())
{
//开始显示记录的内容
m_MemberEditDlg.m_MemID=m_MemberReSet.m_MemID; m_MemberEditDlg.m_MemName=m_MemberReSet.m_MemName; m_MemberEditDlg.m_MemSex=m_MemberReSet.m_MemSex;
m_MemberEd 42、itDlg.m_MemBorn=m_MemberReSet.m_MemBorn;
m_MemberEditDlg.m_MemPolity=m_MemberReSet.m_MemPolity; m_MemberEditDlg.m_MemNative二m_MemberReSet.m_MemNative; m_MemberEditDlg.m_MemPlace=m_MemberReSet.m_MemPlace; m_MemberEditDlg.m_MemIns=m_MemberReSet.m_MemIns;
m_MemberEditDlg.m_MemSpe=m_MemberReSet.m_MemS 43、pe; m_MemberEditDlg.m_MemSchool=m_MemberReSet.m_MemSchool;
m_MemberEditDlg.m_MemBed=m_MemberReSet.m_MemBed;
m_MemberEditDlg.m_MemEmail=m_MemberReSet.m_MemEmail;
m_MemberEditDlg.m_MemYear=m_MemberReSet.m_MemYear;
m_MemberEditDlg.m_MemCard=m_MemberReSet.m_MemCard;
m_MemberEditDlg.m_MemPhone=m_Mem 44、berReSet.m_MemPhone;
m_MemberEditDlg.m_MemHadd=m_MemberReSet.m_MemHadd;
m_MemberEditDlg.m_MemHphone=m_MemberReSet.m_MemHphone;
m_MemberEditDlg.m_Remark=m_MemberReSet.m_Remark;
}
if(m_MemberEditDlg.DoModal()!=IDOK)
{
//如果用户选择取消按钮,则退出
return;
}
UpdateData(FALSE);
if(MessageBox(〃确定修改记录? 〃,〃修 45、改确认〃,MB_YESNO|MB_ICONQUESTION)==IDYES)
{
try
{
if(m_MemberReSet. IsOpen())
m_MemberReSe t.Close();
//设置查询条件"MemID=chrTemp"
m_MemberReSe t.m_s trFilt er.Forma t(" MemID二'%s'",chrTemp);
m_MemberReSet. Open(CRecordset::snapshot,NULL,CRecordset::none);
//如果用户记录存在,则进行修改操作
if(m_MemberReSet. IsOp 46、en()&&!m_MemberReSet. IsEOF())
{
//设置编辑当前记录
m_MemberReSe t.Ed it();
//开始编辑该条记录的内容
m_MemberReSet.m_MemID=m_MemberEditDlg.m_MemID;
m_MemberReSet.m_MemName=m_MemberEditDlg.m_MemName;
m_MemberReSet.m_MemSex=m_MemberEditDlg.m_MemSex; m_MemberReSet.m_MemBorn=m_MemberEditDlg.m_MemBorn; if(m_MemberRe 47、Se t.CanUpda te())
{
m_MemberReSet. Update();
}
//更新完毕,关闭数据库 m_MemberReSe t.Close(); } else
{
//关闭数据库
if(m_MemberReSet. IsOpen())
m_MemberReSe t.Close();
//提示用户
AfxMessageBox("该记录不存在,无法修改!"); return;
}
}
catch(CDBException*e)
{
e-〉ReportError ();
return;
}
//将用户信息及时更新到ListCtrl中
ct 48、l-〉SetitemText(m_CurUser,O,m_MemberEditDlg.m_MemID); ctl-〉SetitemText(m_CurUser,l,m_MemberEditDlg.m_MemName);
ctl-〉SetitemText(m_CurUser,2,m_MemberEditDlg.m_MemSex); ctl-〉SetitemText(m_CurUser,3,m_MemberEditDlg.m_MemIns); ctl-〉SetitemText(m_CurUser,4,m_MemberEditDlg.m_MemSpe); ctl-〉SetitemText(m_Cu 49、rUser,5,m_MemberEditDlg.m_MemYear); ctl-〉SetitemText(m_CurUser,6,m_MemberEditDlg.m_MemPhone); ctl-〉SetitemText(m_CurUser,7,m_MemberEditDlg.m_MemBed);
}
}
void CMemberView::OnDblclk(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here *pResult 二 0;
Edit Cu 50、rUser();
}
void CMemberView::LookMember()
{
//创建一个MemberDialog的实例 CMemberDialog m_MemberDialog;
CMemberReSet m_MemberReSet;
CString chrTemp二FindPosition(); if(chrTemp=="")
return;
if(m_MemberReSet. is0pen())
m_MemberReSe t.Close(); m_MemberReSe t.m_s trFilt er.Forma t(" MemiD LiKE '%s'",chr 51、Temp); m_MemberReSet. Open(CRecordset::snapshot,NULL,CRecordset::none); //输出匹配上条件用户记录,直到记录为空
if(m_MemberReSe t.is0pen() && !m_MemberReSe t.isE0F()){
//开始显示记录的内容 m_MemberDialog.m_MemiD=m_MemberReSet.m_MemiD; m_MemberDialog.m_MemName=m_MemberReSet.m_MemName; m_MemberDialog.m_MemSex=m_MemberReSet.m_M 52、emSex; m_MemberDialog.m_MemBorn=m_MemberReSet.m_MemBorn;
m_MemberDialog.m_MemPolity=m_MemberReSet.m_MemPolity; m_MemberDialog.m_MemNative二m_MemberReSet.m_MemNative; m_MemberDialog.m_MemPlace=m_MemberReSet.m_MemPlace; m_MemberDialog.m_MemIns=m_MemberReSet.m_MemIns; m_MemberDialog.m_MemSpe=m_MemberRe 53、Set.m_MemSpe; m_MemberDialog.m_MemSchool=m_MemberReSet.m_MemSchool; m_MemberDialog.m_MemBed=m_MemberReSet.m_MemBed; m_MemberDialog.m_MemEmail=m_MemberReSet.m_MemEmail; m_MemberDialog.m_MemYear=m_MemberReSet.m_MemYear; m_MemberDialog.m_MemCard=m_MemberReSet.m_MemCard; m_MemberDialog.m_MemPhone=m_Memb 54、erReSet.m_MemPhone; m_MemberDialog.m_MemHadd=m_MemberReSet.m_MemHadd; m_MemberDialog.m_MemHphone=m_MemberReSet.m_MemHphone; m_MemberDialog.m_Remark=m_MemberReSet.m_Remark;
} if(m_MemberDialog.DoModal()==IDCANCEL) {
//如果用户选择取消按钮,则退出
return;
}
UpdateData(FALSE);
}
void CMemberView::DelCurUser() 55、
{
//建立一个指针,用以操作ListCtrl输出用户记录
CListCtrl *ctl; ct l二&Get Lis tCt rl(); //寻找当前选中的记录的位置 POSITION pos=ctl-〉GetFirstSelectedltemPosition(); if (pos==NULL)
{
//如果没有选择记录,则提示并退出 AfxMessageBox("请先选中一条记录!"); return; }
//获取当前记录的位置游标
int m_CurUser=ctl-〉GetNextSelectedltem(pos);
//创建一个临时字符串来保存当前用户信息 cha 56、r chrTemp[21] = {'\0'};
//取得用户ID ctl-〉GetitemText(m_CurUser,0,chrTemp,sizeof(char[20]));
//创建CMemberReSet的实例 CMemberReSet m_MemberReSet;
if(MessageBox("删除该学生同时会删除该生所有成绩记录,确定删除记录?","删除确认 〃,MB_YESNO|MB_ICONQUESTION)==IDYES)
{
try {
//删除个人信息 if(m_MemberReSet. IsOpen()) m_MemberReSe t.Close();
m_ 57、MemberReSet.m_strFilter.Format("MemID LIKE '%s' order by MemID",chrTemp); m_MemberReSet. Open(CRecordset::snapshot,NULL,CRecordset::none);
//如果用户记录存在,则进行修改操作 if(m_MemberReSet. IsOpen() && !m_MemberReSet. IsEOF())
{
//设置编辑当前记录 m_MemberReSe t.Dele te();
//更新完毕,关闭数据库 m_MemberReSe t.Close();
}
els 58、e //考虑特例,如果操作中用户信息不存在了
{
//关闭数据库 if(m_MemberReSet. IsOpen()) m_MemberReSe t.Close();
//提示用户 AfxMessageBox("该记录不存在,无法删除!"); return;
}
//删除对应的所有个人成绩 CScoreReSet m_ScoreReSet; if(m_ScoreReSet. IsOpen()) m_ScoreReSe t.Close();
CString sql; sql.Forma t( "selec t * from score where MemID='%s'",chrTe 59、mp); m_ScoreReSet. Open(CRecordset::snapshot ,sql,CRecordset::none);
//如果用户记录存在,则进行修改操作 while(!m_ScoreReSet. IsEOF()) {
//设置编辑当前记录 m_ScoreReSe t.Dele te(); m_ScoreReSe t.M oveNex t();
}
//更新完毕,关闭数据库 m_ScoreReSe t.Close();
}
catch(CDBException*e)
{
e->ReportError ();
return;
}
//在ListCtrl中 60、删除当前用户信息
ctl—〉DeleteItem(m_CurUser);
}
}
void CMemberView::OnPaint()
{
RemoveAll();
//创建一个CListCtrl指针
CListCtrl *ctl;
ctl= &GetListCtrl(); //指向 CListView 的 CListCtrl //记录用户序号
int i 二 0;
CString strTemp;
CMemberReSet m_MemberReSet;
try {
//关闭记录集 if(m_MemberReSet. Is0pen())
m_MemberReSe 61、 t.Close(); m_MemberReSet. Open(CRecordset::snapshot,NULL,CRecordset::none);
//如果用户记录存在,则进行修改操作 while(!m_MemberReSe t.IsEOF())
//意外捕获
catch(CDBException*e)
{
e-〉ReportError ();
return; }
}
CString CMemberView::FindPosition()
{
//建立一个指针,用以操作ListCtrl输出用户记录
CListCtrl *ctl;
ct l二&Get Lis tCt 62、 rl(); CString chrTemp;
//寻找当前选中的记录的位置
int row二ctl-〉GetSelectionMark(); chrTemp二ctl-〉GetitemText(row,0);
if (chrTemp=="")
{
//如果没有选择记录,则提示并退出
AfxMessageBox("请先选中一条记录的学号!");
// return chrTemp;
}
return chrTemp;}
void CMemberView::MemberAdd()
{
CMemberAdd m_MemberEditDlg;
if(m_MemberEditD 63、lg.DoModal()!=IDOK)
return;
CMemberReSet m_MemberReSet;
try { if(m_MemberReSet. IsOpen()) m_MemberReSe t.Close();
m_MemberReSet.m_strFilter.Format("MemID like '%s' order by MemID ASC",m_MemberEd it Dlg.m_MemID.opera tor LPCTSTR());
m_MemberReSet. Open(CRecordset::snapshot,NULL,CRecordset::none) 64、; //输出匹配上查询到的用户记录,直到记录为空 辻(!m_MemberReSe t.IsEOF()) m_MemberReSe t.Close();
AfxMessageBox("学号已存在!"); return; }
m_MemberReSe t.AddNew();
m_MemberReSet.m_MemID=m_MemberEditDlg.m_MemID; m_MemberReSet.m_MemName=m_MemberEditDlg.m_MemName;
m_MemberReSet.m_MemSex=m_MemberEditDlg.m_MemSex; m_MemberReSet 65、.m_MemBorn=m_MemberEditDlg.m_MemBorn;
m_MemberReSet.m_MemPolity=m_MemberEditDlg.m_MemPolity; m_MemberReSet.m_MemNative二m_MemberEditDlg.m_MemNative; m_MemberReSet.m_MemPlace=m_MemberEditDlg.m_MemPlace; m_MemberReSet.m_MemIns=m_MemberEditDlg.m_MemIns;
m_MemberReSet.m_MemSpe=m_MemberEditDlg.m_MemSpe; 66、 m_MemberReSet.m_MemYear=m_MemberEditDlg.m_MemYear;
m_MemberReSet.m_MemSchool=m_MemberEditDlg.m_MemSchool; m_MemberReSet.m_MemBed=m_MemberEditDlg.m_MemBed;
m_MemberReSet.m_MemEmail=m_MemberEditDlg.m_MemEmail; m_MemberReSet.m_MemCard=m_MemberEditDlg.m_MemCard; m_MemberReSet.m_MemPhone=m_MemberEditDlg.m_MemPhone; m_MemberReSet.m_MemHadd=m_MemberEditDlg.m_MemHadd; m_MemberReSet.m_MemHphone=m_MemberEditDlg.m_MemHphone; m_MemberReSet.m_Remark=m_MemberEditDlg.m_Remark;
//添加成功刷新到表中显示
AfxMessageBox(
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。