2023-2024-1 20231407陈原 《计算机基础与程序设计》第八周学习总结
这个作业属于哪里 | 计算机基础与程序设计 |
作业要求是什么 | https://www.cnblogs.com/rocedu/p/9577842.html#WEEK08 |
作业目的是什么 |
|
作业正文 | https://www.cnblogs.com/CCCY12345/p/17842851.html |
-
需求分析: 在进行功能设计之前,首先要对用户需求进行深入的分析。这包括了与用户的沟通、需求文档的研读等。了解用户的期望和系统需要解决的问题是功能设计的基础。
-
功能分解: 将整个系统划分为若干个功能模块或子系统。这有助于对系统进行更好的组织和管理。每个功能模块应该有清晰的职责和功能。
-
功能规格定义: 对每个功能模块进行详细的规格定义,明确输入、输出、处理逻辑、数据存储等方面的要求。这有助于确保每个功能模块的实现符合预期。
-
功能优先级: 根据用户需求和业务优先级,确定各个功能的优先级。这有助于在开发过程中有选择地实现功能,确保首要的功能先得到满足。
-
用户界面设计: 如果涉及到用户交互,需要设计用户界面。用户界面设计要考虑到用户的使用习惯、易用性和美观性。通常,原型设计可以用于展示系统的外观和用户交互流程。
-
功能间的关系: 确定各功能模块之间的依赖关系和交互方式,确保系统整体能够协同工作。
-
错误处理和异常情况: 设计系统对可能发生的错误和异常的处理机制。这包括用户输入错误、系统故障等情况的处理。
-
性能要求: 确定系统的性能需求,包括响应时间、并发处理能力等。这有助于在设计阶段考虑系统的可扩展性和性能优化。
-
安全性设计: 考虑系统的安全性,包括用户身份验证、数据加密、访问控制等方面的设计。
-
测试计划: 制定测试计划,确保每个功能都能在开发完成后得到充分的测试,以验证其正确性和稳定性。
面向对象设计:
-
对象: 在面向对象设计中,系统被看作是一组相互协作的对象的集合。对象是具有状态、行为和标识的实体。每个对象都是一个类的实例。
-
类: 类是对象的抽象,它定义了一组具有相似属性和行为的对象。类是创建对象的模板,它包含了对象的属性(成员变量)和方法(成员函数)。
-
封装: 封装是将对象的内部状态和行为隐藏起来,只暴露必要的接口供外部使用。这有助于提高系统的安全性和模块化程度。
-
继承: 继承是一种通过重用现有类的属性和行为来创建新类的机制。子类继承父类的特性,并可以在此基础上进行修改或扩展。继承提高了代码的重用性和可维护性。
-
多态: 多态允许不同类的对象对相同的消息做出响应,即同一操作作用于不同的对象上会产生不同的行为。多态提高了系统的灵活性和可扩展性。
-
抽象: 抽象是指从一组对象中抽取出共同的特征,形成类或接口。抽象是面向对象设计中对问题域的建模过程,有助于简化系统的复杂性。
-
关联和聚合: 对象之间的关系可以通过关联和聚合来表示。关联表示对象之间的联系,聚合表示一种“整体-部分”的关系,其中一个对象包含另一个对象。
-
设计原则: 面向对象设计遵循一些设计原则,例如单一职责原则(一个类应该只有一个原因引起变化)、开放封闭原则(对扩展开放,对修改关闭)等,以提高设计的质量和可维护性。
-
设计模式: 设计模式是解决特定类型问题的通用设计方案。在面向对象设计中,设计模式可以用来解决常见的设计问题,提供经过验证的解决方案。
-
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]);
}
}