Program Layanan Masyarakat

Implementasi Perulangan, Array, dan Kondisi dalam Bahasa C

Source Code Program

MAIN.C
#include <stdio.h>
#include <string.h>
#include <stdbool.h>

int main() {
    int pilihan;
    char kembali;

    do {
        printf("\n=== MENU LAYANAN UMUM ===\n");
        printf("1. Rekap Konsumsi Air\n");
        printf("2. Data Peserta Piket RT/RW\n");
        printf("3. Cek Kelayakan Donor Darah\n");
        printf("0. Keluar Program\n");
        printf("Pilih menu (1-3): ");
        scanf("%d", &pilihan);
        
        switch (pilihan) {
            case 1: {
                // PERULANGAN
                int minum, total = 0;
			    char ulang;
			
			    do {
			        printf("Masukkan jumlah air yang diminum (ml): ");
			        scanf("%d", &minum);
			
			        total = total + minum;
			
			        printf("Total konsumsi air sementara: %d ml\n", total);
			
			        printf("Apakah ingin menambah data minum? (y/n): ");
			        scanf(" %c", &ulang);
			
			    } while (ulang == 'y' || ulang == 'Y');
			
			    printf("\nTotal konsumsi air hari ini: %d ml\n", total);
			    printf("Tetap jaga hidrasi ya!\n");
			    
                break;
            }
            case 2: {
                // ARRAY
                struct {
                    char nama[50];
                    char noRumah[20];
                    bool sudahPiket;
                } warga[50];
                
                int jumlah, i, c;
                char hari[][10] = {"Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", "Minggu"};
                
                while ((c = getchar()) != '\n' && c != EOF);
                
                printf("\n=== DATA PESERTA PIKET RT/RW ===\n");
                printf("Masukkan jumlah warga: ");
                scanf("%d", &jumlah);
                while ((c = getchar()) != '\n' && c != EOF);
                
                for (i = 0; i < jumlah; i++) {
                    printf("\nWarga ke-%d\n", i + 1);
                    printf("Nama: ");
                    fgets(warga[i].nama, 50, stdin);
                    warga[i].nama[strcspn(warga[i].nama, "\n")] = 0;
                    
                    printf("No Rumah: ");
                    fgets(warga[i].noRumah, 20, stdin);
                    warga[i].noRumah[strcspn(warga[i].noRumah, "\n")] = 0;
                    
                    warga[i].sudahPiket = false;
                }
                
                printf("\n=== DAFTAR WARGA ===\n");
                printf("%-5s %-25s %-10s\n", "No", "Nama", "No Rumah");
                printf("----------------------------------------\n");
                for (i = 0; i < jumlah; i++) {
                    printf("%-5d %-25s %-10s\n", i + 1, warga[i].nama, warga[i].noRumah);
                }
                
                printf("\n=== JADWAL PIKET MINGGU INI ===\n");
                int batasHari = (jumlah < 7) ? jumlah : 7;
                for (i = 0; i < batasHari; i++) {
                    printf("%-8s: %-25s (Rumah: %s)\n", 
                           hari[i], warga[i].nama, warga[i].noRumah);
                }
                
                if (jumlah < 7) {
                    printf("\nCatatan: Hanya %d hari terisi dari 7 hari.\n", jumlah);
                }
                break;
            }
            case 3: {
                // KONDISI
                int umur, sistole, diastole, nadi;
                float berat, hb, suhu;
                int layak = 1; 
        
                printf("=== Program Skrining Donor Darah Detail ===\n\n");
                printf("Masukkan umur: "); scanf("%d", &umur);
                printf("Masukkan berat badan (kg): "); scanf("%f", &berat);
                printf("Masukkan Tekanan Darah Sistole (100 – 160 mmHg): "); scanf("%d", &sistole);
                printf("Masukkan Tekanan Darah Diastole (70 – 100 mmHg): "); scanf("%d", &diastole);
                printf("Masukkan Kadar Hemoglobin Hb (12,5 – 17,0 g/dL): "); scanf("%f", &hb);
                printf("Masukkan Suhu Tubuh Celsius (36,6 – 37,5 °C): "); scanf("%f", &suhu);
                printf("Masukkan Denyut Nadi (50 – 100 kali/menit): "); scanf("%d", &nadi);
        
                printf("\n--- Hasil Evaluasi ---\n");
                if (umur < 17 || umur > 60) { printf("- Usia tidak masuk rentang 17-60 tahun.\n"); layak = 0; }
                if (berat < 45) { printf("- Berat badan kurang dari 45 kg.\n"); layak = 0; }
                if (sistole < 100 || sistole > 160) { printf("- Tekanan darah sistole tidak normal (100-160 mmHg).\n"); layak = 0; }
                if (diastole < 70 || diastole > 100) { printf("- Tekanan darah diastole tidak normal (70-100 mmHg).\n"); layak = 0; }
                if (hb < 12.5 || hb > 17.0) { printf("- Kadar Hemoglobin (Hb) tidak normal (12,5-17,0 g/dL).\n"); layak = 0; }
                if (suhu < 36.6 || suhu > 37.5) { printf("- Suhu tubuh tidak normal (36,6-37,5 C).\n"); layak = 0; }
                if (nadi < 50 || nadi > 100) { printf("- Denyut nadi tidak normal (50-100 kali/menit).\n"); layak = 0; }
        
                printf("-----------------------\n");
                if (layak) { printf("STATUS: LAYAK DONOR DARAH\n"); } else { printf("STATUS: TIDAK LAYAK DONOR DARAH\n"); }
                break;
            }
            case 0:
                printf("Keluar dari program...\n");
                return 0;
            default:
                printf("Menu tidak tersedia\n");
        }

        
        printf("\nKembali ke menu utama? (y/n): ");
        scanf(" %c", &kembali);

    } while (kembali == 'y' || kembali == 'Y');

    printf("Terima kasih telah menggunakan layanan kami!\n");
    return 0;
}

* Geser ke kanan untuk melihat kode selengkapnya

Screenshot Output Program

Case 1
Menu 1

Rekap Konsumsi Air

Case 2
Menu 2

Data Piket RT/RW

Case 2
Menu 2

Data Piket RT/RW

Case 3
Menu 3

Skrining Donor Darah

Case 3
Menu 3

Skrining Donor Darah

"Open image in new tab" untuk melihat gambar lebih jelas.

Anggota Kelompok 4

Kontribusi pembuatan fitur program

Sistem Informasi 2024

CASE 3

Faza Akhmad

10124477

CASE 1

Galih Anggara

10124507

CASE 2

Rafid Salman

11124123

GUNAKAN KODE INI DENGAN BAIK YAA

Salman as a blog post designer

Komentar