在C語言中,我們可以通過結構體、數組和文件操作等基本功能來實現一個簡單的學生籍貫信息記錄簿。本文將詳細介紹如何使用C語言編寫一個程序,用于記錄和管理學生的籍貫信息。
首先,我們需要明確程序的基本功能:
為了實現上述功能,我們需要定義一個結構體來存儲學生的信息:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NAME_LEN 50
#define MAX_HOMETOWN_LEN 100
typedef struct {
int id; // 學號
char name[MAX_NAME_LEN]; // 姓名
char hometown[MAX_HOMETOWN_LEN]; // 籍貫
} Student;
我們可以通過一個函數來實現添加學生信息的功能:
void addStudent(Student students[], int *count) {
if (*count >= 100) {
printf("學生信息已滿,無法添加更多學生。\n");
return;
}
Student newStudent;
printf("請輸入學號: ");
scanf("%d", &newStudent.id);
printf("請輸入姓名: ");
scanf("%s", newStudent.name);
printf("請輸入籍貫: ");
scanf("%s", newStudent.hometown);
students[*count] = newStudent;
(*count)++;
printf("學生信息添加成功!\n");
}
根據學號查詢學生信息的函數:
void queryStudent(Student students[], int count) {
int id;
printf("請輸入要查詢的學號: ");
scanf("%d", &id);
for (int i = 0; i < count; i++) {
if (students[i].id == id) {
printf("學號: %d, 姓名: %s, 籍貫: %s\n", students[i].id, students[i].name, students[i].hometown);
return;
}
}
printf("未找到該學號對應的學生信息。\n");
}
根據學號修改學生信息的函數:
void modifyStudent(Student students[], int count) {
int id;
printf("請輸入要修改的學號: ");
scanf("%d", &id);
for (int i = 0; i < count; i++) {
if (students[i].id == id) {
printf("請輸入新的姓名: ");
scanf("%s", students[i].name);
printf("請輸入新的籍貫: ");
scanf("%s", students[i].hometown);
printf("學生信息修改成功!\n");
return;
}
}
printf("未找到該學號對應的學生信息。\n");
}
根據學號刪除學生信息的函數:
void deleteStudent(Student students[], int *count) {
int id;
printf("請輸入要刪除的學號: ");
scanf("%d", &id);
for (int i = 0; i < *count; i++) {
if (students[i].id == id) {
for (int j = i; j < *count - 1; j++) {
students[j] = students[j + 1];
}
(*count)--;
printf("學生信息刪除成功!\n");
return;
}
}
printf("未找到該學號對應的學生信息。\n");
}
顯示所有學生信息的函數:
void displayAllStudents(Student students[], int count) {
if (count == 0) {
printf("當前沒有學生信息。\n");
return;
}
for (int i = 0; i < count; i++) {
printf("學號: %d, 姓名: %s, 籍貫: %s\n", students[i].id, students[i].name, students[i].hometown);
}
}
將學生信息保存到文件中的函數:
void saveToFile(Student students[], int count) {
FILE *file = fopen("students.dat", "wb");
if (file == NULL) {
printf("無法打開文件進行保存。\n");
return;
}
fwrite(&count, sizeof(int), 1, file);
fwrite(students, sizeof(Student), count, file);
fclose(file);
printf("學生信息已保存到文件。\n");
}
從文件中加載學生信息的函數:
void loadFromFile(Student students[], int *count) {
FILE *file = fopen("students.dat", "rb");
if (file == NULL) {
printf("無法打開文件進行加載。\n");
return;
}
fread(count, sizeof(int), 1, file);
fread(students, sizeof(Student), *count, file);
fclose(file);
printf("學生信息已從文件加載。\n");
}
最后,我們將上述功能整合到一個主函數中,并通過菜單選擇來調用不同的功能:
int main() {
Student students[100];
int count = 0;
int choice;
loadFromFile(students, &count);
while (1) {
printf("\n學生籍貫信息記錄簿\n");
printf("1. 添加學生信息\n");
printf("2. 查詢學生信息\n");
printf("3. 修改學生信息\n");
printf("4. 刪除學生信息\n");
printf("5. 顯示所有學生信息\n");
printf("6. 保存并退出\n");
printf("請選擇操作: ");
scanf("%d", &choice);
switch (choice) {
case 1:
addStudent(students, &count);
break;
case 2:
queryStudent(students, count);
break;
case 3:
modifyStudent(students, count);
break;
case 4:
deleteStudent(students, &count);
break;
case 5:
displayAllStudents(students, count);
break;
case 6:
saveToFile(students, count);
return 0;
default:
printf("無效的選擇,請重新輸入。\n");
}
}
return 0;
}
通過上述代碼,我們實現了一個簡單的學生籍貫信息記錄簿。該程序能夠實現學生信息的添加、查詢、修改、刪除、顯示以及數據的保存和加載功能。雖然這個程序相對簡單,但它展示了如何使用C語言的基本功能來實現一個實用的管理系統。你可以在此基礎上進一步擴展功能,例如增加更多的學生信息字段、實現更復雜的查詢功能等。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。