Advertisement
Guest User

Untitled

a guest
Jul 15th, 2018
730
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.67 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <conio.h>
  5. #include <time.h>
  6. #include <windows.h>
  7. void menu();
  8. void tambah_mhs();
  9. void tampil_mhs();
  10. void edit_mhs();
  11. void hapus_mhs();
  12. void cari_mhs();
  13. void close();
  14. void header();
  15. void statistik_nilai();
  16. void tampil_sort();
  17. struct DATA {
  18. char nama[30];
  19. int umur,id;
  20. char jk[30];
  21. float nilai[5];
  22. int total;
  23.  
  24. }tambah,cek,hapus,sort[100],temp;
  25.  
  26. char index[2];
  27. struct date{
  28. int tgl;
  29. int bln;
  30. int thn;
  31. };
  32. int main()
  33. {
  34. system("cls");
  35. printf("Now Loading");
  36. Sleep(500);
  37. printf(". ");
  38. Sleep(500);
  39. printf(". ");
  40. Sleep(500);
  41. printf(". ");
  42. Sleep(500);
  43. printf(". ");
  44. Sleep(500);
  45. printf(". ");
  46. menu();
  47. return 0;
  48. }
  49. void menu(){
  50. int pilih;
  51. menu:
  52. system("cls");
  53. header();
  54. printf("MAIN MENU ::");
  55. printf("\n[1]. Tambah Mahasiswa Dan Nilai Mahasiswa");
  56. printf("\n[2]. Tampil Data Mahasiswa");
  57. printf("\n[3]. Cari Data Lengkap Mahasiswa");
  58. printf("\n[4]. Hapus Data Mahasiswa");
  59. printf("\n[5]. Edit Data Mahasiswa");
  60. printf("\n[6]. Statistik Nilai");
  61. printf("\n[7]. Menampilkan Total Nilai ASCENDING Dan DESCENDING");
  62. printf("\n[8]. Keluar");
  63. printf("\n\nInput Pilihan Nomor Menu : ");
  64. scanf("%d", &pilih);
  65. switch(pilih){
  66. case 1:tambah_mhs();
  67. break;
  68. case 2:tampil_mhs();
  69. break;
  70. case 3: cari_mhs();
  71. break;
  72. case 4:hapus_mhs();
  73. break;
  74. case 5:edit_mhs();
  75. break;
  76. case 6:statistik_nilai();
  77. break;
  78. case 7:tampil_sort();
  79. break;
  80. case 8:close();
  81. break;
  82. default:printf("\nMohon Maaf Pilihan Anda Salah !");
  83. getche();
  84. goto menu;
  85. }
  86. }
  87. void tambah_mhs(){
  88. FILE *ptr,*ptr1;
  89. int count=0;
  90.  
  91. ptr =fopen("mahasiswa.txt","a");
  92. system("cls");
  93. ptr1 =fopen("mahasiswa.txt","r");
  94. while (fscanf (ptr1,"%d;%[^;];%[^;];%d;%f;%f;%f;%f;%f\n",&tambah.id,tambah.nama,tambah.jk,&tambah.umur,&tambah.nilai[0],&tambah.nilai[1],&tambah.nilai[2],&tambah.nilai[3],&tambah.nilai[4])!=EOF)
  95. {
  96. tambah.id++;
  97. }
  98. cek.id = tambah.id;
  99. fclose(ptr1);
  100. printf ("masukan nama mahasiswa : ");fflush(stdin);
  101. scanf ("%[^\n]",tambah.nama);
  102. printf ("masukan JK mahasiswa : ");fflush(stdin);
  103. scanf ("%[^\n]",tambah.jk);
  104. printf ("masukan umur mahasiswa : ");fflush(stdin);
  105. scanf ("%d",&tambah.umur);
  106. printf("Nilai UTS\t: ");
  107. scanf("%f",&tambah.nilai[0]);
  108. printf("Nilai Tugas\t: ");
  109. scanf("%f",&tambah.nilai[1]);
  110. printf("Nilai Kuis\t: ");
  111. scanf("%f",&tambah.nilai[2]);
  112. printf("Nilai UAS\t: ");
  113. scanf("%f",&tambah.nilai[3]);
  114. tambah.nilai[4]=(tambah.nilai[0]+tambah.nilai[1]+tambah.nilai[2]+tambah.nilai[3])/4;
  115. tambah.total = tambah.nilai[4];
  116. fprintf(ptr,"%d;%s;%s;%d;%f;%f;%f;%f;%f\n",tambah.id,tambah.nama,tambah.jk,tambah.umur,tambah.nilai[0],tambah.nilai[1],tambah.nilai[2],tambah.nilai[3],tambah.nilai[4]);
  117. fclose(ptr);
  118.  
  119. printf("\n\nData Mahasiswa Sudah Disimpan !");
  120. add_invalid:
  121. printf("\n\n\tEnter 1 untuk menu utama dan 0 untuk keluar : ");
  122. switch(getch()){
  123. case '1': menu();
  124. break;
  125. case '0': close();
  126. break;
  127. default:printf("\nMaaf Kesalahan Input !");
  128. getche();
  129. goto add_invalid;
  130. }
  131. }
  132. void index_nilai(){
  133. if(tambah.nilai[4]>85 && tambah.nilai[4]<=100){
  134. strcpy(index, "A");
  135. }
  136. else if(tambah.nilai[4]>75 && tambah.nilai[4]<=85){
  137. strcpy(index, "B+");
  138. }
  139. else if(tambah.nilai[4]>65 && tambah.nilai[4]<=75){
  140. strcpy(index, "B");
  141. }
  142. else if(tambah.nilai[4]>55 && tambah.nilai[4]<=65){
  143. strcpy(index, "C+");
  144. }
  145. else if(tambah.nilai[4]>45 && tambah.nilai[4]<=55){
  146. strcpy(index, "C");
  147. }
  148. else if(tambah.nilai[4]>30 && tambah.nilai[4]<=45){
  149. strcpy(index, "D");
  150. }
  151. else if(tambah.nilai[4]>0 && tambah.nilai[4]<=30){
  152. strcpy(index, "E");
  153. }
  154. }
  155. void close(){
  156. }
  157. void tampil_mhs()
  158. {
  159. FILE *view;
  160. view = fopen("mahasiswa.txt","r");
  161. int test=0;
  162. system ("cls");
  163. printf ("ID\t\tNAMA\t\tJK\t\tUMUR\t\tUTS\t\tTUGAS\t\tKUIS\t\tUAS\t\tRata-Rata\n");
  164. while (fscanf (view,"%d;%[^;];%[^;];%d;%f;%f;%f;%f;%f\n",&tambah.id,tambah.nama,tambah.jk,&tambah.umur,&tambah.nilai[0],&tambah.nilai[1],&tambah.nilai[2],&tambah.nilai[3],&tambah.nilai[4])!=EOF)
  165. {
  166. printf("%d\t\t%s\t%s\t\t%d\t\t%.2f\t\t%.2f\t\t%.2f\t\t%.2f\t\t%.2f\n",tambah.id,tambah.nama,tambah.jk,tambah.umur,tambah.nilai[0],tambah.nilai[1],tambah.nilai[2],tambah.nilai[3],tambah.nilai[4]);
  167. test++;
  168. }
  169. printf ("\nJumlah Data Mahasiswa : %d",test);
  170. fclose(view);
  171.  
  172. if(test==0)
  173. {
  174. system("cls");
  175. printf ("\nData Kosong ! \n");
  176. }
  177. list_invalid:
  178. printf("\n\nEnter 1 untuk menu utama dan 0 untuk keluar : ");
  179. switch(getch()){
  180. case '1': menu();
  181. break;
  182. case '0': close();
  183. break;
  184. default:printf("\nMaaf Kesalahan Input !");
  185. getche();
  186. goto list_invalid;
  187. }
  188. }
  189. void cari_mhs()
  190. {
  191. FILE *ptr;
  192. int test=0;
  193. system("cls");
  194. ptr=fopen("mahasiswa.txt","r");
  195. system("cls");
  196. printf("Input ID Mahasiswa : ");
  197. scanf("%d", &cek.id);
  198. while(fscanf (ptr,"%d;%[^;];%[^;];%d;%f;%f;%f;%f;%f\n",&tambah.id,tambah.nama,tambah.jk,&tambah.umur,&tambah.nilai[0],&tambah.nilai[1],&tambah.nilai[2],&tambah.nilai[3],&tambah.nilai[4])!=EOF){
  199. if(tambah.id==cek.id){
  200. test=1;
  201. index_nilai();
  202. printf ("\nID [%d]",tambah.id);
  203. printf("\nNama Mahasiswa\t: %s",tambah.nama);
  204. printf("\nJenis Kelamin\t: %s",tambah.jk);
  205. printf("\nUmur\t\t: %d",tambah.umur);
  206. printf("\nNilai UTS\t: %.2f",tambah.nilai[0]);
  207. printf("\nNilai Tugas\t: %.2f",tambah.nilai[1]);
  208. printf("\nNilai Kuis\t: %.2f",tambah.nilai[2]);
  209. printf("\nNilai UAS\t: %.2f",tambah.nilai[3]);
  210. printf("\nNilai Akhir\t: %.2f",tambah.nilai[4]);
  211. printf("\nPredikat\t: %s",index);
  212. }
  213. }
  214. fclose(ptr);
  215. if(test!=1){
  216. system("cls");
  217. detail_print:
  218. printf("\nData tidak ditemukan !\a\a\a");
  219. detail_invalid:
  220. printf("\nInput 0 untuk mencoba lagi, 1 untuk ke menu utama dan 2 untuk keluar :");
  221. switch(getch()){
  222. case '0': cari_mhs();
  223. break;
  224. case '1': menu();
  225. break;
  226. case '2': close();
  227. break;
  228. default:printf("\nMaff Kesalahan Input !");
  229. getche();
  230. goto detail_invalid;
  231. }
  232. }else{
  233. detail_valid:
  234. printf("\n\n\nInput 1 untuk ke menu utama dan 0 untuk keluar :");
  235. switch(getch()){
  236. case '1': menu();
  237. break;
  238. case '0': close();
  239. break;
  240. default:printf("\nMaaf Kesalahan Input !");
  241. getche();
  242. goto detail_valid;
  243. }
  244. }
  245.  
  246. }
  247. void header(){
  248. printf("HELLO WORLD !");
  249. time_t mytime;
  250. time(&mytime);
  251. printf("\n%s", ctime(&mytime));
  252.  
  253. }
  254. void hapus_mhs()
  255. {
  256. FILE *lama, *baru;
  257. int test=0;
  258. lama = fopen("mahasiswa.txt","r");
  259. baru = fopen("baru.txt","w");
  260. system("cls");
  261. printf("Input No. ID Mahasiswa yang akan di hapus : ");
  262. scanf("%d", &hapus.id);
  263. while(fscanf (lama,"%d;%[^;];%[^;];%d;%f;%f;%f;%f;%f\n",&tambah.id,tambah.nama,tambah.jk,&tambah.umur,&tambah.nilai[0],&tambah.nilai[1],&tambah.nilai[2],&tambah.nilai[3],&tambah.nilai[4])!=EOF)
  264. {
  265. if(tambah.id != hapus.id)
  266. {
  267. fprintf(baru,"%d;%s;%s;%d;%f;%f;%f;%f;%f\n",tambah.id,tambah.nama,tambah.jk,tambah.umur,tambah.nilai[0],tambah.nilai[1],tambah.nilai[2],tambah.nilai[3],tambah.nilai[4]);
  268. }
  269. else{
  270. test++;
  271. printf("\nData Mahasiswa No ID : %d dengan Nama : %s\n",tambah.id,tambah.nama);
  272. printf("\nBerhasil dihapus dari Daftar !");
  273. }
  274. }
  275. fclose(lama);
  276. fclose(baru);
  277. remove("mahasiswa.txt");
  278. rename("baru.txt","mahasiswa.txt");
  279. if(test==0){
  280. printf("\nData tidak ditemukan !\a\a\a");
  281. erase_invalid:
  282. printf("\nInput 0 untuk mencoba lagi, 1 untuk ke menu utama and 2 untuk keluar :");
  283. switch(getch()){
  284. case '0': hapus_mhs();
  285. break;
  286. case '1': menu();
  287. break;
  288. case '2': close();
  289. break;
  290. default:printf("\nMaaf Kesalahan Input !");
  291. getche();
  292. goto erase_invalid;
  293. }
  294. }
  295. else{
  296. erase_valid:
  297. printf("\nInput 1 untuk ke menu utama and 0 untuk keluar :");
  298. switch(getch()){
  299. case '1': menu();
  300. break;
  301. case '0': close();
  302. break;
  303. default:printf("\nMaaf Kesalahan Input !");
  304. getche();
  305. goto erase_valid;
  306. }
  307. }
  308.  
  309. }
  310. void edit_mhs()
  311. {
  312. int pilih,test=0;
  313. FILE *lama,*baru;
  314. lama = fopen("mahasiswa.txt","r");
  315. baru = fopen ("baru.txt","w");
  316. system("cls");
  317.  
  318. printf ("Masukan ID Mahasiswa : ");
  319. scanf ("%d",&cek.id);
  320. while(fscanf (lama,"%d;%[^;];%[^;];%d;%f;%f;%f;%f;%f\n",&tambah.id,tambah.nama,tambah.jk,&tambah.umur,&tambah.nilai[0],&tambah.nilai[1],&tambah.nilai[2],&tambah.nilai[3],&tambah.nilai[4])!=EOF)
  321. {
  322. if(tambah.id == cek.id)
  323. {
  324. test=1;
  325. ganti:
  326. printf("\nNo. ID : %d dimiliki Mahasiswa dengan Nama : %s",tambah.id,tambah.nama);
  327. printf("\n\nData yang akan diganti : ");
  328. printf("\n[1]. Nama");
  329. printf("\n[2]. Jenis Kelamin");
  330. printf("\n[3]. Umur");
  331. printf("\nInput Pilihan : ");
  332. scanf("%d",&pilih);
  333.  
  334. if(pilih == 1)
  335. {
  336. printf ("\nMasukan Data Nama Baru : ");fflush(stdin);
  337. scanf ("%[^\n]",cek.nama);
  338. strcpy(tambah.nama,cek.nama);
  339. fprintf(baru,"%d;%s;%s;%d;%f;%f;%f;%f;%f\n",tambah.id,tambah.nama,tambah.jk,tambah.umur,tambah.nilai[0],tambah.nilai[1],tambah.nilai[2],tambah.nilai[3],tambah.nilai[4]);
  340. printf ("\nPerubahan Sudah Disimpan !");
  341. }
  342. else if (pilih == 2)
  343. {
  344. printf("\nMasukan Data Jenis Kelamin L/P : ");fflush(stdin);
  345. scanf ("%[^\n]",cek.jk);
  346. strcpy(tambah.jk,cek.jk);
  347. fprintf(baru,"%d;%s;%s;%d;%f;%f;%f;%f;%f\n",tambah.id,tambah.nama,tambah.jk,tambah.umur,tambah.nilai[0],tambah.nilai[1],tambah.nilai[2],tambah.nilai[3],tambah.nilai[4]);
  348. printf ("\nPerubahan Sudah Disimpan !");
  349. }
  350. else if (pilih == 3)
  351. {
  352. printf ("\nMasukan Data Umur Baru : ");
  353. scanf ("%d",&cek.umur);
  354. tambah.umur = cek.umur;
  355. fprintf(baru,"%d;%s;%s;%d;%f;%f;%f;%f;%f\n",tambah.id,tambah.nama,tambah.jk,tambah.umur,tambah.nilai[0],tambah.nilai[1],tambah.nilai[2],tambah.nilai[3],tambah.nilai[4]);
  356. printf ("\nPerubahan Sudah Disimpan !");
  357. }
  358. else{
  359. printf("\n\nInput Anda Salah !");
  360. getche();
  361. goto ganti;
  362. }
  363. }
  364. else
  365. {
  366. fprintf(baru,"%d;%s;%s;%d;%f;%f;%f;%f;%f\n",tambah.id,tambah.nama,tambah.jk,tambah.umur,tambah.nilai[0],tambah.nilai[1],tambah.nilai[2],tambah.nilai[3],tambah.nilai[4]);
  367. }
  368. }
  369.  
  370. fclose(lama);
  371. fclose(baru);
  372. remove("mahasiswa.txt");
  373. rename("baru.txt","mahasiswa.txt");
  374. if(test!=1){
  375. system("cls");
  376. printf("\nData tidak ditemukan !\a\a\a");
  377. edit_invalid:
  378. printf("\nInput 0 untuk mencoba lagi, 1 untuk ke menu utama dan 2 untuk keluar :");
  379. switch(getch()){
  380. case '0': edit_mhs();
  381. break;
  382. case '1': menu();
  383. break;
  384. case '2': close();
  385. break;
  386. default:printf("\nMaaf Kesalahan Input !");
  387. getche();
  388. goto edit_invalid;
  389. }
  390. }
  391. else{
  392. edit_valid:
  393. printf("\n\n\nInput 1 untuk ke menu utama dan 0 untuk keluar :");
  394. switch(getch()){
  395. case '1': menu();
  396. break;
  397. case '0': close();
  398. break;
  399. default:printf("\nMaaf Kesalahan Input !");
  400. getche();
  401. goto edit_valid;
  402. }
  403. }
  404. }
  405. void tampil_sort()
  406. {
  407. system("cls");
  408. FILE *data;
  409. int count = 0,i,j,test=0,pil;
  410. system("cls");
  411. printf ("MENAMPILKAN TOTAL NILAI ASCENDING DAN DESCENDING\n");
  412. data=fopen("mahasiswa.txt","r");
  413. while(fscanf (data,"%d;%[^;];%[^;];%d;%f;%f;%f;%f;%f\n",&tambah.id,tambah.nama,tambah.jk,&tambah.umur,&tambah.nilai[0],&tambah.nilai[1],&tambah.nilai[2],&tambah.nilai[3],&tambah.nilai[4])!=EOF) {
  414.  
  415. sort[count].total = tambah.nilai[4];
  416. sort[count].id = tambah.id;
  417. strcpy(sort[count].nama,tambah.nama);
  418. count++;
  419. test=1;
  420. }
  421. back:
  422. printf ("\n");
  423. printf ("1.ASCENDING\n");
  424. printf ("2.DESCENDING\n");
  425. printf("\nPilih: ");scanf("%d",&pil);
  426.  
  427. if(pil==1)
  428. {
  429. printf ("ID\tNAMA\t\tTOTAL NILAI\n");
  430. for(i=0;i<count-1;i++){
  431. for(j=i+1;j<count;j++)
  432. {
  433. if(sort[i].total > sort[j].total)
  434. {
  435. temp = sort[j];
  436. sort[j] = sort[i];
  437. sort[i] = temp;
  438. }
  439. }
  440. }
  441. for(i=0;i<count;i++)
  442. {
  443. printf("%d\t%s\t%d\n",sort[i].id,sort[i].nama,sort[i].total);
  444. }
  445. }
  446. else if (pil == 2)
  447. {
  448. printf ("ID\tNAMA\t\tTOTAL NILAI\n");
  449. for(i=0;i<count-1;i++){
  450. for(j=i+1;j<count;j++)
  451. {
  452. if(sort[i].total < sort[j].total)
  453. {
  454. temp = sort[j];
  455. sort[j] = sort[i];
  456. sort[i] = temp;
  457. }
  458. }
  459. }
  460. for(i=0;i<count;i++)
  461. {
  462. printf("%d\t%s\t%d\n",sort[i].id,sort[i].nama,sort[i].total);
  463. }
  464. }
  465. else{
  466. printf ("Salah INPUT!\n");
  467. getch();
  468. goto back;
  469. }
  470. fclose(data);
  471. if(test==0){
  472. printf("\nData tidak ditemukan !\a\a\a");
  473. erase_invalid:
  474. printf("\nInput 0 untuk mencoba lagi, 1 untuk ke menu utama and 2 untuk keluar :");
  475. switch(getch()){
  476. case '0': tampil_sort();
  477. break;
  478. case '1': menu();
  479. break;
  480. case '2': close();
  481. break;
  482. default:printf("\nMaaf Kesalahan Input !");
  483. getche();
  484. goto erase_invalid;
  485. }
  486. }
  487. else{
  488. erase_valid:
  489. printf("\nInput 1 untuk ke menu utama and 0 untuk keluar :");
  490. switch(getch()){
  491. case '1': menu();
  492. break;
  493. case '0': close();
  494. break;
  495. default:printf("\nMaaf Kesalahan Input !");
  496. getche();
  497. goto erase_valid;
  498. }
  499. }
  500.  
  501.  
  502.  
  503. }
  504. void statistik_nilai(){
  505. system("cls");
  506. FILE *statistik;
  507. float max[5]={0,0,0,0,0},min[5]={100,100,100,100,100},sum[5]={0,0,0,0,0},avg[5];
  508. int count = 0,i;
  509. statistik=fopen("mahasiswa.txt","r");
  510. while(fscanf (statistik,"%d;%[^;];%[^;];%d;%f;%f;%f;%f;%f\n",&tambah.id,tambah.nama,tambah.jk,&tambah.umur,&tambah.nilai[0],&tambah.nilai[1],&tambah.nilai[2],&tambah.nilai[3],&tambah.nilai[4])!=EOF) {
  511. count++;
  512. /*perulangan nilai maximal*/
  513. for(i=0;i<=4;i++){
  514. if(max[i] < tambah.nilai[i]){
  515. max[i] = tambah.nilai[i];
  516. }
  517. }
  518. /*perulangan nilai minimal*/
  519. for(i=0;i<=4;i++){
  520. if(min[i] > tambah.nilai[i]){
  521. min[i] = tambah.nilai[i];
  522. }
  523. }
  524. /*perulangan penghitung jumlah nilai akhir*/
  525. for(i=0;i<=4;i++){
  526. sum[i] += tambah.nilai[i];
  527. }
  528. /*perulangan penghitung rata-rata*/
  529. for(i=0;i<=4;i++){
  530. avg[i]=sum[i]/count;
  531. }
  532. }
  533. printf("=============================================================");
  534. printf("\nTerbesar\tUTS\tTugas\tKuis\tUAS\tNilai Akhir");
  535. printf("\nNilai\t\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f",max[0],max[1],max[2],max[3],max[4]);
  536. printf("\n=============================================================");
  537. printf("\nTerkecil\tUTS\tTugas\tKuis\tUAS\tNilai Akhir");
  538. printf("\nNilai\t\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f",min[0],min[1],min[2],min[3],min[4]);
  539. printf("\n=============================================================");
  540. printf("\nRata-rata\tUTS\tTugas\tKuis\tUAS\tNilai Akhir");
  541. printf("\nNilai\t\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f",avg[0],avg[1],avg[2],avg[3],avg[4]);
  542. printf("\n=============================================================");
  543.  
  544. fclose(statistik);
  545.  
  546. printf("\n\nEnter 1 untuk menu utama dan 0 untuk keluar : ");
  547. list_invalid:
  548. switch(getch()){
  549. case '1': menu();
  550. break;
  551. case '0': close();
  552. break;
  553. default:printf("\nMaaf Kesalahan Input !");
  554. getche();
  555. goto list_invalid;
  556. }
  557.  
  558. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement