计算机专业学期三课程设计Word格式文档下载.docx
- 文档编号:8220743
- 上传时间:2023-05-10
- 格式:DOCX
- 页数:31
- 大小:59.44KB
计算机专业学期三课程设计Word格式文档下载.docx
《计算机专业学期三课程设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《计算机专业学期三课程设计Word格式文档下载.docx(31页珍藏版)》请在冰点文库上搜索。
about
you?
输出:
Fine,thank
OK
All
right
Goodbye!
注:
后面
5
行为倒数第
6
行输出后接下去的输出内容。
(3)设计类
的原则:
1)在头文件
welcome.h
中声明类
2)在
welcome.cpp
中实现类
3)使用内联函数定义
Display()函数
4)演示文件名用学号作主名。
1
二、设计思路
由给出的代码来构造此程序。
开头部分,由
Display
输出
Welcome,再用
Get
输出被
Set
存进的
Thankyou。
利用循环函数
While
建立主体部分,输入
OK
时跳出循环。
结尾部分,因为给出的代码中建立了两个对象,所以调用析
构函数时可直接输出两个
Goodbye。
开始
Welcome
输入
Y
d
inline
Display()
Set(char
a[])
char
*Get()
N
输出
输出“All
Goodbye”
talk()
Welcome()
Welcome(const
&
w)
结束
三、实现代码
//Welcome.h
#include
iostream>
string>
using
namespace
std;
class
Welcome{
private:
d[100];
public:
Display(){cout<
d<
};
a[]){strcpy(d,a);
*Get(){return
d;
talk();
Welcome(){};
a);
~Welcome(){cout<
"
~Welcome()
//121-2.cpp
#include"
Welcome.h"
main()
{
you.Set("
you."
);
2
//121-1.cpp
strcpy(d,"
OK"
right"
Welcome:
:
;
cin.getline(d,100);
while(strcmp(d,"
)!
=0)
四、运行结果及分析
a)
strcpy(d,a.d);
图
分析:
前面先自动输出
和
you.,然后利用循环
函数重复
用户的输入。
采用了多文件结构,利用构造函数、析构函数和拷贝构造函数将
结果输出。
最后调用析构函数输出“Goodbye!
”
3
任务二
要求:
为分数定义一个类。
分数定义为两个整数之比。
将分数表示为
int
类型
的两个值:
一个表示分子,一个表示分母。
重载输入>
>
和输出运算符<
,分数以
1/2、-15/29
这样的形式来输入和输
出,注意分子、分母可能包含负号。
在分数类中,还应重载+、-、*、/运算符。
应有一个函数,对分数进行约分与规格化,在规格化之后,分母一定是正
的,并且分子分母的最大分约数为
1,如对
4/-8
正规化之后表示成-1/2。
仿照计算器的运算过程,采用计算器方式进行有关分数运算。
(1)约分的关键是求分子分母的最大公约数,用
Gcm(m,n)表示求
m
与
n
的
最大公约数:
当
n=0
时,Gcm(m,n)=m
n≠0
时,Gcm(m,n)=
Gcm(n,m%n)
可用递归编程实现
Gcm(m,n)。
(2)分数的四则运算可按如下方式进行:
(3)利用
Reduction
函数将负号全都归到分子身上。
(4)Operation
函数来实现当运算符输入错误时的提示。
(5)当除数为
0
时,main
函数中有实现显示除数不能为
的设置。
分数加法运算
分
数
分数减法运算
分数乘法运算
分数除法运算
输入除数、
被除数和除
号
分母为
输出“不能为除
数,请重新输入。
算
异常处理报告
器
自行约分
负号转到分子
为负数加括号
4
#include<
cmath>
Operation(char
index);
Fraction
fz;
fm;
Gcm(int
m,int
n);
Fraction(int
n=1,int
d=1);
~Fraction(){};
Reduction();
GetFz(){return
GetFm(){return
SetFz(int
SetFm(int
d);
Fraction
operator+(Fraction
operator-(Fraction
operator*(Fraction
operator/(Fraction
friendostream&
operator<
(ostream
os,Fraction
s);
friendistream&
operator>
(istream
is,Fraction
Fraction:
n)
if(n==0)
return
m;
else
Gcm(n,m%n);
Reduction()
if(fm<
0)
{fz=-fz;
fm=-fm;
f=Gcm(abs(fz),fm);
fz=fz/f;
fm=fm/f;
index){
for(;
){
请输入运算符:
cin>
index;
if(index=='
+'
||index=='
-
'
*'
/'
)
break;
else
请输入正确的运算符:
n,
d):
fz(n),fm(d){Reduction();
n){fz=n;
d){fm=d;
istream
(istream
s)
ch;
m,n;
请输入一个分数:
is>
m>
ch>
n;
s.SetFz(m);
s.SetFm(n);
if(ch=='
n!
try{
if(ch!
='
)
throw
1;
if(n==0)
2;
catch(int
i)
if(i==1)
输入格式错误,请重
新输入!
i<
if(i==2)
分母为
0,请重新输入!
5
s.Reduction();
is;
r.fm=fm*a.fm;
r.Reduction();
r;
ostream
(ostream
os,Fraction
if(s.fz<
if(abs(s.fz)%s.fm==0)
os<
("
s.fz/s.fm<
)"
if(abs(s.fz)>
s.fm)
又
s.fz%s.fm<
/"
s.GetFm()<
s.GetFz()<
else{
if(s.fz%s.fm==0)
s.fz/s.fm;
if(s.fz==0)
0;
if(s.fz>
又"
s.GetFm();
os;
r.fz=fz*a.fm+fm*a.fz;
r.fz=fz*a.fm-fm*a.fz;
r.fz=fz*a.fz;
r.fz=fz*a.fm;
r.fm=fm*a.fz;
obj1,obj2,r;
index='
i;
o='
y'
if(o=='
obj1;
Operation(index);
obj2;
r=obj1+obj2;
-'
r=obj1-obj2;
r=obj1*obj2;
6
i=obj2.GetFz();
obj1<
index<
obj2<
="
r<
e
if(i==0)
ndl;
不能为除数,
是否继续(y/n)"
o;
请重新输入。
r=obj1/obj2;
第一个加法运算体现了约分的功能,第二个减法运算体现了假分数的自
行转换功能,第三个乘法运算体现了给负数加括号的功能,第四个除法运算体
现了自行将分母的负号提给分子的功能,以及最后五行体现了运算符错误的提
示和分母为
的提示。
7
任务三
能够对文件进行存储和读取。
要求用一个结构记载学生属性,编写一个
学生类以完成各种操作。
具体要求如下:
(1)
有
10
个小学生,每个学生有数学、语文两门课,从键盘输入学生的学号、
姓名及成绩,计算每个学生的平均成绩,将数据存入
stud.dat
中。
(2)
学生的所有属性用一个结构进行描述。
(3)
要求对“<
”、“>
”进行重载。
(4)
选作要求:
可将两门课都不及格的学生信息从链表或数组中删除,并另
存入
bad.dat
中;
将学生姓名和平均成绩抽取出来。
(5)
以下程序测试结果供参考(此处不列举)
建立两个类,并建立一个
for
循环来实现菜单的选择功能。
使用链表储存
输入的信息,当选择查找与删除数据时,通过链表来寻找用户要寻找的数据。
菜
单
菜单功能选择
增加原始记录
显示各种文件
保存原始文件
查找学生成绩
功能选择
学生信息
删除原始记录
输入
0?
修改学生信息
结束程序运行
8
#
include
fstream>
string.h>
conio.h>
Student
name[20];
Id[20];
Cnum;
Mnum;
sum;
Student
*
Next;
Input()
\t\t
名字:
name;
学号:
Id;
数学:
语文:
sum=(Cnum+Mnum)/2;
ReadFile(istream
in)
in>
name>
Id>
Cnum>
Mnum>
Show()
name<
\t"
Id<
Cnum<
Mnum<
sum<
Studentmassage
Studentmassage();
~Studentmassage();
ShowMenu();
Find();
Save();
ModifyItem();
RemoveItem();
Swap(Student
*,Student
*);
Sort();
ListCount();
姓名\t
学号\t
语文\t
数学\t
平均
for(Student
p=Head-
p!
=End;
p=p->
Next)
p->
Show();
请按任意键"
getch();
AddItem()
End->
Input();
Next=new
Student;
End=End->
添加成功!
Head,*
End;
ifstream
in;
ofstream
out;
*FindItem(char
name)
p=Head;
p-
Next!
if(!
strcmp(p->
Next->
name,name))return
p;
NULL;
*FindID(char
Id)
Id,Id))return
9
6.修改学生信息"
0.结束程序运行"
Studentmassage:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机专业 学期 课程设计
![提示](https://static.bingdoc.com/images/bang_tan.gif)