[c]代码库
#include <stdio.h>
#include <windows.h>
#define SYSTEM_English_TITLE "student_manage_system"
#define SYSTEM_Chinese_TITLE "SMS管理系统"
#define SYSTEM_VERSION "1.0.1"
#define students_data_capacity 150 //存储学生信息的数组容量
// 函数申明
void Input_Student_Data(); // 实现添加学生信息
void Print_Student_Data(int *students_code); // 实现显示学生信息
void Modify_Student_Data(int *students_code); //修改学生信息
void Delete_Student_Data(int *students_code, int *students_capacity); //删除学生信息
// 学生信息结构体
typedef struct{
char student_ID[128]; // 学生学号
char student_name[64]; // 学生姓名
char student_gender[30]; // 学生性别
int student_age[10]; // 学生年龄
char student_addr[128]; // 学生地址
char student_phone_number[128]; // 学生电话号码
char student_E_maill[128]; // 学生电子邮箱
} Student_Data;
// 采用结构体数组的形式存储学生的信息
Student_Data students_data[students_data_capacity];
int Student_Data_Number = 1; // 添加的学生个数存储号码
//添加学生信息函数
void Input_Student_Data(){
int return_scanf_new_insert_student_data_student_age;
Student_Data new_insert_student_data;
printf("请输入学生的学号:"); scanf("%s",new_insert_student_data.student_ID);
printf("请输入学生的姓名:"); scanf("%s",new_insert_student_data.student_name);
printf("请输入学生的性别:"); scanf("%s",new_insert_student_data.student_gender);
while(1){
printf("请输入学生的年龄:");
return_scanf_new_insert_student_data_student_age = scanf("%d",&(new_insert_student_data.student_age));
if (return_scanf_new_insert_student_data_student_age == 0){
printf("[-]年龄必需为数字!\n");
while(getchar() != '\n'); //清空上一个缓冲区
}else{
break;
}
}
printf("请输入学生的地址:"); scanf("%s",new_insert_student_data.student_addr);
printf("请输入学生的电话:"); scanf("%s",new_insert_student_data.student_phone_number);
printf("请输入学生的邮箱:"); scanf("%s",new_insert_student_data.student_E_maill);
students_data[Student_Data_Number] = new_insert_student_data;
printf("[*]数据录入成功!\n\n");
Student_Data_Number++; // 将数组指向下一个空间存储下一个学生的信息
}
//显示学生信息函数
void Print_Student_Data(int *students_code){
printf("*********************\n");
printf("当前代码:%d\n",*students_code);
printf("[+]学号:%s\n",students_data[*students_code].student_ID);
printf("[+]姓名:%s\n",students_data[*students_code].student_name);
printf("[+]性别:%s\n",students_data[*students_code].student_gender);
printf("[+]年龄:%d\n",*(students_data[*students_code].student_age));
printf("[+]地址:%s\n",students_data[*students_code].student_addr);
printf("[+]电话:%s\n",students_data[*students_code].student_phone_number);
printf("[+]邮箱:%s\n",students_data[*students_code].student_E_maill);
printf("*********************\n");
}
//修改学生信息函数
void Modify_Student_Data(int *students_code){
printf("请修改学生的学号:"); scanf("%s",students_data[*students_code].student_ID);
printf("请修改学生的姓名:"); scanf("%s",students_data[*students_code].student_name);
printf("请修改学生的性别:"); scanf("%s",students_data[*students_code].student_gender);
while (1){
printf("请修改学生的年龄:"); int return_scanf_students_data_students_code_students_age = scanf("%d",students_data[*students_code].student_age);
if (return_scanf_students_data_students_code_students_age == 0){
printf("[-]修改的年龄必须要为整数!\n");
while(getchar() != '\n');
}
else{
break;
}
}
printf("请修改学生的地址:"); scanf("%s",students_data[*students_code].student_addr);
printf("请修改学生的电话:"); scanf("%s",students_data[*students_code].student_phone_number);
printf("请修改学生的邮箱:"); scanf("%s",students_data[*students_code].student_E_maill);
printf("[*]学生数据已修改成功\n!");
}
//删除学生信息函数 【采用独家删除指定元素数组算法】
void Delete_Student_Data(int *students_code, int *students_capacity){
printf("删除第%d号学生信息...\n",*students_code);
int find_code = 0; // 是否找到该学生的的判断代码
// 定义搜寻该学生
for (int i = 0; i <= *(students_code) ; i++){
if (i == *(students_code) && i <= *(students_capacity)){
printf("成功找到数组!删除数据如下:\n");
printf("学号:%s\n",students_data[i].student_ID);
printf("姓名:%s\n",students_data[i].student_name);
printf("性别:%s\n",students_data[i].student_gender);
printf("年龄:%d\n",*(students_data[i].student_age));
printf("地址:%s\n",students_data[i].student_addr);
printf("电话:%s\n",students_data[i].student_phone_number);
printf("邮箱:%s\n",students_data[i].student_E_maill);
find_code = 1; // 标记已经找到该学生
//修改操作
for (int j = i; j <= *(students_capacity)-1; j++){
students_data[j] = students_data[j+1];
}
break;
}
else{
printf("[+]搜索中:%d...\n",i);
Sleep(50);
}
}
if (find_code){
Student_Data_Number--;
printf("[+]删除成功!已将所有的学生班级代号向前移动一个位置\n");
}
else {
printf("号码越界,未找到该学生!【注意:该系统容量为:%d】\n",students_data_capacity);
}
}
int main(){
printf("系统名称:%s\t%s\n",SYSTEM_Chinese_TITLE,SYSTEM_English_TITLE);
printf("=====================================================\n");
printf("当前管理系统版本:v%s\n",SYSTEM_VERSION);
printf("-------------------------------\n");
printf("系统功能序列:\n");
printf("1.录入数据\n");
printf("2.显示数据\n");
printf("3.修改数据\n");
printf("4.删除数据\n");
printf("5.退出系统\n");
printf("=====================================================\n");
while (1)
{
int select_code; // 功能选择代码
int student_code_1; // 学生查找代码
int student_code_2; // 学生修改代码
int student_code_3; // 学生删除代码
int return_scanf_select_code; // 判断用户选择的功能是否为数字所返回的值,只要返回了0则代表用户输入的功能数据类型不正确
while(1){
printf("请输入功能序列号:");
return_scanf_select_code = scanf("%d",&select_code); //scanf 函数的读取输入后,输入缓冲区可能残留字符
if (return_scanf_select_code == 0){
printf("[-]请输入整数的功能序列号!\n");
while(getchar() != '\n'); //使用getchar()来读取上一个缓冲区的字符直到读取到'\n'为止,目的就是清空缓冲区
}
else{
break;
}
}
switch (select_code){
case 1:
printf("\n当前选择:【录入数据】\n");
int capacity_students_data = sizeof(students_data) / sizeof(students_data[0]);
printf("------当前系统存储的学生容量:%d个【第0号位置已占用一个空间】实际系统容量:%d个------\n",capacity_students_data+1,capacity_students_data);
Input_Student_Data();
break;
case 2:
printf("\n当前选择:【显示数据】\n");
printf("------当前系统存储的学生个数:%d个【包括一个[00]空数据】------\n",Student_Data_Number);
while (1){
printf("请输入你要查看的学生班级代号:"); scanf("%d",&student_code_1);
if (student_code_1 > students_data_capacity+1){
printf("[-]系统检测到该数据存储中暂未有该序号的学生信息,请输入%d以内的学生代码,请重新查询!\n",(students_data_capacity+1));
while(getchar() != '\n');
}
else{
break;
}
}
Print_Student_Data(&student_code_1);
break;
case 3:
printf("\n当前选择:【修改数据】\n");
printf("------当前系统存储的学生个数:%d个【包括一个[00]空数据】------\n",Student_Data_Number);
while (1){
printf("请输入你要修改的学生班级代号:"); int return_scanf_student_code_2 = scanf("%d",&student_code_2);
if (student_code_2 > students_data_capacity+1 || return_scanf_student_code_2 == 0){
printf("[-]系统检测到该数据存储中暂未有该序号的学生信息,请输入%d以内的学生代码,请重新选择!\n",(students_data_capacity+1));
while(getchar() != '\n');
}
else{
break;
}
}
Modify_Student_Data(&student_code_2);
break;
case 4: // bug修改:对scanf进行检查
printf("\n当前选择:【删除数据】\n");
int student_capacity = sizeof(students_data) / sizeof(students_data[0]);
printf("------当前系统存储的学生个数:%d个【包括一个[00]空数据】------\n",Student_Data_Number);
/*存在bug*/
while (1){
printf("请输入你要删除的学生班级代号:"); int return_scanf_student_code_3 = scanf("%d",&student_code_3);
if(return_scanf_student_code_3 == 0){
printf("[-]请输入有效的数字代号!\n");
while(getchar() != '\n');
}
else{
break;
}
}
Delete_Student_Data(&student_code_3,&student_capacity);
break;
case 5:
printf("\n\n------系统正在退出,欢迎下次访问SMS管理系统!------\n");
Sleep(3000);
exit(0);
default:
printf("[-]输入错误!请重新输入!\n");
break;
}
}
return 0;
}
[代码运行效果截图]
[源代码打包下载]