Hospital Management System
2024.9.18 控制台医院系统
在本作业中,您需要通过使用 C# 开发控制台应用程序来对 dotnet Hospital Management System 进行建模 应用程序应具有适当的数据结构来区分医生、管理员和患者,并存储它们之间的必要链接(例如,医生和患者之间的预约)
对象应存储在系统中,并写入 .txt 文件,以便系统可以在加载时读入它们并重新生成现有对象。这是强制性的。在 dotnet Hospital Management System 中,用户可以以患者、医生或管理员身份登录。这些是不同的角色,它们将存储不同的信息,并且具有不同的菜单
此外,您的代码还需要生成 Appointments。预约需要提及一位医生和一位患者;您的代码结构应反映这一点。您无需在代码中管理 Dates/times for appointments(或任何地方)。这可能会导致约会难以区分和排序;您不会因此而被扣分。
每个患者、医生和管理员都有一个唯一的 ID。此 ID 应为长度合理的整数(5-8 位数字)。这可以是随机生成的,也可以是增量的,但它应该由系统在创建对象时生成,而不是由用户选择/输入。
任何患者/医生或管理员都应该有一个唯一的 ID ,因此登陆不需要选择类型,应该直接通过id判断类型,在保存用户的时候,应该加上类型
对象需要一个一个地打印出来,建议每个数据结构都有一个 toString() 函数,该函数将类的重要数据压缩成一行简洁。
每个角色都应该是它自己的类,并且它应该有自己的 MainMenu 方法,不要试图在 Program.cs 中创建单独的菜单版本。
不要被管理员混淆。医生和患者在任何阶段都不能拥有“管理员权限”;管理员是一个完全独立的实体。
您可能会发现将通用功能抽象到其自己的类中很有用,例如具有静态读写方法的 FileManager 类或包含生成 ID 和过滤器列表的方法的 Utils 类。
用户应在程序启动时看到此菜单,如果不输入有效的登录详细信息,则无法继续操作。输入字段: ID:按原样显示键入的字符
密码:显示“*”而不是实际字符,应根据文件中的有效凭据检查 ID 和密码。如何执行此操作取决于您如何构建课程;但任何患者/医生或管理员都应该有一个唯一的 ID 和一个密码。这些值应该以某种方式存储在 .txt 文件中,您的代码应该在此屏幕上交叉检查该文件。如果输入的值无效,则显示相应的错误消息并允许用户重试。
患者菜单应包含以下所有菜单选项
1.List patient details2.List my doctor details3.List all appointments4. Book appointment5. Exit to login6. Exit System
所有菜单选项都必须共享此功能(请参阅下面的示例):
控制台清空以显示新数据
在打印数据之前显示适当的标题
错误用户输入的错误处理
Menu 不应自行返回,用户应该能够按单个键返回。输入:按下键返回菜单。
列出控制台当前登录患者的所有字段。 Patient ID:13267 ,Full Name: Address ,NSIEmail:, phone:
列出我的医生详细信息Name, Email Address ,phone Address
列出所有预约 功能:列出涉及当前登录患者的所有过去预约的详细信息。Doctor Patient Description
预约 功能:提示用户输入生成新约会所需的所有信息。这必须由用户注册的医生来完成。如果用户尚未注册医生,则应提示他们从所有医生列表中进行选择并注册。
用于选择 doctor 的 Integer(如果适用)
生成 Doctor 数据结构所需的所有信息
按键返回菜单。
医生菜单
医生菜单应包含以下所有菜单选项 所有菜单选项都必须共享此功能:Please choose an option:1. List doctor details2. List patients
3. List appointments
4. Check particular patient
5. List appointments with patient6. Logout
7. Exit
列出医生详细信息
功能:列出控制台当前登录的医生的字段。Name, Email Address ,phone Address
列出患者
功能:逐行列出在控制台的当前登录医生处注册的每位患者的速记大纲。建议 Patient 数据结构具有 toString 函数,该函数将患者的必要详细信息压缩为一行短行。
列出预约 Doctor Patient Description
功能:在控制台上逐行列出涉及当前登录医生的每个预约,无论涉及哪个患者。建议 Appointment 数据结构具有 toString 函数,该函数将约会的必要详细信息压缩为一行短行。
检查特定患者
功能:提示用户输入 ID,并将 ID 所属的患者的详细信息逐行打印到控制台。如果没有具有该 ID 的患者,则代码应处理错误并输出相应的错误消息。您可以选择是否提示用户重新输入 ID,或者程序是否返回到 Patient 菜单。
Patient Doctor Email Address ,phone Address
列出与患者的预约
功能:提示用户输入 ID 并查找具有该 ID 的患者。然后,您的代码应打印该患者与当前登录的医生之间的每个预约。(您不需要过滤此列表,因为患者应该被迫只注册 1 名医生)。如果没有具有该 ID 的患者,则代码应处理错误并输出相应的错误消息。您可以选择是否提示用户重新输入 ID,或者程序是否返回到 Patient 菜单。Doctor Patient Description
管理员菜单
管理员菜单应包含以下所有菜单选项
Please choose an option:
1. List all doctors
2. Check doctor details
3. List all patients
4. Check patient details
5. Add doctor
6. Add patient7. Logout
8. Exit
所有菜单选项都必须共享此功能:
列出所有医生
功能:逐行列出系统中包含的每个医生的速记版本。建议 Doctor 数据结构具有 toString 函数,该函数将 doctor 的必要详细信息压缩为一行短行。Name, Email Address ,phone Address
查看医生详细信息
功能:提示用户输入 ID,并将 ID 所属的医生的详细信息逐行打印到控制台。如果没有具有该 ID 的医生,则您的代码应处理错误并打印相应的错误消息。您可以选择是否提示用户重新输入 ID,或者程序是否返回到 Administrator 菜单。Name, Email Address ,phone Address
列出所有患者
功能:逐行列出系统中每个患者的速记版本到控制台。建议 Patient 数据结构具有 toString 函数,该函数将患者的必要详细信息压缩为一行短行。Patient Doctor Email Address ,phone Address
查看患者详细信息
功能:提示用户输入 ID,并将 ID 所属的医生的详细信息逐行打印到控制台。如果没有具有该 ID 的医生,则您的代码应处理错误并打印相应的错误消息。您可以选择是否提示用户重新输入 ID,或者程序是否返回到 Administrator 菜单。Patient Doctor Email Address ,phone Address
添加医生
功能:提示用户输入生成新 Doctor 并将其添加到系统所需的所有必要数据。Registering a new doctor with the DOTNET Hospital Management SystemFirst
Name: Dr
Last Name: Avinash
Email: avinash@dnhms.comPhone: 04123123
street Number: 45street: Real Placecity: Sydney
state: NSw
添加患者
功能:提示用户输入生成新 Patient 并将其添加到系统所需的所有必要数据。Registering a new patient with the DOTNET Hospital Management SystemFirst
Name : Davey
Last Name : Flu
Email: verysick@gmail.comPhone: 04123123
street Number: 87street: Real Placecity: sydney
state: NSw
具有适当的数据结构来区分医生、管理员和患者,并存储它们之间的必要链接(例如,医生和患者之间的预约)
对象应存储在系统中,并写入 .txt 文件,以便系统可以在加载时读入它们并重新生成现有对象
用户可以以患者、医生或管理员身份登录。这些是不同的角色,它们将存储不同的信息,并且具有不同的菜单
需要生成 Appointments。预约需要提及一位医生和一位患者;您的代码结构应反映这一点。您无需在代码中管理 Dates/times for appointments(或任何地方)。这可能会导致约会难以区分和排序;您不会因此而被扣分。
每个患者、医生和管理员都有一个唯一的 ID。此 ID 应为长度合理的整数(5-8 位数字)。这可以是随机生成的,也可以是增量的,但它应该由系统在创建对象时生成,而不是由用户选择/输入。
对象需要一个一个地打印出来,建议每个数据结构都有一个 toString() 函数,该函数将类的重要数据压缩成一行简洁。
每个角色都应该是它自己的类,并且它应该有自己的 MainMenu 方法,不要试图在 Program.cs 中创建单独的菜单版本。
不要被管理员混淆。医生和患者在任何阶段都不能拥有“管理员权限”;管理员是一个完全独立的实体。
- 您可能会发现将通用功能抽象到其自己的类中很有用,例如具有静态读写方法的 FileManager 类或包含生成 ID 和过滤器列表的方法的 Utils 类。
Task
Max
项目
点
-菜单的适当标题
2
基本控制台设计
有用的评论
-适当的缩进和白间距
2
-使用一致且适当的C#命名约定
使用的OOP原则:
Console Code和
-至少1个继承示例
设计
-至少使用了1个方法重载示例-至少使用了1个方法覆盖示例
6
至少1个constructor示例
至少1个扩展方法示例-至少1个垃圾回收示例适当使用异常处理
2
低耦合、高内聚、通用代码质量
2
功能包括使用.txt文件交叉检查凭证
1.5
登录菜单
控制台中屏蔽的密码输入
1.5
列出患者详细信息
列出我的医生详细信息
患者菜单
列出所有预约
Book Appointment,功能包括创建Appointment 对象和写入txt文件
列出医生详细信息列出患者
医生菜单
列出预约检查特定患者列出与患者的预约列出所有医生查看医生详细信息列出所有患者
管理员菜单
查看患者详细信息添加医生
1.5
添加患者
1.5
注销/退出
所有3个菜单的注销功能和退出功能
最高满分
-使用匿名方法的一个示例-使用一个通用示例
3
-使用一个示例委托
额外分数
电子邮件功能(例如确认患者注册或确认预订)
其他用户角色(例如接待员)