您好,欢迎访问三七文档
数据库实验报告班级:2012211601姓名:滑璐瑶学号:2012212067环境:vs2012+mysql实验内容:通过MFC可视化编程连接odbc数据源实现学生管理系统应用程序的开发1,数据库的创建:建立3个基本表,分别为学生信息表stu,课程信息表cs,学生选课表sc其中学生信息表中包含属性学号,姓名,性别,年龄课程信息表中包含属性课程号,课程名学生选课表中包含属性学生学号,课程号.成绩其中,学生信息表中数据如下所示:课程信息表中数据如下所示:学生选课信息表中数据如下:2,添加ODBC数据源单击添加,如图,弹出创建新数据源窗口,选择MySQLODBC5.3UnicodeDriver驱动器(该驱动器可以到官网下载),单击完成.弹出如下窗口单击Test.显示连接成功完成.在数据源管理程序中,可以看到我们刚刚添加进的数据源.至此,数据源添加成功.3.创建mfc应用程序.并连接数据库3.1创建mfc应用程序新建MFC应用程序,命名为学生信息管理系统,单击完成,弹出应用程序向导.单击下一步,选择基于对话框,其余默认.完成.创建完后如下图所示:3.2连接到数据库单击工具栏中的工具,选择连接到数据库,弹出添加连接窗口.在使用用户名或系统数据源名称的下拉菜单中选择我们新添加的数据源mysqldatabase单击测试连接,显示连接成功.完成.在服务器资源管理器中可以看到数据连接成功,4,应用程序设计功能.学生基本信息管理成绩管理信息查询对表的操作其中学生信息管理可以实现对学生信息的输入,删除,修改成绩管理可以实现成绩录入,修改查询功能包含岁学生信息的查询和对课程信息的查询.对表的操作包括新建表,修改表,为表添加数据,删除表;5,代码实现登陆界面设置界面如上图所示在资源视图中添加新的对话框,作为主界面,并为该对话框添加类,命名为mainMenu;点击确定后跳转到主界面,主界面包含程序实现的主要功能界面如下:登陆界面与主界面的跳转代码如下:学生信息管理:添加学生信息管理对话框,为其添加类stuMan.h,当在主界面中单击学生信息管理按钮时,跳转到该对话框,该对话框界面如下:其中,当点击返回主菜单按钮时,返回主界面实现代码如下:voidstuMan::OnBnClickedButton1(){//TODO:在此添加控件通知处理程序代码this-OnOK();mainMenudlgmain;dlgmain.DoModal();}插入学生信息实现代码如下:voidstuMan::OnBnClickedButton2(){//TODO:在此添加控件通知处理程序代码CDatabasedb;CStringid;CStringname;CStringsex;CStringage;//intstu_id;GetDlgItemText(IDC_EDIT1,id);//将编辑框中输入的内容获取到了变量中GetDlgItemText(IDC_EDIT2,name);GetDlgItemText(IDC_COMBO1,sex);GetDlgItemText(IDC_COMBO2,age);//MessageBox(id);CStringstr1;CStringstr2;//char*p=(LPSTR)(LPCTSTR)id;//stu_id=atoi(p);//MessageBox();str1.Format(_T(INSERTINTOstuVALUES('%s','%s','%s','%s')),id,name,sex,age);//添加学生信息str2.Format(_T(SELECT*FROMstuWHEREidstu='%s'),id);db.Open(_T(mysqldatabase));CRecordsetrec(&db);rec.Open(CRecordset::forwardOnly,str2,CRecordset::readOnly);//判断要添加的学生信息是否存在if(rec.GetRecordCount()0)//如果记录集中的个数不为0,说明该学生信息已存在,(以学号为主键){MessageBox(_T(对不起,要添加的学生信息已存在));return;}else{rec.Close();db.ExecuteSQL(str1);MessageBox(_T(插入数据成功));}}其中getdlgitemtext()函数实现了编辑框与变量之间的关联.删除学生信息的实现代码:voidstuMan::OnBnClickedButton3()//删除学生信息{//TODO:在此添加控件通知处理程序代码CDatabasedb;CStringstr1;CStringid;GetDlgItemText(IDC_EDIT3,id);str1.Format(_T(DELETEFROMstuWHEREidstu='%s'),id);CStringstr2;//判断该记录是否存在str2.Format(_T(SELECT*FROMstuWHEREidstu='%s'),id);db.Open(_T(mysqldatabase));CRecordsetrec(&db);rec.Open(CRecordset::forwardOnly,str2,CRecordset::readOnly);//查询记录是否存在if(rec.GetRecordCount()0){db.ExecuteSQL(str1);MessageBox(_T(删除数据成功));rec.Close();}else{MessageBox(_T(对不起,要删除的学生信息不存在));return;}}修改学生信息的实现代码:voidstuMan::OnBnClickedButton4(){//TODO:在此添加控件通知处理程序代码CDatabasedb;CStringid;//关联学号CStringstr1;//关联要修改的属性CStringstr2;//关联修改后的值GetDlgItemText(IDC_EDIT5,id);GetDlgItemText(IDC_COMBO3,str1);GetDlgItemText(IDC_EDIT6,str2);CStringstr;str.Format(_T(UPDATEstuSET%s='%s'WHEREidstu='%s'),str1,str2,id);db.Open(_T(mysqldatabase));db.ExecuteSQL(str);MessageBox(_T(修改数据成功));}表明插入数据成功数据库中已不存在该学生信息,表明删除数据成功数据库中学号为2012212054的学生年龄为20;在修改学生信息中填写信息如下,单击确定执行后,修改前与修改后学生年龄信息发生变化,修改数据成功课程信息管理原始存在的cs表中数据如下:课程信息管理界面如下:当要添加的课程信息已存在时,会提示错误,如下所示:添加课程信息12009,大学英语,如下所示:单击确定后,数据库中结构如下:实现代码:voidCourseMenu::OnBnClickedButton2()//添加课程信息{//TODO:在此添加控件通知处理程序代码CStringstr1;//课程号CStringstr2;//课程名GetDlgItemText(IDC_EDIT1,str1);GetDlgItemText(IDC_EDIT2,str2);CStringsqlstr;//判断要添加的数据信息是否存在sqlstr.Format(_T(select*fromcswhereidcs='%s'orname='%s'),str1,str2);CStringstr;//sql语句str.Format(_T(INSERTINTOcsVALUES('%s','%s')),str1,str2);//插入CDatabasedb;db.Open(_T(mysqldatabase));CRecordsetrec(&db);rec.Open(CRecordset::forwardOnly,sqlstr,CRecordset::readOnly);if(rec.GetRecordCount()0)//要添加信息已存在{MessageBox(_T(要添加的信息已存在));return;}else{db.ExecuteSQL(str);MessageBox(_T(添加课程信息成功));rec.Close();}}删除课程信息:当要删除的课程信息不存在时,会提示错误,如下所示:数据库中信息如上图所示,以不存在数据库课程,删除成功代码如下:voidCourseMenu::OnBnClickedButton3()//删除课程信息{//TODO:在此添加控件通知处理程序代码CStringstr1;//课程号CStringstr2;//课程名GetDlgItemText(IDC_EDIT3,str1);GetDlgItemText(IDC_EDIT4,str2);CStringstr;//sql语句str.Format(_T(DELETEFROMcsWHEREidcs='%s'ANDname='%s'),str1,str2);//删除元组CDatabasedb;CStringsqlstr;//判断要删除的数据信息是否存在sqlstr.Format(_T(select*fromcswhereidcs='%s'andname='%s'),str1,str2);db.Open(_T(mysqldatabase));CRecordsetrec(&db);rec.Open(CRecordset::forwardOnly,sqlstr,CRecordset::readOnly);if(rec.GetRecordCount()0)//记录存在{try{db.ExecuteSQL(str);MessageBox(_T(删除课程信息成功));}catch(CDBException*e){AfxMessageBox(e-m_strError);return;}}else{MessageBox(_T(对不起,要删除的课程信息不存在));return;}}学生成绩管理:界面如下:代码:voidStuScore::OnBnClickedButton2()//添加{//TODO:在此添加控件通知处理程序代码CStringid;//学生学号CStringcname;//课程名CStringscore;//成绩GetDlgItemText(IDC_EDIT1,id);GetDlgItemText(IDC_EDIT2,cname);GetDlgItemText(IDC_EDIT3,score);CStringstr;str.Format(_T(INSERTINTOscVALUES('%s','%s','%s')),id,cname,score);CDatabasedb;db.Open(_T(mysqldatabase));db.ExecuteSQL(str);}voidStuScore::OnBnClickedButton3()//删除{//TODO:在此添加控件通知处理程序代码CStringids;//学生学号CStringidc;//课程号CStringcname;//课程名CStringscore;//成绩GetDlgItemText(IDC_EDIT1,ids);GetDlgItemText(IDC_EDIT2,cname);GetDlgItemText(IDC_EDIT3,score);CStringstr;//str.Format(_T(INSERTINTOscVALUES('%s','%s','%s')),ids,_T(SELECTidWHERE,score);CDatabasedb;db.Open(_T(mysqldatabase));db.ExecuteSQL(str);}选课信息管理界面如下:当要添加的选课信息已存在时,提示错误
本文标题:北邮数据库实验报告
链接地址:https://www.777doc.com/doc-6014122 .html