标题: 这段程序也不理解 有没有其他容易理解的方法 [打印本页] 作者: 邢秀兰 时间: 2012-12-5 21:24 标题: 这段程序也不理解 有没有其他容易理解的方法 using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace test8
{ //编写一个WinForm程序,有一个记录了学生成绩的文本文档,每个学生成绩是一行,每行是用|分割的数据,用|分割的域分别是姓名、年龄、成绩,写程序取出成绩最高学生的姓名和成绩。提示:读取文件可以使用File.ReadAllLines()函数。
//文件格式例子:
//张三|20|80
//李四|22|90
//王小明|30|83
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//定义一个结构存储学生信息
struct Student
{
public string Name;
public int Age;
public int Score;
}
private void btnhq_Click(object sender, EventArgs e)
{
//获取文件路径
string path = "student.txt";
//分行读取,返回一个string数组
string[] studentArr = File.ReadAllLines(path, Encoding.Default);
//New一个数组
Student[] stu = new Student[studentArr.Length];
//循环该数组
for (int i = 0; i < studentArr.Length; i++)
{
//把每一行进行split分割
string[] stuArr = studentArr[i].Split('|');
stu[i].Name = stuArr[0].ToString();
stu[i].Age = Convert.ToInt32(stuArr[1]);
stu[i].Score = Convert.ToInt32(stuArr[2]);
}
//假设下标为0的那个人的成绩是最高成绩的人
Student maxStu = stu[0];
//循环遍历stu数组
for (int i = 1; i < stu.Length; i++)
{
//如果第i个人的成绩大于最高成绩的人
if (maxStu.Score < stu[i].Score)
{
//则把第i个人赋值个maxstu
maxStu = stu[i];
}
}
//显示出去
this.txtName.Text = maxStu.Name;
this.txtAge.Text = maxStu.Age.ToString();
this.txtScore.Text = maxStu.Score.ToString();
}
//定义一个结构存储学生信息,这里的目的就是把与一个学生有关的信息集中存储在一起,看起来更直观。对结构不清楚的话还是专门去查一下吧
struct Student
{
public string Name;
public int Age;
public int Score;
}
private void btnhq_Click(object sender, EventArgs e)
{
//获取文件路径
string path = "student.txt";
//每一行学生的信息都是一个字符串,这里调用静态类File的ReadAllLines方法从指定的文件中读取每一行的数据并返回一个字符串数组
string[] studentArr = File.ReadAllLines(path, Encoding.Default);
//New一个数组
Student[] stu = new Student[studentArr.Length];
//循环该数组
for (int i = 0; i < studentArr.Length; i++)
{
//每次循环对字符串数组studentArr中的一个字符串进行操作,调用字符串实例的Split方法,对该字符串按指定字符“切割”,返回一个新的字符串数组。这个字符串数组由“切割”后的子字符串组成
string[] stuArr = studentArr[i].Split('|');
//因为学生数据的格式是“张三|20|80”,所以分割后产生三个子字符串(学生的姓名、年龄、成绩)保存在新字符串数组中,对新数组中的数据操作,依次把学生信息保存在刚才定义的学生数组中
stu[i].Name = stuArr[0].ToString();
stu[i].Age = Convert.ToInt32(stuArr[1]);
stu[i].Score = Convert.ToInt32(stuArr[2]);
}
//数组中求最大值,先声明一个Student结构型的变量maxStu
//假设下标为0的那个人的成绩是最高成绩的人
Student maxStu = stu[0];
//循环遍历stu数组,比较的是成绩
for (int i = 1; i < stu.Length; i++)
{
//如果第i个人的成绩大于最高成绩的人
if (maxStu.Score < stu[i].Score)
{
//则把第i个人赋值个maxstu,保存的是Student结构型的学生
maxStu = stu[i];
}
}
//显示出去
this.txtName.Text = maxStu.Name;
this.txtAge.Text = maxStu.Age.ToString();
this.txtScore.Text = maxStu.Score.ToString();
}
作者: 李青 时间: 2012-12-6 14:15
很简单的解决方法如下:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
int max = 0; //最高分
string name = ""; //最高分学生姓名
string[] strs = System.IO.File.ReadAllLines("student.txt", Encoding.Default);
foreach (string s in strs) //遍历每一行数据
{
string[] items = s.Split('|'); //分割每一行数据
if (Convert.ToInt32(items[2]) > max) //如果该行的分数大于最高分变量
{
max = Convert.ToInt32(items[2]); //将该分数赋值给最高分变量
name = items[0]; //该学生姓名赋值给姓名变量
}
}
MessageBox.Show(String.Format("成绩最高学生的姓名为{0},成绩为{1}", name, max), "显示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}作者: 邢秀兰 时间: 2012-12-6 17:02
李青 发表于 2012-12-6 14:15
很简单的解决方法如下:
public partial class Form1 : Form
{