精华内容
下载资源
问答
  • 软件工程导论实验报告格式要求非常严格,必须严格按照要求才可以
  • 软件工程导论实验报告

    千次阅读 2013-06-18 22:01:07
    学 院 __新媒体学院___ 专 业 __网络工程___ 班 级 ____ 1班 _______ 学 号 120708132 姓 名 虞邦瑞 _ 同组同学王立华  指导教师__徐强______        1.题目:简单计算器(逆波兰) 2....

     

    学    院 __新媒体学院___     专    业 __网络工程___

    班    级 ____  1班 _______  学    号  120708132            姓    名  虞邦瑞        _  同组同学王立华          指导教师__徐强______      

     

     


     

    1.题目:简单计算器(逆波兰)

    2.设计任务、要求

    制作一个软件,采用逆波兰原理进行计算。

    具体功能要求如下:

        1.输入初始计算表达式

    ···2.根据初始计算表达式输出逆波兰表达式;

    ···3.根据逆波兰表达式计算其值并输出;

     

     

     

    3.软件环境及工具

    系统开发环境的选择对于系统的建立来说至关重要,它将决定着系统开发工作量的大小,系统的性能特点以及系统今后维护工作的难易等。因此在开发系统之前,需要根据对系统所采用的技术、实现功能的评估,进行选择开发环境

     

    3.1系统开发平台

    系统开硬件环境:一般微机CPU: 奔III以上即可;内存:256M;硬盘:40G。

    软件环境:操作系统Windows XP/2000 Professional;。

    Web服务器:Apache TomCat 5.5, TomCat提供HTTP协议的服务。

    3.2 开发工具

    Vc2010版本.c#

     

    4.系统的规划

     

    4.1系统功能设计

    逆波兰计算器,主要是方便师生进行对逆波兰的理解及迅速得知普通式子的逆波兰表达式及值。

    打开界面,进入计算器界面,

    相应步骤:

     

     

    1)在第一个文本框内点击按钮输入原始表达式

     

     

     

    点击“计算”,输出逆波兰及计算值。

    2) 

    4.2功能模块图

     

    5 详细设计

    51

    设计窗口,从工具箱中拖出控件,编辑以下form

    52

           对各个按钮输入进行功能设置----整体

    public partial class Form1 : Form

        {

            publicForm1()

            {

                InitializeComponent();

            }

     

            privatevoid Form1_Load(objectsender, EventArgs e)

            {

                textBox1.Text = null;

            }

     

            privatevoid one_button_Click(objectsender, EventArgs e)

            {

                textBox1.Text += '1';

            }

     

            privatevoid two_button_Click(objectsender, EventArgs e)

            {

                textBox1.Text += '2';

            }

     

            privatevoid three_button_Click(object sender, EventArgs e)

            {

                textBox1.Text += '3';

            }

     

            private voidfour_button_Click(object sender, EventArgs e)

            {

                textBox1.Text += '4';

            }

     

            privatevoid five_button_Click(objectsender, EventArgs e)

            {

                textBox1.Text += '5';

            }

     

            privatevoid six_button_Click(objectsender, EventArgs e)

            {

                textBox1.Text += '6';

            }

     

            privatevoid sevevn_button_Click(object sender, EventArgse)

            {

                textBox1.Text += '7';

            }

     

            privatevoid eight_button_Click(object sender, EventArgs e)

            {

                textBox1.Text += '8';

            }

     

            privatevoid nine_button_Click(objectsender, EventArgs e)

            {

                textBox1.Text += '9';

            }

     

            privatevoid zero_button_Click(objectsender, EventArgs e)

            {

                textBox1.Text += '0';

            }

     

            privatevoid left_button_Click(objectsender, EventArgs e)

            {

                textBox1.Text += '(';

            }

     

            privatevoid right_button_Click(object sender, EventArgs e)

            {

                textBox1.Text += ')';

            }

     

            privatevoid jia_Click(objectsender, EventArgs e)

            {

                textBox1.Text += '+';

            }

     

            privatevoid jian_Click(objectsender, EventArgs e)

            {

                textBox1.Text += '-';

            }

     

            privatevoid chen_Click(objectsender, EventArgs e)

            {

                textBox1.Text += '*';

            }

     

            privatevoid chu_Click(objectsender, EventArgs e)

            {

                textBox1.Text += '/';

            }

            privatevoid button1_Click(objectsender, EventArgs e)

            {

                textBox1.Text += '#';

            }

            privatevoid clear_Click(objectsender, EventArgs e)

            {

                textBox1.Text = null;

                textBox2.Text = null;

                textBox3.Text = null;

            }

            privatevoid back_Click(objectsender, EventArgs e)

            {

               textBox1.Text=textBox1.Text.Substring(0,textBox1.TextLength-1);

            }

     

            public static int i = 0, t =0;

            public static string[] ex = new string[100];         //逆波兰存放数组¦

     

            privatevoid result_Click(objectsender, EventArgs e)

            {

                string[]str = new string[100];                 //str最初数组¦

     

                for(i = 0; i < textBox1.Text.Length ; i++)

                {

                    str[i] =textBox1.Text.Substring(i, 1);

                }

                decider=new decide();

                ex = r.method2(str,ex);             //调用求逆波兰的方法

     

                textBox2.Text = null;               //输出逆波兰

                {

                    foreach (string q in ex)           

                    textBox2.Text += q;

                    textBox2.Text += ' ';

                }

          

     

                methodp=new method();              //调用计算方法

                textBox3.Text = Convert.ToString(p.method1(ex));

            }//???¡§¤?¨ª¦Ì

        }

     

    5.3

                  调用的具体转化为逆波兰的方法

    class decide

        {

            public string[] method2(string[]str, string[] ex)

            {

                char[]s1 = new char[100];           //充当临时栈存放非数字字符¤?

                int i,j = 0,t=0;

                charch;

                ch = Convert.ToChar(str[i = 0]);         //ch赋初值¦Ì

                while(ch != '#')                     //-环判断至#结束º?

                {

     

     

     

                    switch(ch)

                    {

                        case'(':

                            s1[j] = ch;

                            break;

                        case')':

     

                            while (s1[j] != '(')

                            {

                                ex[t] = Convert.ToString(s1[j]);

                                t++; j--;

                            }

                            j--;

                            break;

                        case'*':

                        case'/':

                            j++;

                            s1[j] = ch;

                            break;

                        case'+':

                        case'-':

                            if (s1[j] == '+' || s1[j] == '-' || s1[j] == '*'|| s1[j] == '/')

                            {

                                ex[t] = Convert.ToString(s1[j]); t++;

                                s1[j] = ch;

                            }

                            else

                            {

                                j++;

                                s1[j] = ch;

                            }

                            break;

     

                        default:

                            if (ch >= '0' && ch<= '9')

                            {

                                if (i > 0 && Convert.ToChar(str[i- 1]) >= '0' && Convert.ToChar(str[i - 1]) <= '9')

                                {

                                    t--;

                                    ex[t] = Convert.ToString(Convert.ToInt32(ex[t])* 10 + Convert.ToInt32(str[i]));

                                    t++;

                                }

                                else

                                {

                                    ex[t] = Convert.ToString(ch);

                                    t++;

                                }

                            }

                            break;

                    }

     

     

     

                    i++;

                    ch = Convert.ToChar(str[i]);

                }

     

                while(j >= 0)                    //䨮¢¨´º¡À?D¨¢¨??º¡ê?Ì?Á?¤?

                {

                    ex[t] = Convert.ToString(s1[j]);

                    t++;

                    j--;

                }

                returnex;

            }//¤?¤¡§êoÁa¡¥a?¡§¤?

        }

    5.4

                  用到的+、—、*/方法

    class usemethod

        {

            public double addm(double a,double b)

            {

                returna + b;

            }//方法加减乘除

            public double minus(doublea, double b)

            {

                returna - b;

            }

            public double ride(double a,double b)

            {

                returna * b;

            }

            public double eliminate(doublea, double b)

            {

                returna / b;

            }

    }

    5.5)

    判断并处理运算符

    class fourmth

        {

            usemethoduse=new usemethod();

            public double panduan(charch, double a, doubleb)

            {

                if(ch == '+')                                            

                {

                    returnuse.addm(a,b);

                }

                elseif (ch == '-')

                {

                    returnuse.minus(a,b);

                }

                elseif (ch == '*')

                {

                    returnuse.ride(a,b);

                }

                elseif (ch == '/')

                {

                    if(b == 0)

                    {

                        MessageBox.Show("错误:分母为0"); 

                    }

                    returnuse.eliminate(a,b);

                }

                elsereturn -1;

            }

        }

     

    5.6)

    方法:计算逆波兰值

      class method

        {

            public double method1(string[]ex)

            {

                double[]a = new double[100];

                inti,k = 0;

                charch;

                fourmthme=new fourmth();

     

                for(i = 0; i < ex.Length;i++)

                {

     

                    if(ex[i] ==null) break;

                    if(ex[i].Length > 1 || Convert.ToChar(ex[i])>= '0' && Convert.ToChar(ex[i]) <= '9')//D?ºyÁ?Á?¤?ä?

                    {

                        k++;

                        a[k] = Convert.ToInt32(ex[i]);

                    }

                    else

                    {

                        ch = Convert.ToChar(ex[i]);

                        k--;

                        a[k]=me.panduan(ch, a[k], a[k +1]);      //̡®?panduan¤?¤¡§

                    }                     

                }

                returna[1];  //¤¦Ì?¦Ì          

            }

        }

      

    6、测试分析

      6.1)  测试结果及运行结果

      6.2    系统bugs声明

    设计时未考虑输入为小数的状态。

    7、参考文献

    C#.NET 3.0第一步:适用VisualStudio 2005Visual Studio 2008 / 周礼著

    8、附录全部文件

           已分享至群共享。

    9 课程设计心得与总结

    课程设计是培养学生综合运用所学知识、发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。随着科学技术的发展,当今计算机存活在世界的每一个角落。因此,作为二十一世纪的大学生来说,掌握计算机开发技术是非常正要的。

    理论到实践,可以学到很多很多的东西,同时不仅可以巩固以前所学过的知识,还学到了许多书本上没有的知识。通过这次课程设计,我懂得了理论与实践相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识和实践相结合起来,从理论中得出结论,才能真正的提高自己的实际动手能力和独立思考的能力。在编程过程中,可谓是苦难重重,看着零错误,却无法运行的痛苦。看着快成功时,却又冒出了新的问题的焦虑,用组员的话说‘头发都快掉光,寿命即将减少!’但是,看着一步步接近目的的喜悦感,促使着我们继续前进。通过参考文献,百度和在老师同学们的帮助下,完成了此次的任务。组员之间相互配合,共同合作,讨论,体会到合作的意义与快乐。‘你不是一个人在战斗!’这也不仅仅只是去完成一个任务,而是团队的合作。

    在这次任务里,查缺补漏,基础的不扎实是导致一大部分问题的原因所在。

    总体而言:享受于过程,满意于结果。

     

    展开全文
  • 软件工程导论上机实验报告,详细的写了各个步骤。
  • 软件工程导论-实验报告-软件测试 【问题描述】 一元二次方程式 ax2+bx+c=0的求根程序有以下功能: 1)输入A、B、C三个系数; 2)根据根的性质的:两个相等或不相等的实根,或无实根,输出相应的结果。 提示: 时,...

    软件工程导论-实验报告-软件测试

    【问题描述】
    一元二次方程式 ax2+bx+c=0的求根程序有以下功能:
    1)输入A、B、C三个系数;
    2)根据根的性质的:两个相等或不相等的实根,或无实根,输出相应的结果。
    提示: 时,方程ax2+bx+c=0的解
    方程ax2+bx+c=0的解
    【实验要求】
    1) 绘制程序流图
    2) 用c或java实现功能(文件名Triangle.c或Triangle.java)
    3) 根据边界值分析法,等价类划分法设计测试用例。
    4)根据程序流图绘制控制流图,并对问题用白盒测试法(语句覆盖、判定覆盖、条件覆盖、条件组合覆盖)设计测试用例;利用设计好的程序和测试用例,在相应的编程环境中进行测试,给出测试的结果(结果以截图方式表示即可)。

    • 绘制流程图
      实验图
    • 程序实现
    import java.util.Scanner;
    
    public class Triangle {
        public static void main(String[] args) {
            double a;
            System.out.println("输入a的值:");
            Scanner input = new Scanner(System.in);
            a=input.nextDouble();
            if (a == 0){
                System.out.println("输入的不是一元二次次方程");
                System.exit(1);
            }
            System.out.println("输入b的值:");
            Scanner input1 = new Scanner(System.in);
            double b=input1.nextDouble();
            System.out.println("输入c的值:");
            Scanner input2 = new Scanner(System.in);
            double c=input2.nextDouble();
            double d=b*b-4*a*c;		//根据b^2-4ac判断方程可解性
            if(d<0)
                System.out.println("方程无解");
            else if(d==0)
                System.out.println("方程有一个解:"+ -b/(2*a));
            else
                System.out.println("方程有两个解:"+ (-b+Math.sqrt(d))/(2*a) +"和"+ (-b-Math.sqrt(d))/(2*a));//Math.sqrt()用来开平方
        }
    
    }
    

    -根据边界值分析法,等价类划分法设计测试用例
    等价类划分:

    序号 有效等价类
    1 abc都是有理数
    2 b^2-4ac>0
    3 b^2-4ac=0
    4 a>0
    序号 无效等价类
    5 abc均为无理数
    6 b^2-4ac<0
    7 a=0

    测试用例

    • 根据程序流图绘制控制流图,并对问题用白盒测试法(语句覆盖、判定覆盖、条件覆盖、条件组合覆盖)设计测试用例;利用设计好的程序和测试用例,在相应的编程环境中进行测试,给出测试的结果(结果以截图方式表示即可)。
      控制流图
      测试用例1
      测试用例2
      测试运行不表了,都是比较简单的。
    展开全文
  • 实验一:熟悉UML和Rose开发环境日志 实验二:图书馆系统的需求分析日志 实验三:细化(1)日志 实验四:细化(2)日志 1. 实现一个简单的图书管系统的需求分析。 2. 画出图书管理系统对应的用例图和活动图
  • 软件工程导论——实验报告

    千次阅读 2013-04-28 16:40:58
    实验题目 ...任务一:自行选择一个软件项目; 项目名称: 个人信息管理系统 背景说明: 个人信息管理系统是使用计算机实现学生大量信息处理的电子档案管理系统,在本系统中主要满足学生、教师、

    实验题目

    系统需求分析

    实验目的

    1.      掌握UML中的业务过程模型、用例模型。

    2.      熟悉一种UML建模工具。

    实验要求

     学会UML业务过程模型、用例模型建模方法

    实验任务

    任务一:自行选择一个软件项目;

    项目名称:

    个人信息管理系统

    背景说明:

    个人信息管理系统是使用计算机实现学生大量信息处理的电子档案管理系统,在本系统中主要满足学生、教师、系统管理员三方面的需求。

    需求概述
    1. 
    录入学生信息:管理员先创建学生的学号,由学生输入自己的学号和姓名,对自己的一些基本信息进行录入或修改最后进行保存。系统管理员教师录入学生的基本信息。

    2. 学生信息查看:根据读入的学生学号和姓名,输出早先录入的学生基本信息。通过输入要查找的学生信息,实现数据的筛选。

    3. 系统管理:系统管理分为三部分:学生的功能和系统管理员教师执行的用户管理、修改核心数据。

    任务二:利用UML业务过程模型对软件的应用流程建模

    1.      业务流程说明:


    任务三:利用UML用例模型对软件的需求进行分析,并对应用场景建模;

    需求分析

    个人信息管理系统是使用计算机实现学生个人信息处理的电子档案管理系统,在本系统中主要满足学生系统管理员教师两方面的需求。对学生来说主要是查询学生信息、修改个人信息、保存个人信息等;系统管理员教师主要负责系统的维护工作,涉及到学生个人信息管理、系统状态维护和查询修改录入学生相关信息等

    用例模型的建立用例图(用场景建模)


                                                                                                                              —— 12网工    王立华

    展开全文
  • 软件工程导论 实验

    千次阅读 2013-11-25 23:23:56
    系统掌握软件开发过程中需求分析报告的写法。 三、实验主要内容 将整个需求分析过程分为业务分析、用户需求分析和系统需求分析,确定每个模块功能所需要的算法和数据结构,并设计出程序的详细规格说明,可画出详细...

    一、实验名称

    通讯录管理系统需求分析

    二、实验目的

    完成通讯录管理系统需求分析,建立需求模型计;

    系统掌握软件开发过程中需求分析报告的写法。

    三、实验主要内容

    将整个需求分析过程分为业务分析、用户需求分析和系统需求分析,确定每个模块功能所需要的算法和数据结构,并设计出程序的详细规格说明,可画出详细的程序流程图,为编码做准备,写出详细设计报告。

    四、实验原理

    详细设计也称过程设计,是程序设计的蓝图。该设计是在数据设计、体系结构设计和接口设计完成之后进行的。过程设计的目标不仅仅是逻辑上正确地实现每个模块的功能,更重要的是设计出的处理过程尽可能的简明易懂。结构化程序设计是实现上述目标的关键技术,因此是过程设计的逻辑基础。过程设计的结果基本上决定了最终程序设计的质量。

    将程序体系结构元素变换为对软件构件的过程描述。该实验主要是利用过程设计工具进行程序设计。

    五、实验结果

    通讯录管理系统需求分析报告

    第一章 通讯录管理系统简介

    通讯录管理系统是一个将用户的联系人的具体信息集中管理的个人通讯录管理系统。通过采用相关技术,将系统设计的功能实现,功能包括:用户的登录, 添加联系人信息,修改联系人信息,删除联系人信息,查询联系人信息,可以浏览全部通讯的联系人,并且可以根据数据表的各字段来查询你所要找的联系人等功能。

    第二章 通讯录管理系统业务用例建模

    2.1 业务流程分析

    2.1.1用户使用主要流程分析

    1.用户登录后,进入操作界面,对联系人信息进行操作。

    2.用户进行浏览联系人信息、修改联系人信息、添加联系人、查找联系人等操作。

    3.用户操作完成后,退出。


    2.1.1游客使用流程分析

    游客登录通讯录管理系统只有浏览、查询联系人的权限,无法添加、修改联系人。


    2.2业务需求用例建模阶段

    2.2.1业务角色的查找及建立

    根据此通讯录管理系统的分析知,涉及的业务角色有:用户和游客。

    2.2.2业务用例查找与分析

    根据业务流程可以找到基本的业务用例有很多,简要列举如下:

    1 用户浏览联系人信息

    登陆后,在菜单界面选择浏览选项,界面显示全部联系人信息。

    2 用户添加联系人

    登陆后,在菜单界面选择添加选项,录入姓名、电话、地址、邮箱等信息。

    3 用户查找联系人

    登陆后,在菜单界面选择查找选项,输入联系人姓名,界面出现该联系人信息。

    4 用户修改联系人信息

    登陆后,在菜单界面选择修改选项,进入修改界面,修改相关联系人信息。

    5游客浏览联系人信息

    登陆后,在菜单界面选择浏览选项,界面显示全部联系人信息。

    6 游客查找联系人

    登陆后,在菜单界面选择查找选项,输入联系人姓名,界面出现该联系人信息。

    2.2.3业务用例图


    2.2.4业务活动图


    第三章 通讯录管理系统需求用例建模

    3.1 需求用例分析:确定角色

    一个角色可以是人、硬件设备、甚至另外一个系统。对于一个系统而言,每种类型的用户表示为一个或几个角色,每个与该系统交互的外部系统也表示为一个或几个角色。通讯录管理系统中,我们通过分析,可以找出这样一些角色:用户、游客。

    3.2系统整体功能图:



    展开全文
  • 软件工程导论 实验任务一

    千次阅读 2013-11-23 15:21:25
    软件工程实验报告 一 一、实验名称 网上购书统需求分析 二、实验目的 完成电子商务环境下购书系统需求分析,建立需求模型计; 系统掌握软件开发过程中需求分析报告的写法。 三、实验主要内容 将整个需求分析...
  • 完整的试验指导书,可以更方便的供您完成试验报告的填写。
  • 每个学期的期中,学校教务处会分类向各个学院发出下各学期的教学计划,包括课程名称、课程代码、课时、班级类别(本科、专科、成人教育、研究生)、班号等;学院教学主管人员根据教学任务要求给出各门课程的相关限制...
  • 学 院 __新媒体学院___ 专 业 __网络工程___ 班 级 ____ 2 班_____ 学 号 120708216  姓 名 王立华 _ 同组同学 ____虞邦瑞  指导教师____徐 强_____        1.题目:简单计算器...
  • 软件工程导论实验报告第一部分、可行性分析。
  • 大数据导论实验报告

    千次阅读 2019-01-14 21:44:44
    实验名称 ... 软件工程 姓 名   学 号   班 级     实验目的:    了解Python的主要组成部分。学...
  • 实验名称Python的安装与应用专 业软件工程姓 名学 号班 级实验目的:了解Python的主要组成部分。学会安装Python SDK,学会在Eclipse平台中安装并使用Python的开发插件二、实验内容:安装Python sdk,了解IDLE的使用...
  • 软件工程实验报告

    2013-12-22 21:33:00
    模版 实验三 详细设计 ...软件工程导论 12广电2 120701240 吴联棒 2013.12.21 软件工程实验报告 三 一、实验名称 系统详细设计 二、实验目的 根据需求分析...
  • 软件工程实验报告

    2013-12-22 16:16:00
    模版 实验一 需求分析 ...软件工程导论 12广电2 120701240 吴联棒 2013.12.21 软件工程实验报告 一 一、实验名称 学生信息管理系统需求分析 二、实验目的 完成学生信息管...
  • 软件工程实验报告

    2013-12-22 21:33:00
    模版 实验二 概要设计 ...软件工程导论 12广电2 120701240 吴联棒 2013.12.21 软件工程实验报告 二 一、实验名称 学生信息管理系统概要设计 二、实验目的 完成学生信息管...
  • 软件工程导论

    千次阅读 2013-11-25 22:58:20
    系统掌握软件开发过程中需求分析报告的写法。 三、实验主要内容 将整个需求分析过程分为业务分析、用户需求分析和系统需求分析,确定每个模块功能所需要的算法和数据结构,并设计出程序的详细规格说明,可画出详细...
  • 2016级山东大学软件工程数据科学导论崔院长实验课,包含实验一,二,五,六,七,九
  • 软件工程导论实验报告 结构化设计方法
  • 软件工程试验报告

    2013-12-22 22:32:00
    课程 ...软件工程导论 12信管2班 120806207 任明远 2013.12.11 软件工程实验报告 二 一、实验名称 多美丽KTV点歌系统概要设计 二、实验目的 ...
  • 软件工程试验报告

    2013-12-22 21:36:00
    课程 班级 学 号 姓 名 实验时间 软件工程导论 12信管2班 120806207 任明远 2013.12.10 ...
  • 软件工程导论实验 CASE工具的使用报告
  • 软件工程导论 结构化分析方法实验 实验报告
  • 软件工程导论实验 面向对象的分析设计方法报告

空空如也

空空如也

1 2 3 4
收藏数 63
精华内容 25
关键字:

软件工程导论实验报告