软件课程设计l论文.docx

上传人:b****3 文档编号:5437620 上传时间:2023-05-08 格式:DOCX 页数:37 大小:337.33KB
下载 相关 举报
软件课程设计l论文.docx_第1页
第1页 / 共37页
软件课程设计l论文.docx_第2页
第2页 / 共37页
软件课程设计l论文.docx_第3页
第3页 / 共37页
软件课程设计l论文.docx_第4页
第4页 / 共37页
软件课程设计l论文.docx_第5页
第5页 / 共37页
软件课程设计l论文.docx_第6页
第6页 / 共37页
软件课程设计l论文.docx_第7页
第7页 / 共37页
软件课程设计l论文.docx_第8页
第8页 / 共37页
软件课程设计l论文.docx_第9页
第9页 / 共37页
软件课程设计l论文.docx_第10页
第10页 / 共37页
软件课程设计l论文.docx_第11页
第11页 / 共37页
软件课程设计l论文.docx_第12页
第12页 / 共37页
软件课程设计l论文.docx_第13页
第13页 / 共37页
软件课程设计l论文.docx_第14页
第14页 / 共37页
软件课程设计l论文.docx_第15页
第15页 / 共37页
软件课程设计l论文.docx_第16页
第16页 / 共37页
软件课程设计l论文.docx_第17页
第17页 / 共37页
软件课程设计l论文.docx_第18页
第18页 / 共37页
软件课程设计l论文.docx_第19页
第19页 / 共37页
软件课程设计l论文.docx_第20页
第20页 / 共37页
亲,该文档总共37页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

软件课程设计l论文.docx

《软件课程设计l论文.docx》由会员分享,可在线阅读,更多相关《软件课程设计l论文.docx(37页珍藏版)》请在冰点文库上搜索。

软件课程设计l论文.docx

软件课程设计l论文

编号:

()字号

《软件课程设计》报告

 

班级:

姓名:

学号:

指导老师:

谢红侠

 

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

2013年1月

软件课程设计任务书

专业年级:

电子信息科学与技术2011级

学生姓名:

武谊

任务下达日期:

2013年1月10日

课程设计日期:

2013年1月10日至2013年1月17日

课程设计题目:

面向过程

类别

题目序号

成绩

面向过程

2.求数与其反序数之和

3.Fibonacci数列

4.凑钱数(1,2,5,7,8)

5.判断日期与星期

7.罗马数据转换十进制

面向对象

1.定义complex类进行复数的加减乘除

2.定义一个日期类,并包含有数据成员,进而设计出相应的类成员函数。

3.用三种方法通过虚函数求Fibonacci数列

5.设计一个类CStudent,类中包含一个学生的基本数据

7.关于磁盘文档的输入输出(1、2、4、5、6。

8.编写程序实现一个简单的电话记录簿

图形界面

1.通过MFCAPPWIZARD创建一个计算器(2。

数据结构

1.用链表和数组两种方式分别实现栈的几种操作

2.假设有一个循环链表的长度大于1,且表中既无头结点也无头指针。

已知p为指向链表中某结点的指针,试编写算法在链表中删除结点p的前趋结点。

4 .设计一个统计选票的算法,输出每个候选的得票结果(假设采用单链表存放选票,候选人编号依次为1,2,3,……,N,且每张选票选且只选一人)

(1、3。

).

 

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

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

成绩:

指导教师签字:

年月日

 

目录

一、面向过程设计题5-------判断日期与星期(sy5.cpp)

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

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

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

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

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

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

二、面向过程设计题8------8:

加减乘除(sy8.cpp)

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

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

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

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

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

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

三、面向对象设计题3------用三种方法通过虚函数求Fibonacci数列(mianxiangduixiang3.cpp)

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

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

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

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

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

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

四、面向过程设计题7---------关于磁盘文档的输入输出(miangxiangduixiang7.cpp)

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

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

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

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

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

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

五、图形界面1---------计算器(计算器.rar)

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

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

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

5.4调试分析………………………………………………………………………...28

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

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

六、数据结构2------删除结点p的前趋结点(数据结构2.cpp)

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

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

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

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

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

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

七、数据结构4--------统计选票(数据结构3.cpp)

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

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

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

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

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

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

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

 

一、面向过程

第二题:

题目:

编程序,从键盘输入正整数n,求出n与其反序数之和并输出。

例如,输入2038,输出应为2038+8302=10340。

1.需求分析:

设计一个程序可以实现求其与其反序数之和。

根据题目要求,规定如下:

测试数据:

【输入数据】:

2038

【输出数据】:

10340

【输入数据】:

1153

【输出数据】:

4664

2.设计概要:

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

(2)输出反序数;

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

(4)输出sum的值。

(5)主程序流程:

step1:

让用户输入一个整数n;

step2:

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

step3:

求和并输出。

3.调试分析:

step1:

输入2038

step2:

输入1153

分析:

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

4.用户使用说明:

step1:

打开程序;

step2:

输入要求的数;

step3:

得出结果;

5.设计体会:

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

第3题

题目:

编程序,使用如下所谓的简单变量“数据平移”方法来求出Fibonacci数列的第n项(的具体项值)并显示在屏幕上(正整数n通过键盘输入)

1.需求分析:

当我们在生活中或者数学、物理等学习过程中,往往会遇到累加问题,即新的项是由于它距离最近的两项的加和,不断的生成新项,实现了累加,进行所谓的“数据平移”,因此实现此类算法是很有必要的。

2.概要设计:

说明变量old1=1,old2=1,newItem;新的Fibonacci项newItem总是“距它最近”的前两项(old1与old2)的累加和。

而后通过“old1=old2;old2=newItem;”进行所谓的“数据平移”。

接着计算另一个新的Fibonacci项newItem,依次循环,直到求出数列的第n项时为止。

Fibonacci数列的计算公式如下:

fib

(1)=1;

fib

(2)=1;

fib(n)=fib(n-1)+fib(n-2);//对大于等于3的任意n

3.调试分析

Step1:

输入8

Step2:

检查输出

1.newItem,n,k的类型是int型

2.赋值过程中一定是newItem=old1+old2;而不是old1+old2=newItem

3.注意体会尝试程序的健壮性。

4.尝试用其他方法完成该程序

4.用户说明

用户可直接通过键盘向界面输入你要求的Fibonacci数列的第n项,按回车键即可得到答案。

5.设计心得:

对于最基本的知识一定要达到熟练的程度,才能熟中生巧,设计出高质量的程序。

第四题:

题目:

编程序,输入正整数m,它代表一个人民币钱数(元数)。

求取这样一个方案,使用最少张数的人民币纸币,凑成上述的钱数m,并输出求取结果。

注意,现在共有7种元以上面值的人民币纸币,分别为:

100,50,20,10,5,2,1。

1.需求分析:

设计一个程序可以实现使用最少张数的人民币纸币,凑成输入正整数钱数m。

根据题目要求,规定如下:

测试数据:

【输入数据】:

682

【输出数据】:

100元的张数:

6

50元的张数:

1

20元的张数:

1

10元的张数:

1

5元的张数:

0

2元的张数:

1

1元的张数:

0

【输入数据】:

269

【输出数据】:

100元的张数:

2

50元的张数:

1

20元的张数:

0

10元的张数:

1

5元的张数:

1

2元的张数:

2

1元的张数:

0

2.设计概要:

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

(2)利用整型变量除法求得所需100纸币的张数;

(3)利用整除求余求得整数m减去100乘以其张数;

(4)依次求得50、20、10、5、2、1纸币的张数。

(5)主程序流程:

第一步:

让用户输入一个整数m;

第二步:

利用整数除法与整除求余求得凑成m纸币的张数;

第三步:

输出。

5.调试分析:

step1:

输入682

step2:

输入269

分析:

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

6.用户使用说明:

step1:

打开程序;

step2:

输入要求的数;

step3:

得出结果;

7.设计体会

通过此次实验加深了对整数除法和整数求余的使用方法。

把理论应用到实际。

第五题:

题目:

编程序,使用户任意输入一个年份以及该年的1月1日是星期几,而后任意指定某一天(再输入该年的任意一个月份日期),由程序计算出这一天是星期几。

注意,2月份闰年为29天,非闰年为28天;可被4整除而不可被100整除的年份、或者可被400整除的年份均为闰年。

1.需求分析

用户自己输入一个日期,并输入该年的一月一日是星期几,由该程序完成计算,输出这一天是星期几。

2.概要设计:

本程设计思路:

输入用户想要计算的日期(包括年、月、日)及本年一月一日的星期,

定义一个数组储存平年12个月的天数,再用判断语句判断这一年是平年还是闰年,若为闰年,将数组中储存2月的元素的天数设为29,至此天数设定完成。

然后利用一个for循环计算经过的天数。

最后利用公式计算这一天是星期几。

3.调试分析:

调试过程中,经常遇到公式计算错误,即使输入、输出正确也要多验证几个不同情况,有时会忽略一些问题。

4.用户使用说明:

用户根据程序的提示输入年、月、日及这年一月一日的星期。

5.设计心得:

这个程序看似复杂,其实弄懂其中的主要公式,及编写程序时的主要方法,就可以编写出来。

 

第七题:

题目:

将输入的罗马数据化为10进制数。

假设罗马数据中只使用如下7个"基值"字母:

M、D、C、L、X、V、I,分别用来表示1000、500、100、50、10、5、1。

如,罗马数据

LXXXVII表示10进制的87。

将输入的10进制正整数转换为罗马数据。

假设罗马数据中只使用"基值"字母:

M、D、C、L、X、V、I,分别用来表示1000、500、100、50、10、5、1。

1.需求分析:

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

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

测试数据

【输入数据】LXXXVII

【输出结果】87

【输入数据】56

【输出结果】LVI

【输入不存在的数据】ASGH

【输出结果】0

2.设计概要

(1)定义整形数组变量ROME_DATA[7];

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

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

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

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

3.调试分析

这次实验发现错误出在for循环中的switch语句,由于不注意case语句结束是没有加break,导致编译时无错误,但运行结果却不对,这说明在程序设计时,要仔细认真。

输入罗马数据:

LXXXVII

输入十进制数据:

56

输入不存在的罗马数据:

ASGH

分析:

输出结果与预想值完全吻合,说明了程序的正确性!

4.用户使用说明

(1)打开程序

(2)用户只能输入相应的罗马数据其他无效(即得相应的10进制数据)

(3)输入10进制数据(即得相应的罗马数据)。

5.试验体会

经过此次实验,首先熟悉了主函数对函数的调用。

而且进一步加深了对for循环的使用,for循环不仅可以用于循环次数已经确定的情况,而且可以用于循环次数不确定而只给出循环结束条件的情况。

 

二、第一题:

题目:

自定义一个示意性的复数类型complex,其中含有若干个成员函数,使用该类可以完成复数的加法以及对复数的输出。

请完成类定义,并编制主函数,说明complex类对象,对定义的各成员函数进行调用。

进一步,在类中添加对复数进行其他基本运算(如,复数减、乘、除、取模等)的相应成员函数,并通过主函数处的调用来验证各函数的使用正确性。

1.需求分析

用户根据提示输入两个复数,然后程序自动求出这两个复数的和、差、积、商。

2.概要设计

本程序主要运用运算符的重载:

complexoperator+(complex&c2);

complexoperator-(complex&c2);

complexoperator*(complex&c2);

complexoperator/(complex&c2);

doublex(complex&c);

分别将实数的加减乘除运算符重载,使在这些运算符在复数中也可以使用,还利用复数的算法。

3.调试分析

调试过程中,由于代码量较大,括号的数量可能会不一致,要细心,在编写乘除法时要注意算法,因为复数的乘除与实数有一定的区别。

4.用户使用说明:

用户根据屏幕上的提示信息,依次输入计算的复数的实虚部,

然后程序会自动计算,然后将结果输出到屏幕上。

5.设计心得

通过本程序的设计,我对运算符的重载有了更加深刻的认识,对于面向对象这种思想也有了更深的理解。

 

第二题:

题目:

自定义一个简单的日期类DateType,它具有数据成员y、m、d,用来表示当前日期的年、月、日。

而后设计该类欲实现(完成)的功能,进而设计出相应的类成员函数。

例如,下面给出的"雏形"可用来实现对天的增加,比较两个日期是否相等,以及对日期的输出等操作。

请完成各类成员函数,并编制主函数,说明DateType类对象,对定义的各成员函数进行调用,以验证它们的正确性。

classDateType{//自定义的日期类DateType

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

public:

DateType(inty0=1,intm0=1,intd0=1);

//构造函数,设定年、月、日;并设置参数默认值

voidincrementDay();//增加1天

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

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

};

注意,当对日期增加1天后,也会涉及所谓的"进位"问题:

首先算出本"日"所在的月份具有的天数N,

若加1之后的"日"数值超过所在的月份具有的天数N时,"进位"到月,而月份若超过12时还要"进位"到年。

1.需求分析

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

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

【输入数据】2010228

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

【输出】请输入日期:

2010228

d1的日期为:

2010/2/28

增加一天变为:

2010/3/1

2010/12/31

增加一天变为:

2011/1/1

2010/7/3

增加一天变为:

2010/7/4

2011/1/1

与2010/7/4

不相等

2010/7/4

与2010/7/4

相等

2.设计概要

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

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

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

3.调试分析

编写过程中遇到的主要困难就是瑞年的判断,还有就是switch语句的使用;此题要求对基本算法要熟悉,以免发生错误;还有就是在月末、年末时增加时需要注意到月份及年份的增加。

输入一个年份:

2010228

输出结果:

分析:

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

4.用户使用说明

第一步:

打开源程序

第二步:

输入一个日期

8.实验体会

通过此题的编写加深了对使用if语句判断瑞年的算法的熟练程度以及switch语句的使用;同时进一步熟悉了调用构造函数。

 

第3题:

题目:

利用虚函数手段,按照3种不同的计算方法来求出Fibonacci数列的第n项(的具体项值)并输出。

具体地说,可通过在基类baseCla及其派生类fib1Cla、fib2Cla和fib3Cla中说明如下的同一个虚函数“virtualdoublefib(intn);”,来实现求Fibonacci数列第n项值并返回的3

种不同求解方法。

1.需求分析

运用对象实现该算,法虽是递归算法,对于实现大规模,繁多数据的处理是很有必要的。

2.概要设计

主要函数列表,每条记录应包括函数名及功能简要说明

1.classbaseCla//自定义基类baseCla

2.virtualdoublefib(intn)=0//在基类中说明一个虚函数fib,且为纯虚函数

3.classfib1Cla:

publicbaseCla//基类classbaseCla中派生出的fib1Cla

4.virtualdoublefib(intn)//派生类中说明同一个虚函数fib

5.voidfun(baseCla*p,intn)//定义函数,用n指明项

6.voidmain()//主函数调用输出

3.调试分析

1.定义基类baseCla的位置很重要。

2.基类classbaseCla中派生出的fib1Cla的表达式的写法不可些错为classfib1Cla:

publicbaseCla

3.写程序时的位置对应,以便查错。

4.函数对应的调用顺序要正确,不但容易阅读而且容易查错。

5.考虑程序的健壮性,并不断尝试不同的更简洁的算法使我们当前的工作。

4.用户使用说明:

屏幕直接显示。

5.设计心得:

通过此题,我对上学期所学类的定义以及应用达到了复习的效果,熟悉了函数的调用等编程。

 

第五题

题目:

设计一个类CStudent,类中包含一个学生的基本数据如下:

编号,姓名,性别,年龄,数学成绩,计算机成绩,外语成绩。

并假设编号为整数,且从1号往后连续编码;姓名为字符串,性别为字符。

如:

1LiPingm18899894

请采用binary文件形式,并使用随机读写处理方式,对自定义CStudent类的对象数据进行存储与读写处理(即是

说,总按具有连续编码的编号num为"序"来对文件中的各对象数据进行随机读写处理)。

并设计该类的成员函数,

而且对输出运算符"<<"进行重载,使该运算符能够完成将一个学生的信息输出到屏幕上。

要求成员函数完成以下功能:

(1)从键盘输入一个学生的有关信息,并将它们存入到数据文件中(按编号来确定写出位置)。

(2)按编号对学生信息信息进行检索并将检索结果显示在屏幕上。

(3)计算某编号学生的总成绩。

1.需求分析

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

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

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

【输入数据】

1

001张华男20898592

002李宁女19887695

2

3

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

1张华男20898592266

2李宁女19887695259

2.概要设计

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

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

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

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

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

3.调试分析

自身感觉此程序的难点在于要采用文件形式的随机存储方式,还要写入磁盘当中,再C++语言学习当中,此会内容本身就学的不扎实,在编写过程中磁盘的打开存储总是写不对,经过查C++书及请教同学得知在存入数据时,打开磁盘要用ofstreamoutfile("stud.dat")语句,把数据写入磁盘要用outfile.write((char*)&s,sizeof(s))语句,程序结束还得关闭磁盘outfile.close();类似的在put(

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

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2