用c语言编写学生成绩管理系统
系统界面要求:**************************
***1-输入数据*****
***2-查询成绩*****
***3-修改成绩*****
***4-输出所有学生信息****
***5-统计及格和优秀人数***
***6-输出不及格的学生成绩**
***7-输出所有优秀学生姓名和成绩***
***8-退出系统******
功能:
这个程序的主要功能是输入学生姓名、成绩,学号可以自动生成,并可以对学生成绩按学号或姓名进行查询。该系统具有存储学生数据,按学号、姓名查询,按需要修改学生成绩,列出学生成绩和统计的功能。
系统中有五个初始数据:学号 姓名 成绩
1 张三 98
2 李四 85
3 王五 76
4 陈六 65
5 刘七 54
学校老师自己出的题,题目中没有要求使用文件来做,我也不会使用文件。我自己写了一点,但是越写越不会了!请各位帮忙看看!出出主意!谢谢大家!下面是我自己的代码,只写了这么一点:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 10
struct student
{
char num[5];
char name[20];
int score;
};
struct student stu[N]={{"1","张三",90},{"2","李四",87},{"3","王五",76},{"4","赵六",67},{"5","刘七",56}};
void insert(int i) //输入学生具体信息的函数
{
printf("第%d个学生的姓名:",i+1);
scanf("%s",stu[i].name);
printf("\n");
printf("第%d个学生的分数:",i+1);
scanf("%d",stu[i].score);
printf("\n");
}
void input() //输入数据的函数
{
system("color 3e");
void menu();
void insert(int i);
int i,j,k,l,r;
printf("您想输入几个学生的信息? (1-%d) [ ]\b\b",N-5);
scanf("%d",&j);
r=5+j;
for(i=5;i<r;i++)
{
printf("\n输入第%d个学生的信息。\n",i+1);
insert(i);
}
do
{
printf("返回菜单请按1! [ ]\b\b");
scanf("%d",&k);
if(k == 1)
{
system("cls");
menu();
}
else
l = 0;
}while(l == 0);
}
void search() //查询成绩的函数
{
void menu();
void printf_one(int k);
struct student s;
int i,k,w0,w1,w2;
do
{
printf("请选择查找的类别: 1.姓名 2.学号 [ ]\b\b");
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("\n请输入您想查找的学生的姓名!\nName:");
scanf("%s",s.name);
for(i=0;i<5;i++)
if(strcmp(s.name,stu[i].name) == 0)
{
k = i;
s = stu[i];
}
if(k == -1) //没有找到
{
int o;
printf("\n\n没有这个学生的信息!\n");
printf("What do you want to do?\n\t1.继续 2.返回菜单 [ ]\b\b");
scanf("%d",&o);
if(o == 1)
{
system("cls");
search(); //继续查找
}
else
{
system("cls");
menu(); //返回菜单
}
}
}while(k == -1);
system("cls");
printf_one(k); //查找到以后输出这个学生的信息
printf("\nWhat do you want to do?\n\t1.继续 2.返回菜单 [ ]\b\b");
scanf("%d",&w0);
}while(w0 == 1);
system("cls");
menu(); //不在查找时返回菜单
}
else //按学号查找
{
do
{
k = -1;
do
{
printf("\n请输入您想查找的学生的学号!\nNum:");
scanf("%s",s.num);
for(i=0;i<5;i++)
if(strcmp(s.num,stu[i].num) == 0) //找到了
{
k = i;
s = stu[i];
}
if(k == -1) //没有找到
{
int o;
printf("\n\n没有这个学生的信息!\n");
printf("What do you want to do?\n\t1.继续 2.返回菜单 [ ]\b\b");
scanf("%d",&o);
if(o == 1)
{
system("cls");
search(); // 继续查找
}
else
{
system("cls");
menu(); //返回菜单
}
}
}while(k == -1);
system("cls");
printf_one(k); //找到后输出这个学生的信息
printf("\nWhat do you want to do?\n\t1.继续 2.返回菜单 [ ]\b\b");
scanf("%d",&w0);
}while(w0 == 1);
system("cls");
menu(); //不在查找时返回菜单
}
}
/*
void xiugai() //修改学生信息的函数
{
void menu();
void printf_one(int k);
void xiugai_2();
struct student s;
int i,n,k,w0=1,w1,w2=0;
do
{
k=-1;
do
{
printf("\n请输入您想要修改的学生的姓名!Name:");
scanf("%s",s.name);
for(i=0;i<5;i++)
if(strcmp(s.name,stu[i].name) == 0) //与其中一个学生匹配
{
k = i;
s = stu[i];
}
if(k == -1) // 没有找到输入的学生
{
int o;
printf("\n\n没有这个学生的信息!\n");
printf("What do you want to do?\n\t1.继续 2.返回菜单 [ ]\b\b");
scanf("%d",&o);
if(o == 1)
{
system("cls");
xiugai(); //继续修改
}
else
{
system("cls");
menu(); //返回菜单
}
}
}while(k == -1);
system("cls");
printf_one(k); //输出这个学生的信息
}while();
}
*/
void printf_all() //输出所有学生成绩的函数
{
void menu();
system("color 4e");
int i,j,k;
for(i=0;i<N;i++)
{
printf("学号:%s 姓名:%s 分数:%d\n",stu[i].num,stu[i].name,stu[i].score);
}
do
{
printf("返回菜单请按1 [ ]\b\b");
scanf("%d",&j);
if(j == 1)
{
system("cls");
menu();
}
else
{
k=0;
}
}while(k == 0);
}
void printf_one(int k) //输出某一个学生的信息的函数
{
printf("学号: %s 姓名: %s 分数: %d",stu[k].num,stu[k].name,stu[k].score);
}
void exit() //退出系统的函数
{
exit(0);
}
void menu() //菜单函数
{
system("color 2e");
printf("\n\t\t\t欢迎使用学生学籍管理系统!\n");
printf("\n");
int n,m;
do
{
puts("\t\t********************菜单*********************");
puts("\t\t*********************************************");
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******* 6--输出所有不及格学生的成绩 **");
puts("\t\t******* 7--输出所有优秀学生姓名和成绩*");
puts("\t\t******* 8--退出系统 ****");
puts("\t\t*********************************************");
printf("请选择服务种类(1~8): [ ]\b\b");
scanf("%d",&n);
if(n<1||n>8)
{
system("cls");
printf("选择错误! 请重新选择!\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: system("cls"); tongji(); break;
// case 6: system("cls"); printf_all_bujige() break;
// case 7: system("cls"); printf_all_youxiu() break;
case 8: exit(); break;
}
}
int main()
{
menu();
return 0;
}