欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    《软件课程设计》实验报告.doc

    • 资源ID:2884626       资源大小:620KB        全文页数:40页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    《软件课程设计》实验报告.doc

    软件课程设计报告班 级: 姓 名: 学 号: 指导老师: 中国矿业大学计算机科学与技术学院 第一阶段 面向过程第二题:1. 题目: 编程序,从键盘输入正整数n,求出n与其反序数之和并输出。例如,输入2038,输出应为 2038+8302=10340。2.需求分析:设计一个程序可以实现求其与其反序数之和。根据题目要求,规定如下:测试数据:输入数据:2038输出数据:10340输入数据:1046输出数据:74473.设计概要: (1)定义正型变量a为用户输入值;(2)求a的反序数;(3)定义整型变量s并求和;(4)输出s的值;(5)主程序流程:Step1:让用户输入一个整数a;Step2:用do-while循环求其反序数;Step3:求和并输出;4详细设计与编码:(1) 流程图:用户输入a进入do-while循环Yes判断条件no输出反序数 输出结果s(2)源程序:#include<iostream>#include<cmath>using namespace std;int main()int a,b,c,t,s=0;cout<<"please enter a number:"/输入要求的整数acin>>a;t=a;c=log(a)/log(10)+1; /求整数a的位数c=c-1;do /求a的反序数b=a%10;a=a/10;s+=b*pow(10,c);c-;while(a!=0);cout<<t<<"的反序数为:"<<s<<endl;s=s+t; /求a与其反序数之和cout<<t<<"和其反序数之和为:"<<s<<endl;return 0; 5用户使用说明:Step1:打开程序;Step2:输入要求的整数;Step3:得出结果6测试分析: 输入2038输入1046分析:经过多次输入测试试验后得到了预期值,说明程序的正确性。7.设计体会:通过实验体会了设计程序的方法与步骤,加深了对do-while循环使用方法的的了解。第四题:1.题目: 编程序,输入正整数m,它代表一个人民币钱数(元数)。求取这样一个方案,使用最少张数的人民币纸币,凑成上述的钱数m,并输出求取结果。注意,现在共有7种元以上面值的人民币纸币,分别为:100,50,20,10,5,2,1。2.需求分析:设计一个程序,可以实现输入一个人民币钱数输出使用最少的人民币纸币的张数。根据题目要求,规定如下:测试数据:输入数据:150输出数据:2输入数据:176输出数据:53.设计概要: (1)定义正型变量n为用户输入值;(2)定义数组a存放人民币纸币的不同面值;(3)定义整型变量s并求和;(4)输出s的值;(5)主程序流程:Step1:让用户输入一个钱数n;Step2:用for循环求和;Step3:输出s的值;4详细设计与编码:(1)流程图:用户输入n进入for循环Yes判断条件no输出结果s(2)源程序:#include<iostream> using namespace std; int a8=0,100,50,20,10,5,2,1;/定义数组a存放7种不同人民币纸币的面值int main() int n,i,s=0; cout<<"please enter the number of money:" cin>>n; /输入要求的钱数afor (i=1;i<=7;i+) /求使用最少的人民币纸币的张数s s+=n/ai; n%=ai; cout<<s<<endl; return 0; 5用户使用说明:Step1:打开程序;Step2:输入要求的钱数;Step3:得出结果6测试分析:输入数据:150输入数据:176分析:经过多次输入测试试验后得到了预期值,说明程序的正确性。7.设计体会:通过实验锻炼了编辑程序的思维过程,熟悉了for循环的使用方法。第二阶段 面向对象第一题:1.题目:自定义一个示意性的复数类型complex,其中含有若干个成员函数,使用该类可以完成复数的加法以及对复数的输出。请完成类定义,并编制主函数,说明complex类对象,对定义的各成员函数进行调用。进一步,在类中添加对复数进行其他基本运算(如,复数减、乘、除、取模等)的相应成员函数,并通过主函数处的调用来验证各函数的使用正确性。2.需求分析:设计一个程序,可以实现对复数进行加、减、乘、除、取模等基本运算。根据题目要求,规定如下:测试数据:输入数据:c1=(3,4i),c2=(5,-10i)输出数据:|c1|=5|c2|=11.1803c1+c2=(8,-6i)c1-c2=(-2,14i)c1*c2=(55,-10i)c1/c2=(-0.2,0.4i)3.设计概要: (1)定义一个complex类作为复数类型;(2)定义成员函数addCom(),minCom(),multCom(),diviCom(),outCom ()来分别实现加、减、乘、除、取模等基本运算以及复数的输出操作;(3)定义成员变量real和image作为复数的实部和虚部;(4)在主函数中通过complex类来定义对象并调用相关成员函数完成相应操作;(5)主程序流程:Step1:让用户输入一个钱数n;Step2:用for循环求和;Step3:输出s的值;4详细设计与编码:(1)流程图:定义complex类进入主函数定义对象并调用成员函数输出结果(2)源程序:#include <iostream>#include <cmath>using namespace std;class complexpublic: complex(); /无参构造函数 complex(double r, double i):real(r),image(i) /2参构造函数 complex addCom(complex &c2); /调用者对象与对象c2相加,返回complex类对象 complex minCom(complex &c3); /调用者对象与对象c2相减,返回complex类对象 complex multCom(complex &c4); /调用者对象与对象c2相乘,返回complex类对象 complex diviCom(complex &c5); /调用者对象与对象c2相除,返回complex类对象 double lenCom(); /对调用者对象进行取模运算,返回double类型 void outCom (); /输出调用者对象的有关数据(各分量) private: double real; /复数实部 double image; /复数虚部;complex:complex()real=0;image=0;complex complex:addCom(complex &c2)complex c;c.real=real+c2.real;c.image=image+c2.image;return c;complex complex:minCom(complex &c3)complex c;c.real=real-c3.real;c.image=image-c3.image;return c;complex complex:multCom(complex &c4)complex c;c.real=real*c4.real-image*c4.image;c.image=image*c4.real+real*c4.image;return c;complex complex:diviCom(complex &c5)complex c;c.real=(real*c5.real+image*c5.image)/(c5.real*c5.real+c5.image*c5.image);c.image=(image*c5.real-real*c5.image)/(c5.real*c5.real+c5.image*c5.image);return c;double complex:lenCom()double l;l=sqrt(real*real+image*image);return l;void complex:outCom () cout<<"("<<real<<","<<image<<"i)"<<endl;int main() complex c1(3,4),c2(5,-10),c3,c4,c5,c6;cout<<"c1="c1.outCom(); cout<<"c2="c2.outCom(); cout<<"|c1|="<<c1.lenCom()<<endl; cout<<"|c2|="<<c2.lenCom()<<endl; c3=c1.addCom(c2);c4=c1.minCom(c2);c5=c1.multCom(c2);c6=c1.diviCom(c2);cout<<"c1+c2="c3.outCom();cout<<"c1-c2="c4.outCom();cout<<"c1*c2="c5.outCom();cout<<"c1/c2="c6.outCom();return 0;5用户使用说明:Step1:打开程序;Step2:输入测试数据;Step3:得出结果6测试分析:输入数据:c1=(3,4i),c2=(5,-10i)分析:测试试验后得到了预期值,说明程序的正确性。7.设计体会:通过此题的编写加深了对面向对象中类的了解,熟练了类的构造过程以及对类成员函数的调用。第六题:1.题目:编写一个具有如下样式的类模板tmplt,用于实现所谓的反序输出问题,其中使用了类型参数T(使所处理的元素类型可变化)以及普通参数n(元素个数也可变化):template <class T, int n> class tmplt        T arrn;                / n个T类型的数据存放于数组arr之中public:       void dataIn();               /从键盘输入n个T类型数据放入arr数组中       void reverseOut();  /将arr数组中的数据按输入的相反顺序输出;       而后编制主函数,将类模板实例化为某个具体的类并说明类对象,之后通过对象调用其负责输入数据的成员函数,再通过对象调用另一成员函数按反序输出那些输入数据。2.需求分析:设计一个程序,可以实现将类模板实例化为某个具体的类并通过对象调用其负责输入数据的成员函数,再通过对象调用另一成员函数按反序输出那些输入数据。根据题目要求,规定如下:测试数据:输入数据:0 1 2 3 4 5 6 7 8 9输出数据:9 8 7 6 5 4 3 2 1 0输入数据:1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 1.0输出数据:1 1.9 1.8 1.7 1.6 1.5 1.4 1.3 1.2 1.1输入数据:a b c d e f g h i j输出数据:j i h g f e d c b a3.设计概要: (1)定义一个类模板tmplt;(2)定义成员函数dataIn()和reverseOut()来实现n个T类型数据的输入与输出;(3)定义成员变量arr数组来存放 n个T类型的数据;(4)在主函数中通过tmplt类模板的实例化来调用相关成员函数完成相关操作;(5)主程序流程:Step1:输入十个数据;Step2: 在主函数中调用成员函数;Step3:输出十个数据的反序;4详细设计与编码:(1)流程图:定义complex类进入主函数输入数据并调用成员函数输出结果(2)源程序:#include <iostream>using namespace std;template <class numtype,int n>class tmplt public: void dataIn() /从键盘输入n个T类型数据放入arr数组中 for(int i=0;i<n;i+)cin>>arri; void reverseOut() /将arr数组中的数据按输入的相反顺序输出for(int i=n-1;i>=0;i-)cout<<arri<<' 'cout<<endl; private:numtype arrn; / n个T类型的数据存放于数组arr之中;int main()tmplt<int,10>tmp1;cout<<"please enter 10 int numbers:"<<endl;tmp1.dataIn();cout<<"the opposite order of the 10 numbers is:"<<endl;tmp1.reverseOut();tmplt<float,10>tmp2;cout<<"please enter 10 float numbers:"<<endl;tmp2.dataIn();cout<<"the opposite order of the 10 numbers is:"<<endl;tmp2.reverseOut();tmplt<char,10>tmp3;cout<<"please enter 10 char numbers:"<<endl;tmp3.dataIn();cout<<"the opposite order of the 10 numbers is:"<<endl;tmp3.reverseOut();return 0;5用户使用说明:Step1:打开程序;Step2:输入测试数据;Step3:得出结果6测试分析:输入数据:0 1 2 3 4 5 6 7 8 91.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 1.0a b c d e f g h i j分析:测试试验后得到了预期的结果,说明程序的正确性。7.设计体会:通过熟悉了对类模板的使用,进一步熟练了如何通过类模板的实例化来定义对象以及对类成员函数的调用等。第三阶段 可视化编程可视化实现面向过程中的第五题:1.题目:编程序,使 用户任意输入一个年份以及该年的1月1日是星期几,而后任意指定某一天(再输入该年的任意一个月份日期),由程序计算出这一天是星期几。注意,2月份闰年为29天,非闰年为28天;可被4整除而不可被100整除的年份、或者可被400整除的年份均为闰年。 2.需求分析:设计一个程序,实现一个年份以及该年的1月1日是星期几,然后再输入该年的任意一个月份日期由程序计算出这一天是星期几。根据题目要求,规定如下:测试数据:输入数据:2011 星期六 2011/1/4输出数据:您要查询的日期是星期二输入数据:2011 星期六 2011/1/15输出数据:您要查询的日期是星期六3.设计概要:(1) 设计如下对话框:(2) 给相应编辑框分别关联变量为year1,string,year,month,day,str;(3) 给“查询”按钮添加函数OnSearch();(4) 在SEARDlg.cpp源文件中的void CSEARDlg:OnSearch()添加代码。4.详细设计与编码:(1)根据概要设计中描述的进行设计:在上图中一次添加编辑框和按钮并关联变量,完成后如下:在void CSEARDlg:OnSearch()中添加如下代码:int a13=0,31,28,31,30,31,30,31,31,30,31,30,31; int i,s=7,n; UpdateData(TRUE);if(string="星期一")n=1;if(string="星期二")n=2;if(string="星期三")n=3;if(string="星期四")n=4;if(string="星期五")n=5;if(string="星期六")n=6;if(string="星期日")n=7;if (year%4=0&&year%100!=0)|year%400=0)a2=29; for(i=1;i<month;i+) s+=ai; s+=day; s%=7; s+=n; s%=7;if(s=0|s=1)s+=6;else s=s-1; switch(s) case 1: str="您要查询的日期是星期一"UpdateData(FALSE); break;case 2: str="您要查询的日期是星期二" UpdateData(FALSE);break;case 3: str="您要查询的日期是星期三" UpdateData(FALSE);break;case 4: str="您要查询的日期是星期四" UpdateData(FALSE);break;case 5: str="您要查询的日期是星期五" UpdateData(FALSE);break;case 6: str="您要查询的日期是星期六"UpdateData(FALSE); break;case 7: str="您要查询的日期是星期日" UpdateData(FALSE);break;default:str="errorn"UpdateData(FALSE);break;完成后如下图:(2) 源程序:/ SEARDlg.cpp : implementation file/#include "stdafx.h"#include "SEAR.h"#include "SEARDlg.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CAboutDlg dialog used for App Aboutclass CAboutDlg : public CDialogpublic:CAboutDlg();/ Dialog Data/AFX_DATA(CAboutDlg)enum IDD = IDD_ABOUTBOX ;/AFX_DATA/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CAboutDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV support/AFX_VIRTUAL/ Implementationprotected:/AFX_MSG(CAboutDlg)/AFX_MSGDECLARE_MESSAGE_MAP();CAboutDlg:CAboutDlg() : CDialog(CAboutDlg:IDD)/AFX_DATA_INIT(CAboutDlg)/AFX_DATA_INITvoid CAboutDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CAboutDlg)/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CAboutDlg, CDialog)/AFX_MSG_MAP(CAboutDlg)/ No message handlers/AFX_MSG_MAPEND_MESSAGE_MAP()/ CSEARDlg dialogCSEARDlg:CSEARDlg(CWnd* pParent /*=NULL*/): CDialog(CSEARDlg:IDD, pParent)/AFX_DATA_INIT(CSEARDlg)year1 = 0;year = 0;month = 0;day = 0;str = _T("");string = _T("");/AFX_DATA_INIT/ Note that LoadIcon does not require a subsequent DestroyIcon in Win32m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);void CSEARDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CSEARDlg)DDX_Text(pDX, IDC_YEAR1, year1);DDX_Text(pDX, IDC_YEAR, year);DDX_Text(pDX, IDC_MONTH, month);DDV_MinMaxInt(pDX, month, 1, 12);DDX_Text(pDX, IDC_DAY, day);DDV_MinMaxInt(pDX, day, 1, 31);DDX_Text(pDX, IDC_RESULT, str);DDX_CBString(pDX, IDC_COMBO1, string);/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CSEARDlg, CDialog)/AFX_MSG_MAP(CSEARDlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_SEARCH, OnSearch)/AFX_MSG_MAPEND_MESSAGE_MAP()/ CSEARDlg message handlersBOOL CSEARDlg:OnInitDialog()CDialog:OnInitDialog();/ Add "About." menu item to system menu./ IDM_ABOUTBOX must be in the system command range.ASSERT(IDM_ABOUTBOX & 0xFFF0) = IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL)CString strAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if (!strAboutMenu.IsEmpty()pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);/ Set the icon for this dialog. The framework does this automatically/ when the application's main window is not a dialogSetIcon(m_hIcon, TRUE);/ Set big iconSetIcon(m_hIcon, FALSE);/ Set small icon/ TODO: Add extra initialization herereturn TRUE; / return TRUE unless you set the focus to a controlvoid CSEARDlg:OnSysCommand(UINT nID, LPARAM lParam)if (nID & 0xFFF0) = IDM_ABOUTBOX)CAboutDlg dlgAbout;dlgAbout.DoModal();elseCDialog:OnSysCommand(nID, lParam);/ If you add a minimize button to your dialog, you will need the code below/ to draw the icon. For MFC applications using the document/view model,/ this is automatically done for you by the framework.void CSEARDlg:OnPaint() if (IsIconic()CPaintDC dc(this); / device context for paintingSendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);/ Center icon in client rectangleint cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;/ Draw the icondc.DrawIcon(x, y, m_hIcon);elseCDialog:OnPaint();/ The system calls this to obtain the cursor to display while the user drags/ the minimized window.HCURSOR CSEARDlg:OnQueryDragIcon()return (HCURSOR) m_hIcon;void CSEARDlg:OnSearch() / TODO: Add your control notification handler code here int a13=0,31,28,31,30,31,30,31,31,30,31,30,31; int i,s=7,n; UpdateData(TRUE);if(string="星期一")n=1;if(string="星期二")n=2;if(string="星期三")n=3;if(string="星期四")n=4;if(string="星期五")n=5;if(string="星期六")n=6;if(string="星期日")n=7;if (year%4=0&&year%100!=0)|year%400=0)a2=29; for(i=1;i<month;i+) s+=ai; s+=day; s%=7; s+=n; s%=7;if(s=0|s=1)s+=6;else s=s-1; switch(s) case 1: str="您要查询的日期是星期一"UpdateData(FALSE); break;case 2: str="您要查询的日期是星期二" UpdateData(FALSE);break;case 3: str="您要查询的日期是星期三" UpdateData(FALSE);break;case 4: str="您要查询的日期是星期四" UpdateData(FALSE);break;case 5: str="您要查询的日期是星期五" UpdateData(FALSE);break;case 6: str="您要查询的日期是星期六"UpdateData(FALSE); break;case 7: str="您要查询的日期是星期日" UpdateData(FALSE);break;default:str="errorn"UpdateData(FALSE);break;5用户使用说明:Step1:打开程序;Step2:输入要查询的日期;Step3:得出结果6测试分析:输入数据:输出数据:输入数据:输出数据:分析:经过多次输入数据进行测试后得到了预期的结果,说明程序了程序是正确的。7.设计体会:此次实验设计步骤较多,设计过程中出想的问题也较多,实验中通过了多次的修改与调试后才得到了最终的预期结果。通过这次实验,收获很多,积累了经验;初步了解并学会了MFC的基础编程。第四阶段 数据结构第一题:1.题目:用链表和数组两种方式分别实现栈的出栈、入栈、取栈顶元素、判空、查找等操作。2.需求分析:用链表和数组两种方式来实现栈的一系列操作,包括栈的出栈、入栈、取栈顶元素、判空、查找等操作。定义栈中数据为整型,程序中所用到的数据全为整型。打开程序后用户可根据提示选择不同的操作包括以上提到的所有操作!测试数据:(1)链表实现:请输入您要建立的栈的大小:5请选择操作: 1,进栈 2,出栈 3,查看栈顶值 4,清空栈 5,退出1请输入进栈值:1 2 3 4 5插入元素成功!请选择操作: 1,进栈 2,出栈 3,查看栈顶值 4,清空栈 5,退出25出栈请选择操作: 1,进栈 2,出栈 3,查看栈顶值 4,清空栈 5,退出3栈顶值为:4请选择操作: 1,进栈 2,出栈 3,查看栈顶值 4,清空栈 5,退出4清空完毕!(2)数组实现:请输入您要建立的栈的大小:5请选择操作: 1,进栈 2,出栈 3,查看栈顶值 4,清空栈 5,退出1请输入进栈值:0 1 2 3 4插入元素成功!请选择操作: 1,进栈 2,出栈 3,查看栈顶值 4,清空栈 5,退出2删除成功!4出栈请选择操作: 1,进栈 2,出栈 3,查看栈顶值 4,清空栈 5,退出3栈顶值为:3取值结束!请选择操作: 1,进栈 2,出栈 3,查看栈顶值 4,清空栈 5,退出4清空完毕!3.设计概要: (1)链表实现:建一个结构体Stack来表示栈,它包括栈顶指针top和栈大小length,top是Slink类型的指针,Slink是指向LNode结构类型指针,包括一个数据域dada和一个指针域next; 数组实现:建一个结构体Stack来表示栈,包括base基址指针,top栈顶指针和存储空间大小stacksize三部

    注意事项

    本文(《软件课程设计》实验报告.doc)为本站会员(文库蛋蛋多)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开