基于VC++的学生信息管理系统.docx
- 文档编号:29144109
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:21
- 大小:820.20KB
基于VC++的学生信息管理系统.docx
《基于VC++的学生信息管理系统.docx》由会员分享,可在线阅读,更多相关《基于VC++的学生信息管理系统.docx(21页珍藏版)》请在冰豆网上搜索。
基于VC++的学生信息管理系统
《VisualC++程序设计》课程设计报告
班级:
计算机系软件Z102班姓名:
曹立红学号:
104431
一•引言
该次课程设计后台数据库连接ACCESS^创建数据库应用程序。
创建支持数据库的单文档的应用程序使用ListControl控件显示并操作原数据库表格内容,其功能可实现表格中信息项目的添加、修改、删除、刷新、查询,其中查询功能分为单条件查询和多条件查询两种。
二•系统设计
1•主页面如下:
运行之后ACCESS表中的数据就会在ListControl控件中显示通过主页面可以对表格中信息项目进行简单的刷新,删除,单条件查询(按姓名,学号,所在系,性别,出生年份的单独查询)和多条件查询(按姓名,学号,所在系,性别,出生年份的组合查询)。
2•点击添加按钮即可进入添加对话框如下:
可以输入相关数据点击添加按钮之后即可在原数据表中进行
添加一行,并且可以进行多次添加,点击确定之后刷新即可在
3•点击修改按钮即可进入修改对话框如下:
可以对已有的相关数据进行修改点击确定按钮之后即可
改变原数据表中数据行,刷新即可在ListControl控件中显示。
三.系统实现
1.运行界面图及各模块主要代码:
支嵐n辐口记曇向科刘"”|直八H?
两姑舸擄舒瞧甥颤础姐电趾生轴2S
ST
亨号
>
出生年世广=
广<
^TJ]
"二*1z1
*曙胖翻
19C9/1HT
ni
lvsMlqa
1ML/1/1BCS
BS
L9K/9/15
B5
m/^ia
lMO/VlO
!
b
im/fA
101陽15 GT a.刷新功能的实现: voidCKeView: : Onshuaxin() { if(m_pSet->lsOpen()) m_pSet->Close();〃如果此时数据库表打开则进行关闭。 CStringstr="select*fromstudent"; m_pSet->Open(AFX_DB_USE_DEFAULT_TYPE,str);〃然后以S所示条件对数据库表进行 打开。 m_Clist.DeleteAllltems();〃将ListControl控件现有的数据项目全部删除。 Disp();〃调用Disp()函数将原数据库表中的内容重新显示。 } voidCKeView: : Disp() {inti=0; CStringstr,str1; while(! m_pSet->IsEOF())//m_pSetCSet类的指针用于指向原数据库表格内容。 m_column1,m_column2,m_column3,m_column4,m_column5分别对应原数据库表格的学号,姓名,性别,出生日期,系所在列。 { m_Clist.InsertItem(i,m_pSet->m_column1); m_Clist.SetItemText(i,1,m_pSet->m_column2); m_Clist.SetItemText(i,2,m_pSet->m_column3); intyear=m_pSet->m_column4.GetYear(); intmonth=m_pSet->m_column4.GetMonth(); intday=m_pSet->m_column4.GetDay(); 将原数据库表格的第i行的相应 列列的 内容插到ListControl控件的i行各 str1.Format("%d/%d/%d",year,month,day);// m_Clist.SetItemText(i,3,str1); 列中; m_Clist.SetItemText(i,4,m_pSet->m_column5); i++; m_pSet->MoveNext();//m_pSet所指向的行下移。 } intn=m_Clist.GetItemCount(); if(n==0)//如果ListControl控件中的显示的内容为空AfxMessageBox("sorry! 没有找到匹配项! "); } b.删除功能的实现: voidCKeView: : Onshanchu() { intn=-1; n=m_Clist.GetSelectionMark();//n为选中的行号; if(n<0)//如果没有进行选择则给出提示 { AfxMessageBox("请选择删除项! "); return; CStrings,str; if(m_pSet->IsOpen()) m_pSet->Close();/如果此时数据库表打开则进行关闭str=m_Clist.GetItemText(n,0);//取出第n行的第0列的字段即学号列s="select*fromstudentwhere学号='"+str+"'"; m_pSet->Open(AFX_DB_USE_DEFAULT_TYPE,s);以S所示条件对数据库表进行打开。 m_pSet->Delete();//删除 m_pSet->Requery(); Onchaxun();//调用刷新函数在ListControl控件中显示 } c.修改功能的实现: voidCKeView: : Onxiugai() { intn=m_Clist.GetSelectionMark();//n为选中的行号 if(n<0)//如果没有进行选择则给出提示 { AfxMessageBox("请选择修改项! "); return; } CStringstr,str1,s; str=m_Clist.GetItemText(n,0);//取出第n行的第0列的字段即学号列if(m_pSet->IsOpen()) m_pSet->Close();如果此时数据库表打开则进行关闭 str1="select*fromstudentwhere学号='"+str+"'"; m_pSet->Open(AFX_DB_USE_DEFAULT_TYPE,str1);以S所示条件对数据库表进行打开。 CXgDlgobj;//修改对话框中建立的类的对象 obj.m_xh=m_pSet->m_column1; obj.m_xm=m_pSet->m_column2; obj.m_vc1=m_pSet->m_column3; obj.m_vrq=m_pSet->m_column4; 话框的各变量中 if(obj.DoModal()==IDOK)//修改完毕点击确定后则将修改后的修改对话框的各变量中的值传 {递给数据表中对应行中的各列 m_pSet->Edit(); UpdateData (1);m_pSet->m_column1=obj.m_xh; m_pSet->m_column2=obj.m_xm;m_pSet->m_column3=obj.m_vc1; m_pSet->m_column4=obj.m_vrq; m_pSet->m_column5=obj.m_vc2; m_pSet->Update(); } } d.添加功能的实现: 在主页面的“添加”按钮中写入下面的代码: voidCKeView: : Ontianjia() { CTjDlgobj;//定义添加对话框类的对象 obj.DoModal();//打开添加对话框; } 在添加对话框中的添加按钮中加入以下代码: voidCTjDlg: : Ontj() { UpdateData (1); if(m_xuehao=="")//如果添加时学号主键为空则提示错误信息 { AfxMessageBox("请输入完整信息项! "); return; } if(m_pSet2.IsOpen()) m_pSet2.Close();//如果此时数据库表打开则进行关闭 m_pSet2.Open();//在进行打开 m_pSet2.AddNew();//为原数据添加新的一行m_pSet2.m_column1=m_xingming; m_pSet2.m_column2=m_xuehao;m_pSet2.m_column3=m_xb; m_pSet2.m_column4=m_time; m_pSet2.m_column5=m_xi;//将添加对话框中新设定的值依此赋给原数据库表格中的各列;m_pSet2.Update(); } 刷新之后即可在ListControl控件中显示。 d.查询功能的实现: 1.单条件查询: 选中单条件查询的单选按钮后则主页面中的总查询按钮不可用,而每一个组框中对应的查询按钮均可用,则在单条件查询的单选按钮中写入以下代码: voidCKeView: : OnRadio6() { TRUE为 GetDlgItem(IDC_BUTTON10)->EnableWindow(FALSE);//获取对应按钮的ID并设定相应按钮的 GetDlgItem(IDC_BUTTON1)->EnableWindow(TRUE);EnableWindow属性FALSE为不可用 GetDlgItem(IDC_BUTTON6)->EnableWindow(TRUE);可用;GetDlgItem(IDC_BUTTON7)->EnableWindow(TRUE); GetDlgItem(IDC_BUTTON8)->EnableWindow(TRUE);GetDlgItem(IDC_BUTTON9)->EnableWindow(TRUE); } (1)按姓名查询: 在按姓名查询组框的查询按钮中写如以下代码: voidCKeView: : Onchaxun() { UpdateData (1); if(m_pSet->IsOpen()) m_pSet->Close(); CStrings; ;//在表中查询姓名列与edit中的输入的 s="select*fromstudentwhere姓名like'"+m_ve1+"%'" 变量相匹 m_Clist.DeleteAllltems();〃将ListControl控件现有的数据项目全部删除。 Disp();〃调用Disp()函数将原数据库表中的内容重新显示。 } (2)按学号查询: 在按学号查询组框的查询按钮中写如以下代码: voidCKeView: : Onchaxun1() { UpdateData (1); if(m_pSet->lsOpen()) m_pSet->Close(); CStrings; s="select*fromstudentwhere 学号='"+m_ve2+"";//在表中查询学号列与edit中的输入的变量相匹 m_Clist.DeleteAllltems();〃将ListControl控件现有的数据项目全部删除。 Disp();//调用Disp()函数将原数据库表中的内容重新显示。 } (3)按性别查询: 在按性别查询组框的查询按钮中写如以下代码: voidCKeView: : Onchaxun3() { UpdateData (1); if(m_pSet->lsOpen()) m_pSet->Close(); CStrings,s1; 丈卷迅超⑥记录也亘看也痔朗H) 只屉自曹|M*卜恻11豐| 广委来件百闻1 □5004序om J5UC5acooo9^010 lr«豆H杲ffl帀胜戟強于專3 I出兰匚期 1OT1/1/1B 19K/6/1I J^flZ/5 3990/^13 IW1/E/15 IWTirifl/l I刖揺 Mh CS 氐 FD 悄 CS (4)按所在系查询: 在按所在系查询组框的查询按钮中写如以下代码: voidCKeView: : Onchaxun2(){ //UpdateData(l); if(mpSet->lsOpen()) m_pSet->Close(); 特毛百闻 拎•斗刊書询 匚异 -宝 5J按#Z1C23: ^ilC1C4431L 出 r按怖^ r-捕出生年常 s1="男";//则令单选按钮的变量赋值为“男” elses1="女";//否则赋值为“女” s="select*fromstudentwhere性别='"+s1+""'; m_pSet->Open(AFX_DB_USE_DEFAULT_TYPE,s);m_pSet->Requery(); m_Clist.DeleteAllltems(); Disp(); CStrings,s1; intn=m_cc1.GetCurSel();〃n为当前选中项的下标; m_cc1.GetLBText(n,s1);〃获取当前选中项的值并赋给变量si; m_vc仁si;//并将该变量赋给组合框的变量。 UpdateData(O); s="select*fromstudentwhere系='"+m_vc1+""'; m_pSet->Open(AFX_DB_USE_DEFAULT_TYPE,s); m_pSet->Requery(); m_Clist.DeleteAllItems(); Disp(); } (5)按出生年份查询: 在按出生年份查询组框的查询按钮中写如以下代码: voidCKeView: : Onchaxun4() UpdateData (1); if(m_pSet->IsOpen()) m_pSet->Close(); CStrings,s1,s3; if(m_vr2==0) s1=">";//如果单选按钮选中第一项则为变量s1赋值为> elseif(m_vr2==1)s1="=";选中第二项则为变量s1赋值为= elses1="<";选中第三项则为变量s1赋值为<; s3.Format("%d",m_ve3);//将编辑框中的int类型的变量转换为字符串类型并赋给 s3; s="select*fromstudentwhereyear(出生日期)"+s1+s3; m_pSet->Open(AFX_DB_USE_DEFAULT_TYPE,s);m_pSet->Requery(); m_Clist.DeleteAllItems(); Disp(); } 1B7C 洱音徇 学号 Hi 就洛 按件Z102壬曹立红104421 '"狰制牛颐 rt 責斗田鼻宜E)E^F.ifi^i\)稱型H】 断在玉 ■柱陌在票厂灘宕厂按性別厂挣岀主年悅 1H生巳崩1斯&茎 LU4/1/17 LWL/1/1B 1992/6/14 cs CE mz/iz/5 OS D3 FQ L勺那加 FO 1991/VI 吋 数于 2.多条件查询 选中多条件查询的单选按钮后则主页面中的总查询按钮可用,而每一个组框中对应的查询按钮均不可用,则在多条件查询的单选按钮中写入以下代码: voidCKeView: : 0nRadio7() {GetDlgltem(IDC_BUTTON10)->EnableWindow(TRUE); GetDlgltem(IDC_BUTT0N1)->EnableWindow(FALSE); GetDlgltem(IDC_BUTTON6)->EnableWindow(FALSE); GetDlgItem(IDC_BUTTON7)->EnableWindow(FALSE); GetDlgltem(IDC_BUTTON8)->EnableWindow(FALSE); GetDlgltem(IDC_BUTTON9)->EnableWindow(FALSE); } 在主页面中的总查询按钮中写入以下代码: voidCKeView: : Onchaxun5() CStrings,s1,s2,s3; UpdateData (1); s1="男"; elses1="女"; elsestr12=""; if(m_vk4==1) if(m_vr2==0) s2=">"; elseif(m_vr2==1)s2="="; elses2="<"; s3.Format("%d",m_ve3); elsestr13=""; if(m_pSet->IsOpen()) //进行多条件字符串 m_pSet->Close(); s="select*fromstudentwhere"+str10+str11+str12+str13; 的连接 m_pSet->Open(AFX_DB_USE_DEFAULT_TYPE,s); m_pSet->Requery(); m_Clist.DeleteAllItems(); Disp(); 眾! S石醫i* 4■諌 •-T 鰹1 F*轩牌二1 甜** r箕 1却 1 1 (? 尿顷 却 ■n M W JSUi W 切LHE1 L3fiC.! \rl4 2.开发过程中遇到的问题及解决的办法. 解决方法为: intyear=m_pSet->m_column4.GetYear();〃 获取出生日期的年份; intmonth=m_pSet->m_column4.GetMonth();〃 获取出生日期的月份; intday=m_pSet->m_column4.GetDay();〃 获取出生日期的天数; str1.Format("%d/%d/%d",year,month,day);// 将年月日转换为字符串 m_Clist.SetltemText(i,3,str1); 四•结论 续查找相关记录的功能即不具有显示上一条或下一条的记录的功能; 此外,在修改时只能一次修改一项不能连续修改多项,添加时可连续添加但必须刷新才 能在ListControl控件显示。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 VC 学生 信息管理 系统