fork download
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. #define MAX 100
  5.  
  6. typedef struct {
  7. int id; /* unique ID */
  8. char studentID[20]; /* student ID (hidden if anonymous) */
  9. char name[50]; /* name or "Anonymous" */
  10. char department[30]; /* department */
  11. char message[200]; /* complaint text */
  12. int resolved; /* 0 = pending, 1 = resolved */
  13. char solution[200]; /* solution text */
  14. } Complaint;
  15.  
  16. Complaint complaints[MAX];
  17. int count = 0;
  18.  
  19. void trimNewline(char *s) { s[strcspn(s, "\n")] = '\0'; }
  20.  
  21. /* ---------- 1. Submit complaint ---------- */
  22. void addComplaint(void)
  23. {
  24. if (count >= MAX) { puts("⚠️ List full."); return; }
  25. getchar(); /* flush newline from menu input */
  26.  
  27. complaints[count].id = count + 1;
  28.  
  29. printf("Student ID : ");
  30. fgets(complaints[count].studentID,sizeof(complaints[count].studentID),stdin);
  31. trimNewline(complaints[count].studentID);
  32.  
  33. printf("Department (CSE/EEE/Admin): ");
  34. fgets(complaints[count].department,sizeof(complaints[count].department),stdin);
  35. trimNewline(complaints[count].department);
  36.  
  37. char anon;
  38. printf("Do you want to keep your name anonymous? (Y/N): ");
  39. scanf(" %c",&anon);
  40. getchar(); /* flush newline */
  41.  
  42. /* ──► FLIPPED LOGIC ◄── */
  43. if (anon == 'N' || anon == 'n') { /* treat as anonymous */
  44. strcpy(complaints[count].name, "Anonymous");
  45. /* keep studentID in memory, but hide later */
  46. } else { /* Y/y → show name */
  47. printf("Your Name : ");
  48. fgets(complaints[count].name,sizeof(complaints[count].name),stdin);
  49. trimNewline(complaints[count].name);
  50. }
  51.  
  52. printf("Complaint message : ");
  53. fgets(complaints[count].message,sizeof(complaints[count].message),stdin);
  54. trimNewline(complaints[count].message);
  55.  
  56. complaints[count].resolved = 0;
  57. complaints[count].solution[0]= '\0';
  58.  
  59. printf("✅ Complaint submitted with ID #%d\n",complaints[count].id);
  60. count++;
  61. }
  62.  
  63. /* ---------- 2. View all complaints ---------- */
  64. void viewAll(void)
  65. {
  66. if (!count){ puts("📭 No complaints yet."); return; }
  67.  
  68. puts("\n--- Pending Complaints ---");
  69. for(int i=0;i<count;i++)
  70. {
  71. if(!complaints[i].resolved){
  72. printf("\nID : %d\n",complaints[i].id);
  73. if(strcmp(complaints[i].name,"Anonymous")==0){
  74. puts("Student ID: Hidden");
  75. puts("Name : Anonymous");
  76. }else{
  77. printf("Student ID: %s\n",complaints[i].studentID);
  78. printf("Name : %s\n",complaints[i].name);
  79. }
  80. printf("Dept : %s\n",complaints[i].department);
  81. printf("Message : %s\n",complaints[i].message);
  82. }
  83. }
  84.  
  85. puts("\n--- Resolved Complaints ---");
  86. for(int i=0;i<count;i++)
  87. {
  88. if(complaints[i].resolved){
  89. printf("\nID : %d\n",complaints[i].id);
  90. if(strcmp(complaints[i].name,"Anonymous")==0){
  91. puts("Student ID: Hidden");
  92. puts("Name : Anonymous");
  93. }else{
  94. printf("Student ID: %s\n",complaints[i].studentID);
  95. printf("Name : %s\n",complaints[i].name);
  96. }
  97. printf("Dept : %s\n",complaints[i].department);
  98. printf("Message : %s\n",complaints[i].message);
  99. printf("Solution : %s\n",
  100. complaints[i].solution[0]?complaints[i].solution:"(no details)");
  101. }
  102. }
  103. }
  104.  
  105. /* ---------- 3. Solve complaint ---------- */
  106. void solveComplaint(void)
  107. {
  108. if(!count){ puts("No complaints to solve."); return; }
  109.  
  110. int id;
  111. printf("Enter complaint ID to mark solved: ");
  112. if(scanf("%d",&id)!=1){ puts("Invalid input."); return; }
  113.  
  114. if(id<1||id>count){ puts("❌ Invalid ID."); return; }
  115. if(complaints[id-1].resolved){ puts("Already resolved."); return; }
  116.  
  117. printf("Enter solution description (optional): ");
  118. fgets(complaints[id-1].solution,sizeof(complaints[id-1].solution),stdin);
  119. trimNewline(complaints[id-1].solution);
  120.  
  121. complaints[id-1].resolved=1;
  122. puts("✅ Complaint marked as solved.");
  123. }
  124.  
  125. /* ---------- 4. Notice board (identity hidden) ---------- */
  126. void noticeBoard(void)
  127. {
  128. if(!count){ puts("📭 No complaints yet."); return; }
  129.  
  130. puts("\n==== NOTICE BOARD ====");
  131. int shownPending=0,shownResolved=0;
  132.  
  133. for(int i=0;i<count;i++){
  134. if(!complaints[i].resolved){
  135. if(!shownPending){ puts("\n-- Pending --"); shownPending=1; }
  136. printf("#%d | %s | %s\n",
  137. complaints[i].id,complaints[i].department,complaints[i].message);
  138. }
  139. }
  140. if(!shownPending) puts("\nNo pending complaints ✅");
  141.  
  142. for(int i=0;i<count;i++){
  143. if(complaints[i].resolved){
  144. if(!shownResolved){ puts("\n-- Resolved --"); shownResolved=1; }
  145. printf("#%d | %s | %s\n",
  146. complaints[i].id,complaints[i].department,complaints[i].message);
  147. }
  148. }
  149. }
  150.  
  151. /* ---------- Main menu ---------- */
  152. int main(void)
  153. {
  154. int choice;
  155. while(1){
  156. puts("\n===== Complaint Routing System =====");
  157. puts("1. Submit Complaint");
  158. puts("2. View All Complaints");
  159. puts("3. Solve Complaint");
  160. puts("4. Notice Board");
  161. puts("5. Exit");
  162. printf("Enter choice: ");
  163. if(scanf("%d",&choice)!=1) break;
  164.  
  165. switch(choice){
  166. case 1: addComplaint(); break;
  167. case 2: viewAll(); break;
  168. case 3: solveComplaint(); break;
  169. case 4: noticeBoard(); break;
  170. case 5: puts("Goodbye!"); return 0;
  171. default: puts("Invalid choice!");
  172. }
  173. }
  174. return 0;
  175. }
  176.  
Success #stdin #stdout 0.01s 5296KB
stdin
Standard input is empty
stdout
===== Complaint Routing System =====
1. Submit Complaint
2. View All Complaints
3. Solve Complaint
4. Notice Board
5. Exit
Enter choice: