C语言学生成绩管理系统系统

本文介绍了使用C语言开发一个成绩管理系统的实践过程,包括数据结构设计、输入输出处理及基本功能实现,如添加、查询和统计学生分数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 100
#define M 7 
typedef struct student  //结构体 
{
   
   
	char num[50];//学号 
	char classs[50];//班级 
	char name[50];//姓名 
	double grade[M];//成绩 
}HCY;
    
	HCY stu[N];
    double aver[M];
    int n;
	void input();                           //声明
	void average(struct student stu[]);     //求平均 
	void output(struct student stu[]);      //输出
	void chaxun(struct student stu[]);     //查询 
	void sort(struct student stu[]);       // 排序 
    void xiugai(struct student stu[]);     //修改 
    void zhuijia(struct student stu[]);    //追加 
    void shanchu(struct student stu[]);    //删除 
    void fenduan(struct student stu[]);    //分段 
    void baocun();                          //保存 
    void daoru();                            //导入 
    void caidan();                           //菜单 
int main()
{
   
     
  
   void mima();
	mima();
}
void daoru()  //导入
{
   
   
    void caidan();
    FILE *fp;
    int i;
    if((fp=fopen("xueshengshujv.txt","r"))==NULL)
    {
   
   
        printf("文件丢失!");
        caidan();
    }
    fscanf(fp,"%d",&n);
    for(i=0;i<n;i++)
    {
   
   
        fscanf(fp,"%s %s %s %lf %lf %lf %lf %lf %lf\n",stu[i].num,stu[i].name,stu[i].classs,&stu[i].grade[0],&stu[i].grade[1],&stu[i].grade[2],&stu[i].grade[3],&stu[i].grade[4],&stu[i].grade[5]);
    }
    fclose(fp);
    printf("导入成功");
}
void baocun()  //保存
{
   
   
    void caidan();
    FILE *fp;
    int i;
    if((fp=fopen("xueshengshujv.txt","w"))==NULL)
    {
   
   
        printf("文件丢失!");
        caidan();
    }
    fprintf(fp,"%d\n",n);
    for(i=0;i<n;i++)     //以数组的形式保存内容 
    {
   
   
        fprintf(fp,"%s\t%s\t%s\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t%.2lf\n",stu[i].num,stu[i].name,stu[i].classs,stu[i].grade[0],stu[i].grade[1],stu[i].grade[2],stu[i].grade[3],stu[i].grade[4],stu[i].grade[5]);
    }
    fclose(fp);
    printf("保存成功");
}
 
void caidan()  //菜单界面
{
   
   
	
printf("\n");
 printf("\n");
  printf("\n");
  printf("\n");
 printf("\n");
    system("color F1");
    printf("        * * * *                 * * * *               \n");
    printf("      *         ****       ****          *            \n");
    printf("    * 1.成绩录入   ***   ***   2.平均成绩  *          \n");
    printf("  *                   ***                    *        \n");
    printf(" *     3.成绩输出             4.成绩排序      *       \n");
    printf("*                                              *      \n");
    printf("*       5.成绩查询           6.成绩修改        *      \n"); 
    printf("*                                              *      \n");
    printf(" *       7.成绩追加         8.成绩删除        *       \n");
    printf("  *                                          *        \n");
    printf("    *    9.成绩分段      0.退出程序        *          \n");
    printf("      *                                  *            \n");
    printf("        *                              *              \n");
    printf("          *         ZZULIOJ          *                \n");
    printf("            *          L           *                  \n");
    printf("              *        C         *                    \n"); 
	printf("一亿像素        *   FOREVER    *                      \n");
	printf("xiaomiCC9pro      *          *                        \n");
	printf("                     *     *                          \n");
	printf("                        *                             \n");
    printf("                                                      \n");	
	printf("                                                      \n");
    printf("                                                      \n"); 
    printf("请在0~11之间输入一个数字进行输入并且按下回车键\n");
    printf("请输入你的选择:");
    int haoma;
    scanf("%d",&haoma);
    switch(haoma)
    {
   
   
    	case 0:
		exit(0);
		break;      //正常退出 
    	case 1:
		system("cls");
		input();            
		caidan();
		break;      //成绩录入 
    	case 2:
		system("cls");
		average(stu);    
		caidan();
#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; }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值