[C/C++]学生管理系统带文件操作 ╰+哭是因爲堅強的太久メ 2024-04-24 20:33 67阅读 0赞 > * 个人主页:[北·海][Link 1] > * ?CSDN新晋作者 > * ?欢迎 ?点赞✍评论⭐收藏 > * ✨收录专栏:[C/C++][C_C] > * ?希望作者的文章能对你有所帮助,有不足的地方请在评论区留言指正,大家一起学习交流!? #if 1 #include <stdio.h> #include <stdlib.h> #include <string.h> const int MAX = 100; // 定义学生结构体 typedef struct { char name[20]; char birthday[20];//出生年月 char jiguna[20];//籍贯 char phone[20];//手机号 char gender[10]; int studentID; float score; } Student; // 定义全局变量,存储学生信息 Student students[MAX]; int numStudents = 0; // 加载学生信息文件,读入到结构体 void loadStudentsFromFile() { FILE *file = fopen("D:/JK0112.txt", "r"); if (file == NULL) { printf("无法打开文件!\n"); return; } numStudents = 0; while (fscanf(file, "%d %s %s %s %s %s %f\n", &students[numStudents].studentID, students[numStudents].name, students[numStudents].gender, students[numStudents].birthday,students[numStudents].jiguna,students[numStudents].phone, &students[numStudents].score) ==7) { numStudents++; } fclose(file);//文件关闭 } // 显示菜单 void displayMenu() { printf("\t \"---------------------------------------------------------------------------------|\n"); printf("\t \"| 欢迎使用学生管理系统 |\n"); printf("\t \"|--------------------------------------------------------------------------------|\n"); printf("\t \"| 1、查询 | 2、排序 |\n"); printf("\t \"|----------------------------------------|---------------------------------------|\n"); printf("\t \"| 3、添加 | 4、删除 |\n"); printf("\t \"|----------------------------------------|---------------------------------------|\n"); printf("\t \"| 5、修改 | 6、按性别分割文件 |\n"); printf("\t \"|----------------------------------------|---------------------------------------|\n"); printf("\t \"| 0、退出系统 |\n"); printf("\t \"---------------------------------------------------------------------------------|\n"); printf("请输入选项:"); } // 按姓名查询显示 void searchByName() { char name[20]; printf("请输入要查询的学生姓名:"); scanf("%s", name); for (int i = 0; i < numStudents; i++) { if (strcmp(students[i].name, name) == 0) { printf("姓名\t学号\t性别\t籍贯\t出生年月\t电话\t\t\t成绩\n"); printf("%s\t%d\t%s\t\t%s\t%s\t\t%s\t\t%.2f\n", students[i].name,students[i].studentID, students[i].gender, students[i].jiguna,students[i].birthday,students[i].phone, students[i].score); } } } // 按学号查询显示 void searchByStudentID() { int studentID; printf("请输入要查询的学生学号:"); scanf("%d", &studentID); for (int i = 0; i < numStudents; i++) { if (students[i].studentID == studentID) { printf("姓名\t学号\t性别\t籍贯\t出生年月\t电话\t\t\t成绩\n"); printf("%s\t%d\t%s\t\t%s\t%s\t\t%s\t\t%.2f\n", students[i].name,students[i].studentID, students[i].gender, students[i].jiguna,students[i].birthday,students[i].phone, students[i].score); return; } } printf("找不到该学号对应的学生信息!\n"); } // 显示全部学生信息 void displayAllStudents() { printf("姓名\t学号\t性别\t籍贯\t出生年月\t电话\t\t\t成绩\n"); for (int i = 0; i < numStudents; i++) { printf("%s\t%d\t%s\t\t%s\t%s\t\t%s\t\t%.2f\n", students[i].name,students[i].studentID, students[i].gender, students[i].jiguna,students[i].birthday,students[i].phone, students[i].score); } } // 按姓名排序 int compareByName(const void *a, const void *b) { Student *studentA = (Student *)a; Student *studentB = (Student *)b; return strcmp(studentA->name, studentB->name); } // 按成绩排序 int compareByScore(const void *a, const void *b) { Student *studentA = (Student *)a; Student *studentB = (Student *)b; if (studentA->score > studentB->score) { return 1; } else if (studentA->score < studentB->score) { return -1; } else { return 0; } } // 按姓名排序并显示 void sortByName() { qsort(students, numStudents, sizeof(Student), compareByName); displayAllStudents(); } // 按成绩排序并显示 void sortByScore() { qsort(students, numStudents, sizeof(Student), compareByScore); displayAllStudents(); } // 添加新的学生信息 void addStudent() { if (numStudents >= 100) { printf("学生信息已满,无法添加!\n"); return; } //Student newStudent; printf("请输入学生姓名:"); scanf("%s", students[numStudents].name); printf("请输入学生学号:"); scanf("%d", &students[numStudents].studentID); printf("请输入学生性别:"); scanf("%s", students[numStudents].gender); printf("请输入学生籍贯:"); scanf("%s", students[numStudents].jiguna); printf("请修改学生生日:"); scanf("%s", students[numStudents].birthday); printf("请输入学生手机号:"); scanf("%s", students[numStudents].phone); printf("请输入学生成绩:"); scanf("%f", &students[numStudents].score); for (int i = 0; i < numStudents; i++) { if (students[i].studentID == students[numStudents].studentID) { printf("该学号已存在,无法添加!\n"); return; } } printf("学生信息添加成功!\n"); numStudents++; } // 按姓名删除学生信息 void deleteByName() { char name[20]; printf("请输入要删除的学生姓名:"); scanf("%s", name); int found = 0; for (int i = 0; i < numStudents; i++) { if (strcmp(students[i].name, name) == 0) { students[i] = students[--numStudents]; found = 1; } } if (found) { printf("学生信息删除成功!\n"); } else { printf("找不到该姓名对应的学生信息!\n"); } } // 按学号删除学生信息 void deleteByStudentID() { int studentID; printf("请输入要删除的学生学号:"); scanf("%d", &studentID); int found = 0; for (int i = 0; i < numStudents; i++) { if (students[i].studentID == studentID) { students[i] = students[--numStudents]; found = 1; } } if (found) { printf("学生信息删除成功!\n"); } else { printf("找不到该学号对应的学生信息!\n"); } } // 修改学生信息 void modifyStudent() { int studentID; printf("请输入要修改的学生学号:"); scanf("%d", &studentID); int found = 0; for (int i = 0; i < numStudents; i++) { if (students[i].studentID == studentID) { printf("找到学生信息,请输入修改后的学生姓名:"); scanf("%s", students[i].name); printf("请修改学生学号:"); scanf("%d", &students[i].studentID); printf("请修改学生性别:"); scanf("%s", students[i].gender); printf("请修改学生出生年月:"); scanf("%s", students[i].birthday); printf("请修改学生籍贯:"); scanf("%s", students[i].jiguna); printf("请修改学生手机号:"); scanf("%s", students[i].phone); printf("请修改学生成绩:"); scanf("%f", &students[i].score); printf("学生信息修改成功!\n"); found = 1; } } if (!found) { printf("找不到该学号对应的学生信息!\n"); } } // 将学生信息按性别分割成两个文件 void splitByGender() { FILE *maleFile = fopen("D:/male.txt", "w"); FILE *femaleFile = fopen("D:/female.txt", "w"); //fscanf(file, "%d %s %s %s %s %s %f", &students[numStudents].studentID, students[numStudents].name, students[numStudents].gender, // students[numStudents].birthday,students[numStudents].jiguna,students[numStudents].phone, &students[numStudents].score) ==6) for (int i = 0; i < numStudents; i++) { if (strcmp(students[i].gender, "male") == 0) { fprintf(maleFile, "%d %s %s %s %s %s %f\n",students[i].studentID, students[i].name, students[i].gender, students[i].birthday,students[i].jiguna, students[i].phone,students[i].score); } else if (strcmp(students[i].gender, "female") == 0) { fprintf(femaleFile, "%d %s %s %s %s %s %f\n",students[i].studentID, students[i].name, students[i].gender, students[i].birthday,students[i].jiguna, students[i].phone,students[i].score); } } fclose(maleFile); fclose(femaleFile); printf("学生信息已按性别分割并保存到文件!\n"); } //将数据写入文件 void Write_File(){ FILE *file = fopen("D:/JK0112.txt", "w"); if (file == NULL) { printf("无法打开文件!\n"); return; } for(int i = 0 ;i<numStudents;i++) { fprintf(file, "%d %s %s %s %s %s %f\n", students[numStudents].studentID, students[numStudents].name, students[numStudents].gender, students[numStudents].birthday, students[numStudents].jiguna, students[numStudents].phone, students[numStudents].score); } printf("信息保存成功!\n"); } int main() { loadStudentsFromFile();//加载数据到结构体 int option; do { displayMenu(); scanf("%d", &option); switch (option) { case 1: printf("请选择查询方式:\n"); printf("1. 按姓名查询\n"); printf("2. 按学号查询\n"); printf("3. 显示全部\n"); printf("请输入选项:"); int searchOption; scanf("%d", &searchOption); switch (searchOption) { case 1: searchByName(); break; case 2: searchByStudentID(); break; case 3: displayAllStudents(); break; default: printf("无效的选项!\n"); break; } break; case 2: printf("请选择排序方式:\n"); printf("1. 按姓名排序\n"); printf("2. 按成绩排序\n"); printf("请输入选项:"); int sortOption; scanf("%d", &sortOption); switch (sortOption) { case 1: sortByName(); break; case 2: sortByScore(); break; default: printf("无效的选项!\n"); break; } break; case 3: addStudent(); break; case 4: printf("请选择删除方式:\n"); printf("1. 按姓名删除\n"); printf("2. 按学号删除\n"); printf("请输入选项:"); int deleteOption; scanf("%d", &deleteOption); switch (deleteOption) { case 1: deleteByName(); break; case 2: deleteByStudentID(); break; default: printf("无效的选项!\n"); break; } break; case 5: modifyStudent(); break; case 6: splitByGender(); break; case 0: Write_File(); printf("退出程序。\n"); break; default: printf("无效的选项!\n"); break; } } while (option != 0); return 0; } #endif [Link 1]: https://blog.csdn.net/weixin_73865721?spm=1010.2135.3001.5343 [C_C]: https://blog.csdn.net/weixin_73865721?type=blog
相关 学生管理系统 package 学生管理系统; import java.util.Scanner; public class ScoreInformation \{ private 左手的ㄟ右手/ 2023年08月17日 17:14/ 0 赞/ 91 阅读
相关 学生管理系统---文件版 import os 1:首先显示功能菜单 2:接受用户输入 3:执行相应的操作 student_list = [] def Bertha 。/ 2023年07月09日 13:25/ 0 赞/ 32 阅读
相关 学生管理系统 \include<stdio.h> \include<stdlib.h> \include<string.h> \include<malloc.h> \incl 阳光穿透心脏的1/2处/ 2022年09月26日 03:23/ 0 赞/ 41 阅读
相关 学生管理系统 学生管理系统 \include <stdio.h> \include <iostream.h> \include <string.h> \include <malloc 落日映苍穹つ/ 2022年09月18日 11:42/ 0 赞/ 283 阅读
相关 学生管理系统 我现在是大一新生!这个系统我写了一个月。但是还是不是很好。但是我想着是我的第一个系统。我在写的时候发现我的删除功能不是很好的。还有就是在这个过程中我学会了再这里我学到了如何使用 比眉伴天荒/ 2022年08月26日 13:24/ 0 赞/ 272 阅读
相关 学生管理系统 注释:这个小的系统,主要体现了C语言的 “分而治之,代码重用” 也就是老师教函数时给我们说的最核心的思想。 主要吧,就是先在开始:定义后面要使用的函数,再定义一些全局变 冷不防/ 2022年08月09日 04:28/ 0 赞/ 222 阅读
相关 学生管理系统 1.用mysql先创建表 ![70][] ![70 1][] 2.先创建一个stu类, package com.stu.entity; pu 绝地灬酷狼/ 2022年05月11日 03:20/ 0 赞/ 413 阅读
相关 学生管理系统 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; 短命女/ 2022年01月10日 15:25/ 0 赞/ 343 阅读
相关 学生管理系统 package 练习; import java.util.Scanner; import javax.swing.JOptionPa 红太狼/ 2021年12月18日 05:37/ 0 赞/ 430 阅读
还没有评论,来说两句吧...