中国矿业大学软件课程设计报告.docx

上传人:b****5 文档编号:6828519 上传时间:2023-01-10 格式:DOCX 页数:56 大小:257.70KB
下载 相关 举报
中国矿业大学软件课程设计报告.docx_第1页
第1页 / 共56页
中国矿业大学软件课程设计报告.docx_第2页
第2页 / 共56页
中国矿业大学软件课程设计报告.docx_第3页
第3页 / 共56页
中国矿业大学软件课程设计报告.docx_第4页
第4页 / 共56页
中国矿业大学软件课程设计报告.docx_第5页
第5页 / 共56页
点击查看更多>>
下载资源
资源描述

中国矿业大学软件课程设计报告.docx

《中国矿业大学软件课程设计报告.docx》由会员分享,可在线阅读,更多相关《中国矿业大学软件课程设计报告.docx(56页珍藏版)》请在冰豆网上搜索。

中国矿业大学软件课程设计报告.docx

中国矿业大学软件课程设计报告

编号:

()字号

《软件课程设计》报告

 

班级:

计科09-1

姓名:

禹勇

学号:

08093343

指导老师:

张振环____

 

中国矿业大学计算机科学与技术学院

2010年12月

软件课程设计任务书

专业年级:

计科09-1

学生姓名:

禹勇

任务下达日期:

2010年10月11日

课程设计日期:

2010年10月11日至2010年12月16日

课程设计题目:

类别

题目序号

成绩

面向过程

2、7、

面向对象

2、5、

图形界面

1、

数据结构

1、2

 

软件课程设计指导教师评阅书

指导教师评语(①基础理论及基本技能的掌握;②独立解决实际问题的能力;③研究内容的理论依据和技术方法;④取得的主要成果及创新点;⑤工作态度及工作量;⑥总体评价及建议成绩;⑦存在问题等):

成绩:

指导教师签字:

年月日

 

一、面向过程设计题2-------编程序,从键盘输入正整数n,求出n与其反序数之和并输出(第一阶段第二题.cpp)

1.1需求分析……………………………………………………………………….…9

1.2概要设计………………………………………………………………………...10

1.3详细设计与编码………………………………………………………………...11

1.4调试分析………………………………………………………………………...13

1.5用户使用说明………………………………………………………………….13

1.6设计心得………………………………………………………………………...13

二、面向过程设计题7------将输入的罗马数据化为10进制数(第一阶段第七题.cpp)

2.1需求分析…………………………………………………………………………13

2.2概要设计………………………………………………………………………...14

2.3详细设计与编码………………………………………………………………...16

2.4调试分析………………………………………………………………………...17

2.5用户使用说明………………………………………………………………….17

2.6设计心得………………………………………………………………………...17

三、面向对象设计题2------自定义一个简单的日期类DateType

(第二阶段第二题.cpp)

3.1需求分析…………………………………………………………………………17

3.2概要设计………………………………………………………………………...19

3.3详细设计与编码………………………………………………………………...21

3.4调试分析………………………………………………………………………...22

3.5用户使用说明………………………………………………………………….22

3.6设计心得………………………………………………………………………...22

四、面向过程设计题5---------设计一个类CStudent(第二阶段第五题.cpp)

4.1需求分析…………………………………………………………………………22

4.2概要设计………………………………………………………………………...23

4.3详细设计与编码………………………………………………………………...25

4.4调试分析………………………………………………………………………...25

4.5用户使用说明………………………………………………………………….25

4.6设计心得………………………………………………………………………...25

五、图形界面1---------计算器(禹勇的计算器.exe)

5.1需求分析…………………………………………………………………………26

5.2概要设计………………………………………………………………………...26

5.3详细设计与编码………………………………………………………………...27

5.4调试分析………………………………………………………………………...27

5.5用户使用说明………………………………………………………………….28

5.6设计心得………………………………………………………………………...29

 

六、数据结构1------用链表和数组两种方式分别实现栈的出栈、入栈、取栈顶元素、判空、查找等操作(第四阶段第一题.cpp)

6.1需求分析…………………………………………………………………………30

6.2概要设计………………………………………………………………………...30

6.3详细设计与编码………………………………………………………………...34

6.4调试分析………………………………………………………………………...35

6.5用户使用说明………………………………………………………………….35

6.6设计心得………………………………………………………………………...35

七、数据结构2--------假设有一个循环链表的长度大于1,且表中既无头结点也无头指针(第四阶段第二题.cpp)

7.需求分析………………………………………………………..………….……36

7.概要设计………………………………………………………………………...37

7.详细设计与编码………………………………………………………………...39

7.调试分析………………………………………………………………………...41

7.用户使用说明………………………………………………………………….41

7.设计心得………………………………………………………………………...41

八、课程设计总结………………………………………………………………42

 

1、面向过程设计题2

1.1需求分析:

编程序,从键盘输入正整数n,求出n与其反序数之和并输出根据题目要求,规定如下:

测试数据:

【输入数据】:

2038

【输出数据】:

10340

【输入数据】:

1234

【输出数据】:

5555

1.2概要设计:

(1)定义整形变量n为用户输入值;

(2)输出反序数;

(3)定义整形变量sum求和;

(4)输出sum的值。

(5)主程序流程:

step1:

让用户输入一个整数n;

step2:

进入for循环计算其反序数;

step3:

求和并输出。

1.3详细设计与编码:

(1)流程图:

进入for循环

yes

判断条件

no

(2)源程序

#include

usingnamespacestd;

intmain()

{

intn,a,b,c,sum;

cout<<"请输入一个整数n:

";//输入要求的整数n

cin>>n;

a=n;

cout<

for(c=0;n!

=0;)//求n的反序数

{

b=n%10;

c=c*10+b;

n=n/10;

}

sum=a+c;//求n与其反序数之和

cout<<"n和它的反序数之和为:

"<

return0;

}

1.4调试分析:

step1:

输入2038

 

step2:

输入1234

分析:

经过输入多次实验后,都取得了预期值,这说明了程序的正确性。

1.5用户使用说明:

step1:

打开程序;

step2:

输入要求的数;

step3:

得出结果;

1.6设计心得:

通过此次实验加深了对for循环的使用方法!

从小程序开始逐渐把以前遗忘的内容捡起。

2、面向过程设计题7

2.1需求分析:

实现罗马数据与10进制数之间的相互转换

根据实验要求,规定如下:

测试数据

【输入数据】LXXXVII

【输出结果】87

【输入数据】99

【输出结果】LXXXXVIIII

2.2概要设计:

(1)定义整形数组变量ROME_DATA[7]={1000,500,100,50,10,5,1};

(2)定义字符串ROME="MDCLXVI";

(3)定义“罗马数据转换为十进制数据”函数voidROME_INT();

(4)定义“十进制数据转换为罗马数据”函数voidINT_ROME();

(5)主函数调用ROME_INT()、INT_ROME()。

2.3详细设计与编码:

(1)流程图

主函数

调用ROME_INT()函数调用INT_ROME()函数

输入罗马数据输入10进制数

进入for循环进入for循环

输出10进制数

输出罗马数据

(2)源程序

#include

#include

usingnamespacestd;

charc[50],d[50];

inti,j,a,NUMBER;

stringROME="MDCLXVI";

intROME_DATA[7]={1000,500,100,50,10,5,1};

voidROME_INT();

voidINT_ROME();

intmain()

{

ROME_INT();

INT_ROME();

return0;

}

//将罗马数据转换为十进制数据

voidROME_INT()

{

cout<<"请输入要换算的罗马数据:

";

cin>>c;

for(a=0,i=0;c[i]!

=0;i++)

{

switch(c[i])

{

case'M':

a=a+1000;break;

case'D':

a=a+500;break;

case'C':

a=a+100;break;

case'L':

a=a+50;break;

case'X':

a=a+10;break;

case'V':

a=a+5;break;

case'I':

a=a+1;break;

default:

break;

}

}

cout<<"转换成十进制为:

"<

}

//将十进制数据转换为罗马数据

voidINT_ROME()

{

cout<<"请输入要换算的十进制数据:

";

cin>>NUMBER;

cout<<"转换成的罗马数据为:

";

for(i=0;i<7;i++)

{

d[i]=NUMBER/ROME_DATA[i];

NUMBER=NUMBER%ROME_DATA[i];

for(j=0;j

cout<

}

cout<

}

2.4调试分析:

2.5用户使用说明:

step1:

打开程序;

step2:

输入要求的数;

step3:

得出结果;

2.6设计心得:

经过此次试验进一步加深了对for循环和switch语句的使用,而且熟悉了主函数对函数的调用。

3、面向对象设计题2

3.1需求分析:

本题目要求编写类成员函数,来实现日期的增加、日期的比较、日期的输入、日期的输出。

根据实验要求输入一组测试数据,规定如下:

【输入数据】200811

其余数据采用程序中默认的函数;

【输出】dt1的日期为:

1年1月1日

dt2的日期为:

2008年12月31日

dt3的日期为:

2008年12月31日

dt1的日期为:

2008年1月1日

dt2的日期增加一天为:

2009年1月1日

dt2与dt3的日期相同!

dt2与dt4的日期不同!

3.2概要设计:

(1)完成类的各成员函数的编码;

(2)编写主函数,首先由用户输入一组日期;

(3)然后主函数调用默认的构造函数,再进行一系列的调用类的成员函数;

3.3详细设计与编码:

(1)流程图

主函数

调用一系列的构造函数

输入dt4的数据元素

调用一系列的输出函数

调用日期比较函数比较dt2与dt3、dt2与dt4

(2)源程序:

#include

usingnamespacestd;

classDateType

{//自定义的日期类DateType

inty,m,d;//数据成员,表示当前日期的年、月、日

public:

DateType(inty0=1,intm0=1,intd0=1);//构造函数,设定年、月、日;并设置参数默认值

voidset_DateType()

{

cin>>y>>m>>d;

}

voidincrementDay();//增加1天

boolequal(DateTypedt2);//判断二日期是否相等

voidprintDate();//屏幕输出日期对象的有关数据(年、月、日)

};

DateType:

:

DateType(inty0,intm0,intd0)//构造函数

{

y=y0;

m=m0;

d=d0;

}

voidDateType:

:

incrementDay()//增加一天

{

inta[]={31,28,31,30,31,30,31,31,30,31,30,31};

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

=0)||y%400==0)

a[1]=29;

if(d==31&&m==12)

{

y++;

m=1;

d=1;

}

elseif(d==a[m-1])

{

m++;

d=1;

}

elseif(d

d++;

cout<

}

boolDateType:

:

equal(DateTypedt2)//比较日期

{

if(y==dt2.y&&m==dt2.m&&d==dt2.d)

returntrue;

else

returnfalse;

}

voidDateType:

:

printDate()//输出日期

{

cout<

}

intmain()

{

DateTypedt1,dt2(2008,12,31),dt3(2008,12,31),dt4;

dt4.set_DateType();

cout<<"dt1的日期为:

";

dt1.printDate();

cout<<"dt2的日期为:

";

dt2.printDate();

cout<<"dt3的日期为:

";

dt3.printDate();

cout<<"dt4的日期为:

";

dt4.printDate();

cout<<"dt2增加一天为:

";

dt2.incrementDay();

if(dt2.equal(dt3))

cout<<"dt2与dt3日期相同!

"<

else

cout<<"dt2与dt3日期不同!

"<

if(dt2.equal(dt4))

cout<<"dt2与dt4日期相同!

"<

else

cout<<"dt2与dt4日期不同!

"<

return0;

}

3.4调试分析:

分析:

输出结果与预设值完全一致,证实了程序的正确性!

3.5用户使用说明:

【step1】打开源程序

【step2】输入一个日期

3.6设计心得:

通过此题的编写加深了对类的了解以及对类成员函数的调用,对瑞年的判断的算法也更为熟悉。

4、面向对象设计题7

4.1需求分析:

本题目要设计一个Cstudent类,类中包含学生的基本信息,而且要采用binary文件形式,使用随机读写处理方式对类的对象数据进行存储与读写处理。

而且要有输入函数、输出函数,而且还可以计算总成绩!

根据实验要求,设置一组测试数据如下:

【输入数据】

1

001禹勇男19898592

002刘菲女19887695

2

3

【输出数据】编号姓名性别年龄数学成绩计算机成绩外语成绩总分

1禹勇男20898592266

2刘菲女19887695259

4.2概要设计:

(1)建一个Cstudent类,定义类中的数据元素Num、Name[10]、Sex[10]、Age、Math、Com、Eng、Total;

(2)设置类的成员函数:

输入类元素getdata()、输出类元素outdate()、把数据输入到磁盘中get()、把数据从磁盘中输出put();

(3)编写类的成员函数的代码;

(4)编写主函数,并调用get()、put()函数;

4.3详细设计与编码:

(1)流程图

主函数

do语句

switch语句

case1case2

yes

调用get()函数调用put()函数

判断语句

no

主函数结束

get()函数

打开磁盘

调用getdata()函数输入数据

关闭磁盘

put()函数

打开磁盘

调用putdata()函数输出数据

关闭磁盘

(2)源程序

#include

#include

#include

usingnamespacestd;

classCStudent

{

intNum;

charName[10];

charSex[10];

intAge;

intMath,Com,Eng,Total;

public:

voidgetdata()//输入类元素

{

cout<<"编号:

";

cin>>Num;

cout<

";

cin>>Name;

cout<

";

cin>>Sex;

cout<

";

cin>>Age;

cout<

";

cin>>Math;

cout<

";

cin>>Com;

cout<

";

cin>>Eng;

cout<

}

voidoutdate()//输出类元素

{

Total=Math+Com+Eng;

cout<

<

}

};

voidget()//把类数据输入到磁盘中

{

ofstreamoutfile("stud.dat");

CStudents;

intn;

cout<<"输入数据:

"<

cout<<"学生人数:

";

cin>>n;

for(inti=0;i

{

cout<<"第"<

"<

s.getdata();

outfile.write((char*)&s,sizeof(s));

};

outfile.close();

}

voidput()//把类数据从磁盘中输出

{

ifstreaminfile("stud.dat");

CStudents;

cout<<"输出数据:

"<

cout<<"编号姓名性别年龄数学成绩计算机成绩外语成绩总分"<

infile.read((char*)&s,sizeof(s));

while(infile)

{

s.outdate();

infile.read((char*)&s,sizeof(s));

};

infile.close();

}

intmain()

{

inta;

do//选择应执行程序

{

cout<<"选择:

1:

输入数据2:

输出数据其他退出:

";

cin>>a;

switch(a)

{

case1:

get();break;//输入数据

case2:

put();break;//输出数据

default:

cout<<"error"<

}

}while(a==1||a==2);

return0;

}

4.4调试分析:

输入一组验证数据:

1

001禹勇男20898592

002刘菲女19887695

2

3

输出结果:

分析:

经过比较可以发现输出结果与程序设计之初预想的结果完全吻合,这表明已达到先前的设计要求,而且整个操作过程都有操作提示,显示出此程序的健壮性!

4.5用户使用说明:

【step1】打开程序;

【step2】选择操作类型;

【step3】若选择输入数据,则选择要输入的人数,然后再输入相关数据;

【step4】继续选择相关的操作,若想停止则输入出1、2之外的数据。

4.6设计心得:

经过此次试验对binary文件及随机读写的处理方式有了更加深刻的认识,从实验过程中也得到的了不少经验教训,比如:

应该随程序的使用函数、操作不同要增加相应的头文件;程序在操作过程中要有相应的操作提示,这样才更有益与用户更好的使用!

五、图形界面1

5.1需求分析:

1.用你熟悉的一种可视化编程语言实现如下图所示的计算器。

该计算器需要实现基础的数学运算,如加,减,乘,除。

设计一个简单的计算器可以进行简单的数学运算,比如加减乘除。

利用C++中的MFC来编写实现。

输出形式要与题目中给的样板相同或类似。

输入数据和输出数据均以double型数据表示

测试数据:

【输入数据】9-15

【输出结果】-6

【输入数据】2.4*0.2

【输出结果】0.48

【输入数据】4.8/3

【输出结果】1.6

5.2.概要设计

(1)设置如图说是的按钮;

(2)点击每一个按钮,起一个函数名,进入Dlg.cpp中编写相应的函数体;

(3)设置一些全局变量:

double型m1、m2

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

当前位置:首页 > 工程科技 > 机械仪表

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

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