学生成绩管理系统(C实现)
程序员文章站
2022-05-06 09:37:56
...
一、系统主要功能
1、密码登录
2、输入数据
3、查询成绩
4、修改成绩
5、输出所有学生成绩
6、退出系统
二、代码实现:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 10
struct student
{
char num[10];
char name[20];
int old;
char add[30];
char xb[5];
char mc[5];
int ds;
int eng;
int math;
int lan;
};
struct student stu[N];
int count=0;
void insert(int i) //输入学生的具体信息
{
printf("第%d个学生的姓名:",i);
scanf("%s",stu[i].name);
printf("第%d个学生的年龄:",i);
scanf("%d",&stu[i].old);
printf("第%d个学生的住址:",i);
scanf("%s",stu[i].add);
printf("第%d个学生的性别:",i);
scanf("%s",stu[i].xb);
printf("第%d个学生的民簇:",i);
scanf("%s",stu[i].mc);
printf("第%d个学生的线性代数分数:",i);
scanf("%d",&stu[i].ds);
printf("第%d个学生的英语分数:",i);
scanf("%d",&stu[i].eng);
printf("第%d个学生的高等数学分数:",i);
scanf("%d",&stu[i].math);
printf("第%d个学生的C语言分数:",i);
scanf("%d",&stu[i].lan);
count++;
sprintf(stu[i].num,"%d",count);
}
void input() //输入数据
{
system("color 3e");
void menu();
void insert(int i);
int i,k,l,u;
printf("请设定输入的学生人数:");
scanf("%d",&u);
while(u<1||u>10)
{
printf("超出数据范围请重输:");
scanf("%d",&u);
}
for(i=1;i<u+1;i++)
{
printf("\n请输入第%d个学生的信息!\n",i);
insert(i);
}
do
{
printf("请按0返回菜单:");
scanf("%d",&k);
if (k==0)
{
system("cls");
menu();
}
else
l=0;
}while(l==0);
}
void search() //查询成绩
{
system("color 3f");
void menu();
void printf_one(int k);
struct student s;
int i,k,w0,w1,w2;
do
{
printf("1.姓名 2.学号 \n请选择查找的类别:");
scanf("%d",&w1);
if (w1<1||w1>2)
{
printf("输入错误!请重输:\n");
w2 = 1;
}
else
w2 = 0;
}while(w2 == 1);
if(w1==1) //按姓名查找
{
do
{
k=-1;
do
{
printf("请输入您想查找的学生的姓名:");
scanf("%s",s.name);
for(i= 1;i<N;i++)
if(strcmp(s.name,stu[i].name)==0)
{
k=i;
s=stu[i];
}
if(k==-1) //没有找到
{
int o;
printf("\n没有这个学生的信息!\n");
printf("\n 1.继续 2.返回菜单 \n请选择进行下一个操作;");
scanf("%d",&o);
if (o==1)
{
system("cls");
search(); //继续查找
}
if(o==2)
{
system("cls");
menu(); //返回菜单
}
}
}while(k==-1);
system("cls");
printf_one(k); //查找到以后输出这个学生的信息
printf("\n 1.继续 2.返回菜单 \n请选择进行下一个操作:");
scanf("%d",&w0);
}while(w0==1);
system("cls");
menu(); //不再查找时返回菜单
}
else //按学号查找
{
do
{
k=-1;
do
{
printf("请输入您想查找的学生的学号:");
scanf("%s",s.num);
for(i=0;i<N;i++)
if(strcmp(s.num,stu[i].num)==0) //找到了
{
k=i;
s=stu[i];
}
if(k==-1) //没有找到
{
int o;
printf("\n没有这个学生的信息!\n");
printf("\n 1.继续 2.返回菜单 \n请选择进行下一个操作:");
scanf("%d",&o);
if(o==1)
{
system("cls");
search();
}
if(o==2)
{
system("cls");
menu(); //返回菜单
}
}
}while(k==-1);
system("cls");
printf_one(k); //找到后输出这个学生的信息
printf("\n 1.继续 2.返回菜单 \n请选择进行下一个操作:");
scanf("%d",&w0);
}while(w0==1);
system("cls");
menu(); //不再查找时返回菜单
}
}
void xiugai() //修改学生信息的函数
{
system("color 1a");
void menu();
void printf_one(int k);
void xiugai_2();
struct student s;
int i,n,k,w0=1,w1,w2=0,o;
do
{
k=-1;
do
{
printf("请输入您想要修改的学生的姓名:");
scanf("%s",s.name);
for(i=0;i<N;i++)
if(strcmp(s.name,stu[i].name)==0) //与其中一个学生匹配
{
k=i;
s=stu[i];
}
if(k==-1) //没有找到输入的学生
{
printf("没有这个学生的信息!\n");
printf("\n 1.继续 2.返回菜单 \n请选择进行下一个操作:");
scanf("%d",&o);
if(o==1)
{
system("cls");
xiugai();
}
if(o==2)
{
system("cls");
menu(); //返回菜单
}
}
}while(k==-1);
system("cls");
printf("请输入修改后的线性代数分数:");
scanf("%d",&stu[k].ds);
printf("请输入修改后的英语分数:");
scanf("%d",&stu[k].eng);
printf("请输入修改后的高等数学分数:");
scanf("%d",&stu[k].math);
printf("请输入修改后的C语言分数:");
scanf("%d",&stu[k].lan);
printf("\n");
printf("\n该生修改后的信息如下:\n");
printf_one(k); //输出这个学生的信息
printf("\n请按0返回菜单:");
scanf("%d",&o);
if(o==0)
{
system("cls");
menu(); //返回菜单
}
}while(1);
}
void printf_all() //输出所有学生成绩的函数
{
void menu();
system("color 9e");
int i,j,k;
for (i=1;i<3;i++)
{
printf("\n学号:%s \n姓名:%s \n性别:%s \n民簇:%s \n年龄:%d \n地址:%s \n线性代数分数:%d \n英语分数:%d \n高等数学分数:%d \nC语言分数:%d \n",stu[i].num,stu[i].name,stu[i].xb,stu[i].mc,stu[i].old,stu[i].add,stu[i].ds,stu[i].eng,stu[i].math,stu[i].lan);
}
do
{
printf("请按0返回菜单:");
scanf("%d",&j);
if(j==0)
{
system("cls");
menu();
}
else
{
k = 0;
}
} while (k == 0);
}
void printf_one(int k) //输出某一个学生的信息的函数
{
printf("\n学号:%s \n姓名:%s \n性别:%s \n民簇:%s \n年龄:%d \n地址:%s \n线性代数分数:%d \n英语分数:%d \n高等数学分数:%d \nC语言分数:%d \n",stu[k].num,stu[k].name,stu[k].xb,stu[k].mc,stu[k].old,stu[k].add,stu[k].ds,stu[k].eng,stu[k].math,stu[k].lan);
}
void Exit() //退出系统的函数
{
system("cls");
system("color 2e");
printf("\n祝您生活愉快!\n");
exit(0);
}
void menu() //菜单函数
{
system("color 1e");
printf("\n\t\t\t欢迎使用学生学籍管理系统!\n");
printf("\n");
int n,m;
do
{
puts("\t\t********************菜单*********************");
puts("\t\t**************学生学籍管理系统***************");
puts("\t\t*********************************************");
puts("\t\t******* 1--输入数据 ****");
puts("\t\t******* 2--查询成绩 ****");
puts("\t\t******* 3--修改成绩 ****");
puts("\t\t******* 4--输出所有学生成绩 ****");
puts("\t\t******* 5--退出系统 ****");
puts("\t\t*********************************************");
printf("\t\t*************请选择服务种类(1~5):");
scanf("%d",&n);
if(n<1||n>5)
{
system("cls");
printf("\n\t\t*************选择错误! 请重新选择!\n");
m=1;
}
else
{
m = 0;
}
}while(m==1);
switch(n)
{
case 1:system("cls");input();break;
case 2:system("cls");search();break;
case 3:system("cls");xiugai();break;
case 4:system("cls");printf_all();break;
case 5:Exit();break;
}
}
int main()
{
int c;
printf("请输入密码:");
scanf("%d",&c);
while(c!=12345)
{
printf("密码错误,请重输:");
scanf("%d",&c);
}
system("cls");
menu();
return 0;
}
三、效果演示:
输入登入密码:
输入数据:
查询成绩:
修改成绩:
输出所有学生成绩:
退出系统:
上一篇: java用数组来模拟堆栈的基本方法
下一篇: C++ ——学生成绩管理系统