老师口中说,少用static,然后有习题要我们用static来写
实现简单学生成绩管理:(两个类,方法带static)
1.学生及信息录入(id,name,grade)
2.输出成绩
3.修改成绩
4.查询成绩
5.显示成绩
6.退出系统
Method类:
//定义属性
string id;
string name;
int grade;
//无参构造
public Method()
{
}
//三参构造
public Method(string id, string name, int grade)
{
this.id = id;
this.name = name;
this.grade = grade;
}
static Method md = new Method();//创建对象
static Method[] m = new Method[10];//创建对象数组
static int j=0;//对象数组下标
//信息添加
public static void Add(Method g1)
{
Console.Write("请输入id:");
string id = Console.ReadLine();
Console.Write("请输入姓名:");
string name = Console.ReadLine();
Console.Write("请输入分数:");
int grade = int.Parse(Console.ReadLine());
//将信息放入对象数组里面
g1.id = id;
g1.name = name;
g1.grade = grade;
m[j] = g1;
//判断id是否存在
for(int i = 0; i < j; i++)
{
if (m[i].id == id)
{
i--;
Console.WriteLine("id已存在!请重新输入id");
id = Console.ReadLine();
Console.Write("请输入姓名:");
name = Console.ReadLine();
Console.Write("请输入分数:");
grade = int.Parse(Console.ReadLine());
}
}
g1.id = id;
g1.name = name;
g1.grade = grade;
Console.WriteLine("添加成功:" + "id为:" + m[j].id + " " + "姓名为:" + m[j].name + " " + "成绩为:" + m[j].grade);
j++;//添加功能执行后,j++,j表示数组下标
}
//删除分数
static int flag=0;//判断id是否存在
public static void Del()
{
Console.Write("请输入要删除分数的id:");
string id = Console.ReadLine();
//这里用i<j,因为不删除学生,只有j个学生
for(int i = 0; i < j; i++)
{
if (m[i].id==id)
{
flag = 1;//如果存在,k=1
m[i].grade = 0;//这里的删除成绩只是将分数置为0,有待优化
Console.WriteLine("删除成功:" + "id为:" + m[i].id + " " + "姓名为:" + m[i].name + " " + "成绩为:" + m[i].grade);
break;
}
}
if (flag == 0)//如果没有经过上面if循环,则flag一直为0
{
Console.WriteLine("查无此人!");
}
flag = 0;//保持每一次执行后,flag都为0
}
//修改分数
public static void Updata()
{
Console.Write("请选择要修改分数的id:");
string id = Console.ReadLine();
for (int i = 0; i < j; i++)
{
if (id == m[i].id)
{
Console.Write("请修改分数:");
int grade = int.Parse(Console.ReadLine());
m[i].grade = grade;
}
}
}
//查询学生信息
public static void Search()
{
Console.Write("请选择你要查询信息的id:");
string id = Console.ReadLine();
for (int i = 0; i < j; i++)
{
if(id == m[i].id)
{
Console.WriteLine("查询到了:"+"id为:" + m[i].id + " " + "姓名为:" + m[i].name + " " + "成绩为:" + m[i].grade);
}
}
}
//显示所有学生信息
public static void ShowInfo()
{
for(int i = 0; i <j; i++)
{
Console.WriteLine("id为:"+m[i].id+" "+"姓名为:"+m[i].name+" "+"成绩为:"+m[i].grade);
}
}
Grade类
class Grade
{
void Cj()
{
while (true)
{
Console.WriteLine("*********************************************************");
Console.WriteLine("*成绩操作:1.添加 2.删除 3.修改 4.查询 5.显示 0.退出系统*");
Console.WriteLine("*********************************************************");
Console.Write("输入数字:");
int num = int.Parse(Console.ReadLine());
Method method = new Method();//对应Method中的无参构造
//Method method = new Method("1", "zhang", 1);
//对应Method中三参构造,里面的“1”,“张”,1没有影响,只是为了得到Method对象,完成方法的调用
switch (num)
{
case 1:
Method.Add(method);
break;
case 2:
Method.Del();
break;
case 3:
Method.Updata();
break;
case 4:
Method.Search();
break;
case 5:
Method.ShowInfo();
break;
case 0:
Console.WriteLine("程序结束!");
Environment.Exit(0);
break;
default:
Console.WriteLine("操作有误!");
break;
}
}
}
static void Main(string[] args)
{
Grade g = new Grade();//创建对象
g.Cj();//调用方法
}
}