yekta99
چهارشنبه 28 تیر 1391, 18:46 عصر
سلام دوستان
این برنامه توی اجرا مشکل داره ، کارش اینه که کاربر یه گزینه از منو انتخاب میکنه مثلا : اضافه کردن دانشجو و انتخاب بعدی case 4 برای جستجو بر اساس شماره دانشجویی ، تا اینحا رو درست کار می کنه ولی بعد از اون اگر گزینه دیگه رو انتخاب کنیم اضافه کردن درس یا استاد ، بعد بخواهیم case های مربوط به اونا رو بررسی کنیم باز هم جواب رو نشون میده ولی با این ارور روبرو میشم
object refrence not set to an instance of an object
البته فرقی توی ترتیب انتخاب گزینه ها نیست ، در هر مورد برای کار با case دوم این مشکل رو دارم .
type cast ها رو فکر نمی کنم مشکلی داشته باشن ، مقدار تهی هم ندارم
خط هایی که این ارور رو نشون میده :
case 4 :
Console.WriteLine("Student : {0},{1},{2}", s.StName, s.StFamily, s.StID);
case 5 :
if (teach.TFamily.Contains(word))
case 6 :
if (NumUnit < cs.NumOfUnit)
ببخشید اگه بد توضیح دادم و کدم خیلی طولانیه
static void Main(string[] args)
{
ArrayList arylst = new ArrayList();
Hashtable ht = new Hashtable();
while (true)
{
int menu = ShowMenu();
switch (menu)
{
case 1://Add Student
Console.Write("Number of student? ");
int stNum = int.Parse(Console.ReadLine());
for (int i = 0; i < stNum; i++)
{
Student st = new Student();
Console.Write("Student Name : ");
st.StName = Console.ReadLine();
arylst.Add(st.StName);
Console.Write("Student Family : ");
st.StFamily = Console.ReadLine();
arylst.Add(st.StFamily);
Console.Write("Student ID : ");
st.StID = int.Parse(Console.ReadLine());
arylst.Add(st.StID);
ht[st.StID] = st;
}
break;
case 2://Add Teacher
Console.Write("Number of Teacher? ");
int TNum = int.Parse(Console.ReadLine());
for (int i = 0; i < TNum; i++)
{
Teacher tch = new Teacher();
Console.Write("Teacher Name : ");
tch.TName = Console.ReadLine();
arylst.Add(tch.TName);
Console.Write("Teacher Family : ");
tch.TFamily = Console.ReadLine();
arylst.Add(tch.TFamily);
Console.Write("Teacher ID : ");
tch.Tid = int.Parse(Console.ReadLine());
arylst.Add(tch.Tid);
ht[tch.Tid] = tch;
}
break;
case 3://Add Course
Console.Write("Number of Course? ");
int CNum = int.Parse(Console.ReadLine());
for (int i = 0; i < CNum; i++)
{
Course crs = new Course();
Console.Write("Course Name : ");
crs.CName = Console.ReadLine();
arylst.Add(crs.CName);
Console.Write("Number of Unit : ");
crs.NumOfUnit = int.Parse(Console.ReadLine());
arylst.Add(crs.NumOfUnit);
ht[crs.NumOfUnit] = crs;
}
break;
case 4://Search Student
Console.Write("Student ID for search : ");
int idforSearch = int.Parse(Console.ReadLine());
if (arylst.Contains(idforSearch))
if (ht.ContainsKey(idforSearch) == true)
{
Student s = ht[idforSearch] as Student;
Console.WriteLine("Student : {0},{1},{2}", s.StName, s.StFamily, s.StID);
}
break;
case 5://Search Teacher
Console.Write("Word for search : ");
string word = Console.ReadLine();
foreach (DictionaryEntry item in ht)
{
Teacher teach = item.Value as Teacher;
if (teach.TFamily.Contains(word))
{
Console.WriteLine("Teacher's family ={0}", teach.TFamily);
}
}
break;
case 6:
Console.Write("Number to compare with Units of Course : ");
int NumUnit = int.Parse(Console.ReadLine());
foreach (DictionaryEntry item in ht)
{
Course cs = item.Value as Course;
if (NumUnit < cs.NumOfUnit)
Console.WriteLine("Course ={0}", cs.CName);
}
break;
}
}
}
}
}
این برنامه توی اجرا مشکل داره ، کارش اینه که کاربر یه گزینه از منو انتخاب میکنه مثلا : اضافه کردن دانشجو و انتخاب بعدی case 4 برای جستجو بر اساس شماره دانشجویی ، تا اینحا رو درست کار می کنه ولی بعد از اون اگر گزینه دیگه رو انتخاب کنیم اضافه کردن درس یا استاد ، بعد بخواهیم case های مربوط به اونا رو بررسی کنیم باز هم جواب رو نشون میده ولی با این ارور روبرو میشم
object refrence not set to an instance of an object
البته فرقی توی ترتیب انتخاب گزینه ها نیست ، در هر مورد برای کار با case دوم این مشکل رو دارم .
type cast ها رو فکر نمی کنم مشکلی داشته باشن ، مقدار تهی هم ندارم
خط هایی که این ارور رو نشون میده :
case 4 :
Console.WriteLine("Student : {0},{1},{2}", s.StName, s.StFamily, s.StID);
case 5 :
if (teach.TFamily.Contains(word))
case 6 :
if (NumUnit < cs.NumOfUnit)
ببخشید اگه بد توضیح دادم و کدم خیلی طولانیه
static void Main(string[] args)
{
ArrayList arylst = new ArrayList();
Hashtable ht = new Hashtable();
while (true)
{
int menu = ShowMenu();
switch (menu)
{
case 1://Add Student
Console.Write("Number of student? ");
int stNum = int.Parse(Console.ReadLine());
for (int i = 0; i < stNum; i++)
{
Student st = new Student();
Console.Write("Student Name : ");
st.StName = Console.ReadLine();
arylst.Add(st.StName);
Console.Write("Student Family : ");
st.StFamily = Console.ReadLine();
arylst.Add(st.StFamily);
Console.Write("Student ID : ");
st.StID = int.Parse(Console.ReadLine());
arylst.Add(st.StID);
ht[st.StID] = st;
}
break;
case 2://Add Teacher
Console.Write("Number of Teacher? ");
int TNum = int.Parse(Console.ReadLine());
for (int i = 0; i < TNum; i++)
{
Teacher tch = new Teacher();
Console.Write("Teacher Name : ");
tch.TName = Console.ReadLine();
arylst.Add(tch.TName);
Console.Write("Teacher Family : ");
tch.TFamily = Console.ReadLine();
arylst.Add(tch.TFamily);
Console.Write("Teacher ID : ");
tch.Tid = int.Parse(Console.ReadLine());
arylst.Add(tch.Tid);
ht[tch.Tid] = tch;
}
break;
case 3://Add Course
Console.Write("Number of Course? ");
int CNum = int.Parse(Console.ReadLine());
for (int i = 0; i < CNum; i++)
{
Course crs = new Course();
Console.Write("Course Name : ");
crs.CName = Console.ReadLine();
arylst.Add(crs.CName);
Console.Write("Number of Unit : ");
crs.NumOfUnit = int.Parse(Console.ReadLine());
arylst.Add(crs.NumOfUnit);
ht[crs.NumOfUnit] = crs;
}
break;
case 4://Search Student
Console.Write("Student ID for search : ");
int idforSearch = int.Parse(Console.ReadLine());
if (arylst.Contains(idforSearch))
if (ht.ContainsKey(idforSearch) == true)
{
Student s = ht[idforSearch] as Student;
Console.WriteLine("Student : {0},{1},{2}", s.StName, s.StFamily, s.StID);
}
break;
case 5://Search Teacher
Console.Write("Word for search : ");
string word = Console.ReadLine();
foreach (DictionaryEntry item in ht)
{
Teacher teach = item.Value as Teacher;
if (teach.TFamily.Contains(word))
{
Console.WriteLine("Teacher's family ={0}", teach.TFamily);
}
}
break;
case 6:
Console.Write("Number to compare with Units of Course : ");
int NumUnit = int.Parse(Console.ReadLine());
foreach (DictionaryEntry item in ht)
{
Course cs = item.Value as Course;
if (NumUnit < cs.NumOfUnit)
Console.WriteLine("Course ={0}", cs.CName);
}
break;
}
}
}
}
}