Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <cmath>
- #include <ctime>
- #include <cstdlib>
- #include <queue>
- #include <stack>
- #include <vector>
- #include <conio.h>
- #define o(x) cout << x << endl ;
- #define en() cout << endl ;
- #define os(x) cout << x ;
- #define ln() o("================================================================");
- #define ll long long
- using namespace std ;
- struct bulan{
- string bln ;
- int tgl ;
- };
- struct data{
- string nama ;
- int tgl,bln,thn ;
- };
- struct th{
- int tgl, bln, thn ;
- };
- // data tentang imunisasi
- struct node{
- string nama ;
- int bln, thn ;
- node *next, *prev ;
- };
- tm *my_time ;
- time_t t = time(NULL) ;
- data anak ;
- th usia, umur ;
- node *imunH, *imunT ;
- bulan b[] = {{"Januari", 31}, {"Februari", 28}, {"Maret", 31}, {"April", 30}, {"Mei", 31},
- {"Juni", 30}, {"Juli", 31}, {"Agustus", 31}, {"September", 30}, {"Oktober", 31}, {"November", 30}, {"Desember", 31}} ;
- int Day, Month, Year, imun = 19, done=0 ;
- void init(){
- imunH = new node ;
- imunT = imunH ;
- umur.bln = 0 ;
- umur.thn = 0 ;
- }
- void getTime(){
- my_time = localtime(&t) ;
- Day = my_time->tm_mday ;
- Month = my_time->tm_mon + 1 ;
- Year = my_time->tm_year + 1900 ;
- }
- th getAge(data a){
- usia.thn = Year - a.thn ;
- if(Month <= a.bln && usia.thn > 0){
- usia.thn -= 1 ;
- usia.bln = (12 + Month) - a.bln ;
- }else{
- if(Month > a.bln)
- usia.bln = Month - a.bln ;
- else if(Month == a.bln)
- usia.bln = Month - a.bln ;
- }
- if(usia.bln == 12){
- usia.thn++ ;
- usia.bln = 0 ;
- }
- if(Day < a.tgl){
- usia.bln -= 1 ;
- usia.tgl = b[a.bln-1].tgl - a.tgl + Day ;
- }else{
- usia.tgl = Day - a.tgl ;
- }
- return usia ;
- }
- void getTrack(data anak){
- if(getAge(anak).bln==0 && getAge(anak).thn==0){
- o("# Imunisasi yang harus diberikan : ");
- o("# 1. Hepatitis B");
- o("# 2. Polio");
- }else if(getAge(anak).bln==1 && getAge(anak).thn==0){
- o("# Imunisasi yang seharusnya sudah didapat : ");
- o("# 1. Hepatitis B");
- o("# 2. Polio");
- o("#");
- ln();
- en();
- ln();
- o("#");
- o("# Imunisasi yang harus diberikan : ");
- o("# 1. BCG");
- o("# 2. Hepatitis B ke-2");
- }else if(getAge(anak).bln==2 && getAge(anak).thn==0){
- o("# Imunisasi yang seharusnya sudah didapat : ");
- o("# 1. Hepatitis B 2x");
- o("# 2. Polio");
- o("# 3. BCG");
- o("#");
- ln();
- en();
- ln();
- o("#");
- o("# Imunisasi yang harus diberikan : ");
- o("# 1. BCG (Bila sebelumnya belum diberikan)");
- o("# 2. Polio ke-2");
- o("# 3. DPT");
- }else if(getAge(anak).bln==3 && getAge(anak).thn==0){
- o("# Imunisasi yang seharusnya sudah didapat : ");
- o("# 1. Hepatitis B 2x");
- o("# 2. Polio 2x");
- o("# 3. BCG");
- o("# 4. DPT");
- o("#");
- ln();
- en();
- ln();
- o("#");
- o("# Imunisasi yang harus diberikan : ");
- o("# 1. BCG (Bila sebelumnya belum diberikan)");
- o("# 2. Hepatitis B ke-3");
- }else if(getAge(anak).bln==4 && getAge(anak).thn==0){
- o("# Imunisasi yang seharusnya sudah didapat : ");
- o("# 1. Hepatitis B 3x");
- o("# 2. Polio 2x");
- o("# 3. BCG");
- o("# 4. DPT");
- o("#");
- ln();
- en();
- ln();
- o("#");
- o("# Imunisasi yang harus diberikan : ");
- o("# 1. Polio ke-3");
- o("# 2. DPT ke-2");
- }else if(getAge(anak).bln==5 && getAge(anak).thn==0){
- o("# Imunisasi yang seharusnya sudah didapat : ");
- o("# 1. Hepatitis B 3x");
- o("# 2. Polio 3x");
- o("# 3. BCG");
- o("# 4. DPT 2x");
- o("#");
- ln();
- en();
- ln();
- o("#");
- o("# Imunisasi selanjutnya diberikan saat usia anak 6 bulan");
- }else if(getAge(anak).bln==6 && getAge(anak).thn==0){
- o("# Imunisasi yang seharusnya sudah didapat : ");
- o("# 1. Hepatitis B 3x");
- o("# 2. Polio 3x");
- o("# 3. BCG");
- o("# 4. DPT 2x");
- o("#");
- ln();
- en();
- ln();
- o("#");
- o("# Imunisasi yang harus diberikan : ");
- o("# 1. Polio ke-4");
- o("# 2. DPT ke-3");
- }else if(getAge(anak).bln>6 && getAge(anak).bln<9 && getAge(anak).thn==0){
- o("# Imunisasi yang seharusnya sudah didapat : ");
- o("# 1. Hepatitis B 3x");
- o("# 2. Polio 4x");
- o("# 3. BCG");
- o("# 4. DPT 3x");
- o("#");
- ln();
- en();
- ln();
- o("#");
- o("# Imunisasi selanjutnya diberikan saat usia anak 9 bulan");
- }else if(getAge(anak).bln==9 && getAge(anak).thn==0){
- o("# Imunisasi yang seharusnya sudah didapat : ");
- o("# 1. Hepatitis B 3x");
- o("# 2. Polio 4x");
- o("# 3. BCG");
- o("# 4. DPT 3x");
- o("#");
- ln();
- en();
- ln();
- o("#");
- o("# Imunisasi yang harus diberikan : ");
- o("# 1. Campak");
- }else if(getAge(anak).bln>=10 && getAge(anak).bln<=11 && getAge(anak).thn==0){
- o("# Imunisasi yang seharusnya sudah didapat : ");
- o("# 1. Hepatitis B 3x");
- o("# 2. Polio 4x");
- o("# 3. BCG");
- o("# 4. DPT 3x");
- o("# 5. Campak");
- o("#");
- ln();
- en();
- ln();
- o("#");
- o("# Imunisasi selanjutnya diberikan saat usia anak 18 bulan");
- }else if(getAge(anak).thn==1 && getAge(anak).bln<6){
- o("# Imunisasi yang seharusnya sudah didapat : ");
- o("# 1. Hepatitis B 3x");
- o("# 2. Polio 4x");
- o("# 3. BCG");
- o("# 4. DPT 3x");
- o("# 5. Campak");
- o("#");
- ln();
- en();
- ln();
- o("#");
- o("# Imunisasi selanjutnya diberikan saat usia anak 18 bulan");
- }else if(getAge(anak).thn==1 && getAge(anak).bln==6){
- o("# Imunisasi yang seharusnya sudah didapat : ");
- o("# 1. Hepatitis B 3x");
- o("# 2. Polio 4x");
- o("# 3. BCG");
- o("# 4. DPT 3x");
- o("# 5. Campak");
- o("#");
- ln();
- en();
- ln();
- o("#");
- o("# Imunisasi yang harus diberikan : ");
- o("# 1. Polio ke-5");
- o("# 2. DPT ke-4");
- }else if(getAge(anak).thn==1 && getAge(anak).bln>6 && getAge(anak).bln<=11){
- o("# Imunisasi yang seharusnya sudah didapat : ");
- o("# 1. Hepatitis B 3x");
- o("# 2. Polio 5x");
- o("# 3. BCG");
- o("# 4. DPT 4x");
- o("# 5. Campak");
- o("#");
- ln();
- en();
- ln();
- o("#");
- o("# Imunisasi selanjutnya diberikan saat usia anak 2 tahun");
- }else if(getAge(anak).thn==2 && getAge(anak).bln>=0 && getAge(anak).bln<=11){
- o("Imunisasi yang seharusnya sudah didapat : ");
- o("# 1. Hepatitis B 3x");
- o("# 2. Polio 4x");
- o("# 3. BCG");
- o("# 4. DPT 3x");
- o("# 5. Campak");
- o("#");
- ln();
- en();
- ln();
- o("#");
- o("# Imunisasi yang harus diberikan : ");
- o("# 1. Polio ke-5");
- o("# 2. DPT ke-4");
- }else if(getAge(anak).thn==3 && getAge(anak).bln>=0){
- o("# Imunisasi yang seharusnya sudah didapat : ");
- o("# 1. Hepatitis B 3x");
- o("# 2. Polio 5x");
- o("# 3. BCG");
- o("# 4. DPT 4x");
- o("# 5. Campak");
- o("#");
- ln();
- en();
- ln();
- o("#");
- o("# Imunisasi selanjutnya diberikan saat usia anak 5 tahun");
- }else if(getAge(anak).thn==4 && getAge(anak).bln>=0){
- o("Imunisasi yang seharusnya sudah didapat : ");
- o("# 1. Hepatitis B 3x");
- o("# 2. Polio 5x");
- o("# 3. BCG");
- o("# 4. DPT 4x");
- o("# 5. Campak");
- o("#");
- ln();
- en();
- ln();
- o("#");
- o("# Imunisasi selanjutnya diberikan saat usia anak 5 tahun");
- }else if(getAge(anak).thn==5 && getAge(anak).bln>=0){
- o("# Imunisasi yang seharusnya sudah didapat : ");
- o("# 1. Hepatitis B 3x");
- o("# 2. Polio 5x");
- o("# 3. BCG");
- o("# 4. DPT 4x");
- o("# 5. Campak");
- o("#");
- ln();
- en();
- ln();
- o("#");
- o("# Imunisasi yang harus diberikan : ");
- o("# 1. Polio ke-6");
- o("# 2. DPT ke-5");
- o("# 3. Campak");
- }else if(getAge(anak).thn>=5 && getAge(anak).thn<=9){
- o("# Imunisasi yang seharusnya sudah didapat : ");
- o("# 1. Hepatitis B 3x");
- o("# 2. Polio 6x");
- o("# 3. BCG");
- o("# 4. DPT 5x");
- o("# 5. Campak 2x");
- o("#");
- ln();
- en();
- ln();
- o("#");
- o("# Imunisasi selanjutnya diberikan saat usia anak 10 tahun");
- }else if(getAge(anak).thn==10 && getAge(anak).bln>=0){
- o("# Imunisasi yang seharusnya sudah didapat : ");
- o("# 1. Hepatitis B 3x");
- o("# 2. Polio 6x");
- o("# 3. BCG");
- o("# 4. DPT 5x");
- o("# 5. Campak 2x");
- o("#");
- ln();
- en();
- ln();
- o("#");
- o("# Imunisasi yang harus diberikan : ");
- o("# 1. DPT ke-6");
- }else if(getAge(anak).thn>=11 && getAge(anak).thn<=17){
- o("# Imunisasi yang seharusnya sudah didapat : ");
- o("# 1. Hepatitis B 3x");
- o("# 2. Polio 6x");
- o("# 3. BCG");
- o("# 4. DPT 6x");
- o("# 5. Campak 2x");
- o("#");
- ln();
- en();
- ln();
- o("#");
- o("# Imunisasi selanjutnya diberikan saat usia anak 18 tahun");
- }else if(getAge(anak).thn==18&&getAge(anak).bln>=0){
- o("# Imunisasi yang seharusnya sudah didapat : ");
- o("# 1. Hepatitis B 3x");
- o("# 2. Polio 6x");
- o("# 3. BCG");
- o("# 4. DPT 6x");
- o("# 5. Campak 2x");
- o("#");
- ln();
- en();
- ln();
- o("#");
- o("# Imunisasi yang harus diberikan : ");
- o("# 1. DPT ke-7");
- }else if(getAge(anak).thn>18){
- o("# Imunisasi yang seharusnya sudah didapat : ");
- o("# 1. Hepatitis B 3x");
- o("# 2. Polio 6x");
- o("# 3. BCG");
- o("# 4. DPT 7x");
- o("# 5. Campak 2x");
- o("#");
- ln();
- en();
- ln();
- o("#");
- o("# Sudah tidak diberikan imunisasi lagi");
- }
- }
- string setName(string s){
- for(int i=0; i<s.length(); i++){
- if(i==0 && s[i] >=97){
- s[i] -= 32 ;
- }else if(s[i-1] == ' ' && s[i]>=97){
- s[i] -= 32 ;
- }
- }
- return s ;
- }
- bool isDone(){
- if(done == 19 && imun == 0){
- return true ;
- }else
- return false ;
- }
- void insert(string s, th x){
- if(!isDone()){
- if(done == 0){
- imunH->nama = s ;
- imunH->bln = x.bln ;
- imunH->thn = x.thn ;
- imun-- ;
- done++ ;
- }else{
- node *baru = new node ;
- baru->nama = s ;
- baru->bln = x.bln ;
- baru->thn = x.thn ;
- baru->next = imunT ;
- baru->prev = NULL ;
- imunT->prev = baru ;
- imunT = baru ;
- imun-- ;
- done++ ;
- }
- }
- }
- void getImunSatu(data a){
- for(int i=a.thn; i<=Year; i++){
- for(int j=a.bln; j<=Month; j++){
- switch(umur.bln) {
- case 0 :
- insert("Hepatitis B", umur) ;
- insert("Polio", umur) ;
- break ;
- case 1 :
- insert("Hepatitis B", umur) ;
- insert("BCG", umur) ;
- break ;
- case 2 :
- insert("Polio", umur) ;
- insert("DPT", umur) ;
- break ;
- case 3 :
- insert("Hepatitis B", umur) ;
- break ;
- case 4 :
- insert("Polio", umur) ;
- insert("DPT", umur) ;
- break ;
- case 6 :
- insert("Polio", umur) ;
- insert("DPT", umur) ;
- break ;
- case 9 :
- insert("Campak", umur) ;
- break ;
- }
- if(umur.bln == 12){
- o("Ganti tahun") ;
- umur.thn++ ;
- umur.bln = 0 ;
- }
- umur.bln++ ;
- }
- }
- }
- void getImunLebih(data a){
- int um = a.thn ;
- for(int i=a.thn; i<=Year; i++){
- if(umur.thn == 0){
- if(um == a.thn){
- for(int j=a.bln; j<=12; j++){
- switch(umur.bln) {
- case 0 :
- insert("Hepatitis B", umur) ;
- insert("Polio", umur) ;
- break ;
- case 1 :
- insert("Hepatitis B", umur) ;
- insert("BCG", umur) ;
- break ;
- case 2 :
- insert("Polio", umur) ;
- insert("DPT", umur) ;
- break ;
- case 3 :
- insert("Hepatitis B", umur) ;
- break ;
- case 4 :
- insert("Polio", umur) ;
- insert("DPT", umur) ;
- break ;
- case 6 :
- insert("Polio", umur) ;
- insert("DPT", umur) ;
- break ;
- case 9 :
- insert("Campak", umur) ;
- break ;
- }
- if(umur.bln == 12){
- o("Ganti tahun") ;
- umur.thn++ ;
- umur.bln = 0 ;
- }
- umur.bln++ ;
- }
- }else if(um - a.thn == 1){
- for(int j=1; j<=12; j++){
- if(umur.thn < 1){
- switch(umur.bln) {
- case 0 :
- insert("Hepatitis B", umur) ;
- insert("Polio", umur) ;
- break ;
- case 1 :
- insert("Hepatitis B", umur) ;
- insert("BCG", umur) ;
- break ;
- case 2 :
- insert("Polio", umur) ;
- insert("DPT", umur) ;
- break ;
- case 3 :
- insert("Hepatitis B", umur) ;
- break ;
- case 4 :
- insert("Polio", umur) ;
- insert("DPT", umur) ;
- break ;
- case 6 :
- insert("Polio", umur) ;
- insert("DPT", umur) ;
- break ;
- case 9 :
- insert("Campak", umur) ;
- break ;
- }
- if(umur.bln == 12){
- o("Ganti tahun") ;
- umur.thn++ ;
- umur.bln = 0 ;
- }
- umur.bln++ ;
- }
- }
- }
- }else if (umur.thn <= 18){
- bool sudah = false ;
- int bl = rand()%12 + 1 ;
- for(int j=1; j<=12; j++){
- if((umur.thn == 1 && umur.bln == 6)){
- insert("Polio", umur) ;
- insert("DPT", umur) ;
- }
- else if((umur.thn == 5 && sudah == false && umur.bln == bl)){
- insert("Polio", umur) ;
- insert("DPT", umur) ;
- insert("Campak", umur) ;
- sudah = true ;
- }
- else if((umur.thn == 10 && sudah == false && umur.bln == bl) || (umur.thn == 18 && sudah == false && umur.bln == bl)){
- insert("DPT",umur ) ;
- sudah = true ;
- }
- if(umur.bln == 12){
- umur.thn++ ;
- umur.bln = 0 ;
- }
- umur.bln++ ;
- }
- }
- um++ ;
- }
- }
- void getImunDetail(data a){
- if(getAge(a).thn < 1){
- getImunSatu(a) ;
- }else{
- getImunLebih(a) ;
- }
- }
- void print(){
- node *now = imunH ;
- while(now != NULL){
- o("Imunisasi " << now->nama) ;
- o("Pada : " << now->thn << " tahun " << now->bln << " bulan") ;
- en() ;
- // if(now->prev != NULL){
- // if(now->thn <= 0){
- // if(now->next == NULL){
- // o("Pada usia : " << now->bln << " bulan") ;
- // }
- //
- // if(now->bln == now->prev->bln){
- // o(now->nama << " pada usia " << now->thn << " tahun " << now->bln << " bulan") ;
- // }else{
- // o("Pada usia : " << now->bln << " bulan") ;
- // o(now->nama << " pada usia " << now->thn << " tahun " << now->bln << " bulan") ;
- // }
- // }
- // else{
- // o("Pada usia : " << now->thn << " tahun " << now->bln << " bulan") ;
- // if(now->bln == now->prev->bln){
- // o(now->nama << " pada usia " << now->thn << " tahun " << now->bln << " bulan") ;
- // }else{
- // o("Pada usia : " << now->thn << " tahun " << now->bln << " bulan") ;
- // o(now->nama << " pada usia " << now->thn << " tahun " << now->bln << " bulan") ;
- // }
- // }
- // }else{
- // if(now->thn <1){
- // o("Pada usia : " << now->bln << " bulan") ;
- // o(now->nama << " pada usia " << now->thn << " tahun " << now->bln << " bulan") ;
- // }else{
- // o("Pada usia : " << now->thn << " tahun " << now->bln << " bulan") ;
- // o(now->nama << " pada usia " << now->thn << " tahun " << now->bln << " bulan") ;
- // }
- // }
- // en() ;
- now = now->prev ;
- }
- }
- void printBack(){
- node *now = imunT ;
- while(now != NULL){
- o("Imunisasi " << now->nama) ;
- o("Pada : " << now->thn << " tahun " << now->bln << " bulan") ;
- en() ;
- // if(now->next != NULL){
- // if(now->thn <= 0){
- // if(now->prev == NULL){
- // o("Pada usia : " << now->bln << " bulan") ;
- // }
- //
- // if(now->bln == now->prev->bln){
- // o(now->nama << " pada usia " << now->thn << " tahun " << now->bln << " bulan") ;
- // }else{
- // o("Pada usia : " << now->bln << " bulan") ;
- // o(now->nama << " pada usia " << now->thn << " tahun " << now->bln << " bulan") ;
- // }
- // }
- // else{
- // o("Pada usia : " << now->thn << " tahun " << now->bln << " bulan") ;
- // if(now->bln == now->prev->bln){
- // o(now->nama << " pada usia " << now->thn << " tahun " << now->bln << " bulan") ;
- // }else{
- // o("Pada usia : " << now->thn << " tahun " << now->bln << " bulan") ;
- // o(now->nama << " pada usia " << now->thn << " tahun " << now->bln << " bulan") ;
- // }
- // }
- // }else{
- // if(now->thn <1){
- // o("Pada usia : " << now->bln << " bulan") ;
- // o(now->nama << " pada usia " << now->thn << " tahun " << now->bln << " bulan") ;
- // }else{
- // o("Pada usia : " << now->thn << " tahun " << now->bln << " bulan") ;
- // o(now->nama << " pada usia " << now->thn << " tahun " << now->bln << " bulan") ;
- // }
- // }
- // en() ;
- now = now->next ;
- }
- }
- void showDetail(){
- string j ;
- os("Tampilkan detail imunisasi anak? (YA/TIDAK)") ; cin >> j ;
- if(j == "YA" || j == "Ya" || j=="ya"){
- o("Menampilkan data imunisasi dari anak : ") ;
- printBack() ;
- }
- }
- void menu(){
- anak.nama = "" ;
- os("Masukkan Nama anak : ") ; getline(cin,anak.nama) ;
- os("Masukkan tanggal lahir anak (DD MM YYYY) : ") ; cin >> anak.tgl >> anak.bln >> anak.thn ;
- o("Selamat datang orang tua dari, " << setName(anak.nama));
- o("Anak Anda lahir pada " << anak.tgl << " " << b[anak.bln-1].bln << " " << anak.thn) ;
- if((anak.bln > Month && anak.thn > Year) || (anak.bln > Month && anak.thn == Year) || (anak.tgl > Day && anak.bln > Month && anak.thn == Year) || (anak.tgl > Day && anak.bln == Month && anak.thn == Year) ){
- o("Data kelahiran tidak ditemukan") ;
- }else{
- o("Usia anak Anda : " << getAge(anak).thn << " tahun" << " " << getAge(anak).bln << " bulan" << " " << getAge(anak).tgl << " hari");
- getImunDetail(anak) ;
- getTrack(anak) ;
- showDetail() ;
- }
- }
- void backMenu(){
- char a ;
- o("Cari tahu lagi data anak? (Y/N)") ; cin >> a ;
- if(a == 'Y' || a == 'y'){
- menu() ;
- backMenu() ;
- }
- }
- int main(){
- getTime() ;
- init() ;
- o("Selamat datang di aplikasi tracker imunisasi\n\n") ;
- os("Masukkan Nama anak : ") ; getline(cin,anak.nama) ;
- os("Masukkan tanggal lahir anak (DD MM YYYY) : ") ; cin >> anak.tgl >> anak.bln >> anak.thn ;
- system("cls");
- ln();
- o("#");
- o("# Selamat datang orang tua dari, " << setName(anak.nama));
- o("# Anak Anda lahir pada " << anak.tgl << " " << b[anak.bln-1].bln << " " << anak.thn) ;
- if((anak.bln > Month && anak.thn > Year) || (anak.bln > Month && anak.thn == Year) || (anak.tgl > Day && anak.bln > Month && anak.thn == Year) || (anak.tgl > Day && anak.bln == Month && anak.thn == Year) ){
- o("Data kelahiran tidak ditemukan") ;
- }else{
- o("# Usia anak Anda : " << getAge(anak).thn << " tahun" << " " << getAge(anak).bln << " bulan" << " " << getAge(anak).tgl << " hari");
- // getImunDetail(anak) ;
- o("#");
- ln();
- en();
- en();
- ln();
- o("#");
- getTrack(anak) ;
- o("#");
- ln();
- en();
- showDetail() ;
- }
- return 0 ;
- }
Advertisement
Add Comment
Please, Sign In to add comment