这只是我尝试做的一个简单的程序,顺便复习下C语言,希望以后的自己能更加努力,努力跟随大佬们的脚步。
C语言学生信息管理系统包括以下功能:
1.添加学生信息
2.查询学生信息
3.修改学生信息
4.学生学号排序
5.删除学生信息
6.浏览学生信息
每个模块的实现:
结构体的创建
实现首先要有个结构体包含学生的相关信息(学号 姓名 年龄 性别 身份证号 电话)
struct Student
{
int Id; //学号
char name[15]; //姓名
int age; //年龄
char sex[3]; //性别
char IDcard[50]; //身份证号
char phone[15]; //电话
}student[N];
同时定义了两个全局的变量
int Last = 0;//结构体数组下标
struct Student studentName;//创建结构体临时变量
一.首先写一个主菜单:
void makeMenu()//构建主菜单视图
{
printf("-------------------------------\n");
printf(" -----------学生信息管理系统\n");
printf("-------------------------------\n");
printf("\t0.退出系统\n");
printf("-------------------------------\n");
printf("\t1.添加学生信息\n");
printf("-------------------------------\n");
printf("\t2.查询学生信息\n");
printf("-------------------------------\n");
printf("\t3.修改学生信息\n");
printf("-------------------------------\n");
printf("\t4.学生学号排序\n");
printf("-------------------------------\n");
printf("\t5.删除学生信息\n");
printf("-------------------------------\n");
printf("\t6.浏览学生信息\n");
printf("-------------------------------\n");
printf("-------------------------------\n");
printf("请输入主菜单编号(0~6):");
}
二.添加学生信息操作
void Registration(int last)//添加学生信息
{
printf("请输入学生信息[学号 姓名 年龄 性别 身份证号 电话]:\n");
scanf("%d %s %d %s %s %s", &student[last].Id, student[last].name, &student[last].age, student[last].sex, student[last].IDcard, student[last].phone);
Last++;
}
三.查询学生信息
void searchByName(int last,char* studentName)//按姓名查询
{
int i;
for (i = 0; i < last; i++)
{
if (strcmp(student[i].name, studentName) == 0)
{
printf("学号 姓名 年龄 性别 身份证号 电话\n");//输出该学生信息
printf("%d %s %d %s %s %s\n", student[i].Id, student[i].name, student[i].age, student[i].sex, student[i].IDcard, student[i].phone);
break;
}
}
if (i == last)
{
printf("没有找到该学生的信息\n");
}
else
{
printf("查询成功\n");
}
}
void searchById(int last, int studentID) //按学号查询
{
int i;
for (i = 0; i < last; i++)
{
if (student[i].Id==studentID)
{
printf("学号 姓名 年龄 性别 身份证号 电话\n");//输出该学生信息
printf("%d %s %d %s %s %s\n", student[i].Id, student[i].name, student[i].age, student[i].sex, student[i].IDcard, student[i].phone);
break;
}
}
if (i == last)
{
printf("没有找到该学生的信息\n");
}
else
{
printf("查询成功\n");
}
}
void searchinformate()//查询信息
{
printf("--------------------\n");
printf("1.按姓名查询\n");
printf("2.按学号查询\n");
printf("3.退出\n");
printf("--------------------\n");
int Userkey;
while (1)
{
printf("请输入子菜单编号(1~3):");
scanf("%d", &Userkey);
switch (Userkey)
{
case 1:
printf("请输入要查询的学生姓名:");
scanf("%s", studentName.name);
searchByName(Last, studentName.name);
break;
case 2:
printf("请输入要查询的学生学号:");
scanf("%d", &studentName.Id);
searchById(Last, studentName.Id);
break;
case 3:
return;
default:printf("请输入1~3:\n");
break;
}
}
}
四.修改学生信息
void makesonMenu()//构建修改子菜单视图
{
printf("-------------------------------\n");
printf(" -----------修改学生信息\n");
printf("1.修改学号\n");
printf("2.修改姓名\n");
printf("3.修改年龄\n");
printf("4.修改性别\n");
printf("5.修改身份证号\n");
printf("6.修改电话\n");
printf("7.退出\n");
printf("-------------------------------\n");
}
void amend(int last,int studentID)//修改学生信息
{
int i;
for (i = 0; i < last; i++)
{
if (student[i].Id == studentID)
break;
}
int Userkey;
while (1)
{
if (i == last)
{
printf("没有找到该学生的信息\n");
break;
}
else
{
printf("请继续修改相关信息:\n");
}
printf("请输入子菜单编号(1~7):");
scanf("%d", &Userkey);
switch (Userkey)
{
case 1:
printf("修改学号为:");
scanf("%d", &student[i].Id);
break;
case 2:
printf("修改姓名为:");
scanf("%s", student[i].name);
break;
case 3:
printf("修改年龄为:");
scanf("%d", &student[i].age);
break;
case 4:
printf("修改性别为:");
scanf("%s", student[i].sex);
break;
case 5:
printf("修改身份证号为:");
scanf("%s", student[i].IDcard);
break;
case 6:
printf("修改电话为:");
scanf("%s", student[i].phone);
break;
case 7:
return;
default:printf("请输入1~7:\n");
break;
}
}
}
五.学生学号排序
void bubbleSort(int last)//按学号进行冒泡排序
{
int temp = 0;
for (int i = 1; i < last; i++)
{
for (int j = 0; j < last-i; j++)
{
if (student[j].Id > student[j + 1].Id)
{
temp = student[j].Id;
student[j].Id = student[j + 1].Id;
student[j + 1].Id = temp;
}
}
}
printf("排序完成\n");
}
六.删除学生信息
void deleteNodeByName(int last, char* studentName) //指定删除
{
int i = 0;
for (i = 0; i < last; i++)
{
if (strcmp(student[i].name, studentName) == 0)
break;
}
for (int j = i; j < last; j++)
{
student[j] = student[j + 1];
}
Last = Last - 1;
printf("删除完成\n");
}
七.浏览学生信息
void print(int last)//输出学生信息
{
printf("学号 姓名 年龄 性别 身份证号 电话\n");
for(int i=0;i<last;i++)
{
printf("%d %s %d %s %s %s\n", student[i].Id, student[i].name, student[i].age, student[i].sex, student[i].IDcard, student[i].phone);
}
}
整个程序代码
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 200 //最大学生人数
int Last = 0;//结构体数组下标
//20224213 刘圣友 18 男 360428200110202735 13657024700
struct Student
{
int Id; //学号
char name[15]; //姓名
int age; //年龄
char sex[3]; //性别
char IDcard[50]; //身份证号
char phone[15]; //电话
}student[N];
struct Student studentName;//创建临时变量
void makeMenu()//构建主菜单视图
{
printf("-------------------------------\n");
printf(" -----------学生信息管理系统\n");
printf("-------------------------------\n");
printf("\t0.退出系统\n");
printf("-------------------------------\n");
printf("\t1.添加学生信息\n");
printf("-------------------------------\n");
printf("\t2.查询学生信息\n");
printf("-------------------------------\n");
printf("\t3.修改学生信息\n");
printf("-------------------------------\n");
printf("\t4.学生学号排序\n");
printf("-------------------------------\n");
printf("\t5.删除学生信息\n");
printf("-------------------------------\n");
printf("\t6.浏览学生信息\n");
printf("-------------------------------\n");
printf("-------------------------------\n");
printf("请输入主菜单编号(0~6):");
}
void makesonMenu()//构建修改子菜单视图
{
printf("-------------------------------\n");
printf(" -----------修改学生信息\n");
printf("1.修改学号\n");
printf("2.修改姓名\n");
printf("3.修改年龄\n");
printf("4.修改性别\n");
printf("5.修改身份证号\n");
printf("6.修改电话\n");
printf("7.退出\n");
printf("-------------------------------\n");
}
void Registration(int last)//添加学生信息
{
printf("请输入学生信息[学号 姓名 年龄 性别 身份证号 电话]:\n");
scanf("%d %s %d %s %s %s", &student[last].Id, student[last].name, &student[last].age, student[last].sex, student[last].IDcard, student[last].phone);
Last++;
}
void print(int last)//输出学生信息
{
printf("学号 姓名 年龄 性别 身份证号 电话\n");
for(int i=0;i<last;i++)
{
printf("%d %s %d %s %s %s\n", student[i].Id, student[i].name, student[i].age, student[i].sex, student[i].IDcard, student[i].phone);
}
}
void searchByName(int last,char* studentName)//按姓名查询
{
int i;
for (i = 0; i < last; i++)
{
if (strcmp(student[i].name, studentName) == 0)
{
printf("学号 姓名 年龄 性别 身份证号 电话\n");//输出该学生信息
printf("%d %s %d %s %s %s\n", student[i].Id, student[i].name, student[i].age, student[i].sex, student[i].IDcard, student[i].phone);
break;
}
}
if (i == last)
{
printf("没有找到该学生的信息\n");
}
else
{
printf("查询成功\n");
}
}
void searchById(int last, int studentID) //按学号查询
{
int i;
for (i = 0; i < last; i++)
{
if (student[i].Id==studentID)
{
printf("学号 姓名 年龄 性别 身份证号 电话\n");//输出该学生信息
printf("%d %s %d %s %s %s\n", student[i].Id, student[i].name, student[i].age, student[i].sex, student[i].IDcard, student[i].phone);
break;
}
}
if (i == last)
{
printf("没有找到该学生的信息\n");
}
else
{
printf("查询成功\n");
}
}
void bubbleSort(int last)//按学号进行冒泡排序
{
int temp = 0;
for (int i = 1; i < last; i++)
{
for (int j = 0; j < last-i; j++)
{
if (student[j].Id > student[j + 1].Id)
{
temp = student[j].Id;
student[j].Id = student[j + 1].Id;
student[j + 1].Id = temp;
}
}
}
printf("排序完成\n");
}
void deleteNodeByName(int last, char* studentName) //指定删除
{
int i = 0;
for (i = 0; i < last; i++)
{
if (strcmp(student[i].name, studentName) == 0)
break;
}
for (int j = i; j < last; j++)
{
student[j] = student[j + 1];
}
Last = Last - 1;
printf("删除完成\n");
}
void searchinformate()//查询信息
{
printf("--------------------\n");
printf("1.按姓名查询\n");
printf("2.按学号查询\n");
printf("3.退出\n");
printf("--------------------\n");
int Userkey;
while (1)
{
printf("请输入子菜单编号(1~3):");
scanf("%d", &Userkey);
switch (Userkey)
{
case 1:
printf("请输入要查询的学生姓名:");
scanf("%s", studentName.name);
searchByName(Last, studentName.name);
break;
case 2:
printf("请输入要查询的学生学号:");
scanf("%d", &studentName.Id);
searchById(Last, studentName.Id);
break;
case 3:
return;
default:printf("请输入1~3:\n");
break;
}
}
}
void amend(int last,int studentID)//修改学生信息
{
int i;
for (i = 0; i < last; i++)
{
if (student[i].Id == studentID)
break;
}
int Userkey;
while (1)
{
if (i == last)
{
printf("没有找到该学生的信息\n");
break;
}
else
{
printf("请继续修改相关信息:\n");
}
printf("请输入子菜单编号(1~7):");
scanf("%d", &Userkey);
switch (Userkey)
{
case 1:
printf("修改学号为:");
scanf("%d", &student[i].Id);
break;
case 2:
printf("修改姓名为:");
scanf("%s", student[i].name);
break;
case 3:
printf("修改年龄为:");
scanf("%d", &student[i].age);
break;
case 4:
printf("修改性别为:");
scanf("%s", student[i].sex);
break;
case 5:
printf("修改身份证号为:");
scanf("%s", student[i].IDcard);
break;
case 6:
printf("修改电话为:");
scanf("%s", student[i].phone);
break;
case 7:
return;
default:printf("请输入1~7:\n");
break;
}
}
}
void newskeyDown()//做交互
{
int userkey;
scanf("%d", &userkey);
switch (userkey)
{
case 0:
printf("【 退出 】\n");
printf("退出成功\n");
system("pause");
exit(0); //关闭掉整个程序
break;
case 1:
printf("【 添加 】\n");
Registration(Last);
//saveInfoToFile("bookinfo.txt");
break;
case 2:
printf("【 查询 】\n");
searchinformate();
break;
case 3:
printf("【 修改 】\n");
printf("请输入要修改的学生学号:");
scanf("%d", &studentName.Id);
system("cls");//清屏
makesonMenu();//构建修改子菜单视图
amend(Last, studentName.Id);
break;
case 4:
printf("【 排序 】\n");
bubbleSort(Last);
break;
case 5:
printf("【 删除 】\n");
printf("请输入要删除的学生姓名:");
scanf("%s", studentName.name);
deleteNodeByName(Last, studentName.name);
break;
case 6:
printf("【 浏览 】\n");
print(Last);
break;
default:
printf("【 error 】\n");
break;
}
}
int main()
{
while (1)
{
makeMenu();
newskeyDown();
system("pause");
system("cls");//清屏
}
system("pause");
return 0;
}
运行结果展示
总结
这代码写的不是很好,只能用数组去写,而且就现在也就只能写得出这些,期待以后的自己,
希望能成为自己想成为的人!