永发信息网

C#问题?里面的创建存储类 那里 帮我看下有什么错误

答案:3  悬赏:0  手机版
解决时间 2021-07-18 07:44

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
class Student
//创建类
{
private int _num;
private int num
{
get{return _num;}
set{_num=value;}
}
private int _age;
private int age
{
get { return _age; }
set { _age = value; }
}
private int _name;
private int name
{
get { return _name; }
set { _name = value; }
}
private int _sex;
private int sex
{
get { return _sex; }
set { _sex = value; }
}

private static void ShowHelp()
//主程序
{
Console.WriteLine("选择你的操作?1.录入信息 2.查看信息 3.帮助");
string key = Console.ReadLine();
if (key == "1")
{ Inputsudent(); }
else if (key == "2")
{ Showstudent(); }
else if (key == "3")
{ ShowHelp(); }
else { Console.WriteLine("你的输入有错误!"); }
ShowHelp();
}


private static void Inputsudent()
{
do
{
Student student = new Student();
Console.WriteLine("请输入学生的姓名:");
student.name = Console.ReadLine();

Console.WriteLine("请输入学生的学号:");
student.num = Convert.ToInt32(Console.ReadLine());

Console.WriteLine("请输入学生的性别:");
student.sex = Console.ReadLine();

Console.WriteLine("请输入学生的年龄:");
student.age = Convert.ToInt32(Console.ReadLine());
student.addStudent(student);
Console.WriteLine("是否录入学生个人信息?Y/N");

} while (Console.ReadLine().ToLower() == "y");
ShowHelp();

}

private static void Showstudent()
{

Console.WriteLine("请输入你要查询的学生的学号:");
int num = Convert.ToInt32(Console.ReadLine());
Student stu = student[num];
if (stu != null)
{
Console.WriteLine("学号:{0} 姓名:{1} 性别:{2} 年龄:{3}", stu.num, stu.name, stu.sex, stu.age);

}

else
{

Console.WriteLine("没有找到该学生的个人信息!");
}

ShowHelp();
}
}

class Studentset
//创建存储类
{
private ArrayList _students;
public Studentset()
{
if(_students == null)
{ _students = new ArrayList(); }
}

public void AddStudent(Student student)
{
//装箱操作
_students.Add(student);
}


public Student this[int num]
{
//对学生的信息处理
get{
for(int i=0;i<_students.Count;i++)
{
Student student=(Student)_students[i];
if(Student.num==num)
{
return Student;
}
}
return null;
}
}
}
}

最佳答案

你的代码已改,希望对你有所启示。


修改后的代码如下:



using System;
using System.Collections.Generic;
using System.Text;
//要用 ArrayList 需要 using System.Collections
using System.Collections;


namespace ConsoleApplication1
{
class Student
//创建类
{
private int _num;
//修改属性的修饰符为public 因为 要在 Studentset 中对 Array(Student) 访问 student 实例的 num 属性
//如下所有的属性修饰为public
public int num
{
get { return _num; }
set { _num = value; }
}
private int _age;
public int age
{
get { return _age; }
set { _age = value; }
}
//名字应当是 string 型,所以改过来
private string _name;
public string name
{
get { return _name; }
set { _name = value; }
}
//性别也应该是 string 型,所以改过来
private string _sex;
public string sex
{
get { return _sex; }
set { _sex = value; }
}


//ShowHelp 和 Inputsudent Showstudent 应当放到 Main 方法去,而不应该放到 Student 里。

}


class Studentset
//创建存储类
{
private ArrayList _students;
public Studentset()
{
if (_students == null)
{ _students = new ArrayList(); }
}


public void AddStudent(Student student)
{
//装箱操作
_students.Add(student);
}



public Student this[int num]
{
//对学生的信息处理
get
{
for (int i = 0; i < _students.Count; i++)
{
Student student = (Student)_students[i];
//if (Student.num == num)
//{
// return Student;
//}
//修改
if (student.num == num)
{
return student;
}
}
return null;
}
}
}
//启动
class Program
{
//包含一个 Studentset,存储输入的 Student!!!
private static Studentset ss = new Studentset();
//程序入口
static void Main(string[] args)
{
Inputsudent();
//显示 Student
Showstudent();
}
//从 Student中拿出来!!
private static void ShowHelp()
//主程序
{
Console.WriteLine("选择你的操作?1.录入信息 2.查看信息 3.帮助");
string key = Console.ReadLine();
if (key == "1")
{ Inputsudent(); }
else if (key == "2")
{ Showstudent(); }
else if (key == "3")
{ ShowHelp(); }
else { Console.WriteLine("你的输入有错误!"); }
ShowHelp();
}



private static void Inputsudent()
{
do
{
Student student = new Student();
Console.WriteLine("请输入学生的姓名:");
student.name = Console.ReadLine();


Console.WriteLine("请输入学生的学号:");
student.num = Convert.ToInt32(Console.ReadLine());


Console.WriteLine("请输入学生的性别:");
student.sex = Console.ReadLine();


Console.WriteLine("请输入学生的年龄:");
student.age = Convert.ToInt32(Console.ReadLine());
//这里错误!!
//student.addStudent(student);
//改为
ss.AddStudent(student);


Console.WriteLine("是否录入学生个人信息?Y/N");


} while (Console.ReadLine().ToLower() == "y");
ShowHelp();
}


private static void Showstudent()
{


Console.WriteLine("请输入你要查询的学生的学号:");
int num = Convert.ToInt32(Console.ReadLine());
//这里错误
//Student stu = student[num];
//修改
Student stu = ss[num];
if (stu != null)
{
Console.WriteLine("学号:{0} 姓名:{1} 性别:{2} 年龄:{3}", stu.num, stu.name, stu.sex, stu.age);


}


else
{


Console.WriteLine("没有找到该学生的个人信息!");
}


ShowHelp();
}
}
}

全部回答
//主程序 从Main 方法开始

如果可以。把错误的信息发下。

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
用真心爱她,她说你是骗她的,这是为什么?
本·拉登还活着么!
网吧是给什么身份的人开放的?
从高叶塘到长沙市天心区火车南站坐几路车最好
番禺那里有批发冰糖葫芦
那些单位不限制眼镜?
电脑的显示屏一闪一闪的是怎么回事?
一处环境清幽的山谷应该叫什么名字呢?
文件夹被锁,如何解锁
金立v2200 手机短信 密码 忘了怎么办?
100毫升的美体乳可以用多久?
关于电影《三强拍案惊奇》的介绍
硝苯地平缓释片2的效果怎么样?价位如何?副
白天睡多会导致发胖吗
兰州的证券公司在哪,开户时要钱吗?
推荐资讯
那有广东省中学人教版7,8,9年级英语单词读音
华北4区现在物价怎样?
本前还有谁记得我!
有没有服用过纳曲酮的朋友请和我联系一下!谢
求申彗星版的 TAKE ME TO YOUR HEART~
如何点两稻稻图标
联通卡上Q为什么入不了QQ家园、社区?(怎么办
怎样才能把快乐的时间保鲜的更长?
这首歌叫什么,有地址,知道的告诉下,谢谢
短信泡妞小技巧
二十八在觅伴晚吗?或者不寻慢慢走狭路平静而
关于星星的诗句有哪些,关于赞美星星的名言
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?