学生成绩管理系统(C实现)

一、系统主要功能

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;
}

三、效果演示:

输入登入密码:
在这里插入图片描述
输入数据:
在这里插入图片描述
在这里插入图片描述
查询成绩:
在这里插入图片描述
在这里插入图片描述
修改成绩:
在这里插入图片描述
在这里插入图片描述
输出所有学生成绩:
在这里插入图片描述
退出系统:
在这里插入图片描述

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
#include <stdio.h> #include <stdlib.h> #include <string.h> #include<ctype.h> #define M 3 struct student {long num; char name[20]; char sex; int score[5]; int ave; }stu[M]; void init() { printf("\t\t********************************\n\n"); printf("\t\tStudent score management systerm \n"); printf("\n"); printf("\t\t Make by Maggiehe \n"); printf("\n"); printf("\t\t Student number is 3206***** \n\n"); printf("\t\t********************************\n\n"); } void input() { int i,j; printf("\nInput the student number name sex math English PE maolun majing:\n"); for(i=0;i<M;i++) {scanf("%ld,%s,%c",&stu[i].num,stu[i].name,&stu[i].sex); for(j=0;j<5;j++) scanf("%d",&stu[i].score[j]); scanf("%d",&stu[i].ave); save(); } } void list() { int i,j; clrscr(); printf("\t**********************student****************************\n"); printf("num name sex math English PE maolun majing:\n"); for(i=0;i<M;i++) { printf("%ld %s %c",stu[i].num,stu[i].name,stu[i].sex); for(j=0;j<5;j++) printf("%d",stu[i].score[j]); printf("%d",stu[i].ave); } if((i+1)%10==0) { printf("\npress any key continue.......\n"); getch(); } printf("\t*************************end*********************************\n"); } void average() { int i,j; float sum[M]; for(i=0;i<M;i++) for(j=0;j<5;j++) sum[i]+=stu[i].score[j]; stu[i].ave=sum[i]/5.0; } void search_num() { long num; int i,j; printf("\nplease enter number which you want to search:"); scanf("%ld",&num); printf("\n"); for(i=0;i<M;i++) if(stu[i].num!=num) printf("The number is not exist\n"); else { printf("number name sex math English PE maolun majing average\n"); printf("%ld %s %c",stu[i].num,stu[i].name,stu[i].sex); for(j=0;j<5;j++) printf("%d",stu[i].score[j]); printf("%d",stu[i].ave); } } void search_nam() { int i,j; char name[20]; printf("\nplease enter name which you want to search:"); scanf("%s",&name); printf("\n"); for(i=0;i<M;i++) if(strcmp(stu[i].name,name)==0) { printf("number name sex math English PE maolun majing average:\n"); printf("%ld%s%c",stu[i].num,stu[i].name,stu[i].sex); for(j=0;j<5;j++) printf("%d",stu[i].score[j]); printf("%d",stu[i].ave); } else printf("\nThe name is not exist!!!\n"); } void search_ave() { int i,j,a=0; float k; printf("please enter average score which you want to search:"); scanf("%f",&k); printf("\n"); for(i=0;i<M;i++) if(stu[i].ave!=k) printf("The average score is not exist!!!\n"); else for(i=0;i<M;i++) { if(stu[i].ave<=k) printf("number name sex math English PE maolun majing average\n"); printf("%ld %s %c",stu[i].num,stu[i].name,stu[i].sex); for(j=0;j<5;j++) printf("%d",stu[i].score[j]); printf("%d",stu[i].ave); a++; } } void sort() { int i,j; struct student temp; for(i=0;i<M;i++) for(j=i+i;j<M;j++) if(stu[i].ave<stu[j].ave) {temp=stu[i]; stu[i]=stu[j]; stu[j]=temp; } } void save() { int i; FILE *fp; if((fp=fopen("student.dat","wb"))==NULL) {printf("cannot open file\n"); return; } for(i=0;i<M;i++) if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1) printf("file write error\n"); fclose(fp); } void delect() { int i,t; long num; printf("please enter number which you want to delect:"); scanf("%ld",&num); printf("\n"); for(i=0;i<M;i++) { if(stu[i].num!=num) printf("The number is not exist!!!\n"); if(stu[i].num==num) t=i; } for(i=t;i<M;i++) stu[i]=stu[i+1]; save(); } void insert() {FILE *fp; int i,n,t; struct student s; printf("please input record\n"); printf("number name sex math English PE maolun majing average\n"); scanf("%ld,%s,%c,%d%d%d%d%d%d",&s.num,s.name,&s.sex,&s.score[0],&s.score[1],&s.score[2],&s.score[3],&s.score[4],&s.ave); s.ave=(s.score[0]+s.score[1]+s.score[2]+s.score[3]+s.score[4])/3.0; if((fp=fopen("student.dat","wb"))==NULL) {printf("cannot open file\n"); return; } i=M; for(t=0;stu[i].ave>s.ave&&t<M;t++) if(fwrite(&s,sizeof(struct student),1,fp)!=1) printf("file write error\n"); fclose(fp); } void MainMenu() {clrscr(); printf("\t********************************************************************\n \n); Printf(“\n”); printf("\t choose one of following:\n"); printf("\t 1. search record\n"); printf("\t 2. sort record\n"); printf("\t 3. insert record\n"); printf("\t 4. delect record\n"); printf("\t please enter your choice:"); printf(“\n”); printf("\t********************************************************************\n"); } void menu_select() {clrscr(); printf("\t******************************************************************\n\n"); printf(“\n”); printf("\t choose one of following:\n"); printf("\t 1.1 search by number\n"); printf("\t 1.2 search by name\n"); printf("\t 1.3 search by average score\n"); printf("\t please enter your choice:"); printf(“\n”); printf("\t******************************************************************\n"); } void search() { char ch; clrscr(); menu_select(); ch=getch(); switch(ch) { case '1':search_num();break; case '2':search_nam();break; case '3':search_ave();break; } } main() { char ch; clrscr(); init(); input(); list(); average(); save(); MainMenu(); ch=getch(); switch(ch) { case '1':search();break; case '2':sort();break; case '3':insert();break; case '4':delect();break; } search_num(); search_nam(); search_ave(); sort(); delect(); insert; }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值