




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《软件课程设计》报告班级:姓名:学号:指导老师:职称:计算机科学与技术学院二〇〇八年月软件课程设计任务书专业年级:学生姓名:任务下达日期:课程设计日期:课程设计题目:面向过程类别题目序号面向过程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。主要界面为:输入1或2可以选择功能。输出的形式如上所示:当输入大写或小写的阿拉伯字母时。程序能计算出十进制。程序所能达到的功能测试的数据:当输入mvii罗马数字时输出十进制1007当输入十进制数4535时相应输出 MMMMDXXXV。二.概要设计程序中主要在开头用了一个死循环来实现功能的不断循环。通过exit函数退出程序。主程序的流程以及各程序模块之间的层次(调用)关系。Break;Break;Exit()Default;Convert2()Convert1()Main->jiemina->while(1)->switch(n)Break;Break;Exit()Default;Convert2()Convert1()Main->jiemina->while(1)->switch(n)三.详细设计实现概要设计中定义的数据类型和操作。以增加程序的可读性,关键算法部分画出程序流程图。主函数的流程图如右图示:WWhile(1)Cin>>nConvert1()Break;Case1:Case2:;Convert2();Break;Default;Exit(1);Main()Return0;Switch()四.调试分析实验时遇到的问题有:获得字符的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可以选择相应的功能。输出的形式为等式让用户做题目,如下:如上所示:当输入答案时。程序能计算结果。并且记录用户的答题正确数目。程序所能达到的功能:1.加法一位数与二位数的运算。如下:2.减法一位数与二位数的运算。如下:3.乘法一位数与二位数的运算。如下:4.除法一位数与二位数的运算。如下:二.概要设计主程序的流程以及各程序模块之间的层次(调用)关系。Divi();Exit()mult()Break;Plus()nim()Break;Main->jiemina->while(1)->switch(n)Break;Divi();Exit()mult()Break;Plus()nim()Break;Main->jiemina->while(1)->switch(n)Break;三.详细设计实现概要设计中定义的数据类型和操作。以增加程序的可读性,关键算法部分画出程序流程图。主函数的流程图如下页图示:四.调试分析实验时遇到的问题有:问题一:由于自己不会使用随机数,所以,产生了一些错误。 例如:没有放种子,最后使得自己每次产生的随机数都一样。 最后看了老师的参考程序,知道了还得传种子放上种子后随机数就能用了。 问题二:这道题目,目的是一道检测小学生四则运算的,所以在除法部分,自己刚开始,美注意到,出现了1/3=0的问题。最后自己让产生的两个随机数相乘作为被除数,然后以两个随机数中的一个为除数。这样的话就不会出现除完后是分数的情况了。但是问题有产生了:除数太大,超过二位。问题三:由于问题二而产生的问题三,是:除数太大,超过二位。对也此问题我的解决方法是对随机数筛选。知道他们产生的随机数的成绩为二位时再使用。此解决方法有一个缺点是:系统产生符合条件的随机数需要等待太长的时间。五.用户使用说明A.进入程序后选择1.2.3.4.5.0就可以进入相应的功能。B.例如选择1后:又有相应的菜单可选择:选择。1.2.3.0.就可进行相应操作:出现2+8=?答案:----这个地方填入自己的答案。C.选择换一种运算就能进入主界面:又可进行相应操作:如评分。如下:得分为一百分。D.此时又进入主界面。可进行操作。选择0可以退出程序。六.设计体会在这个实验中,自己学会了随机数的使用。并且,在评分上自己使用的是全局变量作为分数。以传引用的方式,将分数传入每一个函数。累计积分。在用户使用方面,对软件的功能与实用性也进行了考虑。对出现的问题进行了解决。Switch(order)Switch(order)mult;Case3;Break;min();Case2:;Case1:Break;plus()Cin>>orderWhile(1)MainSwitch(order)Main()Case0;Exit();break;Divi();Case4;Break;Switch(order)Switch(order)Switch(order)mult;Case3;Break;min();Case2:;Case1:Break;plus()Cin>>orderWhile(1)MSwitch(order)Main()Case0;Exit();break;Divi();Case4;Break;RReturn0;面向对象3.1用三种方法通过虚函数求Fibonacci数列需求分析:本程序主要解决的是:利用虚函数手段,按照3种不同的计算方法来求出Fibonacci数列的第n项(的具体项值)并输出。具体地说,可通过在基类baseCla及其派生类fib1Cla、fib2Cla和fib3Cla中说明如下的同一个虚函数“virtualdoublefib(intn);”,来实现求Fibonacci数列第n项值并返回的3种不同求解方法。.本程序输入为整数,输出为用三种方法算出的Fibonacci数列。///////////////////////////////概要设计:本程设计思路:本程序主要是虚函数的使用。先设置一个虚函数,然后再不同的类里面实现,fun函数中有一个指针是指向每个类中的这个函数,传入类名和变量到fun中便可实现。三种求的方法为:1.变量平移。2.数组。3.递归。在数组中自己使用了动态数组。///////////////////////////////三、详细设计与编码:见上传程序。四、调试分析:在调试过程中数组部分出现问题,主要原因是由于数组不能在初始化未知长度,于是,我想起了老师资料里的动态数组。自己看了以后就采用了它。问题就解决了。另外的一个问题是数组实现的时候,自己太粗心了,第一次没把算法写好,以至后来用各种方法找错误,有一个心得是:可以多用”cout<<”语句输出中间变量。.//////////////////////////////////////五、用户使用说明:根据软件提示:输入非零数,软件可用三种不同的方法实现Fibonacci数列。输入0时结束程序。刚开始时。我们会呈现出默认数据。/////////////////////////////////////六、设计心得:在这个程序中,自己由于粗心,出了错误,但是最后还是解决了。自己很高兴。自己学会了动态数组的建立。对虚函数的使用也更加熟悉。。第三种方法用的是递归。设计时很好设计。但是运行上有点慢。面向对象8编程实现电话簿管理一、需求分析: @@编写程序实现一个简单的电话记录簿,要求记录的个人信息包括: 姓名,单位,家庭电话,移动电话。具体功能如下: 1.创建信息链表并以磁盘文件保存。 2.读取磁盘文件并显示输出所有人的移动电话。 3.按姓名或单位查询家庭电话。 4.通过姓名和单位确定个人,修改其电话信息并存盘//////////////////////////////二、概要设计:本程设计思路:本程序主要是设置两个类,一个是Node类用来存放电话信息,一个是tellist类。用来对Node类进行操作。因为telist类为Node的友元类。本程序只要用的是链表的数据结构,用二进制的存储方法存储文件。///////////////////////////////三、详细设计与编码:见上传程序。四、调试分析:在调试过程中主要的问题:(1).是存储与读出文件。由于在Node节点中有string类型的变量。而string类的变量长度不定,所以读入的数据长度可能不等,致使读出时出错。解决方法是自己将char[]代替了string.(2)还有的问题是在插入Node时出过错。主要是因为自己的链表使用还不熟悉。最后经过修改正确了。(3)读入文件时,有一次出错是因为没有判断文件是否为空,致使“内存不可读”的错误出现。解决方法是自己在load()中加了一个判空语句。问题便解决了。//////////////////////////////////////五、用户使用说明:如上示:选择相应的数字。1。2。3。4。5。0。可进行操作。此窗口是我已经输入了自己的信息,然后用system(“cls”)清屏。用2.输出自己的信息。输入0时推出程序。并且将信息存到了。“电话薄.dat“中。下次再打开时自动调用load()读入信息。/////////////////////////////////////六、设计心得:在这个程序中,自己花费了很长的时间,主要部分是在一个周末完成的,储存部分用了一个晚上找到问题调好的。我很喜欢这个程序。对于文件操作。自己通过这个程序更加熟悉了。通过链表的头结点传
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 病理科科研成果及未来研究方向计划
- 期刊出版与学术期刊的学术社区运营考核试卷
- 建筑工程机械租赁质量控制考核试卷
- 前台文员的全方位技能提升计划
- 家校沟通与合作方案计划
- 电子商务环境下智能供应链的挑战与机遇
- 坚果种植的农业资源环境保护与绿色农业发展考核试卷
- 人工折除合同范本
- 合作店合同范本
- 科技发展下的新型职场沟通方式
- 砥砺前行决心谱写华章
- 2025年开学教导处发言稿(5篇)
- 机电设备安装旁站监理方案
- 2025年度民政局离婚协议书范本模板官方修订2篇
- 《百达翡丽名表介绍》课件
- 《集装箱标识辨识》课件
- 2024年临床输血管理委员会年终的工作总结
- 2025版《VOCs废气处理设施安全检查表》(全)
- 整形医院客户管理培训
- 七年级语文下册全册完整课件(部编版)
- (投资管理)对外投资合作国别(地区)指南
评论
0/150
提交评论