注意:C#语言刚入门,代码质量不高!!!可以参考
1.设计一个简单的 Windows 应用程序,在文本框中输入两个点的坐标值,单击“确定时显示两点之间的距离,如图 4-22 所示。
界面布局:
代码如下:
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 实训4
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
int x1, x2, y1, y2;
x1 = Convert.ToInt32(textBox1.Text);
y1 = Convert.ToInt32(textBox2.Text);
x2 = Convert.ToInt32(textBox3.Text);
y2 = Convert.ToInt32(textBox4.Text);
Point p1 = new Point(x1, y1);
Point p2 = new Point(x2, y2);
textBox5.Text = p1.Distance(p2).ToString();
}
class Point
{
int x1, y1;
public Point(int x,int y)
{
this.x1 = x;
this.y1 = y;
}
public int X
{
get => x1;
}
public int Y
{
get => y1;
}
public Double Distance(Point point)
{
return System.Math.Sqrt((this.x1 - point.X) * (this.x1 - point.X) + (this.y1 - point.Y) * (this.y1 - point.Y));
}
}
}
}
2.自定义一个时间类。该类包含小时、分、秒字段与属性,具有将秒增1操作的方法,如图 4-23 所示。
界面布局:
代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Security.Policy;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace 实训4
{
public partial class Form2 : Form
{
Time time = new Time();
public Form2()
{
InitializeComponent();
textBox1.Text = time.Hour.ToString();
textBox2.Text = time.Minute.ToString();
textBox3.Text = time.Second.ToString();
}
private void button1_Click(object sender, EventArgs e)
{
time.AddSecond();
textBox1.Text = time.Hour.ToString();
textBox2.Text = time.Minute.ToString();
textBox3.Text = time.Second.ToString();
}
}
class Time
{
private double hour ;
private double minute;
private double second;
public Time()
{
hour = System.DateTime.Now.Hour;
minute = System.DateTime.Now.Minute;
second = System.DateTime.Now.Second;
}
public Double Hour
{
get => hour;
}
public Double Minute
{
get => minute;
}
public Double Second
{
get => second;
}
public Time(double hour, double minute, double second)
{
this.hour = hour;
this.minute = minute;
this.second = second;
}
public void AddSecond()
{
second++;
if (second > 60)
{
minute++;
second = second%60;
}
if (minute > 60)
{
hour++;
minute = minute % 60;
}
}
}
}
第三小题比较复杂,可以下载资源使用,还是要弄懂代码比较好(资源已上传)
3.设计一个 Windows 应用程序,在该程序中定义一个学生类和班级类,以处理每个生的学号、姓名、语文、数学和英语 3 门课程的期末考试成绩,要求:
(1) 能根据姓名查询指定学生的总成绩。
(2) 能统计全班学生的平均成绩
(3)能统计单科成绩最高分。
(4)能统计全班前 3 名的名单。
(5) 能统计指定课程不及格的学生名单
(6) 能统计指定课程在不同分数段的学生人数百分比
设计提示:
(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.Linq.Expressions;
using System.Runtime.InteropServices.WindowsRuntime;
using System.Text;
using System.Threading.Tasks;
using System.Web;
using System.Windows.Forms;
namespace 实训4
{
public partial class Form3 : Form
{
public Form3()
{
InitializeComponent();
}
Grade grage = new Grade();
private void button1_Click(object sender, EventArgs e)
{
grage.addStudent(new Student(textBox2.Text, textBox1.Text, Convert.ToDouble(textBox3.Text), Convert.ToDouble(textBox4.Text), Convert.ToDouble(textBox5.Text)));
label6.Text = "添加成功";
}
private void button2_Click(object sender, EventArgs e)
{
label7.Text = "统计全班学生的平均成绩:"+Convert.ToString(grage.getAverage()); ;
double[] temp = grage.getSingleMaxGrage();
label8.Text = "统计单科成绩最高分:"+"语文:" + temp[0] + ", " + "数学:" + temp[1] + ", " + "英语:" + temp[2];
Student[] tempStu = grage.getTop3();
label9.Text = "统计全班前3的学生名单:";
for (int i = 0; i < tempStu.Length; i++)
{
if (i < 3)
{
label9.Text += tempStu[i].name+",";
}
}
string gradeName = textBox6.Text;
var result=grage.getfaileStudent(gradeName);
Student[] tempStus = result.temp;
int sizeStu = result.size;
label15.Text = "";
for (int i=0;i< sizeStu; i++)
{
label15.Text += tempStus[i].name+",";
}
string gradeName1 = textBox7.Text;
double[] tempgrade = grage.getdiffStudent(gradeName1);
if (tempgrade != null)
{
label16.Text = "低于60分的学生人数百分比:" + tempgrade[0]*100 +"%" + ", 位于60分到80分的学生人数百分比:" + tempgrade[1]*100 + "%" + ",大于80分的学生人数百分比:" + tempgrade[2]*100 + "%";
}
}
private void button3_Click(object sender, EventArgs e)
{
label17.Text = "总成绩为:" + grage.getStudentByName(textBox8.Text);
}
}
class Student
{
String No;
string Name;
double YuWen;
double Math;
double English;
double totalGrage;
public Student(string No, string Name, double YuWen, double Math, double English)
{
this.No = No;
this.Name = Name;
this.YuWen = YuWen;
this.Math = Math;
this.English = English;
this.totalGrage = YuWen + Math + English;
}
public String name
{
get => Name;
}
public double yuwen
{
get => YuWen;
}
public double math
{
get => Math;
}
public double english
{
get => English;
}
public double totalgrade
{
get => totalGrage;
}
}
class Grade
{
Student[] arr = new Student[100];
int size = 0;
public String getStudentByName(String Name)
{
foreach(Student s in arr)
{
if (s.name == Name)
{
return s.totalgrade.ToString();
}
}
return "该学生不存在";
}
public void addStudent(Student s)
{
arr[size++] = s;
}
public double getAverage()
{
double sum = 0;
double average;
for(int i = 0; i < size; i++)
{
sum += arr[i].totalgrade;
}
average = sum / size;
return average;
}
public double[] getSingleMaxGrage()
{
double[] grades = new double[3];
for(int i=0;i<size;i++)
{
grades[0] = grades[0] < arr[i].yuwen ? arr[i].yuwen : grades[0];
grades[1] = grades[1] < arr[i].math ? arr[i].math : grades[1];
grades[2] = grades[2] < arr[i].english ? arr[i].english : grades[2];
}
return grades;
}
public Student[] getTop3()
{
Student s;
Student[] temp=new Student[size];
for(int i = 0; i < size; i++)
{
for(int j = i + 1; j < size; j++)
{
if (arr[i].totalgrade < arr[j].totalgrade)
{
s = arr[j];
arr[j] = arr[i];
arr[i] = s;
}
}
}
for(int i = 0; i < size; i++)
{
temp[i] = arr[i];
}
return temp;
}
public (int size,Student[] temp) getfaileStudent(String gradeName)
{
Student[] temp=new Student[size];
int size1 = 0;
if ( gradeName.Contains("语文"))
{
for(int i=0;i<size;i++)
{
if (arr[i].yuwen < 60)
{
temp[size1++] = arr[i];
}
}
}else if(gradeName.Contains("数学"))
{
for (int i = 0; i < size; i++)
{
if (arr[i].math < 60)
{
temp[size1++] = arr[i];
}
}
}
else if ("英语" == gradeName)
{
for (int i = 0; i < size; i++)
{
if (arr[i].english < 60)
{
temp[size1++] = arr[i];
}
}
}
return (size1,temp);
}
public double[] getdiffStudent(String gradeName)
{
double[] temp = new double[3];
int index = gradeName.Contains("语文") ? 1 : gradeName.Contains("数学") ? 2 : gradeName.Contains("英语") ? 3 : -1;
if (index == 1)
{
for (int i = 0; i < size; i++)
{
if (arr[i].yuwen < 60)
{
temp[0]++;
}else if(arr[i].yuwen>=60 && arr[i].yuwen <= 80)
{
temp[1]++;
}
else if(arr[i].yuwen>80)
{
temp[2]++;
}
}
}else if (index == 2)
{
for (int i = 0; i < size; i++)
{
if (arr[i].math < 60)
{
temp[0]++;
}
else if (arr[i].math >= 60 && arr[i].math <= 80)
{
temp[1]++;
}
else if(arr[i].math>80)
{
temp[2]++;
}
}
}
else if (index == 3)
{
for (int i = 0; i < size; i++)
{
if (arr[i].english < 60)
{
temp[0]++;
}
else if (arr[i].english >= 60 && arr[i].english <= 80)
{
temp[1]++;
}
else if (arr[i].english > 80)
{
temp[2]++;
}
}
}
else
{
return null;
}
double[] result = new double[3];
result[0] = Math.Round(temp[0] / (temp[0] + temp[1] + temp[2]),2);
result[1] = Math.Round(temp[1] / (temp[0] + temp[1] + temp[2]),2);
result[2] = Math.Round(temp[2] / (temp[0] + temp[1] + temp[2]),2);
return result;
}
}
}
第三个小实验比较复杂,所以展示操作(注意实验只是完成了成功的操作,对于一些错误操作未进行检查,比如文本框为空的检测,所以可能会有异常,这个可以自行写入检测代码)
新增学生:输入学生信息后,点击添加按钮,即可添加成功。(如下图,添加张三、李四、王五)
添加李四,同样是点击添加按钮即可。
统计两个文本框中输入语文和英语,再点击完成,就会展示相关的信息
右侧输入学生姓名,点击查询即可查询学生的总成绩