#include<stdio.h>
#include<io.h>
#include<stdlib.h>
#include<string.h>
struct STU {
char stuNo[11];
char name[4];
int age;
int gender;
float score[3];
float sum;
}stu[300];
int m=0;
int n=1;
void menu_select();
void help();
void add();
void alter();
void dele();
void check();
void display();
void save();
void sort();
void to_menu();
void menu_select()
{
int num;
printf("\t\t\t\t* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
printf("\t\t\t\t* 欢迎来到学生信息管理系统!!! *\n");
printf("\t\t\t\t* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
printf("\t\t\t\t* 0、系统帮助及说明 * \n");
printf("\t\t\t\t* 1、添加学生信息 * \n");
printf("\t\t\t\t* 2、修改学生信息 * \n");
printf("\t\t\t\t* 3、删除学生信息 * \n");
printf("\t\t\t\t* 4、查找学生信息 * \n");
printf("\t\t\t\t* 5、显示所有学生信息 * \n");
printf("\t\t\t\t* 6、退出系统 * \n");
printf("\t\t\t\t* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
printf("\n\n\n");
printf("\t\t\t\t请输入数字以选择相应操作:");
scanf("%d",&num);
getchar();
printf("\n\n");
system("cls");
switch (num)
{
case 0:help();
break;
case 1:add();
break;
case 2:alter();
break;
case 3:dele();
break;
case 4:check();
break;
case 5:display();
break;
case 6:return;
break;
default:
break;
}
}
void help()
{
int num0;
int num1;
printf("\t\t\t\t ________________________________________________________________________________________________\n\n");
printf("\t\t\t\t| 欢迎您使用学生信息管理系统! |\n\n");
printf("\t\t\t\t| 如下是一些关于本系统的一些信息与建议,希望能够对您的使用有所帮助,感谢您对本系统的支持 |\n\n");
printf("\t\t\t\t| 一、初次进入系统时,请先“按照学号大小”添加学生信息; |\n\n");
printf("\t\t\t\t| 二、添加学生信息后,系统会自动保存; |\n\n");
printf("\t\t\t\t| 三、当你想要实现某操作时,请输入其所代表的数字 |\n\n");
printf("\t\t\t\t| 感谢您的使用! |\n\n");
printf("\t\t\t\t|________________________________________________________________________________________________|\n\n\n\n");
to_menu();
}
void add()
{
int num0;
int num1;
int i;
int flag; //作为判断条件
char sex;
printf("\t\t\t\t请输入待添加信息的学生数量:");
scanf("%d",&m);
getchar();
int j = n; //已有人数
n = n + m;
printf("\n\n");
if (m)
{
do
{
int flag = 1;
while (flag) //为了避免学号重复出现
{
flag = 0;
printf("\t\t\t\t请输入第 %d 位学生的学号:", j);
scanf("%s",stu[j].stuNo);
getchar();
printf("\n\n");
if (n > 2)
{
//判断该学号是否已经存在
for (int i = 2; i <= n; i++)
{
for (int j = 1; j <i; j++)
{
if (strcmp(stu[i].stuNo, stu[j].stuNo) == 0)
{
printf("\t\t\t\t该学号已经存在,请重新录入!!!\n");
flag = 1;
break;
}
}
}
}
}
printf("\n\n");
printf("\t\t\t\t请输入第 %d 个学生的姓名:", j);
scanf("%s",stu[j].name);
printf("\n\n");
printf("\t\t\t\t请输入第 %d 个学生的年龄:", j);
scanf("%d",&stu[j].age);
getchar();
printf("\n\n");
printf("\t\t\t\t请输入第 %d 个学生的性别(输入1代表男生,0代表女生):", j);
scanf("%d", &stu[j].gender);
getchar();
printf("\n\n");
printf("\t\t\t\t请输入第 %d 个学生的数学成绩:", j);
scanf("%f", &stu[j].score[0]);
getchar();
printf("\n\n");
printf("\t\t\t\t请输入第 %d 个学生的英语成绩:", j);
scanf("%f", &stu[j].score[1]);
getchar();
printf("\n\n");
printf("\t\t\t\t请输入第 %d 个学生的大物成绩:", j);
scanf("%f", &stu[j].score[2]);
getchar();
printf("\n\n");
system("cls");
if (flag == 0) {
j++;
}
} while (j <n);
printf("\t\t\t\t信息添加完毕!\n\n\n");
save();
sort();
to_menu();
m--;
}
else {
printf("\t\t\t\t待增加学生人数不得小于1!!!\n");
}
}
void dele()
{
if (n > 1) {
int i;
int j;
int flag = 0;
char s[11];
printf("\t\t");
printf("\t\t请输入要删除信息的学生的学号:");
scanf("%s", s);
printf("\n\n\n");
for (i = 1; i <= n; i++)
if (strcmp(stu[i].stuNo, s) == 0)
{
flag = 1;
for (j = i; j <= n - i; j++)
stu[j] = stu[j + 1];
}
if (flag = 0) {
printf("\t\t\t\t该学号不存在!!!\n\n\n");
}
else {
printf("\t\t\t\t删除成功!!!\n\n\n");
n--;
if (n > 1)
{
save();
}
}
to_menu();
}
else {
printf("无任何学生信息,请先添加信息!!!");
to_menu();
}
}
void sort()
{
/*按学号排序*/
char stuNo[11];
char name[4];
int age;
int gender;
float score[3];
if (n > 2) {
for (int i = 2; i <= n; i++)
{
for (int j = 1; j <= i; j++)
{
if (strcmp(stu[i].stuNo, stu[j].stuNo) <0)
{
strcpy(stuNo, stu[i].stuNo);
strcpy(stu[i].stuNo, stu[j].stuNo);
strcpy(stu[j].stuNo, stuNo);
strcpy(name, stu[i].name);
strcpy(stu[i].name, stu[j].name);
strcpy(stu[j].stuNo, name);
gender = stu[i].gender;
stu[i].gender = stu[j].gender;
stu[j].gender = gender;
age = stu[i].age;
stu[i].age = stu[j].age;
stu[j].age = age;
for (int k = 0; k < 3; k++)
{
score[k] = stu[i].score[k];
stu[i].score[k] = stu[j].score[k];
stu[j].score[k] = score[k];
}
}
}
}
printf("按学号排列");
}
}
void alter()
{
int i;
int k;
int flag=1;
char no[11]; //用来存放输入的学号
char name[5];
char gender[1];
if (n >1) {
printf("\t\t\t\t请输入相应的学号:");
scanf("%s", no);
getchar();
for (i = 1; i <= n; i++)
{
if (strcmp(stu[i].stuNo, no) == 0)
{
k = i; //记下是第几个学生
}
else {
printf("\t\t\t\t您输入的学号不存在,请重新输入!\n");
break;
}
printf("\t\t\t\t 1、修改姓名 \n\n");
printf("\t\t\t\t 2、修改年龄 \n\n");
printf("\t\t\t\t 3、修改性别 \n\n");
printf("\t\t\t\t 4、修改数学成绩 \n\n");
printf("\t\t\t\t 5、修改物理成绩 \n\n");
printf("\t\t\t\t 6、修改英语成绩 \n\n");
printf("\t\t\t\t 7、退出本菜单 \n\n");
int num;
int age;
while (flag)
{
flag = 0;
printf("\t\t\t\t请输入相应操作的编号:");
scanf("%d", &num);
switch (num)
{
case 1:
printf("\n\n");
printf("\t\t\t\t请输入新的姓名:");
scanf("%s", name);
printf("\n\n");
strcpy(stu[k].name, name);
save();
break;
case 2:
printf("\n\n");
printf("\t\t\t\t请输入新的年龄:");
scanf("%d", &stu[k].age);
save();
break;
case 3:
printf("\n\n");
printf("\t\t\t\t请输入性别:");
scanf("%d", &stu[k].gender);
save();
break;
case 4:
printf("\n\n");
printf("\t\t\t\t请输入新的数学成绩:");
scanf("%f", &stu[k].score[0]);
save();
break;
case 5:
printf("\n\n");
printf("\t\t\t\t请输入新的物理成绩:");
scanf("%f", &stu[k].score[1]);
save();
break;
case 6:
printf("\n\n");
printf("\t\t\t\t请输入新的英语成绩:");
scanf("%f", &stu[k].score[2]);
save();
break;
case 7:
break;
default:printf("\t\t\t\t请在1~7之间选择");
}
}
}
to_menu();
}
else {
printf("系统内不存在学生信息,请先添加学生信息!!!\n\n\n");
to_menu();
}
}
void check()
{
int i;
int j=1;
int num;
int flag = 0;
char no[11];
char s[20];
int k; //用来记录相应的学生序号
if (n > 1) {
while (j)
{
printf("\t\t\t\t 1、按学号查找 \n\n\n");
printf("\t\t\t\t 2、按姓名查找 \n\n\n");
printf("\t\t\t\t 3、退出本菜单 \n\n\n");
printf("\t\t\t\t请选择子菜单编号:");
scanf("%d", &num);
getchar();
printf("\n\n");
switch (num)
{
case 1:printf("\t\t\t\t请输入学号:");
scanf("%s", &no);
getchar();
printf("\n\n");
for (i = 1; i <= n; i++)
if (strcmp(stu[i].stuNo, no) == 0)
{
flag = 1;
k = i;
stu[k].sum = stu[k].score[0] + stu[k].score[1] + stu[k].score[2];
printf("—————————————————————————————————————————————————————————————————————————————————————————————————————————————————\n");
printf("*\t学号\t*\t姓名\t*\t年龄\t*\t性别\t*\t数学成绩\t*\t物理成绩\t*\t英语成绩\t*\n");
printf("—————————————————————————————————————————————————————————————————————————————————————————————————————————————————\n");
printf("%s\t\t\t%s\t\t%d\t\t", stu[k].stuNo, stu[k].name, stu[k].age);
if (stu[k].gender == 1) {
printf("男");
}
else {
printf("女");
}
printf("\t\t\t%.2f\t\t%.2f\t\t\t%.2f\t\t%.2f\n", stu[k].score[0], stu[k].score[1], stu[k].score[2], stu[k].score[0] + stu[k].score[1] + stu[k].score[2]);
printf("—————————————————————————————————————————————————————————————————————————————————————————————————————————————————\n");
}
if (flag == 0)
printf("\t\t\t\t您输入的学号有误!!!\n\n\n");
break;
case 2:printf("\t\t\t\t请输入姓名:");
scanf("%s", &s);
getchar();
for (i = 1; i < n; i++)
{
if (strcmp(stu[i].name, s) == 0)
{
flag = 1;
k = i;
printf("\n\n\n");
printf("—————————————————————————————————————————————————————————————————————————————————————————————————————————————————\n");
printf("*\t学号\t*\t姓名\t*\t年龄\t*\t性别\t*\t数学成绩\t*\t物理成绩\t*\t英语成绩\t*\n");
printf("—————————————————————————————————————————————————————————————————————————————————————————————————————————————————\n");
printf("%s\t\t\t%s\t\t%d\t\t", stu[k].stuNo, stu[k].name, stu[k].age);
if (stu[k].gender == 1) {
printf("男");
}
else {
printf("女");
}
printf("\t\t\t%.2f\t\t%.2f\t\t\t%.2f\t\t%.2f\n", stu[k].score[0], stu[k].score[1], stu[k].score[2], stu[k].score[0] + stu[k].score[1] + stu[k].score[2]);
printf("—————————————————————————————————————————————————————————————————————————————————————————————————————————————————\n");
}
if (flag == 0) {
printf("\n\n\n");
printf("\t\t\t\t您输入的姓名不存在!!!\n\n\n");
}
}
break;
case 3:break;
default:printf("\t\t\t\t请在数字1~3之间选择!!!\n\n\n");
}
j = 0;
}
to_menu();
}
else {
printf("\n\n\n");
printf("不存在任何学生的信息,请先添加信息!!!\n\n\n");
to_menu();
}
}
void save()
{
int num0;
int num1;
int i;
FILE* fp;
fp = fopen("D:\\CC\\学生信息.txt", "w");
fprintf(fp, "学号\t姓名\t年龄\t性别\t数学\t英语\t物理\t\n ");
for (i = 1; i <n; i++)
{
fprintf(fp, "%s\t%s\t%d\t", stu[i].stuNo, stu[i].name, stu[i].age);
if (stu[i].gender == 0) {
fprintf(fp,"女");
}
else {
fprintf(fp,"男");
}
fprintf(fp, "\t%.2f\t%.2f\t%.2f\t\n", stu[i].score[0], stu[i].score[1], stu[i].score[2]);
}
printf("\t\t\t\t信息保存完毕!");
printf("\n\n\n");
fclose(fp);
to_menu();
}
void display()
{
int i;
int j;
int flag = 1;
int count = n;//人数
if (n > 1) {
printf("__________________________________________________________________________________________________________________________________________________________________________________\n");
printf("*\t学号\t*\t姓名\t*\t年龄\t*\t性别\t*\t数学成绩\t*\t物理成绩\t*\t英语成绩\t*\t总分\t*\n");
printf("________________________________________________________________________________________________________________________________________________________________________________\n");
for (i = 1; i < n; i++)
{
printf("%s\t\t\t%s\t\t%d\t\t", stu[i].stuNo, stu[i].name, stu[i].age);
if (stu[i].gender == 1) {
printf("男");
}
else {
printf("女");
}
printf("\t\t\t%.2f\t\t%.2f\t\t\t%.2f\t\t%.2f\n", stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].score[0] + stu[i].score[1] + stu[i].score[2]);
}
printf("___________________________________________________________________________________________________________________________________________________________________________________\n");
to_menu();
}
else {
printf("系统内不存在任何学生的信息,请先添加信息!!!");
to_menu();
}
}
void to_menu()
{
int num0;
int num1;
printf("\n\n\n");
printf("\t\t\t\t1、返回主菜单\n\n");
printf("\t\t\t\t2、退出本栏\n\n\n");
printf("\t\t\t\t请输入相应的数字:");
scanf("%d",&num0);
getchar();
system("cls");
printf("\n\n\n");
switch (num0)
{
case 1:
int num;
printf("\t\t\t\t* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
printf("\t\t\t\t* 欢迎来到学生信息管理系统!!! *\n");
printf("\t\t\t\t* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
printf("\t\t\t\t* 0、系统帮助及说明 * \n");
printf("\t\t\t\t* 1、添加学生信息 * \n");
printf("\t\t\t\t* 2、修改学生信息 * \n");
printf("\t\t\t\t* 3、删除学生信息 * \n");
printf("\t\t\t\t* 4、查找学生信息 * \n");
printf("\t\t\t\t* 5、显示所有学生信息 * \n");
printf("\t\t\t\t* 6、退出系统 * \n");
printf("\t\t\t\t* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
printf("\n\n\n");
printf("\t\t\t\t请输入数字以选择相应操作:");
scanf("%d", &num);
getchar();
printf("\n\n");
system("cls");
switch (num)
{
case 0:help();
break;
case 1:add();
break;
case 2:alter();
break;
case 3:dele();
break;
case 4:check();
break;
case 5:display();
break;
case 6:printf("\t\t\t\tloading......\n\n\n");
break;
default:
break;
}
break;
case 2:break;
break;
default:printf("\t\t\t\t请输入1~2之间的数字!!!\n\n\n");
break;
}
}
int main()
{
menu_select();
return 0;
}
学生信息管理系统——C语言
最新推荐文章于 2024-03-04 16:02:37 发布