using System.Collections.Generic;
using System.Text.RegularExpressions;
public string Name { get; set; }
public string PhoneNumber { get; set; }
public string Email { get; set; }
public string Role { get; set; }
public Person(string name, string phoneNumber, string email, string role)
PhoneNumber = phoneNumber;
public virtual void DisplayDetails()
Console.WriteLine($"Name: {Name}, Phone: {PhoneNumber}, Email: {Email}, Role: {Role}");
public static bool IsValidEmail(string email)
string pattern = @"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$";
return Regex.IsMatch(email, pattern);
public static bool IsValidPhoneNumber(string phoneNumber)
string pattern = @"^\d{10}$";
return Regex.IsMatch(phoneNumber, pattern);
public class Teacher : Person
public decimal Salary { get; set; }
public List<string> Subjects { get; set; }
public Teacher(string name, string phoneNumber, string email, decimal salary, List<string> subjects)
: base(name, phoneNumber, email, "Teacher")
public override void DisplayDetails()
Console.WriteLine($"Salary: {Salary}, Subjects: {string.Join(", ", Subjects)}");
public class Admin : Person
public decimal Salary { get; set; }
public string EmploymentType { get; set; }
public Admin(string name, string phoneNumber, string email, decimal salary, string employmentType)
: base(name, phoneNumber, email, "Admin")
EmploymentType = employmentType;
public override void DisplayDetails()
Console.WriteLine($"Salary: {Salary}, Employment Type: {EmploymentType}");
public class Student : Person
public DateTime DateOfBirth { get; set; }
public List<string> Subjects { get; set; }
public Student(string name, string phoneNumber, string email, DateTime dateOfBirth, List<string> subjects)
: base(name, phoneNumber, email, "Student")
DateOfBirth = dateOfBirth;
public override void DisplayDetails()
Console.WriteLine($"Date of Birth: {DateOfBirth.ToShortDateString()}, Subjects: {string.Join(", ", Subjects)}");
public class DesktopInformationSystem
private List<Teacher> teachers = new List<Teacher>();
private List<Admin> admins = new List<Admin>();
private List<Student> students = new List<Student>();
Console.WriteLine("Enter Teacher Name:");
string name = Console.ReadLine();
Console.WriteLine("Enter Teacher Phone Number (10 digits):");
string phoneNumber = Console.ReadLine();
Console.WriteLine("Enter Teacher Email:");
string email = Console.ReadLine();
Console.WriteLine("Enter Teacher Salary:");
decimal salary = decimal.Parse(Console.ReadLine());
Console.WriteLine("Enter Teacher Subjects (comma separated):");
List<string> subjects = new List<string>(Console.ReadLine().Split(','));
if (!Person.IsValidPhoneNumber(phoneNumber) || !Person.IsValidEmail(email))
Console.WriteLine("Invalid phone number or email.");
teachers.Add(new Teacher(name, phoneNumber, email, salary, subjects));
Console.WriteLine("Teacher added successfully.");
Console.WriteLine("Enter Admin Name:");
string name = Console.ReadLine();
Console.WriteLine("Enter Admin Phone Number (10 digits):");
string phoneNumber = Console.ReadLine();
Console.WriteLine("Enter Admin Email:");
string email = Console.ReadLine();
Console.WriteLine("Enter Admin Salary:");
decimal salary = decimal.Parse(Console.ReadLine());
Console.WriteLine("Enter Admin Employment Type (Full-time/Part-time):");
string employmentType = Console.ReadLine();
if (!Person.IsValidPhoneNumber(phoneNumber) || !Person.IsValidEmail(email))
Console.WriteLine("Invalid phone number or email.");
admins.Add(new Admin(name, phoneNumber, email, salary, employmentType));
Console.WriteLine("Admin added successfully.");
Console.WriteLine("Enter Student Name:");
string name = Console.ReadLine();
Console.WriteLine("Enter Student Phone Number (10 digits):");
string phoneNumber = Console.ReadLine();
Console.WriteLine("Enter Student Email:");
string email = Console.ReadLine();
Console.WriteLine("Enter Student Date of Birth (yyyy-mm-dd):");
DateTime dob = DateTime.Parse(Console.ReadLine());
Console.WriteLine("Enter Student Subjects (comma separated):");
List<string> subjects = new List<string>(Console.ReadLine().Split(','));
if (!Person.IsValidPhoneNumber(phoneNumber) || !Person.IsValidEmail(email))
Console.WriteLine("Invalid phone number or email.");
students.Add(new Student(name, phoneNumber, email, dob, subjects));
Console.WriteLine("Student added successfully.");
public void ViewAllData()
Console.WriteLine("Displaying all data...");
foreach (var teacher in teachers) teacher.DisplayDetails();
foreach (var admin in admins) admin.DisplayDetails();
foreach (var student in students) student.DisplayDetails();
Console.WriteLine("Enter Role (Teacher/Admin/Student):");
string role = Console.ReadLine();
if (role.Equals("Teacher", StringComparison.OrdinalIgnoreCase))
foreach (var teacher in teachers) teacher.DisplayDetails();
else if (role.Equals("Admin", StringComparison.OrdinalIgnoreCase))
foreach (var admin in admins) admin.DisplayDetails();
else if (role.Equals("Student", StringComparison.OrdinalIgnoreCase))
foreach (var student in students) student.DisplayDetails();
Console.WriteLine("Invalid role entered.");
Console.WriteLine("Enter the Name of the person to delete:");
string name = Console.ReadLine();
var teacher = teachers.Find(t => t.Name.Equals(name, StringComparison.OrdinalIgnoreCase));
teachers.Remove(teacher);
Console.WriteLine("Teacher deleted successfully.");
var admin = admins.Find(a => a.Name.Equals(name, StringComparison.OrdinalIgnoreCase));
Console.WriteLine("Admin deleted successfully.");
var student = students.Find(s => s.Name.Equals(name, StringComparison.OrdinalIgnoreCase));
students.Remove(student);
Console.WriteLine("Student deleted successfully.");
Console.WriteLine("No user found with that name.");
public void DisplayMenu()
Console.WriteLine("\nDesktop Information System Menu:");
Console.WriteLine("1. Add Teacher");
Console.WriteLine("2. Add Admin");
Console.WriteLine("3. Add Student");
Console.WriteLine("4. View All Data");
Console.WriteLine("5. View Data by Role");
Console.WriteLine("6. Delete Data");
Console.WriteLine("7. Exit");
Console.Write("Choose an option: ");
int choice = int.Parse(Console.ReadLine());
case 1: AddTeacher(); break;
case 2: AddAdmin(); break;
case 3: AddStudent(); break;
case 4: ViewAllData(); break;
case 5: ViewByRole(); break;
case 6: DeleteData(); break;
case 7: running = false; break;
default: Console.WriteLine("Invalid choice. Please try again."); break;
public static void Main()
DesktopInformationSystem system = new DesktopInformationSystem();