《软件课程设计》实验报告.docx
- 文档编号:26922957
- 上传时间:2023-06-24
- 格式:DOCX
- 页数:16
- 大小:831.91KB
《软件课程设计》实验报告.docx
《《软件课程设计》实验报告.docx》由会员分享,可在线阅读,更多相关《《软件课程设计》实验报告.docx(16页珍藏版)》请在冰豆网上搜索。
《软件课程设计》实验报告
编号:
()字
号
《软件课程设计》报告
班
姓
学
级:
名:
号:
指导老师:
职
称:
计算机科学与技术学院二〇〇八年月
1
类别
题目序号
面向过程
7:
罗马数字与十进制的相互转化程序
8:
加减乘除联系
面向对象
3.1用三种方法通过虚函数求Fibonacci数列
8.设计电话本可以记录电话信息在文件中
图形界面
数据结构
专业年级:
学生姓名:
任务下达日期:
课程设计日期:
课程设计题目:
面向过程
一.需求分析
设计任务:
软件课程设计任务书
题目七:
1.将输入的罗马数据化为10进制数。
假设罗马数据中只使用如下7个“基值”字母:
M、D、C、L、X、V、I,分别用来表示
1000、500、100、50、10、5、1。
如,罗马数据LXXXVII表示10进制的87。
2.将输入的10进制正整数转换为罗马数据。
假设罗马数据中只使用“基值”字母:
M、D、C、L、X、V、I,分别用来表示
1000、500、100、50、10、5、1。
主要界面为:
2
输入1或2可以选择功能。
输出的形式
如上所示:
当输入大写或小写的阿拉伯字母时。
程序能计算出十进制。
程序所能达到的功能
测试的数据:
当输入mvii罗马数字时输出十进制
1007
当输入十进制数4535时相应输出MMMMDXXXV。
二.概要设计
程序中主要在开头用了一个死循环来实现功能的不断循环。
通过exit函数退出程序。
主程序的流程以及各程序模块之间的层次(调用)关系。
3
Convert1()
Break;
>switch(n)
Default;
三.详细设计
实现概要设计中定义的数据类型和操作。
以增加程序的可读性,关键算法部分画出程序流程图。
主函数的流程图如右图示:
Switch()
4
四.调试分析
实验时遇到的问题有:
获得字符的c=getchar().时出错。
由于自己第一次用到该语句时是在判断他不是’\n’,但是自己忘记使用他,便对他进行第二次的赋值。
从而使最后总是出错。
最后通过仔细检查,发现问题,通过解决。
问题不再有。
五.用户使用说明
A.选择1或2后按回车键便可选择相应的功能,1是罗马转化为十进制,2是十进制转化为罗马数字。
B.如果选择A这时输入罗马字母后按回车,程序便输出相应的十进制数。
C.如果选择B这时输入十进制数后按回车,程序便输出相应的罗马数字。
D.输入0后,便可以安全退出程序。
六.设计体会
在这个实验中,自己学会了用while
(1)来实现功能的不断实现。
然后分别设定两个函数完成不同的功能。
在主函数中调用这两个函数。
当用户选择0时。
调用exit()退出程序。
题目八:
一.需求分析
设计任务:
编程序,循环进行如下的处理过程:
由计算机生成简单的四则运算题;用户给出答案;计算机判断对错。
直到用户回答说不再继续做了时结束程序。
提示:
可让用户选择指定出加、减、乘、除哪一种运算题,以及出一位数还是两位数的运算题;而后通过使用“rand()%10”或“rand()%100”来获得一个0到9的一位整数随机值或得到0到99的两位整数随机值来为用户出题。
还可进一步对用户所做算术题的对错次数进行记录,结束程序时给出一个某种形式的成绩。
主要界面为:
输入1,2,3,4,5,0可以选择相应的功能。
输出的形式为等式让用户做题目,如下:
5
如上所示:
当输入答案时。
程序能计算结果。
并且记录用户的答题正确数目。
程序所能达到的功能:
1.加法一位数与二位数的运算。
如下:
2.减法一位数与二位数的运算。
如下:
3.乘法一位数与二位数的运算。
如下:
6
4.除法一位数与二位数的运算。
如下:
二.概要设计
主程序的流程以及各程序模块之间的层次(调用)关系。
Plus()
nim()
Main->jiemina->while
(1)-
>switch(n)
mult()
Divi();
三.详细设计
实现概要设计中定义的数据类型和操作。
以增加程序的可读性,关键算法部分画出程序流程图。
主函数的流程图如下页图示:
四.调试分析
实验时遇到的问题有:
问题一:
由于自己不会使用随机数,所以,产生了一些错误。
例如:
没有放种子,最后使得自己每次产生的随机数都一样。
最后看了老师的参考程序,知道了还得传种子放上种子后随机数就能用了。
问题二:
这道题目,目的是一道检测小学生四则运算的,所以在除法部分,自己刚开始,美注意到,出现了1/3=0的问题。
最后自己让产生的两个随机数相乘作为被除数,然后以两个随机数中的一个为除数。
这样的话就不会出现除完后是分数的情况了。
但是问题有产生了:
除数太大,超过二位。
问题三:
由于问题二而产生的问题三,是:
除数太大,超过二位。
对也此问题我的解决方法是对随机数筛选。
知道他们产生的随机数的成绩为二位时再使用。
此解决方法有一个缺点是:
系统产生符合条件的随机数需要等待太长的时间。
五.用户使用说明
A.进入程序后选择1.2.3.4.5.0就可以进入相应的功能。
7
B.例如选择1后:
又有相应的菜单可选择:
选择。
1.2.3.0.就可进行相应操作:
出现2+8=?
答案:
----这个地方填入自己的答案。
C.选择换一种运算就能进入主界面:
又可进行相应操作:
如评分。
如下:
得分为一百分。
D.此时又进入主界面。
可进行操作。
选择0可以退出程序。
六.设计体会
在这个实验中,自己学会了随机数的使用。
并且,在评分上自己使用的是全局变量作为分数。
以传引用的方式,将分数传入每一个函数。
累计积分。
在用户使用方面,对软件的功能与实用性也进行了考虑。
对出现的问题进行了解决。
8
Switch(order)
Switch(order)
9
面向对象3.1用三种方法通过虚函数求Fibonacci数列一、需求分析:
本程序主要解决的是:
利用虚函数手段,按照3种不同的计算方法来求出Fibonacci数列的第n项(的具体项值)并输出。
具体地说,可通过在基类baseCla及其派生类fib1Cla、fib2Cla和fib3Cla中说明如下的同一个虚函数“virtualdoublefib(intn);”,来实现求Fibonacci数列第n项值并返回的3种不同求解方法。
.
本程序输入为整数,输出为用三种方法算出的Fibonacci数列。
///////////////////////////////
二、概要设计:
本程设计思路:
本程序主要是虚函数的使用。
先设置一个虚函数,然后再不同的类里面实现,fun函数中有一个指针是指向每个类中的这个函数,传入类名和变量到fun中便可实现。
三种求的方法为:
1.变量平移。
2.数组。
3.递归。
在数组中自己使用了动态数组。
///////////////////////////////
三、详细设计与编码:
见上传程序。
四、调试分析:
在调试过程中数组部分出现问题,主要原因是由于数组不能在初始化未知长度,于是,我想起了老师资料里的动态数组。
自己看了以后就采用了它。
问题就解决了。
另外的一个问题是数组实现的时候,自己太粗心了,第一次没把算法写好,以至后来用各种方法找错误,有一个心得是:
可以多用”cout<<”语句输出中间变量。
.
//////////////////////////////////////
五、用户使用说明:
10
根据软件提示:
输入非零数,软件可用三种不同的方法实现Fibonacci数列。
输入0时结束程序。
刚开始时。
我们会呈现出默认数据。
/////////////////////////////////////
六、设计心得:
在这个程序中,自己由于粗心,出了错误,但是最后还是解决了。
自己很高兴。
自己学会了动态数组的建立。
对虚函数的使用也更加熟悉。
。
第三种方法用的是递归。
设计时很好设计。
但是运行上有点慢。
面向对象8编程实现电话簿管理
一、需求分析:
@@编写程序实现一个简单的电话记录簿,要求记录的个人信息包括:
姓名,单位,家庭电话,移动电话。
具体功能如下:
1.创建信息链表并以磁盘文件保存。
2.读取磁盘文件并显示输出所有人的移动电话。
3.按姓名或单位查询家庭电话。
4.通过姓名和单位确定个人,修改其电话信息并存盘
//////////////////////////////
二、概要设计:
本程设计思路:
本程序主要是设置两个类,一个是Node类用来存放电话信息,一个是tellist类。
用来对Node类进行操作。
因为telist类为Node的友元类。
本程序只要用的是链表的数据结构,用二进制的存储方法存储文件。
///////////////////////////////
三、详细设计与编码:
见上传程序。
四、调试分析:
在调试过程中主要的问题:
(1).是存储与读出文件。
由于在Node节点中有string类型的变量。
而string类的变量长度不定,所以读入的数据长度可能不等,致使读出时出错。
解决方法是自己将char[]代替了string.
(2)还有的问题是在插入Node时出过错。
主要是因为自己的链表使用还不熟悉。
最后经过修改正确了。
(3)读入文件时,有一次出错是因为没有判断文件是否为空,致使“内存不可读”的错误出现。
解决方法是自己在load()中加了一个判空语句。
问题便解决了。
//////////////////////////////////////
五、用户使用说明:
11
如上示:
选择相应的数字。
1。
2。
3。
4。
5。
0。
可进行操作。
此窗口是我已经输入了自己的信息,然后用system(“cls”)清屏。
用2.输出自己的信息。
输入0时推出程序。
并且将信息存到了。
“电话薄.dat“中。
下次再打开时自动调用load()读入信息。
/////////////////////////////////////
六、设计心得:
在这个程序中,自己花费了很长的时间,主要部分是在一个周末完成的,储存部分用了一个晚上找到问题调好的。
我很喜欢这个程序。
对于文件操作。
自己通过这个程序更加熟悉了。
通过链表的头结点传入store()进行储存。
再通过load()每次开辟一个节点,逐个将各个节点连接起来。
再将链表头节点传出到telistz中记住。
12
软件课程设计指导教师评阅书
指导教师评语(①基础理论及基本技能的掌握;②独立解决实际问题的能力;③研究内容的理论依据和技术方法;④取得的主要成果及创新点;⑤工作态度及工作量;⑥总体评价及建议成绩;⑦存在问题等):
成绩:
指导教师签字:
年
月
日
13
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件课程设计 软件 课程设计 实验 报告