2023-2024-1 20231407陈原 《计算机基础与程序设计》第八周学习总结

这个作业属于哪里 计算机基础与程序设计
作业要求是什么 https://www.cnblogs.com/rocedu/p/9577842.html#WEEK08
作业目的是什么
  • 功能设计与面向对象设计
  • 面向对象设计过程
  • 面向对象语言三要素
  • 汇编、编译、解释、执行
作业正文   https://www.cnblogs.com/CCCY12345/p/17842851.html
功能设计:

 

  1. 需求分析: 在进行功能设计之前,首先要对用户需求进行深入的分析。这包括了与用户的沟通、需求文档的研读等。了解用户的期望和系统需要解决的问题是功能设计的基础。

  2. 功能分解: 将整个系统划分为若干个功能模块或子系统。这有助于对系统进行更好的组织和管理。每个功能模块应该有清晰的职责和功能。

  3. 功能规格定义: 对每个功能模块进行详细的规格定义,明确输入、输出、处理逻辑、数据存储等方面的要求。这有助于确保每个功能模块的实现符合预期。

  4. 功能优先级: 根据用户需求和业务优先级,确定各个功能的优先级。这有助于在开发过程中有选择地实现功能,确保首要的功能先得到满足。

  5. 用户界面设计: 如果涉及到用户交互,需要设计用户界面。用户界面设计要考虑到用户的使用习惯、易用性和美观性。通常,原型设计可以用于展示系统的外观和用户交互流程。

  6. 功能间的关系: 确定各功能模块之间的依赖关系和交互方式,确保系统整体能够协同工作。

  7. 错误处理和异常情况: 设计系统对可能发生的错误和异常的处理机制。这包括用户输入错误、系统故障等情况的处理。

  8. 性能要求: 确定系统的性能需求,包括响应时间、并发处理能力等。这有助于在设计阶段考虑系统的可扩展性和性能优化。

  9. 安全性设计: 考虑系统的安全性,包括用户身份验证、数据加密、访问控制等方面的设计。

  10. 测试计划: 制定测试计划,确保每个功能都能在开发完成后得到充分的测试,以验证其正确性和稳定性。

面向对象设计:

  1. 对象: 在面向对象设计中,系统被看作是一组相互协作的对象的集合。对象是具有状态、行为和标识的实体。每个对象都是一个类的实例。

  2. 类: 类是对象的抽象,它定义了一组具有相似属性和行为的对象。类是创建对象的模板,它包含了对象的属性(成员变量)和方法(成员函数)。

  3. 封装: 封装是将对象的内部状态和行为隐藏起来,只暴露必要的接口供外部使用。这有助于提高系统的安全性和模块化程度。

  4. 继承: 继承是一种通过重用现有类的属性和行为来创建新类的机制。子类继承父类的特性,并可以在此基础上进行修改或扩展。继承提高了代码的重用性和可维护性。

  5. 多态: 多态允许不同类的对象对相同的消息做出响应,即同一操作作用于不同的对象上会产生不同的行为。多态提高了系统的灵活性和可扩展性。

  6. 抽象: 抽象是指从一组对象中抽取出共同的特征,形成类或接口。抽象是面向对象设计中对问题域的建模过程,有助于简化系统的复杂性。

  7. 关联和聚合: 对象之间的关系可以通过关联和聚合来表示。关联表示对象之间的联系,聚合表示一种“整体-部分”的关系,其中一个对象包含另一个对象。

  8. 设计原则: 面向对象设计遵循一些设计原则,例如单一职责原则(一个类应该只有一个原因引起变化)、开放封闭原则(对扩展开放,对修改关闭)等,以提高设计的质量和可维护性。

  9. 设计模式: 设计模式是解决特定类型问题的通用设计方案。在面向对象设计中,设计模式可以用来解决常见的设计问题,提供经过验证的解决方案。

  10. UML(Unified Modeling Language): UML是一种用于可视化、规范化和说明面向对象设计的标准语言。它提供了类图、时序图、活动图等不同类型的图表,用于描述系统的结构和行为。

实验四代码:

#include <stdio.h>

#include <stdlib.h>

float total(int n,float b[]);

float average(int n,float b[]);

void sortbyscore(int n,int a[],float b[]);

void sortbynumber(int n,int a[],float b[]);

float search(int n,int a[],float b[]);

void analysis(int n,float b[]);

void list(int n,int a[],float b[]);

 

int main()

{

    int p;

    printf("(1)Append record\n(2)Calculate total and average score of course\n");

    printf("(3)Sort in descending order by score\n(4)Sort in ascending order by number\n");

    printf("(5)Search by number\n(6)Statistic analysis\n");

    printf("(7)List record\n(8)Exit\n");

    printf("请输入指令:");

    scanf("%d",&p);

    if (p==1)

    {

        int n;

        int x;

        float y;

        printf("共有多少学生:");

        scanf("%d",&n);

        int a[n];

        float b[n];

        int i;

        for (i=0; i<=n-1; i++)

        {

            printf("请输入学号和分数:");

            scanf("%d%f",&x,&y);

            a[i]=x;

            b[i]=y;

        }

        for (i=0; ; i++)

        {

            printf("请输入指令:");

            scanf("%d",&p);

            if (p==2)

            {

                printf("总分为:%.2f\n",total(n,b));

                printf("平均分为:%.2f\n",average(n,b));

            }

            else if (p==3)

            {

                sortbyscore(n,a,b);

            }

            else if (p==4)

            {

                sortbynumber(n,a,b);

            }

            else if (p==5)

            {

                printf("分数为:%.2f\n",search(n,a,b));

            }

            else if (p==6)

            {

                analysis(n,b);

            }

            else if (p==7)

            {

                list(n,a,b);

            }

            else

            {

                break;

            }

        }

    }

    else

    {

        printf("没有数据!");

    }

}

 

float total(int n,float b[])

{

    if(n==1)

    {

        return b[0];

    }

    else

    {

        return total(n-1,b)+b[n-1];

    }

}

 

float average(int n,float b[])

{

    return total(n,b)/n;

}

 

void sortbyscore(int n,int a[],float b[])

{

    int i,j,o,p;

    for(i=0; i<=n-1; i++)

    {

        for(j=i+1; j<=n-1; j++)

        {

            if(b[j]>b[i])

            {

                o=a[i];

                a[i]=a[j];

                a[j]=o;

                p=b[i];

                b[i]=b[j];

                b[j]=p;

            }

        }

    }

}

 

void sortbynumber(int n,int a[],float b[])

{

    int i,j,o,p;

    for(i=0; i<=n-1; i++)

    {

        for(j=i+1; j<=n-1; j++)

        {

            if(a[j]<a[i])

            {

                o=a[i];

                a[i]=a[j];

                a[j]=o;

                p=b[i];

                b[i]=b[j];

                b[j]=p;

            }

        }

    }

 

}

 

float search(int n,int a[],float b[])

{

    int i,m;

    printf("请输入学号:");

    scanf("%d",&m);

    for (i=0; i<=n-1; i++)

    {

        if (a[i]==m)

        {

            return b[i];

        }

    }

}

 

void analysis(int n,float b[])

{

    int i;

    float q=0,w=0,e=0,r=0,t=0;

    for (i=0; i<=n-1; i++)

    {

        if (b[i]>=90)

        {

            q++;

        }

        else if (b[i]>=80)

        {

            w++;

        }

        else if (b[i]>=70)

        {

            e++;

        }

        else if (b[i]>=60)

        {

            r++;

        }

        else

        {

            t++;

        }

    }

    printf("优秀率=%.2f\n",q/n);

    printf("良好率=%.2f\n",w/n);

    printf("中等率=%.2f\n",e/n);

    printf("及格率=%.2f\n",r/n);

    printf("不及格率=%.2f\n",t/n);

}

 

void list(int n,int a[],float b[])

{

    int i;

    for (i=0; i<=n-1; i++)

    {

        printf("%d\t%.2f\n",a[i],b[i]);

    }

}

 

posted @ 2023-11-19 22:27  CCCY12345  阅读(16)  评论(0编辑  收藏  举报