面向对象程序设计报告

合集下载

《 面向对象程序设计》课程设计实验报告

《 面向对象程序设计》课程设计实验报告

《面向对象程序设计》课程设计实验报告指导教师小组成员:专业班级: 2010级计算机科学与技术专业开设时间:2011-2012(一)目录1.任务1 (2)1.1 任务介绍 (2)1.2 小组成员任务分配 (2)1.3.1设计思想及主要流程图 (2)1.3.1主要程序清单 (2)1.3.1 运行结果及分析 (4)1.3.2设计思想及主要流程图 (2)1.3.2主要程序清单 (2)1.3.2 运行结果及分析 (4)1.3.3设计思想及主要流程图 (2)1.3.3主要程序清单 (2)1.3.3 运行结果及分析 (4)2.任务2 (2)2.1 任务介绍 (2)2.2 小组成员任务分配 (2)2.3设计思想及主要流程图 (2)2.3主要程序清单 (2)2.3 运行结果及分析 (4)3收获、体会和建议 (4)任务1.按照要求设计类 1.根据输出设计类设计类就是根据数据封装的要求,抽象出适合的类。

有如下测试程序和测试程序的输出结果,要求设计类Welcome 。

void main() { Welcome we; Welcome you(we); you.Display();you.Set(“Thank you.”);cout<<you.Get()<<endl; you.talk(); you.Display();}测试程序的输出结果如右: 设计类Welcome 的原则 1)在头文件Cpp1.h 中声明类 2)在Cpp1.cpp 中实现类3)使用内联函数定义Display()函数2.使用类改写程序编写一个求方程02=++c bx ax 的根的程序,用三个函数分别求当ac b 42+大于零、等于零和小于零时方程的根。

要求从主函数输入a 、b 、c 的值并输出结果。

使用面向过程的解法一般是把变量设为double 型,适用库函数cmath 进行计算。

请注意:使用面向对象的方法解决这个问题,首先要从解一元二次方程出发,抽象一个代表一元二次方程的类。

面向对象程序设计实验报告1

面向对象程序设计实验报告1
看看这些字符的10进制ascii码哦ascii码一样同一种字符字符怎么参加了数学运算哦是字符对应的ascii码整数2006年级20061719号姓名同组姓名实验日期2010看看这个字符是什么
实验一
实验名称:实验一Visual C++环境
实验目的:
⒈熟悉VC++的集成开发环境,学习运行一个C++程序的步骤。
y=fun(x);
if(y==0)
cout<<"they input num is sushu"<<endl;
else
cout<<"they input num is not sushu"<iostream.h>
#include<math.h>
float fun(float a,float b,float c,float d)
return 0;
3. #include<iostream.h>
void main()
{inta,b,c,d,e;
double score;
a=b=c=d=0;
cin>>score;
while(score>=0)
{
if(score>=90)
a++;
else
if(score>=80)
b++;
else
if(score>=70)
do{
*p=*(--p);
}while( p>s+n);
(*p)=c;
}
return s;
}
int main()

C++面向对象程序设计》实验报告

C++面向对象程序设计》实验报告

《C++面向对象程序设计》实验内容实验1 C++程序设计初步1.实验目的(1)了解在C++编译系统(Visual C++6.0)上如何编辑、编译、连接和运行一个C++程序。

(2)通过运行简单的C++程序, 初步了解C++源程序的结构和特点。

(3)掌握简单C++程序的编写和调试方法。

(4)掌握重载函数的定义方法。

(5)能正确使用引用型变量。

2.实验内容和步骤(1)在Visual C++环境下编译和运行C++程序①先进入Visual C++6.0环境。

②在自己指定的子目录中建立一个名为test.cpp的新文件。

③从键盘输入以下程序int main(){int a,b;c=a+b;cout>> “a+b=”>>a+b;}选择Build→Compile test.cpp命令, 对此源程序进行编译。

观察和分析编译信息。

⑤根据编译信息指出的错误, 修改程序。

再进行编译, 如果还有错, 再重复此过程, 直到编译不出错为止。

⑥选择Build→Build test.exe命令, 对程序进行连接, 如果不出错, 就会生成可执行程序test.exe。

⑦选择Build→Execute test.exe命令, 执行可执行程序test.exe。

观察屏幕的变化。

在输出窗口应显示程序运行结果。

⑧分析结果是否正确, 如果不正确或认为输出格式不理想, 可以修改程序, 然后重新执行以上④和⑧步骤。

改过后的程序:#include<iostream>using namespace std;int add(int x,int y){int z;z=x+y;return(z);}int main(){int a,b,c;cin>>a>>b;c=add(a,b);cout<<"a+b="<<c<<endl;return 0;}实验2 C++对C的扩充(2)编一个程序, 用来求2个或3个正整数中的最大数。

面向对象程序设计课程实验总结报告

面向对象程序设计课程实验总结报告

舉申科按衣專课程实验报告课程名称:面向对象程序设计院系:专业班级:____________学号:__________姓名:_______________指导教师:____________实验一.面向过程的整型栈编程 (1)1. 需求分析 (1)1.1题目要求 (1)1.2需求分析 (1)2. 系统设计 (2)2.1概要设计 (2)2.2详细设计 (3)4. 软件测试 (4)5. 特点与不足 (4)5.1技术特点 (4)5.2不足和改进的建议 (5)6. 过程和体会 (5)6.1遇到的主要问题和解决方法 (5)6.2课程设计的体会 (5)7. 源码和说明 (5)7.1文件清单及其功能说明 (5)7.2用户使用说明书 (5)7.3源代码 (5)实验二.面向对象的整型栈编程 (12)1. 需求分析 (12)1.1题目要求 (12)1.2需求分析 (12)2. 系统设计 (13)2.1概要设计 (13)2.2详细设计 (13)3. 软件开发 (14)4. 软件测试 (14)5. 特点与不足 (14)5.1技术特点 (14)5.2不足和改进的建议 (15)6. 过程和体会 (15)7. ......................................................................................................................................... 源码和说明. (15)7.1文件清单及其功能说明 (15)7.2用户使用说明书 (15)7.3源代码 (15)实验三.基于算符重载的整型栈编程 (19)1. 需求分析 (19)1.1题目要求 (19)1.2需求分析 (19)2. 系统设计 (20)2.1概要设计 (20)2.2详细设计 (20)3. 软件开发 (20)4. 软件测试 (20)5. 特点与不足 (21)5.1技术特点 (21)5.2不足和改进的建议 (21)6. 过程和体会 (21)6.1遇到的主要问题和解决方法 (21)6.2课程设计的体会 (21)7. 源码和说明 (21)7.1文件清单及其功能说明 (21)7.2用户使用说明书 (21)7.3源代码 (21)实验四.面向对象的整型队列编程 (25)1. 需求分析 (25)1.1题目要求 (25)1.2需求分析 (25)2. 系统设计 (26)3. 软件开发 (26)4. 软件测试 (26)5. 特点与不足 (26)5.1技术特点 (26)5.2不足和改进的建议 (26)6. 过程和体会 (26)6.1遇到的主要问题和解决方法 (26)6.2课程设计的体会 (27)7. ..................................................................................................................................... 源码和说明 (27)7.1文件清单及其功能说明 (27)7.2用户使用说明书 (27)7.3源代码 (27)实验五.基于组合的整型队列编程 (31)1. 需求分析 (31)1.1题目要求 (31)1.2需求分析 (31)2. 系统设计 (31)3. 软件开发 (32)4. 软件测试 (32)5. 特点与不足 (32)5.1技术特点 (32)5.2不足和改进的建议 (32)6. 过程和体会 (32)6.1遇到的主要问题和解决方法 (32)6.2课程设计的体会 (32)7. 源码和说明 (33)7.1文件清单及其功能说明 (33)7.2用户使用说明书 (33)7.3源代码 (33)实验六.基于继承的整型队列编程 (37)1. 需求分析 (37)1.1题目要求 (37)1.2需求分析 (38)2. 系统设计 (38)3. 软件开发 (38)4. 软件测试 (38)5. 特点与不足 (38)5.1技术特点 (38)5.2不足和改进的建议 (38)6. 过程和体会 (39)7. .......................................................................................................................................... 源码和说明. (39)7.1文件清单及其功能说明 (39)7.2用户使用说明书 (39)7.3源代码 (39)实验一.面向过程的整型栈编程1. 需求分析1.1题目要求整型栈是一种先进后出的存储结构,对其进行的操作通常包括判断栈是否为空、向栈顶添加一个整型元素、出栈等。

面向对象程序设计实验报告

面向对象程序设计实验报告

《面向对象程序设计实验》实验一、Java实验环境的建立(2学时)1、目的要求(1)掌握Java编程环境的搭建过程;(2)掌握Jcreator pro软件的使用方法;(3)能使用Java doc文档。

2、实验内容(1)下载并安装JDK1.6,配置JDK环境变量;(2)下载Javadoc压缩包并解压在JDK安装路径下;(3)下载Jcreator pro 4.0并安装和配置使用环境;(4)使用实验环境运行书中实例代码,在屏幕上输出“Hello Java”字符串。

①Java application程序代码如下:public class HelloJava{public static void main(String args[]){ System.out.println("Hello Java!"); }}②Java applet程序代码如下:import java.awt.*;public class Hello extends java.applet.Applet{public void paint(Graphics g){ g.drawString("Hello!",30,30); }}3、仪器与材料:计算机实验二、Java语言程序设计训练(2学时)1、目的要求(1)输入、输出操作实现原理和方法;(2)掌握程序流程控制的实现方法;(3)掌握数组的定义和操作方法。

2、实验内容(1)计算Result=1!+2!+3!+...+10!。

public class Test3 {public static void main(String[] args) {int sum = 0, fact, n, i;for (n = 1; n <= 10; n++) {fact = 1;for (i = 1; i <= n; i++)fact *= i;sum += fact;}System.out.println("sum=" + sum);}}(2)计算1---50之间所有素数的和。

实验二 面向对象编程实验报告

实验二 面向对象编程实验报告

实验二面向对象编程实验报告一、实验目的本次实验旨在深入理解和掌握面向对象编程的基本概念和方法,通过实际编程操作,提高运用面向对象思想解决问题的能力,熟悉面向对象编程的开发流程和技巧,培养良好的编程习惯和代码规范。

二、实验环境本次实验使用的编程环境为具体编程环境名称及版本,操作系统为操作系统名称及版本。

三、实验内容(一)问题描述设计一个简单的学生管理系统,能够实现对学生信息(包括姓名、学号、年龄、成绩等)的录入、查询、修改和删除操作。

(二)类的设计1、设计一个`Student` 类,用于表示学生对象。

该类包含以下属性:`name`(姓名)、`student_id`(学号)、`age`(年龄)、`score`(成绩)。

2、为`Student` 类添加构造函数,用于初始化学生对象的属性。

3、为`Student` 类添加`get` 和`set` 方法,用于获取和设置学生对象的属性值。

(三)功能实现1、录入功能:实现用户输入学生信息,并创建`Student` 对象进行存储。

2、查询功能:根据学号或姓名查询学生信息,并输出查询结果。

3、修改功能:根据学号或姓名找到对应的学生对象,修改其属性值。

4、删除功能:根据学号或姓名删除对应的学生对象。

四、实验步骤(一)类的实现```javapublic class Student {private String name;private String studentId;private int age;private double score;public Student(String name, String studentId, int age, double score) {thisname = name;thisstudentId = studentId;thisage = age;thisscore = score;}public String getName(){return name;}public void setName(String name) {thisname = name;}public String getStudentId(){return studentId;}public void setStudentId(String studentId) {thisstudentId = studentId;}public int getAge(){return age;}public void setAge(int age) {thisage = age;}public double getScore(){return score;}public void setScore(double score) {thisscore = score;}}```(二)主函数实现```javaimport javautilArrayList;import javautilScanner;public class StudentManagementSystem {private ArrayList<Student> students;public StudentManagementSystem(){students = new ArrayList<>();}public static void main(String args) {StudentManagementSystem system = new StudentManagementSystem();Scanner scanner = new Scanner(Systemin);while (true) {Systemoutprintln("1、录入学生信息");Systemoutprintln("2、查询学生信息");Systemoutprintln("3、修改学生信息");Systemoutprintln("4、删除学生信息");Systemoutprintln("5、退出系统");int choice = scannernextInt();switch (choice) {case 1:systemaddStudent(scanner);break;case 2:systemqueryStudent(scanner);break;case 3:systemmodifyStudent(scanner);break;case 4:systemdeleteStudent(scanner);break;case 5:Systemoutprintln("感谢使用,再见!");Systemexit(0);default:Systemoutprintln("输入有误,请重新输入!");}}}//录入学生信息public void addStudent(Scanner scanner) {Systemoutprintln("请输入学生姓名:");String name = scannernext();Systemoutprintln("请输入学生学号:");String studentId = scannernext();Systemoutprintln("请输入学生年龄:");int age = scannernextInt();Systemoutprintln("请输入学生成绩:");double score = scannernextDouble();Student student = new Student(name, studentId, age, score);studentsadd(student);Systemoutprintln("学生信息录入成功!");}//查询学生信息public void queryStudent(Scanner scanner) {Systemoutprintln("请输入查询方式(1、按学号查询 2、按姓名查询):");int queryType = scannernextInt();if (queryType == 1) {Systemoutprintln("请输入学号:");String studentId = scannernext();for (Student student : students) {if (studentgetStudentId()equals(studentId)){Systemoutprintln("姓名:"+ studentgetName());Systemoutprintln("学号:"+ studentgetStudentId());Systemoutprintln("年龄:"+ studentgetAge());Systemoutprintln("成绩:"+ studentgetScore());return;}}Systemoutprintln("未找到该学号对应的学生信息!");} else if (queryType == 2) {Systemoutprintln("请输入姓名:");String name = scannernext();for (Student student : students) {if (studentgetName()equals(name)){Systemoutprintln("姓名:"+ studentgetName());Systemoutprintln("学号:"+ studentgetStudentId());Systemoutprintln("年龄:"+ studentgetAge());Systemoutprintln("成绩:"+ studentgetScore());return;}}Systemoutprintln("未找到该姓名对应的学生信息!");} else {Systemoutprintln("输入有误,请重新输入!");}}//修改学生信息public void modifyStudent(Scanner scanner) {Systemoutprintln("请输入修改方式(1、按学号修改 2、按姓名修改):");int modifyType = scannernextInt();if (modifyType == 1) {Systemoutprintln("请输入学号:");String studentId = scannernext();for (Student student : students) {if (studentgetStudentId()equals(studentId)){Systemoutprintln("请输入新姓名:");String newName = scannernext();Systemoutprintln("请输入新年龄:");int newAge = scannernextInt();Systemoutprintln("请输入新成绩:");double newScore = scannernextDouble();studentsetName(newName);studentsetAge(newAge);studentsetScore(newScore);Systemoutprintln("学生信息修改成功!");return;}}Systemoutprintln("未找到该学号对应的学生信息!");} else if (modifyType == 2) {Systemoutprintln("请输入姓名:");String name = scannernext();for (Student student : students) {if (studentgetName()equals(name)){Systemoutprintln("请输入新学号:");String newStudentId = scannernext();Systemoutprintln("请输入新年龄:");int newAge = scannernextInt();Systemoutprintln("请输入新成绩:");double newScore = scannernextDouble();studentsetStudentId(newStudentId);studentsetAge(newAge);studentsetScore(newScore);Systemoutprintln("学生信息修改成功!");return;}}Systemoutprintln("未找到该姓名对应的学生信息!");} else {Systemoutprintln("输入有误,请重新输入!");}}//删除学生信息public void deleteStudent(Scanner scanner) {Systemoutprintln("请输入删除方式(1、按学号删除 2、按姓名删除):");int deleteType = scannernextInt();if (deleteType == 1) {Systemoutprintln("请输入学号:");String studentId = scannernext();for (Student student : students) {if (studentgetStudentId()equals(studentId)){studentsremove(student);Systemoutprintln("学生信息删除成功!");return;}}Systemoutprintln("未找到该学号对应的学生信息!");} else if (deleteType == 2) {Systemoutprintln("请输入姓名:");String name = scannernext();for (Student student : students) {if (studentgetName()equals(name)){studentsremove(student);Systemoutprintln("学生信息删除成功!");return;}}Systemoutprintln("未找到该姓名对应的学生信息!");} else {Systemoutprintln("输入有误,请重新输入!");}}}```五、实验结果通过对程序的运行和测试,能够成功实现学生信息的录入、查询、修改和删除功能。

面向对象程序设计实验报告

面向对象程序设计实验报告

面向对象程序设计实验报告实验报告(1)2015.6【实验作者】学号:姓名:班级:教学站:【实验名称】实验一:熟悉C++程序的风格和C++程序的上机全过程【实验目的】1.熟悉C++程序的风格,熟悉实验环境。

2.练习C++程序的输入、修改、编译、连接与运行的全过程。

3.本实验有4个程序【实验内容】1. 习题2.2下面是一个C程序,改写它,使它采用C++风格的I/O语句。

(1)该程序做什么工作?输入两个整数,求两个整数的大于1 的最小公约数[(另外请教下毛老师:如果最小公约数与最小数相等时,我觉得也有可能这个数是两个数的大于1 的最小公约数)即7与14的公约数为1,7按题意的话,要大于1,那么7也是这两个数的最小公约数,但程序不认为它们具有公约数]。

(2)该程序中那几个数是由键盘输入的?那几个数是输出的?那几个数是临时变量?a与b 由键盘输入;d 是输出的;a,b,d,min 都是临时变量。

(3)用C++风格的I/O语句是什么?#include <iostream.h> cout<<与cin>>(4)写出该程序的算法(用流程图表示)框图1:(5)该程序你有否上机编译、连接、运行通过。

有上机编译连接并运行通过,但有些疑问!2. 习题 2.20分析下面程序的输出结果:(1)该程序做什么工作?利用引用函数改变一个变量的值。

(2)该程序有几个函数?其中f函数是什么函数?其功能是什么?一个函数,F函数是一个引用返回值的函数,并且该函数参数也为一个引用,函数功能是送入一个对变量引用,将变量+10后送回。

成为对返回值的引用。

(3)写出该程序的算法(用流程图表示)框图2:(4)该程序你有否上机编译、连接、运行通过。

该程序有上机编译并连接运行通过。

3. 习题2.23 建立一个被称为sroot( )的函数,返回其参数的二次根。

重载sroot( )三次,让它分别返回整数、长整数与双精度数的二次根(为了实际计算二次根,可以使用标准库函数sqrt( ))。

面向对象程序设计实验报告

面向对象程序设计实验报告

面向对象程序设计实验报告【实验报告】面向对象程序设计一、引言面向对象程序设计是一种以对象为基础的软件开发方法,它将现实世界中的事物抽象成对象,并通过对象之间的交互来实现程序的功能。

本次实验旨在通过实践,加深对面向对象程序设计的理解,并掌握面向对象程序设计的基本原理和技巧。

二、实验目的1. 熟悉面向对象程序设计的基本概念和术语;2. 掌握面向对象程序设计的基本原理和技巧;3. 能够运用面向对象程序设计的思想解决实际问题。

三、实验内容1. 设计一个简单的图书管理系统;2. 实现图书的增删改查功能;3. 设计并实现图书管理系统的类结构;4. 编写测试代码,验证图书管理系统的功能。

四、实验步骤1. 设计图书管理系统的类结构:a. 创建一个Book类,包含图书的属性(书名、作者、出版社等)和方法(借阅、归还等);b. 创建一个Library类,用于管理图书馆的图书,包含添加图书、删除图书、查找图书等方法;c. 创建一个User类,用于表示图书馆的用户,包含借书、还书等方法;d. 创建一个Main类,作为程序的入口,用于测试图书管理系统的功能。

2. 实现图书的增删改查功能:a. 在Book类中实现图书的增删改查方法;b. 在Library类中调用Book类的方法,实现图书的增删改查功能。

3. 设计并实现图书管理系统的类结构:a. 根据实验要求,设计图书管理系统的类结构,包括Book、Library和User 类;b. 在每个类中定义相应的属性和方法,实现图书管理系统的功能。

4. 编写测试代码,验证图书管理系统的功能:a. 在Main类中创建图书馆和用户对象;b. 调用相应的方法,测试图书管理系统的功能;c. 检查输出结果,确保图书管理系统的功能正常运行。

五、实验结果与分析经过实验,成功设计并实现了一个简单的图书管理系统。

该系统具备图书的增删改查功能,用户可以通过借书和还书操作实现对图书的借阅和归还。

经过多次测试,系统运行稳定,功能正常。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计报告题 目 文件备份管理系统课 程 名 称 面向对象程序设计课程设计院 部 名 称 计算机工程学院专 业 计算机科学与技术班 级 14计算机科学与技术(单)(1)学 生 姓 名 邵佳楠学 号 ********** 课程设计地点 A101课程设计学时 20学时指 导 教 师 赵金陵科技学院教务处制 成绩一、课程设计的目的和要求该课程设计的目的采用面向对象的程序设计语言,学会综合运用已学的C++知识,用面向对象的技术和文件打开,关闭,保存等实现一个小型的应用程序.开发实现一个应用程序,主要目的是使学生更好的掌握面向对象程序设计语言及其开发工具,掌握如何使用面向对象的程序设计语言设计一个小的软件系统。

通过该课程设计培养学生分析和解决实际问题的能力,培养学生综合应用基本概念,基本原理,和技术方法的能力,真正做到学以致用,使课本上抽象的理论,方法与具体的实践应用相结合。

二、系统需求分析(1)设计浏览文件按钮,点击弹出选择文件提示框(2)选取文件后把文件地址保存到静态变量(3)设计备份按钮,点击弹出保存文件提示框(4)选择保存目录后把目录地址保存到静态变量(5)执行文件保存函数传入两个地址达到文件备份的目的(6)成功保存后将文件名,备份时间,备份地址保存到txt文档中(7)读取txt文档内容在列表控件中显示(8)还原功能系统界面如下:1.浏览文件按钮2.源文件地址预览3.备份历史记录列表4.备份文件按钮5.取消按钮6.备份按钮三、总体设计文件备份顾名思义就是将一个文件复制到另一个文件夹中,但要实现复制最起码要知道两个参数:1.源文件 2.目的目录总体流程:四、详细设计(1)此处是窗口初始化函数以及初始化列表信息BOOL CFileCopyDlg::OnInitDialog(){CDialogEx::OnInitDialog();// 将“关于...”菜单项添加到系统菜单中。

// IDM_ABOUTBOX 必须在系统命令范围内。

ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL){BOOL bNameValid;CString strAboutMenu;bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);ASSERT(bNameValid);if (!strAboutMenu.IsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);}}// 设置此对话框的图标。

当应用程序主窗口不是对话框时,框架将自动// 执行此操作SetIcon(m_hIcon, TRUE); // 设置大图标SetIcon(m_hIcon, FALSE); // 设置小图标// TODO: 在此添加额外的初始化代码m_listAll.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);m_listAll.InsertColumn(0, "文件名", LVCFMT_CENTER);m_listAll.InsertColumn(1, "备份时间", LVCFMT_CENTER);m_listAll.InsertColumn(2, "备份目录", LVCFMT_CENTER);m_listAll.SetColumnWidth(0, 200);m_listAll.SetColumnWidth(1, 120);m_listAll.SetColumnWidth(2, 250);char* old_locale = _strdup(setlocale(LC_CTYPE, NULL));setlocale(LC_CTYPE, "chs");//设置地区语言为中文CStdioFile file;file.Open("BatInfo.txt",CFile::modeRead);CString s;int n=0;//控制行数,具体你自己定while (TRUE == file.ReadString(s)){if (s.Find(";") == -1 && s.GetLength() <= 4)continue;else{char dst[10][80];char *pBuff = s.GetBuffer(0);split(dst, pBuff, ",");m_listAll.InsertItem(n, dst[0]);m_listAll.SetItemText(n, 1, dst[1]);m_listAll.SetItemText(n, 2, dst[2]);n++;}}setlocale(LC_CTYPE, old_locale);free(old_locale); //还原语言地区设置return TRUE; // 除非将焦点设置到控件,否则返回 TRUE}(2)此处是浏览文件按钮点击事件void CFileCopyDlg::OnBnClickedButton1(){CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, "All Files (*.*)|*.*||");if (dlg.DoModal() == IDOK){GetDlgItem(IDC_STATIC)->SetWindowTextA(dlg.GetPathName());SFilePath = dlg.GetPathName();FileName = dlg.GetFileName();}}(3)此处是备份按钮点击事件void CFileCopyDlg::OnBnClickedOk(){// TODO: 在此添加控件通知处理程序代码CFileDialog FileDlg(FALSE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT);FileDlg.m_ofn.lpstrInitialDir = "c:\\";if (FileDlg.DoModal() == IDOK){CTime t = CTime::GetCurrentTime();string time = "";stringstream ssY;stringstream ssM;stringstream ssD;int year = t.GetYear();int Month = t.GetMonth();int Day = t.GetDay();string strY="";string strM="";string strD="";CString CSFilePath = "";CString COFilePath = "";ssY << year;ssY >> strY;ssM << Month;ssM >> strM;ssD << Day;ssD >> strD;time = strY + "年" + strM + "月";time += strD + "日";OFilePath = FileDlg.GetPathName();CSFilePath = SFilePath.c_str();COFilePath = OFilePath.c_str();Tranfile(CSFilePath.GetBuffer(0), COFilePath.GetBuffer(0));ofstream outfile;outfile.open("BatInfo.txt",ios::app);outfile << FileName + "," + time + "," + OFilePath<< endl;outfile.close();m_listAll.DeleteAllItems();char* old_locale = _strdup(setlocale(LC_CTYPE, NULL));setlocale(LC_CTYPE, "chs");//设置地区语言为中文CStdioFile file; file.Open("BatInfo.txt", CFile::modeRead);CString s;int n = 0;//控制行数,具体你自己定while (TRUE == file.ReadString(s)){if (s.Find(";") == -1 && s.GetLength() <= 4)continue;else{char dst[10][80];char *pBuff = s.GetBuffer(0);split(dst, pBuff, ",");m_listAll.InsertItem(n, dst[0]);m_listAll.SetItemText(n, 1, dst[1]);m_listAll.SetItemText(n, 2, dst[2]);n++;}}setlocale(LC_CTYPE, old_locale);free(old_locale); //还原语言地区设置}//CDialogEx::OnOK();}(4)备份功能void CFileCopyDlg::OnBnClickedButton2(){// TODO: 在此添加控件通知处理程序代码CString SPath;CString OPath;int nId;//首先得到点击的位置POSITION pos=m_listAll.GetFirstSelectedItemPosition();if(pos==NULL){MessageBox("请至少选择一项","提示",MB_ICONEXCLAMATION);return;}//得到行号,通过POSITION转化nId=(int)m_listAll.GetNextSelectedItem(pos);//得到列中的内容(0表示第一列,同理1,2,3...表示第二,三,四...列)SPath=m_listAll.GetItemText(nId,2);OPath=m_listAll.GetItemText(nId,3);Tranfile(SPath.GetBuffer(0), OPath.GetBuffer(0));MessageBox("还原成功");}五、测试、调试过程1.上机过程中出现的问题及其解决方案(1)问题:刚开始不知道选择文件对话框中是怎么出来的后来解决方案:百度找了一下(2)问题:不知道如何给ListControl控件动态绑定数据解决方案:百度了一下2.完成结果:(1)浏览文件按钮功能(2)列表显示详细信息功能(3)备份按钮功能(3)完成保存功能(4)还原功能六、结论与体会这次实验让我对MFC编程加深了了解,让我有了很好我锻炼,在我以后遇到同样问题的时候我就有了更多的经验。

相关文档
最新文档