日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

设计一个医院

發(fā)布時(shí)間:2023/12/1 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设计一个医院 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

源于個(gè)人網(wǎng)站:http://programmer.2008red.com/programmer/article_647_777_1.shtml

?

?

收到一封來自Exoweb的郵件,讓去面試(敗的很慘,呵呵。過了好長時(shí)間了,都忘記這事了,結(jié)果這公司來了郵件,說不能提供給我職位,還安慰我。不過就不過是了,弄這些做什么,害我出了一肚子火),就查了查這個(gè)公司。以前去面試過的前輩提到了他們會(huì)讓我們設(shè)計(jì)醫(yī)院,學(xué)校之類的東東,覺得應(yīng)該先自己嘗試做一下,就做了!

?

?

?病人Patient分別在各個(gè)部門掛號,交費(fèi),然后檢查身體,具體的動(dòng)作由各個(gè)部門去做(operation)。

?病人與部門分開,使用組合/聚合關(guān)系,個(gè)人覺得有點(diǎn)橋梁模式的意思!

假如將來醫(yī)院增加新的部門,只要在Patient和Department下增加單層的子類就可以了。

?

具體代碼:

using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;

namespace Hospital
{
??? delegate void UpdateDelegate();


??? abstract class? Patient
??? {
??????? protected string name;

??????? public string Name
??????? {
??????????? get { return this.name;? }
??????????? set { this.name = value; }
??????? }

????????????
??? }

??? class Register:Patient
??? {
??????
??? }

??? class Payer:Patient
??? {
??????
??? }

??? class Inspector:Patient
??? {
??????
??? }

??? interface Department
??? {
??????? void Operation();
??? }


??? class Registe:Department
??? {
??????? public Patient patient;

??????? public Registe(Patient register)
??????? {
??????????? this.patient = register;
??????? }

??????? public void Operation()
??????? {
??????????? Console.WriteLine(this.patient.Name + "已登記!");
??????? }
???????
??? }

??? class Pay:Department
??? {
??????? public Patient patient;

??????? public Pay(Patient payer)
??????? {
??????????? this.patient = payer;
??????? }

??????? public void Operation()
??????? {
??????????? Console.WriteLine(this.patient.Name+"已交錢!");
??????? }
??? }

??? class Inspecte:Department
??? {
??????? public Patient patient;

??????? public Inspecte(Patient inspector)
??????? {
??????????? this.patient = inspector;
??????? }

??????? public Patient Patients
??????? {
??????????? get { return this.patient; }
??????????? set { this.patient = value; }
??????? }

??????? public void Operation()
??????? {
??????????? Console.WriteLine(this.patient.Name + "已治療!");
??????? }
??? }

?

??? class Treatment
??? {
??????? public Department[]? dm=new Department[3];
????????????
??????? public Treatment(Patient d1,Patient d2,Patient d3)
??????? {
??????????? dm[0]=new Registe(d1);
??????????? dm[1] = new Pay(d2);
??????????? dm[2] = new Inspecte(d3);
??????? }

??????? public void run()
??????? {
??????????? dm[0].Operation();
??????????? dm[1].Operation();
??????????? dm[2].Operation();
??????? }
??? }

??? class Program
??? {
??????? static void Main(string[] args)
??????? {

??????????? string name = "zhong";
??????????? Register r1 = new Register();
??????????? Payer p1 = new Payer();
??????????? Inspector i1 = new Inspector();
??????????? r1.Name = name;??????????
??????????? p1.Name = name;???????????
??????????? i1.Name = name;
??????????? Treatment tm = new Treatment(r1,p1,i1);
??????????? tm.run();

??????????? Console.ReadLine();
???????????
??????? }
??? }
}

掛號,交費(fèi),檢查可以設(shè)置成一個(gè)觀察者模式,在C#里當(dāng)然是用委托來做最好了。

還可以設(shè)置很多病人,排隊(duì)來看病。這可以用一個(gè)Arraylist或哈希表來存儲各個(gè)病人的信息,用循環(huán)輸出。

由于這是我寫的第一個(gè)有關(guān)模式的文章,時(shí)間上也有點(diǎn)緊,不但上面的想法沒去實(shí)現(xiàn),可能還有一些我不

知道的錯(cuò)誤缺點(diǎn)列在其中,希望大家原諒并指正。

?

希望自己能盡快實(shí)現(xiàn)這些沒完成的想法。

?

和宿舍的人出去吃了個(gè)飯,今天端午,呵呵,晚上十二點(diǎn)回到宿舍后一點(diǎn)也不想睡,又開始寫了起來,呵呵!

下面為用一個(gè)ArrayList記錄病人的修改。

?

?{

?? ***

?class Treatment
??? {
??????
??????? public Department[]? dm=new Department[3];
??????? public ArrayList list = new ArrayList();

??????? public void show(string name)
??????? {
??????????? Register r1 = new Register();
??????????? Payer p1 = new Payer();
??????????? Inspector i1 = new Inspector();
??????????? r1.Name = name;
??????????? p1.Name = name;
??????????? i1.Name = name;
??????????? dm[0] = new Registe(r1);
??????????? dm[1] = new Pay(p1);
??????????? dm[2] = new Inspecte(i1);
??????????? dm[0].Operation();
??????????? dm[1].Operation();
??????????? dm[2].Operation();
??????? }


??????? public void add(string name)
??????? {
??????????? list.Add(name);
??????? }

??????? public void remove(string name)
??????? {
??????????? list.Remove(name);
??????? }

??????? public void run()
??????? {
??????????? foreach (string uh in list)
??????????? {
??????????????? show(uh);
??????????? }
?????????
??????? }
??? }

??? class Program
??? {
??????? static void Main(string[] args)
??????? {
??????????? Treatment tm = new Treatment();

??????????? string name = "zhong";??????
??????????? tm.add(name);???????????????????
??????????? tm.add("liu");
?????????? // tm.remove("zhong");
??????????? tm.run();

??????????? Console.ReadLine();
???????????
??????? }
??? }

}

這塊是使用委托處理的程序:

?

?

{

? ***

?class Subject
??? {
??????? public event UpdateDelegate UpdateHandler;
??????? public void add(UpdateDelegate ud)
??????? {
??????????? UpdateHandler += ud;
??????? }

??????? public void remove(UpdateDelegate ud)
??????? {
??????????? UpdateHandler -= ud;
??????? }

??????? public void run()
??????? {???????????
??????????? if (UpdateHandler != null)
??????????????? UpdateHandler();???????????
??????? }
??? }

??? class Treatment
??? {
???????
??????? public Department[]? dm=new Department[3];
??????? public ArrayList list = new ArrayList();

??????? public Treatment(string name)
??????? {
??????????? Register r1 = new Register();
??????????? Payer p1 = new Payer();
??????????? Inspector i1 = new Inspector();
??????????? r1.Name = name;
??????????? p1.Name = name;
??????????? i1.Name = name;
??????????? dm[0] = new Registe(r1);
??????????? dm[1] = new Pay(p1);
??????????? dm[2] = new Inspecte(i1);?
??????? }

??????? public void show()
??????? {
??????????? dm[0].Operation();
??????????? dm[1].Operation();
??????????? dm[2].Operation();
??????? }
???????
??? }

??? class Program
??? {
??????? static void Main(string[] args)
??????? {
??????????? Treatment t1 = new Treatment("zhong");
??????????? Treatment t2 = new Treatment("liu");

??????????? Subject sj = new Subject();
??????????? sj.add(new UpdateDelegate(t1.show));
??????????? sj.add(new UpdateDelegate(t2.show));
????????? //? sj.remove(new UpdateDelegate(t1.show));
??????????? sj.run();
????????????
??????????? Console.ReadLine();
???????????
??????? }
??? }

}

?

?

分別實(shí)現(xiàn)了ArrayList和委托來處理多人的情況。也算是運(yùn)用了觀察者模式了。

轉(zhuǎn)載于:https://www.cnblogs.com/sqlite3/archive/2009/06/06/2566671.html

總結(jié)

以上是生活随笔為你收集整理的设计一个医院的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。