要求:新建一个数据库文件(微软的 access ) , 里面包括学生的信息学号( ID ),姓名( Name ) , 英语成绩( English ) , 在 Visual C 6.0 里新建 MFC 项目,新建学生记录类( StudentRecordSet ) , 与数据库文件绑定。在 C 里面对文件里的信息进行添加
要求:新建一个数据库文件(微软的access),里面包括学生的信息学号(ID),姓名(Name),英语成绩(English),在Visual C++ 6.0里新建MFC项目,新建学生记录类(StudentRecordSet),与数据库文件绑定。在C++里面对文件里的信息进行添加,查找,输出,删除操作。
1. 首先新建一个MFC项目,这里取名为data
2. 在项目文件里,新建一个微软的access文件,取名为source
3. 打开source.mdb文件,点击使用设计器创建表,在表中字段名称 向下依次输入ID Name English ,前两个数据类型为文本,后一个数据类型为数字。选中ID的那一行,右键,设为主键(唯一的设为主键,比如一个班里的学生,每个人都有一个学号,各不相同,是唯一的)。关闭时提示是否保存对表1的修改,点击是,另存为 表名称 source 确定。
4.要把该数据文件设置为数据源。具体方法为打开电脑的控制面板,在里面找到管理工具,再找到数据源,双击打开,点击添加,选择Driver do Microsoft Access(* .mdb),在弹出的对话框中数据源名 source ,数据库选择那里选择上面我们建立的数据库文件(source.mdb).
5.接下来对MFC项目进行操作。在类视图data classes右键,new class(添加类),Type MFC Class. Name: StudentRecordSet Base class: CRecordset OK。在弹出的对话框里ODBC选择source ,RecordsetType 选择Dynaset动态,OK,这样 StudentRecordSet类就和数据库文件绑定了。
① 点击鼠标左键向 source.mdb 数据库文件中存数据。
1.在CDataView右键添加消息句柄,选择OnLButtonDown,进入函数void CDataView::OnLButtonDown(UINT nFlags, CPoint point)中,在里面写入下面代码:
StudentRecordSet rs; //建立对象
rs.Open(); //打开数据库文件
rs.AddNew(); //添加新数据
rs.m_ID="001"; //第一条记录的ID值
rs.m_Name="Tom";
rs.m_English=100;
rs.Update(); //更新
rs.Close(); //关闭文件
编译运行有错误。1,class StudentRecordSet : public CRecordset 基类CRecordset不认识,双击StudentRecordSet类,添加头文件#include
2.运行,点击鼠标左键,界面无任何反应,实际上rs.m_ID="001"; rs.m_Name="Tom";rs.m_English=100;数据已经存储到文件source.mdb中了,打开文件,看看,已经添加进去了。
如果继续在刚才的运行窗口点击鼠标左键,出现错误。是因为又向文件中添加一条相同的记录,但是已经设 ID为主键了,唯一,不能重复添加。
3. 如果再向文件中添加一条新纪录,需要修改如下代码的值
StudentRecordSet rs; //建立对象
rs.Open(); //打开数据库文件
rs.AddNew(); //添加新数据
rs.m_ID="001"; //第一条记录的ID值 修改001
rs.m_Name="Tom"; 修改Tom
rs.m_English=100; 修改100
rs.Update(); //更新
rs.Close(); //关闭文件
这里我把 001改为002 Tom改为 Jerry 100改为99,编译运行,鼠标左键,OK,到数据库文件 source.mdb中看一看,新纪录已经被添加了。PS:添加新纪录,也可以在文件中直接添加,不用再C++里面。
②点击鼠标右键,将数据库中的信息显示出来。
1.在CDataView类右键添加消息句柄,选择OnRButtonDown,进入void CDataView::OnRButtonDown(UINT nFlags, CPoint point),添加下面代码:
StudentRecordSet rs; //建立对象
rs.Open();
int y=20; //控制y坐标的变化,换行
CString strTemp;//临时变量
CClientDC dc(this);//客户区
while(!rs.IsEOF()) //判断是否到文件尾
{
strTemp.Format("ID:%s , Name:%s , English:%d",rs.m_ID,rs.m_Name,rs.m_English);//格式化
dc.TextOut(20,y,strTemp);//dc调用函数textout显示出内容
rs.MoveNext(); //指针默认在第一条记录,用这句话使指针下移
y+=20;//换行
}
rs.Close();
OK,编译,运行,点击鼠标右键,数据库中的内容全部显示在面板上。(不要再点击鼠标左键,否则会出现上面提到的相同的错误,鼠标左键里的代码可以先注释掉)
③修改内容以及指定内容修改
1.修改内容是对第一条记录修改的,在鼠标左键里的函数里写下面代码:
rs.Close(); //关闭文件*/
StudentRecordSet rs;
rs.Open();
rs.Edit();
rs.m_English=60;
rs.Update();
rs.Close();
编译运行,先点击左键,再点击右键,发现第一条记录的英语成绩已经被修改成了60
2.指定内容修改把刚才加的代码注释掉,加入以下代码:
StudentRecordSet rs;
rs.m_strFilter="ID='002'"; //ID为主键,唯一,信息过滤,ID为002的那一条记录,对它进行修改
rs.Open();
rs.Edit();
rs.m_English=80;//修改英语成绩
rs.Update();
rs.Close();
编译,运行,左键,右键,发现ID为002的英语成绩已经被修改为了 80
④内容的查找
还是在鼠标左键的函数里,把刚才 修改 的代码注释掉,写下面代码:
StudentRecordSet rs;
rs.m_strFilter="English=80"; //这里的意思是 要查找英语成绩为80的所有记录
rs.Open();
CClientDC dc(this);
CString strTemp;
int y=20;
while(!rs.IsEOF())
{
strTemp.Format("ID:%s,Name:%s,English:%d",rs.m_ID,rs.m_Name,rs.m_English);
dc.TextOut(20,y,strTemp); //加入了显示功能,点击左键
rs.MoveNext();
y+=20; //换行
}
rs.Close();
OK,编译,运行,点击鼠标左键,发现英语成绩为80的记录被显示。因为数据库文件中只有两条记录,有一条记录英语的成绩为80,所以这里只显示一条记录。PS(查找不能加 rs.Update()函数,这个函数只跟在加入记录和修改记录后面);
⑤内容的删除
这里指定内容删除就不说了,和指定内容修改差不多,把rs.Edit();换成rs.Delete();
下面是全部内容删除。
方法一:
1.把鼠标左键函数里刚才写的代码注释掉,加入下面代码:
StudentRecordSet rs;
rs.Open();
while(!rs.IsEOF())
{
rs.Delete(); //删除记录
rs.MoveNext();
}
rs.Close();
OK,编译,运行。左键。查看数据库文件.access
如下:
所有数据被删除。(这种方法,效率低,编程来删除文件数据,下面方法二是让数据库文件source.mdb来删除数据,效率高)
方法二:
1.把刚才方法一的代码注释掉。
加入以下代码:
CDatabase db;
StudentRecordSet rs(&db);
CString strSql="delete from source";
rs.Open();
db.ExecuteSQL(strSql);
rs.Close();
编译,运行,左键单击。OK达到与方法1同样的效果,文件里的数据全部删除
附上左键函数的代码:
void CDataView::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default /* StudentRecordSet rs; //建立对象 rs.Open(); //打开数据库文件 rs.AddNew(); //添加新数据 rs.m_ID="002"; //第一条记录的ID值 rs.m_Name="Jerry"; rs.m_English=99; rs.Update(); //更新 rs.Close(); //关闭文件*/ /* StudentRecordSet rs; rs.Open(); rs.Edit(); rs.m_English=60; rs.Update(); rs.Close();*/ //修改内容 /*StudentRecordSet rs; rs.m_strFilter="ID='002'"; rs.Open(); rs.Edit(); rs.m_English=80; rs.Update(); rs.Close();*/ //指定内容修改 /*StudentRecordSet rs; rs.m_strFilter="English=80"; rs.Open(); CClientDC dc(this); CString strTemp; int y=20; while(!rs.IsEOF()) { strTemp.Format("ID:%s , Name:%s , English:%d",rs.m_ID,rs.m_Name,rs.m_English); dc.TextOut(20,y,strTemp); rs.MoveNext(); y+=20; } rs.Close();*/ //查找并显示 /*StudentRecordSet rs; rs.Open(); while(!rs.IsEOF()) { rs.Delete(); rs.MoveNext(); } rs.Close();*/ //删除方法1 CDatabase db; StudentRecordSet rs(&db); CString strSql="delete from source"; rs.Open(); db.ExecuteSQL(strSql); rs.Close(); //删除方法2 CView::OnLButtonDown(nFlags, point); }

硬盘序列号是硬盘的一个重要标识,通常用于唯一标识硬盘以及进行硬件识别。在某些情况下,我们可能需要查询硬盘序列号,比如在安装操作系统、查找正确设备驱动程序或进行硬盘维修等情况下。本文将介绍一些简单的方法,帮助大家查询硬盘序列号。方法一:使用Windows命令提示符打开命令提示符。在Windows系统中,按下Win+R键,输入"cmd"并按下回车键即可打开命

如何通过PHP编写一个简单的在线预约系统随着互联网的普及和用户对便利性的追求,在线预约系统越来越受到欢迎。无论是餐厅、医院、美容院还是其他服务行业,都可以通过一个简单的在线预约系统来提高效率并为用户提供更好的服务体验。本文将介绍如何使用PHP编写一个简单的在线预约系统,并提供具体的代码示例。创建数据库和表格首先,我们需要创建一个数据库来存储预约信息。在MyS

如何使用Java编写一个简单的学生成绩报表生成器?学生成绩报表生成器是一个可以帮助老师或教育者快速生成学生成绩报告的工具。本文将介绍如何使用Java编写一个简单的学生成绩报表生成器。首先,我们需要定义学生对象和学生成绩对象。学生对象包含学生的姓名、学号等基本信息,而学生成绩对象则包含学生的科目成绩和平均成绩等信息。以下是一个简单的学生对象的定义:public

快速入门:使用Go语言函数实现简单的图书管理系统引言:随着计算机科学领域的不断发展,软件应用的需求也越来越多样化。图书管理系统作为一种常见的管理工具,也成为很多图书馆、学校和企业必备的系统之一。在本文中,我们将使用Go语言函数来实现一个简单的图书管理系统。通过这个例子,读者可以学习到Go语言中函数的基本用法以及如何构建一个实用的程序。一、设计思路:我们首先来

如何使用PHP开发简单的文件管理功能简介:文件管理功能在很多Web应用中都是必不可少的一部分。它允许用户上传、下载、删除和展示文件,为用户提供了便捷的文件管理方式。本文将介绍如何使用PHP开发一个简单的文件管理功能,并提供具体的代码示例。一、创建项目首先,我们需要创建一个基本的PHP项目。在项目目录下创建以下文件:index.php:主页面,用于显示上传表

如何通过C++编写一个简单的音乐推荐系统?引言:音乐推荐系统是现代信息技术的一个研究热点,它可以根据用户的音乐偏好和行为习惯,向用户推荐符合其口味的歌曲。本文将介绍如何使用C++编写一个简单的音乐推荐系统。一、收集用户数据首先,我们需要收集用户的音乐偏好数据。可以通过在线调查、问卷调查等方式来获得用户对不同类型音乐的喜好程度。将数据保存在一个文本文件或数据库

简单计算器是执行一些基本运算的计算器,例如“+”、“-”、“*”、“/”。计算器可以快速完成基本操作。我们将使用switch语句来制作一个计算器。示例Operator−‘+’=>34+324=358Operator−‘-’=>3874-324=3550Operator−‘*’=>76*24=1824O

网络爬虫是一种自动化程序,能够自动访问网站并抓取其中的信息。这种技术在如今的互联网世界中越来越常见,被广泛应用于数据挖掘、搜索引擎、社交媒体分析等领域。如果你想了解如何使用PHP编写简单的网络爬虫,本文将会为你提供基本的指导和建议。首先,需要了解一些基本的概念和技术。爬取目标在编写爬虫之前,需要选择爬取的目标。这可以是一个特定的网站、一个特定的网页、或整个互


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

SublimeText3 Linux new version
SublimeText3 Linux latest version

Notepad++7.3.1
Easy-to-use and free code editor

Atom editor mac version download
The most popular open source editor

WebStorm Mac version
Useful JavaScript development tools

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment
