C Project - Complete Calculator Application using C Programming
- Author Maniruzzaman Akash
- Published April 23, 2024
- Word count 1,194
Introduction
In this article, we’ll delve into a comprehensive example of a student management system implemented in the C programming language. This program allows users to manage a list of students, record their grades, search for students, and display relevant information. It serves as an excellent illustration of struct usage, file organization, and the implementation of a menu-driven console application.
Program Structure
Header and Definitions
The program begins with including the necessary header files and defining constants. The MAX_STUDENTS and MAX_SUBJECTS constants determine the maximum number of students and subjects, respectively. The structure Student is defined to store student information, including their name, roll number, and grades.
Main Function
The main function initializes an array of Student structures, students, and tracks the number of students using the numStudents variable. It enters a loop where the user is presented with a menu of options, and the chosen option is executed through a switch statement.
Menu-Driven Options
Add New Student: This option prompts the user to enter details for a new student, including their name, roll number, and initializes their grades. The information is stored in the students array.
Record Grades: Users can record grades for a specific student by entering the student’s roll number. The program then prompts the user to enter grades for each subject.
Display Grades: Users can view the grades of a specific student by providing the student’s roll number. The program displays the grades for each subject along with the student’s name.
Search Student: Users can search for a student either by roll number or name. The program displays relevant information if the student is found.
Modify Grades: Users can modify the grades of a specific student by entering the student’s roll number. The program prompts the user to enter new grades for each subject.
Display Students: This option displays a list of all students along with their names, roll numbers, grades for each subject, average, and GPA (Grade Point Average).
Exit: The program exits the loop and terminates.
Full source code in C Programming
#include
// Define the maximum number of students
#define MAX_STUDENTS 50
// Define the maximum number of subjects
#define MAX_SUBJECTS 5
// Define the structure for a student
struct Student {
char name[50];
int rollNumber;
int grades[MAX_SUBJECTS];
};
// Function to add a new student
void addNewStudent(struct Student students[], int *numStudents) {
if (*numStudents < MAX_STUDENTS) {
printf("Enter the details for the new student:\n");
// Increment the number of students
(*numStudents)++;
// Get the details from the user
printf("Name: ");
scanf("%s", students[*numStudents - 1].name);
printf("Roll Number: ");
scanf("%d", &students[*numStudents - 1].rollNumber);
// Initialize grades to -1 (indicating not yet recorded)
for (int i = 0; i < MAX_SUBJECTS; i++) {
students[*numStudents - 1].grades[i] = -1;
}
printf("Student added successfully!\n");
} else {
printf("Maximum number of students reached!\n");
}
}
// Function to record grades for a student
void recordGrades(struct Student students[], int numStudents) {
int rollNumber, subject;
printf("Enter the roll number of the student: ");
scanf("%d", &rollNumber);
// Search for the student
int studentIndex = -1;
for (int i = 0; i < numStudents; i++) {
if (students[i].rollNumber == rollNumber) {
studentIndex = i;
break;
}
}
if (studentIndex != -1) {
printf("Enter grades for the student (subject-wise):\n");
for (int i = 0; i < MAX_SUBJECTS; i++) {
printf("Subject %d: ", i + 1);
scanf("%d", &students[studentIndex].grades[i]);
}
printf("Grades recorded successfully for student %s!\n", students[studentIndex].name);
} else {
printf("Student not found!\n");
}
}
// Function to display grades for a student
void displayGrades(struct Student students[], int numStudents) {
int rollNumber;
printf("Enter the roll number of the student: ");
scanf("%d", &rollNumber);
// Search for the student
int studentIndex = -1;
for (int i = 0; i < numStudents; i++) {
if (students[i].rollNumber == rollNumber) {
studentIndex = i;
break;
}
}
if (studentIndex != -1) {
printf("\nGrades for student %s (Roll Number: %d):\n", students[studentIndex].name, students[studentIndex].rollNumber);
for (int i = 0; i < MAX_SUBJECTS; i++) {
printf("Subject %d: %d\n", i + 1, students[studentIndex].grades[i]);
}
printf("\n");
} else {
printf("Student not found!\n");
}
}
// Function to search for a student by roll number or name
void searchStudent(struct Student students[], int numStudents) {
int choice;
printf("Search student by:\n");
printf("1. Roll Number\n");
printf("2. Name\n");
printf("Enter your choice: ");
scanf("%d", &choice);
if (choice == 1) {
int rollNumber;
printf("Enter the roll number of the student: ");
scanf("%d", &rollNumber);
// Search for the student
int studentIndex = -1;
for (int i = 0; i < numStudents; i++) {
if (students[i].rollNumber == rollNumber) {
studentIndex = i;
break;
}
}
if (studentIndex != -1) {
printf("Student found!\n");
printf("Name: %s, Roll Number: %d\n", students[studentIndex].name, students[studentIndex].rollNumber);
} else {
printf("Student not found!\n");
}
} else if (choice == 2) {
char name[50];
printf("Enter the name of the student: ");
scanf("%s", name);
// Search for the student
int studentIndex = -1;
for (int i = 0; i < numStudents; i++) {
if (strcmp(students[i].name, name) == 0) {
studentIndex = i;
break;
}
}
if (studentIndex != -1) {
printf("Student found!\n");
printf("Name: %s, Roll Number: %d\n", students[studentIndex].name, students[studentIndex].rollNumber);
} else {
printf("Student not found!\n");
}
} else {
printf("Invalid choice. Please enter a valid option.\n");
}
}
// Function to modify grades for a student
void modifyGrades(struct Student students[], int numStudents) {
int rollNumber;
printf("Enter the roll number of the student: ");
scanf("%d", &rollNumber);
// Search for the student
int studentIndex = -1;
for (int i = 0; i < numStudents; i++) {
if (students[i].rollNumber == rollNumber) {
studentIndex = i;
break;
}
}
if (studentIndex != -1) {
printf("Enter the new grades for the student (subject-wise):\n");
for (int i = 0; i < MAX_SUBJECTS; i++) {
printf("Subject %d: ", i + 1);
scanf("%d", &students[studentIndex].grades[i]);
}
printf("Grades modified successfully for student %s!\n", students[studentIndex].name);
} else {
printf("Student not found!\n");
}
}
// Function to display the list of students
void displayStudents(struct Student students[], int numStudents) {
printf("\nList of Students:\n");
for (int i = 0; i < numStudents; i++) {
printf("Name: %s, Roll Number: %d\n", students[i].name, students[i].rollNumber);
// Display grades and average
printf("Grades:\n");
for (int j = 0; j < MAX_SUBJECTS; j++) {
float grade = students[i].grades[j];
if (grade > 0) {
printf("Subject %d: %.2f\n", j + 1, grade);
} else {
printf("Subject %d: %s\n", j + 1, "N/A");
}
}
// Calculate and display average
int sum = 0;
for (int j = 0; j < MAX_SUBJECTS; j++) {
sum += students[i].grades[j];
}
float average = (float)sum / MAX_SUBJECTS;
if (average > 0) {
printf("Average: %.2f\n", average);
} else {
printf("Average: %.2f\n", "N/A");
}
// Calculate and display GPA
float gpa = 0.0;
for (int j = 0; j < MAX_SUBJECTS; j++) {
float grade = students[i].grades[j];
if (grade >= 80) {
gpa += 4.0;
} else if (grade >= 70) {
gpa += 3.0;
} else if (grade >= 70) {
gpa += 2.0;
} else if (grade >= 60) {
gpa += 1.0;
}
}
gpa /= MAX_SUBJECTS;
printf("GPA: %.2f\n", gpa);
printf("\n");
}
}
int main() {
struct Student students[MAX_STUDENTS];
int numStudents = 0;
int choice;
do {
// Display menu
printf("Menu:\n");
printf("1. Add New Student\n");
printf("2. Record Grades\n");
printf("3. Display Grades\n");
printf("4. Search Student\n");
printf("5. Modify Grades\n");
printf("6. Display Students\n");
printf("7. Exit\n");
printf("Enter your choice: ");
scanf("%d", &choice);
switch (choice) {
case 1:
addNewStudent(students, &numStudents);
break;
case 2:
recordGrades(students, numStudents);
break;
case 3:
displayGrades(students, numStudents);
break;
case 4:
searchStudent(students, numStudents);
break;
case 5:
modifyGrades(students, numStudents);
break;
case 6:
displayStudents(students, numStudents);
break;
case 7:
printf("Exiting program.\n");
break;
default:
printf("Invalid choice. Please enter a valid option.\n");
}
} while (choice != 7);
return 0;
}
Check the below links to get the full article
I'm Maniruzzaman Akash. A Full stack Web Developer and a Programmer working 6+ years in this industry. I love to write articles on various programming technologies and make them easier for beginners.
You can read Full article with step by step source code here - https://devsenv.com/tutorials/c-programming-student-management-application-project
Article source: https://articlebiz.comRate article
Article comments
There are no posted comments.
Related articles
- Beyond the Razor: A Complete Guide to Gentle Hair Removal.
- Nourishing Beauty from Within: How to Strengthen Hair, Brighten Skin, and Protect Nails Naturally.
- Unlocking Inner Beauty: The Science of Stronger Hair, Radiant Skin, and Resilient Nails.
- The Secret to Silky Skin: Modern Hair Removal Solutions Explained.
- Wildly Elegant: Why Antelope Carpet Is the Ultimate Patterned Carpet for Luxury Homes
- Automatic Driving Lessons in Glasgow: Your Top FAQs Answered by Autogear Experts
- FAQ Guide: Everything Caledon Homeowners Should Know About Choosing Lighting from Fehmi Lights
- The Evolution of Compact Cinema Cameras: From Studio Rigs to Agile Setups
- Smooth Confidence: The Ultimate Guide to Effective Hair Removal.
- The Natural Path to Stronger Hair, Glowing Skin, and Healthier Nails.
- Smooth Skin Ahead: How to Remove Skin Tags Safely and Naturally.
- Smooth Skin Ahead: Natural Paths to Reducing the Appearance of Scars.
- The Art of Carved Doors: From Rustic Charm to Modern Elegance
- The Pediroller: A Simple Tool with a Profound Impact on Foot Health
- Fading Scars Naturally: How to Restore Smoother, Even-Toned Skin.
- Say Goodbye to Skin Tags Naturally: A Complete Guide to Gentle Removal.
- Refresh Your Home with the Carefree Spirit of Boho Decor
- The Charm of Modern Farmhouse Décor
- Luxury That Lasts: Why Happy Feet Flooring Is a Smart Investment
- The Real Reason Bamboo Pajamas Cost More—And Why GYS Makes Them Worth Every Penny
- Mastering Camera Support: How Precision Fluid Heads Transform Cinematic Movement
- Color Reproduction and Skin Tones — The Real Challenge for Modern Cinema Lenses
- The Use of Electric Callus Removers: A Modern Approach to Foot Care
- Clearer Skin Naturally: The Complete Guide to Safe and Effective Skin Tag Removal.
- Fading Scars Naturally: How to Restore Smoother, Even-Toned Skin.
- Varicose Veins Demystified: From Early Warning Signs to Proven Relief.
- Clearer Days Ahead: How to Effectively Treat and Manage Rosacea Symptoms.
- The Death of Expertise: Navigating the Political Landscape
- Hospitality Meets Worship: Church Carpet That Welcomes
- Using Toe Straighteners to Help Foot Problems