0% found this document useful (0 votes)
37 views3 pages

Practical 4 Memo

Uploaded by

Desmond
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
37 views3 pages

Practical 4 Memo

Uploaded by

Desmond
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 3

/*Name and surname:

* Student number:
* CSIS1644 Practical 4
* Date:
*/
using System;
using System.IO;
using System.Xml.Serialization; ✓

namespace Timetable
{
class Program
{
static void Main(string[] args)
{
Console.BackgroundColor = ConsoleColor.White;
Console.ForegroundColor = ConsoleColor.Black;
Console.Clear();

string[][] timetable = new string[5][]; ✓✓

InitializeTable(timetable);

//Read current timetable from file


Read(ref✓ timetable);

//Display menu first time


Menu(timetable);

//Save timetable
Save(timetable);

} //Main

private static void Menu(string[][] timetable)


{
char option = ' ';
do
{
//Display the timetable
DisplayTimetable(timetable);

//Display menu possibilties


Console.WriteLine();
Console.WriteLine("\tA. Set entry");
Console.WriteLine("\tB. Clear entry");
Console.WriteLine("\tC. Clear all");
Console.WriteLine("\tS. Save");
Console.WriteLine("\tX. Exit program");
Console.WriteLine();

//Read option
Console.Write("\tOption : ");
option = char.ToUpper(Console.ReadKey().KeyChar);

//Execute appropriate action


switch (option)
{
case 'A': SetEntry(timetable); break;
case 'B': ClearEntry(timetable); break;
case 'C': ClearAll(timetable); break;
case 'S': Save(timetable); break;
case 'X': case 'x': break;
} //switch

} while (option != 'X');//Run program as long as the user does not select "X"

} //Menu
private static void✓ InitializeTable(string[][] timetable) ✓
{
for (int i = 0; i < timetable.Length; i++)✓
timetable[i] = new string[15]; ✓
}

private static void DisplayTimetable(string[][] timetable)


{
Console.Clear();

//Write headers
Console.WriteLine("\t" + "".PadRight(80, '='));
Console.Write("\t|" + "Period".PadRight(8) + "|");
foreach (string day in new string[] { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" })
Console.Write(day.PadRight(13) + "|");
Console.WriteLine();
Console.WriteLine("\t" + "".PadRight(80, '='));

//Write entries
for (int period = 1; period <= 15; period++)
{
Console.Write("\t|" + period.ToString().PadRight(8) + "|");
for (int day = 1; day <= 5; day++)
Console.Write(GetEntry(timetable, period, day) ✓.PadRight(13) + "|");
Console.WriteLine();
if (period < 15)
Console.WriteLine("\t" + "".PadRight(80, '-'));
} //for period
Console.WriteLine("\t" + "".PadRight(80, '='));

} //DisplayTimetable
private static string GetEntry(string[][] timetable, int period✓, int day✓)
{
string entry = timetable[day - 1][period - 1]; ✓
if (entry == null) ✓
return "";✓
return entry; ✓
} //GetEntry
private static void SetEntry(string[][] timetable)
{
Console.Clear();
Console.WriteLine("\tSet entry");
Console.WriteLine();

Console.Write("\tDay (1-5): ");


if (int.TryParse(Console.ReadLine(), out int day) ✓ && day >= 1✓ && day <= 5✓)
{
Console.Write("\tPeriod (1-15): ");
if (int.TryParse(Console.ReadLine(), out int period) ✓ && period >= 1 && period <= 15✓)
{
Console.Write("\tEntry: ");
string entry = Console.ReadLine();✓
timetable[day - 1][period - 1] = entry; ✓
} //period valid
} //day valid ✓nested if statements
} //SetEntry
private static void ClearEntry(string[][] timetable)
{
Console.Clear();
Console.WriteLine("\tClear entry");
Console.WriteLine();
Console.Write("\tDay (1-5): ");
if (int.TryParse(Console.ReadLine(), out int day) ✓ && day >= 1 && day <= 5✓)
{
Console.Write("\tPeriod (1-15): ");
if (int.TryParse(Console.ReadLine(), out int period) ✓ && period >= 1 && period <= 15✓)
{
timetable[day - 1][period - 1] = null; ✓
} //if period valid
} //if day valid
} //ClearEntry
private static void ClearAll(string[][] timetable)
{
Console.Clear();
Console.WriteLine("\tClear all");
Console.WriteLine();

Console.Write("\tSure (Y/N)? ");


char isSure = char.ToUpper(Console.ReadKey().KeyChar);
if (isSure == 'Y')
{
InitializeTable(timetable); ✓
}
} //ClearAll

public static void Save(string[][] timetable)


{
using✓ (FileStream fs = new FileStream("Timetable.xml", FileMode.Create) ✓)
{
XmlSerializer serializer = new XmlSerializer(typeof(string[][]));✓
serializer.Serialize(fs, timetable); ✓
}
} //Save

public static void Read(ref✓ string[][] timetable)


{
if✓ (File.Exists("Timetable.xml")✓)
{
XmlSerializer serializer = new XmlSerializer(typeof(string[][]));✓
using✓ (FileStream fs = new FileStream("Timetable.xml", FileMode.Open) ✓)
{
timetable = (string[][])serializer.Deserialize(fs); ✓
}
}
else
ClearAll(timetable); ✓
} //Read
} //class Client
} //namespace

You might also like