江苏科技大学课程实践设计报告VC++
更新时间:2024-07-10 23:13:01 阅读量: 综合文库 文档下载
江苏科技大学
课程实践报告
设计题目: 计算机程序设计实践(VC++) 设计时间: 2010 - 03-01 至 2010- 03-07 学 院: 专业班级: 学生姓名: 学号 指导老师:
2010年03月
实践一
一、 实践任务
1.基础题 第2题:
试建立一个类SP,求f(n,k)=1k + 2k + 3k + …… + nk ,另有辅助函数power(m,n)用于求mn 。 具体要求如下:
(1) 私有数据成员
● int n,k;存放公式中n和k的值;共有成员函数
(2) 共有成员函数
● SP(int n1,int k1):构造函数,初始化数据成员数据n和k。 ● int power(int m,int n):求mn ● int fun():求公式的累加和 ● void show():输出求得的结果
(3) 在主程序中定义对象s,对该类进行测试。 二、 系统设计
(1) 系统功能分析
本系统主要实现函数f(n,k)=1k + 2k + 3k + …… + nk的求值。 (2) 类的定义与描述 (3) 编写源程序如下: #include
三.系统测试 对类进行测试,测试数据为 2 3;
预期输出结果为 9
四.实验小结 此题的关键是fun函数中条件的控制,通过此次实践,熟悉了类的基本构造,学会了用类来求解函数。 五.参考文献:
[1] 潘克勤,华伟 《Visual C++程序设计》 北京:中国铁道出版社,2008
[2] 张晓如,王芳 《Visual C++程序设计解析与实训》 北京:中国铁道出版社,2008
实践二
一.实践任务
2.基础题 第12题:
建立一个STRING,将一个字符串交叉插入到另一个字符串中(假定两字符串不等长)。例如将字符串“abcde”交叉插入字符串“ABCDEFG”的结果为“aAbBcCdDeEFG”或“AaBbCcDdEeFG”。 具体要求如下:
(1) 私有数据成员
● char str1[60]:存放被插入的字符串 ● char str2[40]:存放待插入的字符串 ● char str3[100]:存放插入后的字符串
(2) 共有成员函数
● STRING(char *s1,char*s2):构造函数,用s1和s2初始化str1和str2 ● void process():将str2中的字符串插入到str1中,存放到str3中 ● void print():输出插入后的字符串
(3) 在主程序中定义STRING类的对象test对该类进行测试 二.系统设计 (1)系统功能分析 本系统主要实现将一个字符串交叉插入到另一个字符串中。
(2) 类的定义与描述 (3) 编写源程序如下:#include
}
void print () { cout< 三.系统测试 预期输出结果:aAbBcCdDeEFG void main () { STRING test(\ test.process(); test.print(); } 四.实验小结 通过本次实验,进一步了解了拷贝构造函数和while语句的使用。使用while语句时要控制好循环体执行的条件才能保证程序的正常运行。 五.参考文献: [1] 潘克勤,华伟 《Visual C++程序设计》 北京:中国铁道出版社,2008 [2] 张晓如,王芳 《Visual C++程序设计解析与实训》 北京:中国铁道出版社,2008 实践三 一.实践任务 3.基础题 第23题: 分数相加,两个分数分别是1/5和7/20,他们相加后得11/20,方法是先求出两个分数分母的最小公倍数,通分后,再求两个分子的和,最后约减结果分数的分子和分母,即用分子分母的最大公约数分别除分子和分母。求m、n最大公约数的一种方法是:将m、n较小的一个数赋值给变量k,然后分别用{k,k-1,k-2,……,1}中的数去除m和n,第一个能把m和n同时除尽的数就是m和n的最大公约数。假定m、n的最大公约数是v,则它们的最小公倍数就是m*n/v。试建立一个分数类Fract,完成两个分数相加的功能。 具体要求如下: (1) 私有数据成员 ● int num,den:num为分子,den为分母 (2) 共有成员函数 ● Fract (int a=0,int b=0):构造函数,用a和b分别初始化分子num、分母den ● int ged (int m,int n):求m、n的最大公约数。此函数供成员add()函数调用 ● Fract add (Fract f):将参数分数f与对象自身相加,返回约简后的分数对象 ● void show ():按照num/den的形式在屏幕上显示分数 (3) 在主程序中定义两个分数对象f1和f2,其初值分别是1/5和7/20,通过f1调用成员函数add 完成f1和f2的相加,将得到的分数赋给对象f3,显示分数对象f3。 二. 系统设计 (1) 系统功能分析 本系统主要实现两个分数的相加,并将结果化为最简形式后以分数的形式输出。 (2) 类的定义与描述 (3) 编写源程序如下: #include 三. 系统测试 测试数据 1/5 7/20 预期输出结果 11/20 } Fract add (Fract f) { int fm,fz,v; fm=den*f.den/ged(den,f.den); num=fm/den*num; f.num=fm/f.den*f.num; fz=num+f.num; v=ged(fz,fm); fm=fm/v; fz=fz/v; Fract F(fz,fm); return F; } void show() { cout< void main () { Fract f1(1,5),f2(7,20),f3; f3=f1.add (f2); f3.show(); } 四.实验小结 通过本次实践,我巩固了分数的表示方法及最小公倍数的求法。本题的难点在于add函数,要注意再函数中定义一个类的对象并通过返回类的对象获得结果。 五.参考文献: [1] 潘克勤,华伟 《Visual C++程序设计》 北京:中国铁道出版社,2008 [2] 张晓如,王芳 《Visual C++程序设计解析与实训》 北京:中国铁道出版社,2008 实践四 一.实践任务 4.基础题 第25题: 建立一个类NUM,并统计待定序列中相同的字符的个数。 具体要求如下: (1) 私有数据成员 ● char data[25]:随机生成25个字符 ● int num[128]:储存每个字符出现的次数 (2) 共有数据成员 ● NUM(int data):构造函数,同时初始化数组data ● void process():统计数组data中每个字符出现的个数,并保存到数组num中 ● void print():输出每个出现过的字符及其出现的个数,每行输出5个没有出现过的字符 不显示 (3) 在主程序中定义一个对象,对该类进行测试。 二.系统设计 (1) 系统功能分析 本系统主要实现统计待定序列中相同的字符的个数。 (2) 类的定义与描述 (3) 编写源程序如下:#include 三.系统测试 四. 实验小结 本次实践开始忽视了字符和整型的转化,导致调试运行时老报错,而且,由于此题牵扯到随机字符的产生,所以在编写程序时一定不要忘记文件包含< stdlib.h>。 五.参考文献: [1] 潘克勤,华伟 《Visual C++程序设计》 北京:中国铁道出版社,2008 [2] 张晓如,王芳 《Visual C++程序设计解析与实训》 北京:中国铁道出版社,2008 实践五 一.实践任务 5.基础题 第27题: 建立一个类NUM,求指定数据范围内的所有素数。 具体要求如下: (1) 私有数据成员 ● int data[10]:依次存放原始数据 ● int prime[10]:存放指定数据内所求出的所有素数 ● int num:存放素数个数 (2) 共有数据成员 ● NUM(int n[ ]):构造函数,用参数n初始化data,同时初始化num为0 ● int isprime(int x):判断x是否为素数。若是素数返回1,否则返回0 ● void process():求指定data数组中的所有素数,把它们依次存放在数组prime中,并将 求出的素数个数赋给num ● void print():输出求出的素数个数及所有素数,每行输出4个素数 (3) 在主函数中完成对该类的测试。定义NUM类的对象test,通过test调用成员函数完成求素数 及输出素数的工作。原始数据为{4,5,9,11,36,29,31,101,56,199} 二.系统设计 (1) 系统功能分析 本系统主要实现求指定数据范围内素数的个数,并将这些素数输出。 (2) 类的定义与描述 (3) 编写源程序如下:#include } 是:\ }; cout<<\素数为:\ for (int i=0;i 三.系统测试 测试数据:4,5,9,11,36,29,31,101,56,199 预期输出结果:素数的个数是:6 素数为: 5 11 29 31 101 199 四.实验小结 本题相对来说很简单,主要就是素数的判断,而素数的判断经过多次的练习已经熟练 掌握。 五.参考文献: [1] 潘克勤,华伟 《Visual C++程序设计》 北京:中国铁道出版社,2008 [2] 张晓如,王芳 《Visual C++程序设计解析与实训》 北京:中国铁道出版社,2008 实践六 一.实践任务 6.提高题 第6题: 设计一个大学师生类,包括学生类(Student),教师类(Professor),职员类(Staff),教师类是职员类的派生类。另有一类既作为学生又兼做助教的,可作为学生类和职员类的派生类(StudentStaff)。另外定义一个所有类的父类(DataRec)。 具体要求如下: (1) DataRec类中数据成员又姓名,家庭住址,定义为指针变量。成员函数有构造函数,析构函 数,输出函数,strsave函数。输出函数定义为虚函数。Strsave函数用来动态申请内存空间,拷贝参数中的字符串,返回内存空间的首地址。因为所有的派生类都要用到,设置为保护权限 (2) Student类数据成员有专业、学号,专业定义为指针变量。Staff类数据成员有部门、计时薪酬, 部门定义为指针变量。Professor类数据成员有工资,这三个类都有输出函数,用来输出自己的数据成员 (3) StudentStaff类多重继承学生类和职员类。成员函数有输出函数 (4) DataRec类可以定义为虚基类 (5) 每个类中数据成员定义为私有的 (6) 编写main函数,测试上述所要求的各种功能。 二.系统设计 1.概要设计 (1)系统功能分析 本系统的功能是存储大学师生的基本信息,如:姓名,家庭住址,专业,部门等。 (2)类的层次图: DataRec Student Staff StudentStaff Professor 2.详细设计 (1)类的描述与定义 ? 基类DataRec有2个保护成员,定义如下: class DataRec{ //基类 protected: char *name; //姓名 char *address; } //地址 ? 学生类有2个私有成员,定义如下: class Student:DataRec{ //学生类 private: char* major; //专业 int number;} //学号 ? 员工类有2个保护成员,定义如下: class Staff:DataRec { //员工类 protected: char* department; //.部门 double t_salary;} //计时工资 ? Professor类有一个私有成员,定义如下: class Professor:Staff { //professor 类 private: double salary;} //工资 (4) 主要成员函数设计 ? 基类的构造函数定义如下: DataRec(char *nam,char *addr) { name=strsave(nam); address=strsave(addr);} ? 基类的析构函数定义如下: ~DataRec(){ delete [ ]name; delete [ ]address;} ? 基类中strsave函数定义如下: ? ? ? ? ? ? ? ? ? ? ? char* strsave(char *s){ char* r=new char[strlen(s)+1]; strcpy(r,s); return r;} 基类中输出函数的功能没有必要先定义,将其说明为纯虚函数,其具体实现在派生类中定义: virtual void Output()=0; Student类的构造函数定义如下: Student(char *nam,char *addr,char* majo,int num):DataRec(nam,addr) { major=strsave(majo); number=num;} Student类的析构函数定义如下: ~Student() { delete []major;} Student 类的输出函数定义如下: void Output() { cout< cout< cout<<\Staff类的构造函数定义如下: Staff(char *nam,char *addr,char* depar,double t_sala):DataRec(nam,addr){ department=strsave(depar); t_salary=t_sala;} Staff类的析构函数定义如下: ~Staff(){ delete [] department;} Staff类的输出函数定义如下: void Output(){ cout< { salary=salar;} Professor类的输出函数定义如下: void Output(){ Staff::Output(); cout<<\StudentStaff类构造函数定义如下: StudentStaff(char *nam,char *addr,char* majo,int num,int salar,char* depar,double t_sala):Student(nam,addr, majo, num),Staff(nam,addr, depar, t_sala) {}; StudentStaff 类的输出函数定义如下: void Output(){ Student::Output(); cout<<\ cout<<\三.系统测试 系统测试主要通过在主函数中定义对象来完成,主函数定义如下: void main(void) { Student astu(\运河路\ Staff astaf(\北京路\ Professor aprofes(\南京路\ StudentStaff astustaf(\Xi\乌鲁木齐路\Science\Engineer\ astu.Output(); cout<<\ astaf.Output(); cout<<\ aprofes.Output(); cout<<\ astustaf.Output(); cout<<\} 预期输出结果为: Wang Vi 运河路 Major: Computer science Idnumber: 8401031 Li Xin 北京路 Department: Electrical Engineer hourly wage: 16.5 Zhang Xi 南京路 Department: Computer science hourly wage: 0 Salary: 3000 Wang Xi 乌鲁木齐路 Major: Computer science Department: Electrical Engineer hourly wage: 5.8 四. 实验小结 刚开始接触这道题目,感觉毫无头绪,读了好几遍题目依旧一头雾水,于是去请教了同学,他引导着我把题目又分析了一遍,把题目中的类一一列出来,分析他们之间的关系,分析各个成员的关系。由于对虚函数还不是很了解,我又参考课本把虚函数这节复习了一遍。编写好源程序之后就是上机调试,通过不断地发现错误改正错误,最后总算是解决了这道题目! 五.参考文献: [1] 潘克勤,华伟 《Visual C++程序设计》 北京:中国铁道出版社,2008 [2] 张晓如,王芳 《Visual C++程序设计解析与实训》 北京:中国铁道出版社,2008 六.源程序清单 #include delete []address; } virtual void Output()=0; }; class Student:DataRec {private: char* major; int number; public: Student(char *nam,char *addr,char* majo,int num):DataRec(nam,addr) { major=strsave(majo); number=num; } ~Student() { delete []major;} void Output() { cout< cout<<\ } }; class StudentStaff:Student,Staff {public: StudentStaff(char *nam,char *addr,char* majo,int num,int salar,char* depar,double t_sala):Student(nam,addr, majo, num),Staff(nam,addr, depar, t_sala) {}; void Output() { Student::Output(); cout<<\ cout<<\ } }; void main(void) { Student astu(\运河路\ Staff astaf(\北京路\ Professor aprofes(\南京路\ StudentStaff astustaf(\乌鲁木齐路\ astu.Output(); cout<<\ astaf.Output(); cout<<\ aprofes.Output(); cout<<\ astustaf.Output(); cout<<\}
正在阅读:
江苏科技大学课程实践设计报告VC++07-10
中医药对血脑屏障通透性的作用机制研究进展01-29
2020年度县委常委、组织部长履行全面从严治党责任述职报告09-02
教育学试题大全(带答案)07-11
长假打工作文400字07-14
六一儿童节的大会程序06-03
福建工程学院《互换性与技术测量》课程补充复习题(部分题库试题)11-23
组织行为学第七章冲突与谈判05-23
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 江苏
- 实践
- 课程
- 报告
- 设计
- 大学
- 科技
- VC
- 同济大学 - 结构力学课后答案 - 第6章 - - 力法1
- 广东航天信息(金税盘)开票系统常见问题 - 图文
- 2011高考英语考前10天必做题:语言点最后冲刺解析题14
- 03 第三节 向量组的线性相关性
- 小学六年级数学下册总复习的数学题和答案
- CATIA V5培训教程中
- 民族团结进步知识测试题参考题库
- “巾帼文明岗”先进集体事迹材料(1)
- 教子方法
- 南瑞RCS-978HQ型+四方CSC-326DK型主变差动、后备一体化保护+四方
- 新东方考研笔记全公开(英语)
- 北化物理化学考研真题
- empower常见问题
- 建筑工程施工调查报告(滕晓阳)
- (推荐精品)脱硫、除尘设备加工项目可行性研究报告 - 图文
- 职业经理人财务素养训练-非财务人员的财务管理
- 高中历史第一单元第一次世界大战第4课综合探究极端民族主
- 二年级下册思品教学工作计划
- 四年级安全教案(济南版)
- ch3(3) Matlab在最优化问题中的应用