一个C#的学生成绩管理系统作业

本文记录了一位初学者使用C#完成学生成绩管理系统的作业过程。主要内容包括学习Windows窗体应用、组件操作、面向对象编程以及成绩统计功能的实现。虽然程序存在一些不足,如代码结构和变量管理,但这次实践让作者深入理解了C#的基础知识,并认为这门课程非常有价值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

老师要求:能查询每个学生的总成绩、显示前三名成绩、单科成绩最高分和不及格的学生名单、全班平均成绩、各科成绩在不同分数段的学生人数百分比。

第一次用C#,写的比较糙,但总的来说还是学到不少的:

1.学会了Windows窗体的建立,基本组件的添加,组件属性的获取(如果在当前窗体下就是this.组件名字.组件属性:this.Grades.Text)、点击按钮事件的编写;

2.C#基本语句,面向对象的编程的思想;

3.老师要求不用数据库,直接把成绩写到类里,这个地方纠结了好久,我的实现方法是新建一个Student类,一个Class类,班级类里包含一个student类的数组,和其他实现上述结果的方法。

界面1:第一个窗体应该是主窗体,我发现主窗体里的类成员、方法,在后面新建的窗体里是可以直接访问的,所以我把学生类和班级类创建在这个CS文件里。

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 Text1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }


        private void label1_Click(object sender, EventArgs e)
        {


        }


        private void Form1_Load(object sender, EventArgs e)
        {


        }


        private void button5_Click(object sender, EventArgs e)
        {


        }


        private void button6_Click(object sender, EventArgs e)
        {
            
           
            Form2 myForm = new Form2();//弹出新窗体
            myForm.ShowDialog();


        }
    }
}
public class FormStudent//创建学生类
{
    public string studentsName;//学生姓名
    public int Number;//学号
    public int Chinese;//语文成绩
    public int English;//英语成绩
    public int Math;//数学成绩
    public int SCORE;//总分
}


public class Class//班级类
{
    public FormStudent[] students { get; set; }//一个名字为students的由FormStudent类型组成的数组 


    public float EnglishYouxiu = 0;//这里是一系列记录分数分布的变量,初始值为0
    public float EnglishJige = 0;
    public float EnglishBujige = 0;
    public int EnopassNumber = 999;//这个用来经过排序后记录第一个没有通过的学生序号


    public float MathYouxiu = 0;
    public float MathJige = 0;
    public float MathBujige = 0;
    public int MnopassNumber = 999;


    public float ChineseYouxiu = 0;
    public float ChineseJige = 0;
    public float ChineseBujige = 0;
    public int CnopassNumber = 999;


    public void three(FormStudent[] studentscore)//冒泡排序获得前三名成绩
    {
        int length = 3;
        if(studentscore.Length>2)
        {
            length = studentscore.Length;
        }


        for (int i = 0; i < 3; i++)
        {
            for (int j = (length - 3); j >= 0; j--)
            {
                if (studentscore[j].SCORE < studentscore[j + 1].SCORE)
                {
                    FormStudent st = studentscore[j];
                    studentscore[j] = studentscore[j + 1];
                    studentscore[j + 1] = st;
                }
            }
        }
    }


    public float Average(FormStudent[] studentscore, int m)//求均分
    {
        int Fullscore = 0;
        for (int q = 0; q < m; q++)
        {
            Fullscore = Fullscore + studentscore[q].SCORE;
        }
        float ave = Fullscore / m;
        return ave;
    }


    public int EnglishBest(FormStudent[] studentscore)//英语最高成绩
    {
        int k = 0;
        int score = studentscore[0].English;
        for (int i = 0; i < studentscore.Length - 1; i++)
        {
            if (studentscore[k].English < studentscore[i].English)
            {
                k = i;
                score = studentscore[i].English;
            }
        }
        return score;
    }


    public int ChineseBest(FormStudent[] studentscore)//语文最高成绩
    {
        int k = 0;
        int score = studentscore[0].Chinese;
        for (int i = 0; i < studentscore.Length - 1; i++)
        {
            if (studentscore[k].Chinese < studentscore[i].Chinese)
            {
                k = i;
                score = studentscore[i].Chinese;
            }
        }
        return score;
    }


    public int MathBest(FormStudent[] studentscore)//数学最高成绩
    {
        int k = 0;
        int score = studentscore[0].Math;
        for (int i = 0; i < studentscore.Length - 1; i++)
   
评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值