Friday, 17 February 2017

LEARNING ABOUT MANAGEMENT SOFTWARE & STAKEHOLDER

Apa yang dimaksud Manajemen Perangkat Lunak ?

Manajemen perangkat lunak adalah aktifitas dalam mengelola rekayasa perangkat lunak, dimulai sebelum aktifitas teknis di inisialisasi dan berlanjut pada keseluruhan batasan, perkembangan dan pemeliharaan perangkat lunak komputer.

Terdapat 3 fokus manajemen perangkat lunak, antara lain :

  • People (manusia)
Manusia harus mempertinggi kesiapan organisasi perangkat lunak untuk mengerjakan aplikasi yang semakin kompleks
  • Problem (masalah)
Permasalahan dalam manajemen perangkat lunak adalah mengenai objektifitas dan ruang lingkup perangkat lunak harus ditetapkan, pemecahan alternatifnya harus dipertimbangkan, teknik dan batasanpun harus didefinisikan
  • Process (proses)
Proses dalam manajemen perangkat lunak ialah memberikan suatu kerangka kerja dimana rencana harus bersifat komprehensif bagi pengembangan perangkat lunak.

Apa yang dimaksud Stakeholder ?

Stakeholder adalah suatu kelompok, komunitas maupun individu manusia yang memiliki hubungan dan kepentingan terhadap suatu organisasi atau perusahaan.

Dalam hal ini kita akan membahas stakeholder dalam suatu proyek perangkat lunak atau siapa saja orang yang terlibat di dalam proyek tersebut. Terdapat 7 peran pemain dalam sebuah proyek perangkat lunak, yaitu :

Senior Manager (manajer senior)
Manajer senior adalah orang yang berperan dalam menentukan isu - isu bisnis.

Project Manager (manajer proyek secara teknis)
Manajer proyek adalah orang yang berperan dalam memimpin pembuatan proyek perangkat lunak

Programmer / Engineer (pelaksana)
Pelaksana adalah orang yang membangun atau membuat perangkat lunak.

Client (pelanggan)
Pelanggan adalah orang yang menentukan jenis kebutuhan bagi perangkat lunak.

End-Users (pengguna akhir)
Pengguna akhir adalah orang yang berinteraksi langsung dengan perangkat lunak.

System Analyst (Analis)
System Analyst berperan dalam melakukan debugging aplikasi.

Investor (penanam modal)
Investor atau yang disebut juga sebagai penanam modal adalah orang yang menyediakan dana dalam pembangunan proyek perangkat lunak. Tidak semua proyek perangkat lunak memiliki investor.

Triple Contstaint

Dalam memimpin sebuah pembuatan proyek perangkat lunak tentu terdapat beberapa aspek yang dinilai sebagai penentu kredibiltas dari sebuah organisasi atau perusahaan pembangun perangkat lunak, sehingga akan menjadi kekhawatiran tersendiri bagi seorang manajer proyek. Aspek aspek tersebut diantaranya adalah Time(waktu), Cost(biaya) dan Scope(kinerja/mutu) atau lebih dikenal dengan Triple Constraint.



Time (waktu)

Proyek harus dikerjakan sesuai dengan kurun waktu yang telah ditentukan. Penyerahan proyek 'tidak boleh' melewati batas waktu yang telah ditentukan karena dianggap berpengaruh terhadap aspek - aspek lain yang akan menimbulkan kerugian.

Cost (biaya/anggaran)

Proyek harus diselesaikan dengan biaya yang tidak melebihi anggaran. Untuk proyek-proyek yang melibatkan dana dalam jumlah besar dan jadwal yang bertahun tahun, anggarannya tidak hanya ditentukan untuk total proyek, tetapi dipecah-pecah berdasarkan komponen-komponennya, atau berdasarkan periode tertentu (misal per kuartal). Dengan demikian, penyelesaian bagian-bagian proyek pun harus memenuhi sasaran anggaran per periode.

Scope (kinerja/mutu)

Produk akhir proyek harus memenuhi spesifikasi dan kriteria yang dipersyaratkan. Memenuhi persyaratan mutu berarti mampu memenuhi tugas yang dimaksudkan (fit for the intended use).

Tahapan - Tahapan Pembangunan Proyek Perangkat Lunak
  1. Komunikasi pelanggan, yaitu mencatat kebutuhan pelanggan.
  2. Perencanaan, yaitu mendefinisikan sumber daya dan jadwal.
  3. Analisis resiko, yaitu menafsir resiko baik teknis maupun manajemen.
  4. Rekayasa, yaitu membangun satu atau lebih representasi aplikasi.
  5. Konstruksi, yaitu mengkonstruksi, menguji, menginstal dan pelatihan.
  6. Evaluasi pelanggan, yaitu umpan balik dari pelanggan selama implementasi.

Elemen Utama Aturan Manajemen

Struktur tim "terbaik" tergantung pada gaya manajemen sebuah organisasi. Ada 3 jenis organisasi tim yang umum, yaitu :
  • Demokratis Desentralisasi
Pemimpin tidak permanen, tugasnya pendek, koordinator berganti, keputusan dibuat oleh konsensus kelompok, komunikasi bersifat horisontal.
  • Terkontrol Desentralisasi
Pemimpin primer mengkoordinasi tugas khusus dan pemimpin sekunder bertanggung jawab atas sub-sub masalah. Komunikasi horisontal tapi kontrol dilakukan vertikal.
  • Terkontrol Sentralisasi
Koordinasi pemecahan masalah dilakukan di pimpinan puncak dan dibentuk tim internal. Komunikasi secara vertikal.


Model - Model Pembangunan Proyek Perangkat Lunak 

1. Sekuensial Linier (waterfall)

  • Analisis kebutuhan perangkat lunak dengan melakukan pengumpulan kebutuhan, domain informasi, dan unjuk kerja dari antar muka yang diperlukan
  • Desain yaitu struktur data, arsitektur perangkat lunak, representasi interface, algoritma detail.
  • Kode/Coding yaitu malekukan pengubahan kedalam bentuk bahasa mesin.
  • Pengujian dengan logika internal perangkat lunak yaitu memastikan semua sesuai dengn keinginan.
2. Prototipe


3. RAD (Rapid Application Development)
    Pengembangan sekuential linier yang dipercepat dengan menggunakan pendekatan konstruksi 
    berbasis komponen.


   Bila sistem tidak dapat dimodulkan secara sistematis / teratur, komponen pengembangan RAD akan 
   menjadi problematis. RAD menekankan perkembangan komponen program yang dapat Reusable.


4. SPIRAL
    Model proses perangkat lunak yang evalusioner, yang merangkai sifat interaktif dari prototipe
    dengan cara melakukan kontrol dan merupakan aspek sistematis dari model sekuensial liniear.




Mengukur Kualitas Perangkat Lunak 

Pada saat kualitas meningkat, kesalahan manjadi minimal dan selagi kesalahan berkurang, jumlah kerja ulang yang dibutuhkan selama proyek berlangsung juga berkurang. Dengan demikian pembiayaan proyek secara keseluruhan dapat berkurang.

Glib T. mendefinisikan ukuran kualitas perangkat lunak dapat dilihat dari beberapa aspek, yaitu :
a. Cacat per KLOC, yaitu dimana cacat diartikan kurangnya kesesuaian dengan persyaratan.
b. Maintanabilitas, kemudahan dimana program dapat dikoreksi jika ditemukan kesalahan, dapat
    beradaptasi jika lingkungan berubah. Mudah dikembangkan bila pelanggan menginiginkan
    perubahan.
c. Integritas, kemampuan sistem untuk menahan serangan terhadap sekuritasnya. Serangan dapat
    berupa virus maupun hacker yang mengganggu program data maupun dokumen.
    
    Ancaman : kemungkinan serangan yang terjadi dalam periode waktu yang ditentukan.
d. Usabilitas, yaitu usaha untuk mengukur user friendly dengan 4 karakter yakni
    - Keterampilan fisik atau intelektual untuk mempelajari sistem.
    - Waktu yang diperlukan untuk menggunakan sistem
    - Penilaian subjektifitas terhadap sistem (menggunakan kuisioner)
    - Peningkatan produktifitas ketika sistem digunakan.



Contoh Proyek

Aplikasi Otomatisasi Pembuatan Surat Tugas Vendor PT. Telkomsel Yogyakarta

Deskripsi :
Aplikasi berbasis web "Otomatisasi Surat Tugas" dibangun dengan tujuan untuk pemangkasan antrian serta antisipasi adanya hal-hal yang tidak diinginkan sehingga akan menimbulkan kerugian pada pihak PT. Telkomsel divisi Networking Operation Yogyakarta.

Screenshot :

Stakeholders :

  • Client : Supervisor dan staff supervisor PT. Telkomsel divisi Networking Operation    Yogyakarta.
  • Project Manager : Staff supervisor dan Mahasiswa Internship dari Teknik Informatika ITS.
  • Programmer / Engineer : Mahasiswa Internship dari Teknik Informatika ITS.
  • System Analyst : Mahasiswa Internship dari Teknik Informatika ITS.
  • End-Users : Admin PT. Telkomsel divisi Networking Operation Yogyakarta & Vendor terkait.
Biaya :
Dalam pembuatan aplikasi ini membutuhkan biaya $10 untuk pembelian server.


Semoga bermanfaat, Terimakasih.







Sumber :
http://file.upi.edu/Direktori/FPMIPA/PRODI._ILMU_KOMPUTER/WAHYUDIN/MANAJEMEN_PROYEK_PERANGKAT_LUNAK.pdf
https://erozzgerrard.wordpress.com/2011/11/29/manajemen-proyek-perangkat-lunak/

Tuesday, 15 November 2016

FROM DESIGN TO CODE AN INFORMATION SYSTEM

Rangkaian sistem informasi sebuah rumah sakit ini dianalisa oleh :
  • Wida Dwitiayasa                  (5114100155)
  • Saddhana Artha Daniswara  (5114100191)

Kebutuhan data dan informasi semakin meningkat dan mencakup berbagai aspek. Begitu pula dalam bidang kesehatan khususnya rumah sakit. Guna menentukan kebijakan di bidang upaya kesehatan, rumah sakit wajib membuat pelaporannya. Pelaporan rumah sakit yang baik dan benar bergantung pada data rumah sakit, sehingga di perlukan sebuah sistem manajemen yang mengatur serta mengawasi bagaimana cara mengisi dan mengolah data rumah sakit yang lebih di kenal dengan Sistem Informasi Manajemen Rumah Sakit.
Sistem Informasi Manajemen Rumah Sakit adalah suatu proses pengumpulan, pengolahan dan penyajian data rumah sakit se-Indonesia. Sistem Informasi ini mencakup semua rumah sakit umum maupun khusus, baik yang dikelola secara publik maupun privat sebagaimana diatur dalam Undang-Undang Republik Indonesia Nomor 44 Tahun 2009 tentang Rumah Sakit. 
SIMRS yang berlaku saat ini adalah SIMRS revisi 6 tahun 2011 dimana SIMRS VI ini merupakan penyempurnaan dari SIMRS Revisi V yang disusun berdasarkan masukan dari tiap Direktorat dan Sekretariat dilingkungan Direktorat Jenderal Bina Upaya Kesehatan. Hal ini diperlukan agar dapat menunjang pemanfaatan data yang optimal serta semakin meningkatnya kebutuhan data saat ini dan yang akan datang.


UML diagrams :

Our use case diagram can accessed on link 
Our class diagram can accessed on link 
Our sequence diagram can accessed on link 

Our deployment diagram can accessed on link 

Our activity diagram can accessed on link 


CRC card :

Our crc card can accessed on link


Source code :

Our source code is available on c++ language and you can access it on the link below


Reference :
Buku JUKNIS SIRS 2011-buk.depkes.go.id

Semoga bermanfaat, terimakasih!

Friday, 11 November 2016

DATA WAREHOUSE ARCHITECTURE ANALYSIS

Menyadari sulitnya mencari informasi yang lengkap dan akurat mengenai ragam arsitektur perangkat lunak, maka saya tergerak untuk mempublikasikan hasil analisis saya terhadap salah satu arsitektur tersebut yaitu arsitektur data warehouse. Dengan harapan postingan saya ini dapat memudahkan junior junior saya dalam mengerjakan tugas mata kuliah analisis perancangan sistem informasi.




Definisi :
Sebuah kerangka dengan mengidentifikasikan dan memahami bagaimana data akan pindah melalui sistem dan digunakan dalam perusahaan.


Karakteristik :
  • Data diambil dari sistem asal (sistem informasi yang ada), basis data dan file.
  • Data dari sistem asal akan diintegrasikan dan ditransformasi sebelum disimpan ke dalam Database Management System (DBMS).
  • Data warehouse adalah basis data terpisah yang sifatnya hanya read-only yang dibuat secara khusus untuk mendukung pengambilan keputusan.
  • User mengakses data warehouse melalui aplikasi front end tool
Kelebihan Data Warehouse
  1. Data terorganisir dengan baik untuk query analisis dan sebagai bahan yang baik untuk proses transaksi.
  2. Perbedaan struktur data yang banyak macamnya dari sumber yang berbeda dapat di atasi.
  3. Memiliki aturan transformasi untuk memvalidasi dan menkonsolidasi data dari OLTP ke datawarehouse.
  4. Masalah keamanan dan kinerja dapat dipecahkan tanpa perlu mengubah sistem produksi.
  5. Memiliki model data yang banyak macamnya, dan tidak tergantung dari format data awal/sumbernya, sehingga memudahkan dalam menciptakan laporan.
  6. Proses transformasi/ perpindahan dapat di monitoring. jika terjadi kesalahan dapat di arahkan / di luruskan.
  7. Informasi yang disimpan dalam datawarehouse, jadi ketika OLTP data sumber nya hilang. informasi yang diolah tetap terjaga dalam suatu datawarehouse.
  8. Data Warehouse tidak memperlambat kerja operasional transaksi.
  9. Dapat menyediakan laporan yang bermacam-macam.

Kekurangan Data Warehouse 
  1. Datawarehouse bukan merupakan lingkungan yang cocok untuk data yang tidak terstruktur.
  2. Data perlu di ekstrak, diubah (ETL) dan di load ke datawarehouse sehingga membutuhkan tenggang waktu untuk memindahkannya.
  3. Semakin lama dipelihara, semakin besar biaya untuk merawat sebuah datawarehouse.
  4. Datawarehouse dapat menjadi ketinggalan dari data terbaru yang relatif cepat, karena data yang digunakan di datawarehouse tidak di update secara cepat. sehingga data yang ada tidak optimal.
Overview : https://youtu.be/8lHpioyvSng

Sources :


Sunday, 30 October 2016

COMPONENT DIAGRAM AND DEPLOYMENT DIAGRAM OF HOSPITAL MANAGEMENT SYSTEM

COMPONENT DIAGRAM

• Component Diagram menunjukkan struktur dan hubungan antar komponen software termasuk ketergantungan (dependency) diantara komponen-komponen tersebut.
• Tujuan dari komponen diagram adalah :
  •    Memvisualisasikan komponen dari suatu sistem
  •    Membangun file-file yang dapat dieksekusi dengan menggunakan teknik forward and reverse engineering
  •    Menjelaskan organisasi dan hubungan dari komponen.
• Diagram komponen ini sangat penting karena jika diagram komponen dilewatkan maka aplikasi tidak dapat dilaksanakan secara efisien. Diagram komponen yang dipersiapkan dengan baik juga sangat penting untuk aspek-aspek lain dalam aplikasi misalnya kinerja (performance), perawatan (maintenance) dll.




DEPLOYMENT DIAGRAM
• Diagram deployment menunjukkan tata letak sebuah sistem secara fisik, menampakkan bagian-bagian software yang berjalan pada bagian-bagian hardware yang digunakan untuk mengimplementasikan sebuah sistem dan keterhubungan antara komponen-komponen hardware tersebut.


• Penggambaran arsitektur fisik sebuah aplikasi yang melibatkan perangkat baik perangkat lunak maupun perangkat keras- yang biasanya nanti disebut dengan Node- dan menunjukkan bagaimana komponen perangkat lunak dan keras ini bekerja sama akan digambarkan dalam diagram deployment

                           

Sumber :

09-Component Diagram.pptx - elista:. - elearning ista
https://fajarbaskoro.blogspot.co.id/2016/10/component-diagram.html

Sunday, 23 October 2016

ACTIVITY DIAGRAM OF HOSPITAL MANAGEMENT SYSTEM

Activity diagram adalah diagram yang menggambarkan aliran aktivitas dari sebuah sistem perangkat lunak sehingga diagram ini bukan berfokus terhadap apa yang dilakukan aktor melainkan apa saja yang dapat dilakukan suatu sistem. Berikut macam - macam komponen yang ada pada activity diagram :

  • Activity atau state yang berfungsi menunjukkan aktivitas yang dilakukan
  • Initial activity atau initial state yang berfungsi untuk menunjukkan awal aktivitas dimulai.
  • Final activity atau final state yang berfungsi meumjukkan bagian akhir dari aktivitas.
  • Decission yang digunakan untuk memastikkan bahwa aliran object mengalir ke lebih dari satu jalur.
  • Merge berfungsi untuk menggabungkan flow yang dipecah oleh decission.
  • Synchronization 
    •      Fork digunakan untuk memcah behavior menjadi activity atau action paralel
    •      Join digunakan untuk menggabungkan kembali activity yang paralel
  • Swimlanes berfungsi untuk memecah activity diagram menjadi baris dan kolom untuk membagi tanggung jawab obyek - obyek yang melakukan aktivitas.
  • Transition berfungsi untuk menunjukkan aktivitas selanjutnya setelah aktivitas sebelumnya
Sekilas penggunaan decission dan fork tampak mirip namun kenyataannya kedua komponen tersebut memiliki sifat yang berbeda. Decission digunakan untuk memecah aktivitas yang bersifat kondisional ( Ya/Tidak ) sedangkan fork digunakan untuk memcah behaviour menjadi aktivitas yang paralel seperti user dapat memilih menu hapus, tambah, dan edit yang dapat dilakukan secara paralel.

Activity diagram dari management rumah sakit yang kami lanjutkan dari post sebelumnya adalah sebagai berikut :


Sumber :


Terimakasih semoga bermanfaat !

Sunday, 16 October 2016

RESPONSIBILITY AND COLLABORATIONS OF HOSPITAL MANAGEMENT SYSTEM

1. Use Case Diagram

2. Class Diagram

3. CRC


4. Check Realization


 5. Sequence Diagram

Sequence diagram adalah suatu diagram yang menggambarkan interaksi antar obyek dan mengindikasikan komunikasi diantara obyek-obyek tersebut. Diagram ini juga menunjukkan serangkaian pesan yang dipertukarkan oleh obyek-obyek yang melakukan suatu tugas atau aksi tertentu. Berdasarakan cara kerja dan Use case diagram. Dapat dinggambarkan Sequence diagramnya. 





 Berikut dilampiran sistem management hospital dalam bahasa C++

 #include<iostream>  
 #include<iomanip>  
 #include<conio.h>  
 #include<string>  
 #include<windows.h>  
 #include<fstream>  
 #include<process.h>  
 using namespace std;  
 class pat  
 {  
      private:  
           struct address  
           {  
                int house;  
                char street[30];  
                char city[30];  
                char state[30];  
                char country[30];  
           };  
           struct age  
           {  
                int day;  
                int month;  
                int year;  
           };  
           struct patient_info  
           {  
                char name[50];  
                address AD1;  //nested structure implemented  
                age A1;    //nested structure inplemented  
                int martial_status;  
                int reg_no;  
                int bld_group;  
                int sex;  
                char doctor[50];  
                char medrep[1000];  
           }PI[100];  
           int task;  
      protected:  
           void enter_patient_info();  
           void show_patient_detail();  
      public:  
           //void software_detail();  
           void tasks();  
           char answer;  
           char answer1;  
           //char ch;  
           int serial;  
 };  
 class date  
 {  
      private:  
           int date;  
           int month;  
           int year;  
      public:  
           void enter_date();  
           void show_date();  
 };  
 class dob  
 {  
      private:  
           struct dob1  
           {  
                int date;  
                int month;  
                int year;  
                int rem;  
           }DOB11[100];  
      public:  
           void enter_date();  
           void show_date();  
 };  
 int i=0;  
 int rem;  
 int count;  
 int regis=0;  
 int attempt;  
 int temp;  
 int show_count=0;  
 pat A1;      //object declared  
 date D1;     //object declared  
 dob DOB1;     //object declared  
 int main(void)  
 {  
      count=0;  
      cout<<"**********Welcome to....**********"<<"\n";  
      cout<<"***HOSPITAL MANAGEMENT SOFTWARE***"<<"\n";  
      D1.enter_date();  
      A1.tasks();  
 }  
 void pat::tasks()  
 {  
      attempt=0;  
      D1.show_date();  
      cout<<"**********************************"<<"\n";  
      cout<<"***HOSPITAL MANAGEMENT SOFTWARE***"<<"\n";  
      cout<<"*** Hospital Management Tasks ****"<<"\n";  
      cout<<"**********************************"<<"\n";  
      cout<<"  Please select a task to do.. "<<"\n";  
      cout<<"1. Enter a new patient information."<<"\n";  
      cout<<"2. View detail of existing patient."<<"\n";  
      //cout<<"3. View detail about the program ."<<"\n";  
      cout<<"3. Exit from the program."<<"\n";  
      //other function remain  
      cout<<"Enter your task :";  
      scanf("%d", &task);  
      getchar();  
      switch(task)  
      {  
           case 1:  
           {  
                A1.enter_patient_info();  
                break;  
           }  
           case 2:  
           {  
                A1.show_patient_detail();  
                break;  
           }  
           /*case 3:  
           {  
                A1.software_detail();  
                break;  
           }*/  
           case 3:  
           {  
                cout<<"Thank You for using this program !!!"<<"\n";  
                cout<<"     This is the end of program...."<<"\n";  
                cout<<"     Press any key to exit....."<<"\n";  
                getch();  
                exit(0);  
                break;  
           }  
           default:  
           {  
                //printf("%d", task);  
                cout<<"Invalid task."<<"\n";  
                cout<<"Press any key to continue...."<<"\n";  
                getch();  
                A1.tasks();  
           }  
      }  
 }  
 void pat::enter_patient_info()  
 {  
      answer='y';  
      if(count==0)  
      {  
           serial=1;  
      }  
      else  
      {  
           i=serial;  
      }  
      for(i=serial;answer=='y'||answer=='Y';i++)  
      {  
           PI[i].reg_no=i;  
           temp=serial;  
           cout<<"***ENTERING INFORMATION FOR PATIENT SERIAL NUMBER "<<i<<"***"<<"\n";  
           //cin.get(ch);  
           cout<<"Registration Number : "<<PI[i].reg_no<<"\n";  
           cout<<"Enter the name of patient :"<<"\n";  
           gets(PI[i].name);  
           cout<<"Sex (1-Male 2-Female) :"<<"\n";  
           scanf("%d", &PI[i].sex);  
           getchar();  
           while(PI[i].sex!=1&&PI[i].sex!=2)  
           {  
                cout<<"Invalid input for sex of patient!!!"<<"\n";  
                cout<<"Sex (1-Male 2-Female) :"<<"\n";  
                scanf("%d", &PI[i].sex);  
                getchar();  
                //break;  
           }  
           cout<<"***ENTERING ADDRESS**"<<"\n";  
           cout<<"House number :"<<"\n";  
           cin>>PI[i].AD1.house;  
           getchar();  
           while(PI[i].AD1.house<=0)  
           {  
                cout<<"Invalid input for house number ."<<"\n";  
                cout<<"Again enter the house number: "<<"\n";  
                cin>>PI[i].AD1.house;  
                //printf("%d", PI[i].AD1.house);  
                getchar();  
           }  
           //cin.get(ch);  
           cout<<"Street :"<<"\n";  
           cin.getline(PI[i].AD1.street,30);  
           cout<<"City :"<<"\n";  
           cin.getline(PI[i].AD1.city,30);  
           cout<<"State :"<<"\n";  
           cin.getline(PI[i].AD1.state,30);  
           cout<<"Country :"<<"\n";  
           cin.getline(PI[i].AD1.country,30);  
           DOB1.enter_date();  
           //to calculate age  
           cout<<"Martial status(1-Married,2-Not Married ):"<<"\n";  
           cin>>PI[i].martial_status;  
           getchar();  
           while(PI[i].martial_status<1||PI[i].martial_status>2)  
           {  
                cout<<"Invalid input for martial status ."<<"\n";  
                cout<<"Enter a valid martial status :"<<"\n";  
                cin>>PI[i].martial_status;  
                getchar();  
           }  
           cout<<"Blood group :"<<"\n";  
           cout<<"1. A+ "<<"\n";  
           cout<<"2. A- "<<"\n";  
           cout<<"3. B+ "<<"\n";  
           cout<<"4. B- "<<"\n";  
           cout<<"5. AB+ "<<"\n";  
           cout<<"6. AB- "<<"\n";  
           cout<<"7. O+ "<<"\n";  
           cout<<"8. O- "<<"\n";  
           cout<<"Enter :"<<"\n";  
           cin>>PI[i].bld_group;  
           getchar();  
           switch(PI[i].bld_group)  
           {  
                case 1:  
                case 2:  
                case 3:  
                case 4:  
                case 5:  
                case 6:  
                case 7:  
                case 8:  
                {  
                  break;  
                }  
                default:  
                {  
                     while(PI[i].bld_group!=1&&PI[i].bld_group!=2&&PI[i].bld_group!=3&&PI[i].bld_group!=4&&PI[i].bld_group!=5&&PI[i].bld_group!=6&&PI[i].bld_group!=7&&PI[i].bld_group!=8)  
                     {  
                          cout<<"Invalid input !"<<"\n";  
                          cout<<"Blood Group :"<<"\n";  
                          cin>>PI[i].bld_group;  
                          getchar();  
                     }  
                     break;  
                }  
           }  
           //cin.get(ch);  
           cout<<"Enter medical report for patient: "<<"\n";  
           gets(PI[i].medrep);  
           printf("Enter doctor name: \n");  
           gets(PI[i].doctor);  
           cout<<"Enter another patient? (Y/N) "<<"\n";  
           cin>>answer;  
           getchar();  
           count++;  
           serial++;  
           regis++;  
      }  
      A1.tasks();  
 }  
 void dob::enter_date()  
 {  
      cout<<"Date of birth"<<"\n";  
      cout<<"Year :";  
      cin>>DOB11[temp].year;  
      getchar();  
      if(DOB11[temp].year<=0||DOB11[temp].year>10000)  
      {  
           do  
           {  
                cout<<"Invalid input for year !"<<"\n";  
                cout<<"Please enter the year correctly :"<<"\n";  
                cin>>DOB11[temp].year;  
                getchar();  
           }while(DOB11[temp].year<0||DOB11[temp].year>10000);  
      }  
      cout<<"Month :";  
      cin>>DOB11[temp].month;  
      getchar();  
      if(DOB11[temp].month<=0||DOB11[temp].month>12)  
      {  
           do  
           {  
                cout<<"Invalid input for month !"<<"\n";  
                cout<<"Again enter the month :"<<"\n";  
                cin>>DOB11[temp].month;  
                getchar();  
           }while(DOB11[temp].month<0||DOB11[temp].month>12);  
      }  
      cout<<"Date :";  
      switch(DOB11[temp].month)  
      {  
           case 1:  
           case 3:  
           case 5:  
           case 7:  
           case 8:  
           case 10:  
           case 12:  
           {  
                cin>>DOB11[temp].date;  
                getchar();  
                while(DOB11[temp].date<1||DOB11[temp].date>31)  
                {  
                     cout<<"Invalid date !"<<"\n";  
                     cout<<"Again enter the date :"<<"\n";  
                     cin>>DOB11[temp].date;  
                     getchar();  
                }  
                break;  
           }  
           case 2:  
           {  
                cin>>DOB11[temp].date;  
                getchar();  
                if(DOB11[temp].year%4==0)  
                {  
                     while(DOB11[temp].date<0||DOB11[temp].date>29)   
                     //for leap year  
                     {  
                          cout<<"Invalid date !"<<"\n";  
                          cout<<"Again enter the date :"<<"\n";  
                          cin>>DOB11[temp].date;  
                          getchar();  
                     }  
                }  
                else  
                {  
                     while(DOB11[temp].date<0||DOB11[temp].date>28)   
                     //for non-leap year  
                     {  
                          cout<<"Invalid date !"<<"\n";  
                          cout<<"Again enter the date :"<<"\n";  
                          cin>>DOB11[temp].date;  
                          getchar();  
                     }  
                }  
                break;  
           }  
           default:  
           {  
                     cin>>DOB11[temp].date;  
                     getchar();  
                     while(DOB11[temp].date<1||DOB11[temp].date>30)  
                     {  
                          cout<<"Invalid date !"<<"\n";  
                          cout<<"Again enter the date :"<<"\n";  
                          cin>>DOB11[temp].date;  
                          getchar();  
                     }  
                     break;  
           }  
      }  
      //end of switch  
 }  
 void date::enter_date()  
 {  
      cout<<"Enter the current date ..."<<"\n";  
      cout<<"Year :";  
      cin>>year;  
      getchar();  
      if(year<=0||year>10000)  
      {  
           do  
           {  
                cout<<"Invalid input for year !"<<"\n";  
                cout<<"Please enter the year correctly :"<<"\n";  
                cin>>year;  
                getchar();  
           }while(year<0||year>10000);  
      }  
      cout<<"Month :";  
      cin>>month;  
      getchar();  
      if(month<=0||month>12)  
      {  
           do  
           {  
                cout<<"Invalid input for month !"<<"\n";  
                cout<<"Again enter the month :"<<"\n";  
                cin>>month;  
                getchar();  
           }while(month<0||month>12);  
      }  
      cout<<"Date :";  
      switch(month)  
      {  
           case 1:  
           case 3:  
           case 5:  
           case 7:  
           case 8:  
           case 10:  
           case 12:  
           {  
                cin>>date;  
                while(date<1||date>31)  
                {  
                     cout<<"Invalid date !"<<"\n";  
                     cout<<"Again enter the date :"<<"\n";  
                     cin>>date;  
                     getchar();  
                }  
                break;  
           }  
           case 2:  
           {  
                cin>>date;  
                getchar();  
                if(year%4==0)  
                {  
                     while(date<0||date>29) //for leap year  
                     {  
                          cout<<"Invalid date !"<<"\n";  
                          cout<<"Again enter the date :"<<"\n";  
                          cin>>date;  
                          getchar();  
                     }  
                }  
                else  
                {  
                     while(date<0||date>28) //for non-leap year  
                     {  
                          cout<<"Invalid date !"<<"\n";  
                          cout<<"Again enter the date :"<<"\n";  
                          cin>>date;  
                          getchar();  
                     }  
                }  
                break;  
           }  
           default:  
           {  
                cin>>date;  
                getchar();  
                while(date<1||date>30)  
                {  
                     cout<<"Invalid date !"<<"\n";  
                     cout<<"Again enter the date :"<<"\n";  
                     cin>>date;  
                     getchar();  
                }  
                break;  
           }  
      }          //end of switch  
 }  
 void date::show_date() //remove the goto ststements in this function  
 {  
      cout<<"Hello....It's ";  
      cout<<date;  
      rem=date%10;  
      switch(date)  
      {  
           case 11:  
           case 12:  
           case 13:  
           case 14:  
           case 15:  
           case 16:  
           case 17:  
           case 18:  
           case 19:  
           case 20:  
           {  
                cout<<"th ";  
                goto over;  
           }  
      }  
      switch(rem)  
      {  
           case 1:  
           {  
                cout<<"st ";  
                break;  
           }  
           case 2:  
           {  
                cout<<"nd ";  
                break;  
           }  
           case 3:  
           {  
                cout<<"rd ";  
                break;  
           }  
           default:  
           {  
                cout<<"th ";  
                break;  
           }  
      }  
      over:  
      switch(month)  
      {  
           case 1:  
           {  
                cout<<"January , ";  
                break;  
           }  
           case 2:  
           {  
                cout<<"February , ";  
                break;  
           }  
           case 3:  
           {  
                cout<<"March , ";  
                break;  
           }  
           case 4:  
           {  
                cout<<"April , ";  
                break;  
           }  
           case 5:  
           {  
                cout<<"May , ";  
                break;  
           }  
           case 6:  
           {  
                cout<<"June , ";  
                break;  
           }  
           case 7:  
           {  
                cout<<"July , ";  
                break;  
           }  
           case 8:  
           {  
                cout<<"August , ";  
                break;  
           }  
           case 9:  
           {  
                cout<<"September , ";  
                break;  
           }  
           case 10:  
           {  
                cout<<"October , ";  
                break;  
           }  
           case 11:  
           {  
                cout<<"November , ";  
                break;  
           }  
           case 12:  
           {  
                cout<<"December , ";  
                break;  
           }  
      }  
      cout<<year<<"\n";  
 }  
 void pat::show_patient_detail()  
 {  
      do  
      {  
           if(count==0)  
           {  
                cout<<"Database is empty !!!"<<"\n";  
                cout<<"Press any key to exit to main task menu..."<<"\n";  
                getch();  
                A1.tasks();  
           }  
           cout<<"Enter registration number :"<<"\n";  
           cin>>regis;  
           getchar();  
           //cin.get(ch);  
           show_count++;  
           if(regis>0 && regis<serial)  
           {  
                cout<<"***INFORMATION FOR PATIENT REGISTRATION NUMBER"<<regis<<"***\n";  
                cout<<"Name      : "<<PI[regis].name<<"\n";  
                cout<<"Sex      : ";  
                if(PI[regis].sex==1)  
                {  
                     cout<<"Male "<<"\n";  
                }  
                if(PI[regis].sex==2)  
                {  
                     cout<<"Female "<<"\n";  
                }  
                cout<<"Blood Group  : ";  
                switch(PI[regis].bld_group)  
                {  
                     case 1:  
                     {  
                       cout<<"A+";  
                       break;  
                     }  
                     case 2:  
                     {  
                       cout<<"A-";  
                       break;  
                     }  
                     case 3:  
                     {  
                       cout<<"B+";  
                       break;  
                     }  
                     case 4:  
                     {  
                       cout<<"B-";  
                       break;  
                     }  
                     case 5:  
                     {  
                    cout<<"AB+";  
                    break;  
                     }  
                     case 6:  
                     {  
                    cout<<"AB-";  
                    break;  
                     }  
                     case 7:  
                     {  
                    cout<<"O+";  
                    break;  
                     }  
                     case 8:  
                     {  
                    cout<<"O-";  
                    break;  
                     }  
                }  
                //printf("\n")  
                cout<<"\nDate of birth : ";  
                DOB1.show_date();  
                cout<<"Martial Status : ";  
                if(PI[i].martial_status==1)  
                {  
                     cout<<"Married "<<"\n";  
                }  
                else  
                {  
                     cout<<"Not married "<<"\n";  
                }  
                cout<<"**ADDRESS**";  
                cout<<"\nHouse no.   : "<<PI[regis].AD1.house;  
                cout<<"\nStreet     : "<<PI[regis].AD1.street;  
                cout<<"\nCity      : "<<PI[regis].AD1.city;  
                cout<<"\nState     : "<<PI[regis].AD1.state;  
                cout<<"\nCountry    : "<<PI[regis].AD1.country;  
                cout<<"\n**MEDICAL**";  
                cout<<"\nMedical Report : "<<PI[regis].medrep;  
                cout<<"\nDoctor     : "<<PI[regis].doctor;                 
           }  
           else  
           {  
                attempt++;  
                if(attempt==3)  
                {  
                     cout<<"You have entered wrong registration number 3 times ."<<"\n";  
                     cout<<"Access Denied!!! "<<"\n";  
                     cout<<"Please try again later. "<<"\n";  
                     cout<<"Press any key to exit to main task menu..."<<"\n";  
                     getch();  
                     A1.tasks();  
                }  
                cout<<"Sorry, the registration number is invalid ."<<"\n";  
                cout<<"Press any key to continue...."<<"\n";  
                getch();  
                A1.show_patient_detail();  
           }  
           cout<<"\nWant to see information of another patient? (Y/N): "<<"\n";  
           cin>>answer1;  
      }while(answer1=='y'||answer1=='Y');  
      A1.tasks();  
 }  
 void dob::show_date()  
 {  
      cout<<DOB11[regis].date;  
      rem=DOB11[regis].date%10;  
      switch(DOB11[regis].date)  
      {  
           case 11:  
           case 12:  
           case 13:  
           case 14:  
           case 15:  
           case 16:  
           case 17:  
           case 18:  
           case 19:  
           case 20:  
           {  
                cout<<"th ";  
                goto over;  
           }  
      }  
      switch(rem)  
      {  
           case 1:  
           {  
                cout<<"st ";  
                break;  
           }  
           case 2:  
           {  
                cout<<"nd ";  
                break;  
           }  
           case 3:  
           {  
                cout<<"rd ";  
                break;  
           }  
           default:  
           {  
                cout<<"th ";  
                break;  
           }  
      }  
      over:  
      switch(DOB11[regis].month)  
      {  
           case 1:  
           {  
                cout<<"January , ";  
                break;  
           }  
           case 2:  
           {  
                cout<<"February , ";  
                break;  
           }  
           case 3:  
           {  
                cout<<"March , ";  
                break;  
           }  
           case 4:  
           {  
                cout<<"April , ";  
                break;  
           }  
           case 5:  
           {  
                cout<<"May , ";  
                break;  
           }  
           case 6:  
           {  
                cout<<"June , ";  
                break;  
           }  
           case 7:  
           {  
                cout<<"July , ";  
                break;  
           }  
           case 8:  
           {  
                cout<<"August , ";  
                break;  
           }  
           case 9:  
           {  
                cout<<"September , ";  
                break;  
           }  
           case 10:  
           {  
                cout<<"October , ";  
                break;  
           }  
           case 11:  
           {  
                cout<<"November , ";  
                break;  
           }  
           case 12:  
           {  
                cout<<"December , ";  
                break;  
           }  
      }  
      cout<<DOB11[regis].year<<"\n";  
 }  
 /*void all::software_detail()  
 {  
      //clrscr();  
      cout<<"***SOFTWARE DETAILS***\n";  
      cout<<"     Developer        : Mustafizur Rohman "<<"\n";  
      cout<<"     Programming Language   : C++ "<<"\n";  
      cout<<"     Aim           : Simulation of the software used in Hospital"<<"\n";  
      cout<<"     Hope you like it..."<<"\n";  
      cout<<"     Send your comments to : mustafizur_04@sify.com ."<<"\n";  
      cout<<"     Thank You for trying this program. "<<"\n";  
      cout<<"Press any key to return to the main task menu......."<<"\n";  
      getch();  
      A1.tasks();  
 }*/  

Source :

Supported by codeformatter

Terimakasih semoga bermanfaat !