设计一个Windows应用程序,在该程序中定义一个学生类和班级类,以处理学生的学号,姓名,语文,数学和英语3门课程的期末考试成绩。

实现如下要求的功能:

1.根据姓名查询该学生的总成绩;
2.统计全班学生总分的平均成绩;
3.统计全班单科成绩最高分;
4.统计全班总分前三名的名单;
5.学生总容量不超过1000

设计提示:

1.定义一个Student学生类,包含字段(学号、姓名、语文成绩、数学成绩、英语成绩)和属性(总成绩)等。
2.定义一个Grade班级类,包含一个Student类数组(用来保存全班学生信息),一个表示学生人数的字段,以及若干个实现上述要求的方法等。
3.设计用户操作界面,分为三个区域。第一个区域为添加学生区域:让用户能输入一个学生的信息,单击“添加”按钮将该生信息添加到班级对象的学生数组中。第二个区域为查询区域:用户输入学生姓名,点击“查询”按钮,显示该生的总成绩,若不存在该生,则显示“该生不存在”。第三个区域为统计区域:点击“统计”按钮,显示全班平均成绩,单科最高分以及总分前三名的名单。

窗口设计

代码实现:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace Project8
{public partial class Form1 : Form{public Form1(){InitializeComponent();}Grade grade = new Grade();class Student : IComparable<Student>{public string number;public string name;public double chinese;public double math;public double english;//构造函数public Student(string number, string name, double chinese, double math, double english){this.number = number;this.name = name;this.chinese = chinese;this.math = math;this.english = english;Scores = chinese + math + english;}public double Scores { get; }public string getScores(){return string.Format("总成绩为:{0}", Scores);}//实现IComparable<T>接口public int CompareTo(Student other){if (other == null) return 100;//如果这里return -100,会导致最大值无法排序,其他能按照顺序if (this.Scores > other.Scores)return 1;elsereturn -1;/**这里有点小问题进行排序后,Scores最大值会排在最后一项,导致查询时要取下标为999,998,997*/}}//定义班级类class Grade{//在类里面声明Student对象public Student[] s = new Student[1000];public int number = 0;//这里number没必要静态成员,可以用this调用public void Add(string num, string name, double ch, double ma, double en){s[number] = new Student(num, name, ch, ma, en);number++;}//查找模块,根据名字返回Student变量类型,否则返回nullpublic Student Find(string name){//for (int i = 0; i < 1000; i++){if (s[i] == null)continue;if (s[i].name == name)return s[i];}return null;}//按总分排序,取前3名public string Sort(){Array.Sort(this.s);/**如果不用Array.Sort()方法,不装逼,用冒泡排序是一个好选择Student temp;for(int i=0;i<this.number-1;i++)for(int j=i+1;j<this.number;j++)if(s[i].Scores<s[j].Scores){temp=s[j];s[j]=s[i];s[i]=s[j];}//下面也要改一下,变成s[0].name,s[1].name,s[2].name*/return string.Format("总分前三名为:{0},{1},{2}\n", s[999].name, s[998].name, s[997].name);}//单科成绩最高,并在一起了public string Mix(){double chmax = 0;double mamax = 0;double enmax = 0;for (int i = 0; i < this.number; i++){if (s[i].chinese > chmax) { chmax = s[i].chinese; }if (s[i].math > mamax) { mamax = s[i].math; }if (s[i].english > enmax) { enmax = s[i].english; }}return string.Format("\n语文最高分:{0},数学最高分:{1},英语最高分:{2}", chmax, mamax, enmax);}public string ave(){double sum = 0;for (int i = 0; i < this.number; i++){sum += s[i].Scores;}sum = sum / this.number;return string.Format("班级平均分为:{0}\n", sum);}}private void button1_Click(object sender, EventArgs e){grade.Add(textBox1.Text, textBox2.Text, double.Parse(textBox3.Text), double.Parse(textBox4.Text), double.Parse(textBox5.Text));label9.Text = string.Format("添加{0}人", grade.number);textBox1.Text = "";textBox2.Text = "";textBox3.Text = "";textBox4.Text = "";textBox5.Text = "";}private void button2_Click(object sender, EventArgs e){if (grade.Find(textBox6.Text) != null)//这里grade.Find(textBox6.Text)返回的是Student对象label7.Text = grade.Find(textBox6.Text).getScores();elselabel7.Text = "该学生不存在";}private void button3_Click(object sender, EventArgs e){label8.Text = grade.ave();label8.Text += grade.Mix();label8.Text += grade.Sort();}}
}

以小组为单位,设计一个Windows应用程序,在该程序中定义一个学生类和班级类,以处理学生的学号,姓名,语文,数学和英语3门课程的期末考试成绩。相关推荐

  1. 【水汐のC#】计一个Windows应用程序,在该程序中定义一个学生类和班级类,以处理学生的学号,姓名,语文,数学和英语3门课程的期末考试成绩。实现如下要求的功能:

    设计一个Windows应用程序,在该程序中定义一个学生类和班级类,以处理学生的学号,姓名,语文,数学和英语3门课程的期末考试成绩.实现如下要求的功能: 根据姓名查询该学生的总成绩: 统计全班学生总分的 ...

  2. 请输入班级人数,然后输入每个人的语文数学和英语成绩,并且打印出语文的两个最高分,数学的两个最低分。和英语的平均分(使用二维数组)

    题目: 请输入班级人数,然后输入每个人的语文数学和英语成绩,并且打印出语文的两个最高分,数学的两个最低分.和英语的平均分(使用二维数组) 代码如下: package XunHuanShuZu;impo ...

  3. c++ 一个学习小组有5个人,每个人有三门课(高数、英语和C语言)的考试成绩,求每人的平均成绩。按行输出每个学生的各科成绩及平均成绩。

    [问题描述]一个学习小组有5个人,每个人有三门课(高数.英语和C语言)的考试成绩,求每人的平均成绩.按行输出每个学生的各科成绩及平均成绩. [输入形式]按高数.英语和C语言课程顺序输入每个学生的成绩. ...

  4. sqlserver 人名_SqlServer书上:使用游标输出学生姓名、选修课程名称和期末考试成绩...

    --使用游标输出学生姓名.选修课程名称和期末考试成绩 use teaching go declare @sname nchar(8),@cname nchar(10),@final numeric(6 ...

  5. Numpy数据分析模块实训-【根据“某门课程平时成绩和期末考试成绩.csv”内容,计算课程的平时成绩和期末考试成绩的均值、标准差、方差、最小值、最大值,输出期末考试比平时成绩高的学生名单,并输出期末】

    - - 该文章为本人原创!主要是用来记录学习的过程和分享给需要的博友.若有出错或者更好解决方法欢迎评论和私信交流学习!!! ' Numpy数据分析模块实训 - 根据"某门课程平时成绩和期末考 ...

  6. 计算机应用技术一级考试成绩,《计算机应用基础》课程与等级考试成绩的关系...

    <闽南师范大学关于计算机应用基础课程成绩的暂行规定>(闽南师大[2016]197号)已于2016年7月12日下发,但在执行过程总有包括教务员及学生在内各种人员的种种疑问及错误理解与传达,现 ...

  7. 有没有改期末考试成绩的软件_如果考试成绩没有正常分配怎么办?

    有没有改期末考试成绩的软件 Usually, when I tell you a student has got 90 marks, you would think this is a very go ...

  8. 判定考试成绩程序java_请大家务必按照平时交作业的要求,按时提交!否则会影响您的期末考试成绩。_学小易找答案...

    [判断题]组合定位中几个定位元件组合起来定位一个工件相应的几个定位面,该组合定位元件能限制工件的自由度总数应等于 各个定位元件单独定位各自相应定位面时所能限制自由度的数目之和. [简答题]拍照上传实验 ...

  9. 武汉市江岸区2021年高考成绩查询,最新:武汉市这些区部分中小学2021年期末考试成绩出炉...

    期末考试已结束,近日,中小学期末考试成绩也陆续出来,小升初家长最关注的六年级元调/期末也有了消息,来看看各区的划线吧! 洪山区七.八年级 家长分享洪山区七.八年级等级划线情况如下: 青山区六年级元调 ...

最新文章

  1. 浙江大学软件学院2020年保研上机模拟练习 7-4 Shopping With Coupons
  2. python 连接mysql数据库
  3. 生产环境中Oracle常用函数总结
  4. 为什么使用 Dubbo ? 微服务概述?传统应用的问题?
  5. 新兴的计算机设备,澳洲新兴专业-计算机数控,你会心动吗?
  6. 利用第三方软件识别图片文字并转换为文本
  7. 免费的易语言网络验证系统
  8. Django使用manager.py 运行项目,或者uWSGI进行部署项目,使用Nginx进行负载均衡
  9. php语言标记可用什么符号,【单选题】不可用作PHP语言标记用的是什么( )符号 A. ? B. 〈php C. ?...
  10. 名编辑电子杂志大师教程 | 仿古书翻页
  11. gif动态图如何制作?
  12. Innovus update_io_latency
  13. 对random.seed()函数的理解
  14. pythondjangoweb典型模块开发实战 pdf下载_胡阳《Django企业开发实战高效Python Web框架指南》PDF及代码...
  15. 关于雪花算法id冲突的思考解决思路
  16. 1011:2.4将磅转换为千克
  17. 顺序结构、选择结构、循环结构
  18. linux下的工具移植到windows下
  19. java解析geojson
  20. 国外科普网站推荐(转载)

热门文章

  1. 亚马逊店铺如何计算?
  2. POJ 3461 Oulipo(kmp算法解析)
  3. 2018 春 面向对象 第十二次作业
  4. GLES2.0中文API-glTexSubImage2D
  5. 3~4矩阵的压缩存储(下)【详解】
  6. RabbitMQ消息中间件-基础篇
  7. 在Debian 8上使用Apt-Get安装Java
  8. 课题一 认识数控机床
  9. 高质量外链平台,如何获得高质量的外链?
  10. js实现一个获取url参数的方法-前端面试题