using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Syntax
{
class Program
{
static void Main(string[] args)
{
string[,] array = new string[100, 6];
int keynum = 0;
string fmt = "0000";
string formatString = "{0,0:" + fmt + "}";
int language = 0;
int math = 0;
int english = 0;
int mean = 0;
string datasname = null;
string datalanguage = null;
string datamath = null;
string dataenglish = null;
string strmean = null;
float avglanguage = 0.00f;
float avgmath = 0.00f;
float avgenglish = 0.00f;
float avgtotal = 0.00f;
while (true)
{
Restart1:
Console.WriteLine("1.조회");
Console.WriteLine("2.추가");
Console.WriteLine("3.수정");
Console.WriteLine("4.삭제");
Console.WriteLine("0.종료");
string finput = Console.ReadLine();
if (finput == "1")//조회
{
Console.Clear();
Console.Write("Total Student: ");
Console.WriteLine(keynum);
Console.ResetColor();
Console.WriteLine();
Console.WriteLine("+----+----------------+------+------+------+------+");
Console.WriteLine("|번호| 학생명 | 국어 | 수학 | 영어 | 평균 |");
Console.WriteLine("+----+----------------+------+------+------+------+");
for (int i = 0; i < keynum; i++)
{
int namebytelen= Encoding.Default.GetBytes(array[i,1]).Length;
int padlen = 8 - (namebytelen / 2);
Console.Write("|");
Console.Write(formatString, (i + 1));
Console.Write("|");
if (namebytelen % 2 != 0)
{
Console.Write("{0}", "".PadLeft(padlen) + array[i,1] + "".PadRight(padlen - 1) + "|");
}
else
{
Console.Write("{0}", "".PadLeft(padlen) + array[i, 1] + "".PadRight(padlen) + "|");
}
//이름
Console.Write(String.Format("{0,6}", array[i, 2])); //국어
Console.ResetColor();
Console.Write("|");
Console.Write(String.Format("{0,6}", array[i, 3]));//수학
Console.ResetColor();
Console.Write("|");
Console.Write(String.Format("{0,6}", array[i, 4]));//영어
Console.ResetColor();
Console.Write("|");
Console.Write(String.Format("{0,6}", array[i, 5])); //평균
Console.ResetColor();
Console.WriteLine("|");
}
Console.WriteLine("+----+----------------+------+------+------+------+");
Console.WriteLine(String.Format("| | 전체 학생 평균 |{0,6}|{1,6}|{2,6}|{3,6}|", avglanguage.ToString("F2"), avgmath.ToString("F2"), avgenglish.ToString("F2"), avgtotal.ToString("F2"))); //전체학생평균
Console.WriteLine("+----+----------------+------+------+------+------+");
} //조회
else if (finput == "2")//추가
{
Restart2:
Console.Clear();
Console.Write("학생명: ");
datasname = Console.ReadLine();
Console.Write("국어: ");
datalanguage = Console.ReadLine();
Console.Write("수학: ");
datamath = Console.ReadLine();
Console.Write("영어: ");
dataenglish = Console.ReadLine();
Console.Write("위의 데이터를 저장하겠습니까? (예: 1 / 아니오 : 0) :");
string datasave = Console.ReadLine();
{
array[keynum, 0] = Convert.ToString(keynum + 1);
array[keynum, 1] = datasname;
array[keynum, 2] = datalanguage;
array[keynum, 3] = datamath;
array[keynum, 4] = dataenglish;
language = Convert.ToInt32(array[keynum, 2]);
math = Convert.ToInt32(array[keynum, 3]);
english = Convert.ToInt32(array[keynum, 4]);
mean = (language + math + english) / 3;
strmean = Convert.ToString(mean);
array[keynum, 5] = strmean;
keynum++;
float sumlanguage = 0.00f;
float summath = 0.00f;
float sumenglish = 0.00f;
float sumtotal = 0.00f;
for (int i2 = 0; i2 < keynum; i2++)
{
sumlanguage = sumlanguage + Convert.ToInt32(array[i2, 2]);
summath = summath + Convert.ToInt32(array[i2, 3]);
sumenglish = sumenglish + Convert.ToInt32(array[i2, 4]);
sumtotal = sumtotal + Convert.ToInt32(array[i2, 5]);
}
avglanguage = sumlanguage / keynum;
avgmath = summath / keynum;
avgenglish = sumenglish / keynum;
avgtotal = sumtotal / keynum;
}
else if (datasave == "0")
{
goto Restart2;
}
Console.Clear();
}//추가
else if (finput == "3")//수정
{
Console.Clear();
Console.Write("Total Student: ");
Console.WriteLine(keynum);
Console.ResetColor();
Console.WriteLine();
Console.WriteLine("+----+----------------+------+------+------+------+");
Console.WriteLine("|번호| 학생명 | 국어 | 수학 | 영어 | 평균 |");
Console.WriteLine("+----+----------------+------+------+------+------+");
for (int i = 0; i < keynum; i++)
{
int namebytelen = Encoding.Default.GetBytes(array[i, 1]).Length;
int padlen = 8 - (namebytelen / 2);
Console.Write("|");
Console.Write(formatString, (i + 1));
Console.Write("|");
if (namebytelen % 2 != 0)
{
Console.Write("{0}", "".PadLeft(padlen) + array[i, 1] + "".PadRight(padlen - 1) + "|");
}
else
{
Console.Write("{0}", "".PadLeft(padlen) + array[i, 1] + "".PadRight(padlen) + "|");
}
Console.Write(String.Format("{0,6}", array[i, 2])); //국어
Console.ResetColor();
Console.Write("|");
Console.Write(String.Format("{0,6}", array[i, 3]));//수학
Console.ResetColor();
Console.Write("|");
Console.Write(String.Format("{0,6}", array[i, 4]));//영어
Console.ResetColor();
Console.Write("|");
Console.Write(String.Format("{0,6}", array[i, 5])); //평균
Console.ResetColor();
Console.WriteLine("|");
}
Console.WriteLine("+----+----------------+------+------+------+------+");
Console.WriteLine(String.Format("| | 전체 학생 평균 |{0,6}|{1,6}|{2,6}|{3,6}|", avglanguage.ToString("F2"), avgmath.ToString("F2"), avgenglish.ToString("F2"), avgtotal.ToString("F2"))); //전체학생평균
Console.WriteLine("+----+----------------+------+------+------+------+");
Console.Write($"수정할 데이터 번호를 입력하세요({array[0, 0]}~{keynum}) [0 : Exit]: ");
int fixinput = Convert.ToInt32(Console.ReadLine());
if (fixinput <= keynum && fixinput != 0)
{
Console.Clear();
Console.Write($"기존 학생명: {array[fixinput - 1, 1]} >> ");
datasname = Console.ReadLine();
Console.ResetColor();
Console.Write($"기존 국어점수: {array[fixinput - 1, 2]} >> ");
datalanguage = Console.ReadLine();
Console.ResetColor();
Console.Write($"기존 수학점수: {array[fixinput - 1, 3]} >> ");
datamath = Console.ReadLine();
Console.ResetColor();
Console.Write($"기존 영어점수: {array[fixinput - 1, 4]} >> ");
dataenglish = Console.ReadLine();
Console.ResetColor();
array[fixinput - 1, 1] = datasname;
array[fixinput - 1, 2] = datalanguage;
array[fixinput - 1, 3] = datamath;
array[fixinput - 1, 4] = dataenglish;
language = Convert.ToInt32(array[fixinput - 1, 2]);
math = Convert.ToInt32(array[fixinput - 1, 3]);
english = Convert.ToInt32(array[fixinput - 1, 4]);
mean = (language + math + english) / 3;
strmean = Convert.ToString(mean);
array[fixinput - 1, 5] = strmean;
float sumlanguage = 0.00f;
float summath = 0.00f;
float sumenglish = 0.00f;
float sumtotal = 0.00f;
for (int i2 = 0; i2 < keynum; i2++)
{
sumlanguage = sumlanguage + Convert.ToInt32(array[i2, 2]);
summath = summath + Convert.ToInt32(array[i2, 3]);
sumenglish = sumenglish + Convert.ToInt32(array[i2, 4]);
sumtotal = sumtotal + Convert.ToInt32(array[i2, 5]);
}
avglanguage = sumlanguage / keynum;
avgmath = summath / keynum;
avgenglish = sumenglish / keynum;
avgtotal = sumtotal / keynum;
}
else if (fixinput == 0)
{
goto Restart1;
}
Console.Clear();
}//수정
else if (finput == "4")//삭제
{
Console.Clear();
Console.Write("Total Student: ");
Console.WriteLine(keynum);
Console.ResetColor();
Console.WriteLine();
Console.WriteLine("+----+----------------+------+------+------+------+");
Console.WriteLine("|번호| 학생명 | 국어 | 수학 | 영어 | 평균 |");
Console.WriteLine("+----+----------------+------+------+------+------+");
for (int i = 0; i < keynum; i++)
{
int namebytelen = Encoding.Default.GetBytes(array[i, 1]).Length;
int padlen = 8 - (namebytelen / 2);
Console.Write("|");
Console.Write(formatString, (i + 1));
Console.Write("|");
if (namebytelen % 2 != 0)
{
Console.Write("{0}", "".PadLeft(padlen) + array[i, 1] + "".PadRight(padlen - 1) + "|");
}
else
{
Console.Write("{0}", "".PadLeft(padlen) + array[i, 1] + "".PadRight(padlen) + "|");
}
Console.Write(String.Format("{0,6}", array[i, 2])); //국어
Console.ResetColor();
Console.Write("|");
Console.Write(String.Format("{0,6}", array[i, 3]));//수학
Console.ResetColor();
Console.Write("|");
Console.Write(String.Format("{0,6}", array[i, 4]));//영어
Console.ResetColor();
Console.Write("|");
Console.Write(String.Format("{0,6}", array[i, 5])); //평균
Console.ResetColor();
Console.WriteLine("|");
}
Console.WriteLine("+----+----------------+------+------+------+------+");
Console.WriteLine(String.Format("| | 전체 학생 평균 |{0,6}|{1,6}|{2,6}|{3,6}|", avglanguage.ToString("F2"), avgmath.ToString("F2"), avgenglish.ToString("F2"), avgtotal.ToString("F2"))); //전체학생평균
Console.WriteLine("+----+----------------+------+------+------+------+");
if (keynum == 0)
{
Console.WriteLine("저장된 데이터 정보가 없습니다.");
}
else
{
Console.Write($"삭제할 데이터 번호를 입력하세요({array[0, 0]}~{keynum}) [0 : Exit]: ");
int sinput = Convert.ToInt32(Console.ReadLine());
if (sinput <= keynum && sinput != 0)
{
for (int i5 = sinput; i5 < keynum + 1; i5++)
{
array[i5 - 1, 0] = Convert.ToString(i5);
array[i5 - 1, 1] = array[i5, 1];
array[i5 - 1, 2] = array[i5, 2];
array[i5 - 1, 3] = array[i5, 3];
array[i5 - 1, 4] = array[i5, 4];
array[i5 - 1, 5] = array[i5, 5];
}
keynum--;
float sumlanguage = 0.00f;
float summath = 0.00f;
float sumenglish = 0.00f;
float sumtotal = 0.00f;
if (keynum!=0)
{
for (int i2 = 0; i2 < keynum; i2++)
{
sumlanguage = sumlanguage + Convert.ToInt32(array[i2, 2]);
summath = summath + Convert.ToInt32(array[i2, 3]);
sumenglish = sumenglish + Convert.ToInt32(array[i2, 4]);
sumtotal = sumtotal + Convert.ToInt32(array[i2, 5]);
}
avglanguage = sumlanguage / keynum;
avgmath = summath / keynum;
avgenglish = sumenglish / keynum;
avgtotal = sumtotal / keynum;
}
else if (keynum == 0)
{
avglanguage = 0.00f;
avgmath = 0.00f;
avgenglish = 0.00f;
avgtotal = 0.00f;
}
Console.Clear();
}
else if (sinput == 0)
{
goto Restart1;
}
}
}//삭제
else if (finput == "0")//종료
{
break;
}
else
{
Console.WriteLine("없는 메뉴입니다.");
}
}
}
}
}