计算机硬件及网络软件编程.docx

上传人:b****1 文档编号:464094 上传时间:2022-10-10 格式:DOCX 页数:41 大小:45.33KB
下载 相关 举报
计算机硬件及网络软件编程.docx_第1页
第1页 / 共41页
计算机硬件及网络软件编程.docx_第2页
第2页 / 共41页
计算机硬件及网络软件编程.docx_第3页
第3页 / 共41页
计算机硬件及网络软件编程.docx_第4页
第4页 / 共41页
计算机硬件及网络软件编程.docx_第5页
第5页 / 共41页
点击查看更多>>
下载资源
资源描述

计算机硬件及网络软件编程.docx

《计算机硬件及网络软件编程.docx》由会员分享,可在线阅读,更多相关《计算机硬件及网络软件编程.docx(41页珍藏版)》请在冰豆网上搜索。

计算机硬件及网络软件编程.docx

计算机硬件及网络软件编程

 

软件编程实训1

实训报告

 

专业:

计算机科学与技术

班级:

学号:

姓名:

指导教师:

完成日期:

2012年6月20日

 

制造业信息化系

一、课程实训目的

2、课程实训任务

三、万年历程序设计与实现

1.系统需求

(1)功能结构图

(2)需求说明

1、程序主要实现3个功能:

显示某一年的每个月的日历、显示某一年某一个月的日历以及查询某一天是星期几。

2、功能选择用菜单实现。

用户通过输入不同的数字进入不同的菜单。

3、每一月以日历表格的形式显示,表格的第一行显示星期,表格的内容是每一天。

4、用户可以很容易看到每一天是星期几。

5、利用输入输出函数和循环控制语句,实现一个简单的人机交互界面。

6、利用逻辑表达式,使用控制语句,判断闰年,某年某月某日是星期几。

7、实现对显示结果进行控制。

2.系统总体设计

(1)系统开发环境

操作系统:

Windows7

开发平台:

MicrosoftVisualC++6.0

(2)系统总体设计

该程序包含PerpetualCalendar类,类的成员函数有getYear()返回年份,getMonth()返回月份,getDay()返回日,setYear()显示输入的年份,setMonth()显示输入的年月,setDate()显示输入的年月日,getWeek()计算输入的年月日是星期几并返回星期几,boolisLeap(inty)判断是否为闰年,intgetDays()计算从0年以来有多少天,printMonth()打印出要查询的年份的日历,printYear()打印出查询年份某一月的日历,printDay()打印出查询的星期几,operate()显示所有操作。

3.系统详细设计

(1)界面菜单设计及实现

(2)显示一年日历功能的设计及实现

(3)显示某一月日历功能的设计与实现

(4)显示某一天是星期几的实现

答:

(1)operate()包含界面菜单设计及实现,在operate()下运用while来打印出界面,同时运用if()语句来实现菜单选择。

(2)printMonth()来实现一年日历,运用switch语句打印出按从星期一到星期日来打印出每个月的日历,关键步骤:

Case0:

for(i=1;i<=daysOfMonth[month];i++,setLine++){

if(setLine%7==0&&setLine!

=0)

{cout<

cout<<""<

:

left)<

else{cout<

:

left)<

判断闰年关键技术:

boolPerpetualCalendar:

:

isLeap(inty){

if((y%4==0&&y%100!

=0)||(y%400==0))returntrue;

elsereturnfalse;}

(3)printYear()来实现某年的某月的日历,关键步骤:

for(inti=1;i<=12;i++){month=i;printMonth();}

(4)

1)首先计算星期几,关键步骤:

intweek=getDays()%7;week+=5;

week%=7;returnweek;之前在计算从万年历第一年1月1日到要查询的那一天的所有天数,关键技术:

inti,sumDays=0;if(isLeap(year)){daysOfMonth[2]=29;}for(i=1;i

sumDays+=day;returnsumDays;

2)再是星期几的显示,用printDay()来显示,关键步骤:

switch(getWeek())

{case0:

cout<

case1:

cout<

case2:

cout<

case3:

cout<

case4:

cout<

case5:

cout<

case6:

cout<

4、特殊计算器程序设计与实现

1.系统需求

(1)功能结构图

(2)需求说明

1、程序的功能是实现一个特殊的计算器,可以实现复数、有理数、矩阵和集合的特殊运算。

其中,可以实现复数、有理数的加、减、乘、除,可以实现矩阵的加法、减法和乘法运算,也可以实现两个集合的求交集、并集和判断一个集合是否是另一个集合的子集的运算。

2、功能选择可以用菜单实现,用户通过输入不同的数字进入不同的菜单。

3、运行时给出明确的提示信息,比如,输入一个什么类型的数据。

根据用户的输入计算出结果。

4、使用运算符重载实现各种特殊的计算。

2.系统总体设计

(1)系统开发环境

操作系统:

Windows7

开发平台:

MicrosoftVisualC++6.0

(2)系统总体设计

Complex类包含运算符重载:

operator+加,operator-减,operator*乘,operator/除,voidcomplex:

:

print()函数,显示复数;

matrix类matrix:

:

operator()(shortrow,shortcol)重载运算符成员函数,matrix:

:

SetElem(shortrow,shortcol,intval)将元素(row,col)设置为val,matrix:

:

Disp()显示矩阵元素。

rational类,optimization()定义有理数优化函数,voidrational:

:

print()显示有理数,doublereal(rationalx)声明转换函数,将有理数对象转换为实数。

Set类集合类包含booloperator&(int,set)声明重载运算符&,判断某一整数是否属于某一集合,友元:

booloperator==(set,set)声明重载运算符==,判断两个集合是否相等,booloperator!

=(set,set)声明重载运算符!

=,判断两个集合是否不等,setoperator*(set,set)声明重载运算符+,求两个集合的并,booloperator<(set,set)声明重载运算符<,判断某一集合是否为另一集合的纯子集,booloperator<=(set,set)声明重载运算符<=,判断某一集合是否为另一集合的子集,additem()增加集合元素,print()显示有理数,operator+重载运算符+,operator-重载运算符-,operator*重载运算符*,operator/重载运算符/.

Matrix类包含voidDisp(),显示矩阵所有元素,intmatrix:

:

operator()(shortrow,shortcol),重载运算符成员函数(),voidSetElem(shortrow,shortcol,intval),将元素(row,col)设置为val,friendmatrixoperator+(matrixp,matrixq)重载运算符+,friendmatrixoperator-(matrixp,matrixq)重载运算符-,friendmatrixoperator*(matrixp,matrixq),重载运算符×。

3.系统详细设计

(1)界面菜单设计及实现

(2)显示复数计算功能的设计及实现

(3)显示有理数计算功能的设计与实现

(4)显示矩阵计算的实现

(5)显示集合类计算的实现

答:

(1)构造一个函数voidjiemian()来实现界面菜单,并用switch()语句来实现选择,关键技术:

if(i>=0&&i<=4){

switch(i)

{case1:

complexcompute();break;

case2:

rationalcompute();break;

case3:

matrixcompute();break;

case4:

setcompute();break;

case0:

tuichu();break;}

(2)利用complex类来实现复数计算,

1)复数相加用运算符重载:

complexoperator+(complexa,complexb){complextemp;temp.real=a.real+b.real;temp.image=a.image+b.image;returntemp;},

2)相减:

complexoperator-(complexa,complexb){complextemp;temp.real=a.real-b.real;temp.image=a.image-b.image;returntemp;}

3)相乘:

complexoperator*(complexa,complexb){complextemp;temp.real=a.real*b.real-a.image*b.image;temp.image=a.real*b.image+a.image*b.real;returntemp;}

4)相除:

complexoperator/(complexa,complexb){complextemp;floattt;tt=1/(b.real*b.real+b.image*b.image);temp.real=(a.real*b.real+a.image*b.image)*tt;temp.image=(b.real*a.image-a.real*b.image)*tt;returntemp;}

5)复数显示,构建voidcomplexcompute()

6)关键技术:

while(j){if(j>=0&&j<=4){floatr1,j1,r2,j2;

7)cout<<"请输入第一个复数的实部:

";cin>>r1;cout<<"请输入第一个复数的虚部:

";cin>>j1;cout<<"请输入第二个复数的实部:

";cin>>r2;cout<<"请输入第二个复数的虚部:

";cin>>j2;complexc1(r1,j1);complexc2(r2,j2);complexc3;switch(j){case1:

c3=c1+c2;c1.print();c2.print();c3.print();break;

case2:

c3=c1-c2;c1.print();c2.print();c3.print();break;

case3:

c3=c1*c2;c1.prin

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1