this is file dataBarang.c
#include "dataBarang.h"
struct node *head = NULL; // Definisi variabel head
struct node *last = NULL; // Definisi variabel last
bool isEmpty() {
return head == NULL;
}
char barangMenu() {
char choice;
printf("+=============================================+n");
printf("| SISTEM MANAJEMEN GUDANG |n");
printf("| PERUSAHAAN KIMIA FARMA |n");
printf("+=============================================+n");
printf("| Tekan(1) Untuk Input Barang Masuk |n");
printf("| Tekan(2) Menghapus Data Barang |n");
printf("| Tekan(3) Mencetak Data Barang |n");
printf("| Tekan(4) Mencari Barang |n");
printf("| Tekan(5) Melihat Total Barang |n");
printf("| Tekan(6) Exit |n");
printf("+=============================================+nn");
printf("Masukkan Menu Pilihan Anda: ");
scanf(" %c", &choice);
return choice;
}
void insert(struct Barang barang) {
struct node *temp = (struct node *)malloc(sizeof(struct node));
temp->barang = barang;
temp->next = NULL;
if (isEmpty()) {
head = temp;
last = temp;
} else {
last->next = temp;
last = temp;
}
}
void displayList() {
if (isEmpty()) {
printf("Data kosongn");
} else {
printf("+=======================================================================================+n");
printf("| DATA GUDANG KIMIA FARMA |n");
printf("+=======================================================================================+n");
printf("| ID OBAT | NAMA OBAT | JENIS OBAT | STOCK OBAT | WAKTU |n");
printf("+=======================================================================================+n");
struct node *current = head;
while (current != NULL) {
char waktu[30];
strftime(waktu, 30, "%Y-%m-%d %H:%M:%S", localtime(&(current->barang.waktu)));
printf("|%10d |%22s |%15s |%12d |%15s |n", current->barang.id, current->barang.nama, current->barang.jenis, current->barang.stock, waktu);
current = current->next;
}
printf("+=======================================================================================+n");
}
}
bool searchId(int id) {
struct node *temp = head;
while (temp != NULL) {
printf("ID yang dicari: %dn", id);
printf("ID saat ini: %dn", temp->barang.id);
if (temp->barang.id == id) {
printf("Barang dengan ID %d ditemukan.n", id);
return true;
}
temp = temp->next;
}
printf("Barang dengan ID %d tidak ditemukan.n", id);
return false;
}
void deleteBarang(int id) {
struct node *temp = head;
struct node *prev = NULL;
// Cari barang dengan ID yang sesuai
while (temp != NULL && temp->barang.id != id) {
prev = temp;
temp = temp->next;
}
// Jika barang ditemukan
if (temp != NULL) {
// Jika barang yang akan dihapus adalah barang pertama dalam daftar
if (temp == head) {
head = temp->next;
} else {
prev->next = temp->next;
}
// Jika barang yang akan dihapus adalah barang terakhir dalam daftar
if (temp == last) {
last = prev;
}
free(temp); // Bebaskan memori yang dialokasikan untuk barang yang dihapus
printf("Barang dengan ID %d telah dihapus.n", id);
} else {
printf("Barang dengan ID %d tidak ditemukan.n", id);
}
}
void showTotal() {
struct node *temp = head;
int total = 0;
while (temp != NULL) {
total += 1;
temp = temp->next;
}
printf("Total barang yang ada di gudang: %dn", total);
}
int main() {
char choice;
struct Barang barang;
do {
system("cls");
choice = barangMenu();
switch (choice) {
case '1':
printf("Masukkan Id Barang: ");
scanf("%d", &(barang.id));
printf("Masukkan Nama Barang: ");
scanf("%s", (barang.nama));
printf("Masukkan Jenis Barang: ");
scanf("%s", (barang.jenis));
printf("Masukkan Stok Barang: ");
scanf("%d", &(barang.stock));
barang.waktu = time(NULL); // Waktu saat ini
insert(barang);
break;
case '2': {
int id;
printf("Masukkan Id Barang yang akan dihapus: ");
scanf("%d", &id);
if (searchId(id)) {
deleteBarang(id);
} else {
printf("Barang dengan ID %d tidak ditemukan.n", id);
}
break;
}
case '3':
displayList();
break;
case '4': {
int id;
printf("Masukkan ID barang yang akan dicari: ");
scanf("%d", &id);
if (searchId(id)) {
printf("Barang dengan ID %d ditemukan.n", id);
} else {
printf("Barang dengan ID %d tidak ditemukan.n", id);
}
break;
}
case '5':
showTotal();
break;
case '6':
printf("Exitn");
break;
default:
printf("Input Anda Salahn");
break;
}
printf("Tekan tombol apapun untuk melanjutkan...");
getch(); // Tunggu sampai pengguna menekan tombol sebelum melanjutkan
} while (choice != '6');
return 0;
}
this is file dataBarang.h
#ifndef DATABARANG_H
#define DATABARANG_H
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <conio.h> // Untuk menggunakan fungsi getch() di Windows
#include <time.h> // Untuk bekerja dengan waktu
struct Barang {
int id;
char nama[25];
char jenis[25]; // Menambahkan jenis barang
int stock; // Menambahkan stok barang
time_t waktu; // Mengubah tipe data harga menjadi time_t untuk waktu
};
struct node {
struct Barang barang;
struct node *next;
};
extern struct node *head; // Tambahkan kata kunci extern
extern struct node *last; // Tambahkan kata kunci extern
bool isEmpty();
char barangMenu();
void insert(struct Barang barang);
void displayList();
bool searchId(int id);
void deleteBarang(int id);
void showTotal();
#endif
this is file dataKargo.c
#include "dataKargo.h"
#include <stdio.h>
#include <stdlib.h>
struct QUEUE antrian; // Definisi variabel antrian
// Implementasi fungsi-fungsi untuk queue
void Create() {
antrian.head = antrian.tail = -1;
}
// Fungsi mengecek apakah queue kosong
int IsEmpty() {
if (antrian.tail == -1) {
return 1;
} else {
return 0;
}
}
// Fungsi mengecek apakah queue penuh
int IsFull() {
if (antrian.tail == 15 - 1) {
return 1;
} else {
return 0;
}
}
// Menambah data pada queue
void Enqueue(long data) {
if (IsEmpty() == 1) {
antrian.head = antrian.tail = 0;
antrian.data[antrian.tail] = data;
} else if (IsFull() == 0) {
antrian.tail++;
antrian.data[antrian.tail] = data;
}
}
// Mengeluarkan data dari queue
int Dequeue() {
int i;
int e = antrian.data[antrian.head];
for (i = antrian.head; i <= antrian.tail - 1; i++) {
antrian.data[i] = antrian.data[i + 1];
}
antrian.tail--;
return e;
}
// Fungsi menu kargo
void menuContainer() {
long input;
int pilih, i;
Create();
do {
system("cls"); // Membersihkan layar
printf(" +=============================================+n");
printf(" | SISTEM INFORMASI MANAJEMEN GUDANG |n");
printf(" | PERUSAHAAN KIMIA FARMA |n");
printf(" | ( MENU ANTRIAN CONTAINER ) |n");
printf(" +=============================================+n");
printf(" | Tekan(1) Memasukkan ID Container |n");
printf(" | Tekan(2) Menghapus Data Antrian |n");
printf(" | Tekan(3) Melihat Data Antrian |n");
printf(" | Tekan(4) Keluar |n");
printf(" +=============================================+n");
printf("nMasukkan Pilihan Anda : ");
scanf("%d", &pilih);
switch (pilih) {
case 1: {
if (IsFull() == 1) {
printf("Antrian Penuh !");
} else {
printf("Masukkan ID Container : ");
scanf("%ld", &input);
Enqueue(input);
}
printf("n");
break;
}
case 2: {
if (IsEmpty() == 1) {
printf("Antrian Kosong !");
} else {
printf("Data Yang Dikeluarkan : ");
printf("%d", Dequeue());
printf("n");
}
printf("n");
break;
}
case 3: {
if (IsEmpty() == 1) {
printf("Antrian Kosong !n");
} else {
for (i = antrian.head; i <= antrian.tail; i++) {
printf("%d. ", i + 1);
printf("%ldn", antrian.data[i]);
}
}
printf("n");
break;
}
case 4: {
printf("Terima kasihn");
return; // Langsung keluar dari fungsi admin() dan kembali ke menu utama
}
default: {
printf("Tidak ada dalam Pilihann");
}
}
getchar(); // Mengonsumsi karakter newline ('n') yang tersisa di buffer stdin
printf("Tekan Enter untuk melanjutkan...");
getchar(); // Menunggu pengguna menekan Enter sebelum melanjutkan
} while (pilih >= 1 && pilih <= 4);
}
this is file dataKargo.h
#ifndef DATAKARGO_H
#define DATAKARGO_H
#include<stdio.h>
// Deklarasi queue dengan struct dan array
struct QUEUE {
long data[15];
int head;
int tail;
};
// Deklarasi variabel antrian dari struct
extern struct QUEUE antrian;
// Deklarasi fungsi queue
void Create();
int IsEmpty();
int IsFull();
void Enqueue(long data);
int Dequeue();
void menuContainer();
void menuUtama();
#endif
this is file main.c
#include "dataKargo.h"
#include "dataBarang.h"
// Deklarasi fungsi menuContainer dan menu
void menuContainer();
void barangMenu();
// Fungsi untuk menampilkan menu utama dan meminta input dari pengguna
void menuUtama() {
int pil;
do {
printf(" +============================================+n");
printf(" | SISTEM INFORMASI MANAJEMEN GUDANG |n");
printf(" | PERUSAHAAN KIMIA FARMA |n");
printf(" +============================================+n");
printf(" | Tekan(1) Masuk ke Menu Data Kargo |n");
printf(" | Tekan(2) Masuk ke Menu Manajemen Gudang |n");
printf(" | Tekan(3) Keluar Dari Program |n");
printf(" +============================================+n");
printf(" Masukkan Pilihan Anda : ");
scanf("%d", &pil);
switch (pil) {
case 1:
menuContainer();
break;
case 2:
barangMenu();
break;
case 3:
printf("Terima kasihn");
break; // Keluar dari program setelah memberi ucapan terima kasih
default:
printf("Pilihan tidak valid. Silakan masukkan nomor yang sesuai.n");
break;
}
} while (pil != 3); // Melakukan loop sampai pengguna memilih untuk keluar
}
int main() {
menuUtama(); // Memanggil fungsi menuUtama untuk menjalankan program
return 0;
}
there was an error: conflicting types for ‘menuBarang’ that I got. The error “conflicting types for ‘menuBarang'” occurred because there were differences in the declaration or definition of the menuBarang() function in various parts of the program code but in my program I couldn’t find any declarations with different data types , I declared ‘menuBarang’ as char.
I want to know the justification for my code and suggestions so that my code runs well
muhammad aly is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
1