c语言学生成绩管理系统1000行源代码

如题所述

/*首次使用,新建score.in文件,在里面打入0
可用程序
#include<stdio.h>
FILE *fin
main()
{
fin=fopen("score.in","r");
fprintf(fin,"0");
return 0;
}
完成
*/
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<windows.h>
#include<time.h>
#define n 999
FILE *fin;
main()
{
int a[n]={0},ori=0,i=0,b=0,add[n]={0},con=0,orix[n]={0},t=0,te[n]={0},TRUEt,ixi,fx,abc=0,sum,TURE,xx;
long long f[n]={0},tex[n]={0};
printf("\n\n\n\n\n\n\n\n\n\n\n\t\t\t\t\t\t学生成绩管理系统\n\t\t\t\t\t\t Please wait...");
Sleep(2000);system("cls");
int xp,xi;
fin=fopen("score.in","r+");
fscanf(fin,"%d",&xp);
i=xp;
for(xi=1;xi<=xp;xi++)
{fscanf(fin,"%d%d%d",&f[xi],&a[xi],&te[xi]);te[xi]--;
printf("Id:%lld score:%d ranking:%d\n",f[xi],a[xi],te[xi]+1);
add[xi]=xi;orix[xi]=a[xi];
}
fclose(fin);
int TRUE1;
pe:
while(1)
{ TRUE1=1;i++;
printf("Id(输入-1:删除,输入-2:修改成绩,输入-3:删除所有内容,输入-4:保存到score.in并退出):");
scanf("%lld",&f[i]);
for(sum=1;sum<i;sum++)
if(f[sum]==f[i])
{system("cls");for(con=1;con<=i;con++) {if(a[con]==0)continue;printf("Id:%lld score:%d ranking:%d\n",f[con],a[con],te[con]+1);}TRUE1=0;i--;printf("Error with two same id.\n");continue;}
if(TRUE1==0)
continue;
if(f[i]==-3)
{int r;
for(r=0;r<n;r++)
{
a[r]=0;ori=0;i=0;b=0;add[r]=0;con=0;orix[r]=0;t=0;te[r]=0;abc=0;
f[r]=0;tex[r]=0;
}
system("cls");
goto pe;
}
if(f[i]==-2)
{TURE=0;i--;
system("cls");
for(con=1;con<=i;con++)
{if(a[con]==0)continue; printf("Id:%lld score:%d ranking:%d\n",f[con],a[con],te[con]+1);}
printf("修改学号_____________号的分数.\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b",f[con],a[con],te[con]+1);
scanf("%d",&xx);
for(sum=1;sum<=i;sum++)
if(f[sum]==xx)
{
TURE=1;
printf("\n修改为___________.\b\b\b\b\b\b\b\b\b\b\b\b");
scanf("%d",&a[sum]);
printf("\n修改成功!将在下一次输入后更新名次。\n\n");
continue;
}
if(TURE==0)
printf("No id is %d\n",xx);
continue;
}
if(f[i]==-4)
{
i--;
fin=fopen("score.in","r+");
fprintf(fin,"%d\n",i);
for(xi=1;xi<=i;xi++)fprintf(fin,"%d %d %d\n",f[xi],a[xi],te[xi]+1);
for(xi=i+1;xi<=xp;xi++)fprintf(fin," \n");
fclose(fin);
return 0;
}
if(f[i]==-1)
{TRUEt=0;
system("cls");
i--;
for(con=1;con<=i;con++){if(a[con]==0)continue;printf("Id:%lld score:%d ranking:%d\n",f[con],a[con],te[con]+1);}
printf("删除学号_____________号.\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b");
scanf("%lld",&fx);
for(con=1;con<=i;con++)
if(f[con]==fx)
{TRUEt=1;abc++;
f[con]=0;
a[con]=0;
tex[abc]=te[con];
for(ixi=1;ixi<=i;ixi++)
if(te[ixi]>te[con])
te[ixi]--;
te[con]=0;
break;}
system("cls");
for(con=1;con<=i;con++){
if(a[con]==0)continue;
printf("Id:%lld score:%d ranking:%d\n",f[con],a[con],te[con]+1);}
if(TRUE==0)
printf("No Id is %lld\n",fx);
continue;
}
system("cls");
for(con=1;con<i;con++)
{if(a[con]==0)continue; printf("Id:%lld score:%d ranking:%d\n",f[con],a[con],te[con]+1);}
printf("Id:%lld score:",f[i]);
scanf("%d",&ori);system("cls");
a[i]=ori;add[i]=i;orix[i]=a[i];
system("cls");
for(b=1;b<=i;b++)
for(con=i;con>=b;con--)
if(orix[con]>orix[con-1])
{t=orix[con];orix[con]=orix[con-1];orix[con-1]=t;
t=add[con];add[con]=add[con-1];add[con-1]=t;}
for(con=1;con<=i;con++) te[add[con]]=con;
for(con=1;con<=abc;con++)
for(ixi=1;ixi<=i;ixi++)
if(te[ixi]>tex[con])
te[ixi]--;
if(te[i]==te[i-1])te[i]=0;
for(con=1;con<=i;con++)
{if(a[con]==0)continue;printf("Id:%lld score:%d ranking:%d\n",f[con],a[con],te[con]+1);}
}
return 0;
}
//求采纳
温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-06-11
#include#include#include#include#include#defineMAX80voidinput();voidsort();voiddisplay();voidinsert();voiddel();voidaverage();voidfind();;voidread();;voidaverage();voidmodify();intnow_no=0;structstudent{intno;charname[20];charsex[4];floatscore1;floatscore2;floatscore3;floatsort;floatave;floatsum;};voidaverage()/*求平均数*/{inti;for(i=0;i追问

我要1000行的源代码,不能少于1000行,你这也不完整呀?

第2个回答  2017-08-15

我这里有一份完整的学生信息管理系统源代码,限于知道篇幅,这里先粘贴出定义声明部分代码,以及运行结果截图。

详细内容私信联系~~

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
 
#define status int
 
#define NAME 30 /*各类名称字数上限*/
#define STU 100 /*学生人数上限*/
#define SUB 10 /*课程数上限*/
 
#define PASS 60 /*及格分数下限(含)*/
#define LA 85 /*A级别分数下限(含)*/
#define LB 70 /*B级别分数下限(含)*/
#define LC 60 /*C级别分数下限(含)*/
#define LD 0 /*D级别分数下限(含)*/
 
typedef struct record {
    float score; /*成绩分数*/
    char level; /*成绩分数段*/
} record;
 
typedef struct student {
    int id; /*id*/
    int no; /*学号*/
    char name[NAME]; /*姓名*/
    record scores[SUB]; /*各门课成绩分数*/
    float totalScore; /*总分*/
    float averageScore; /*平均分*/
    char totalLevel; /*总分数段*/
    int ranking; /*名次*/
} student;
 
char subject[SUB][NAME]; /*课程名称*/
 
 
/**********************以下为函数声明**********************/
status initProgram (student stu[], int *stuNum, int *subNum, int mode); /*初始化,含测试、程序写定课程、自定义课程3种模式*/
void initResult (student stu[], int *stuNum, int *subNum, int mode); /*判断初始化结果*/
status inputTestStuInfo (student stu[], int *stuNum, int *subNum); /*测试数据*/
status defSubject (int *subNum, char subject[SUB][NAME]); /*自定义各门课程*/
 
int stuInfoEmpty (student stu[], int stuNum); /*学生信息判空*/
status stuInfoEmptyOp (student stu[], int stuNum); /*学生为空时的处理*/
int noRepeated (student stu[], int stuNum, int no); /*学号判重*/
 
status printInputStuInfoheader (int subNum); /*输出录入学生信息之表头*/
status inputStuInfo (student stu[], int *stuNum, int subNum, int stuIndex, int ismod); /*录入单个学生信息*/
status inputAllStuInfo (student stu[], int *stuNum, int subNum); /*录入全部学生信息*/
 
char getScoreLevel (float score); /*计算分数段*/
status calcStuInfo (student stu[], int stuIndex, int subNum); /*计算处理单个学生信息*/
status calcAllStuInfo (student stu[], int stuNum, int subNum); /*计算处理全部学生信息*/
 
status printStuInfoheader (int subNum, int inclRanking); /*输出学生信息之表头*/
status printStuInfo (student stu[], int stuIndex, int subNum, int inclRanking); /*输出单个学生信息*/
status printAllStuInfo (student stu[], int stuNum, int subNum, int inclRanking); /*输出全部学生信息*/
 
int compareStuInfo (student stu[], int stuNum, int rsIndex[], int inclNo, int no, int inclName, char name[]); /*按学号、姓名查找学生信息,返回结果个数*/
status findStuInfo (student stu[], int stuNum, int subNum); /*查找符合条件的学生信息并输出*/
 
status deleteStuInfoByIndex (student stu[], int *stuNum, int subNum, int stuIndex); /*删除指定位置的学生信息*/
status delStuInfo (student stu[], int *stuNum, int subNum); /*删除学生信息*/
 
status modifyStuInfoByIndex (student stu[], int *stuNum, int subNum, int stuIndex); /*修改指定位置的学生信息*/
status modStuInfo (student stu[], int *stuNum, int subNum); /*修改学生信息*/
 
status descSortAndRanking (student stu[], int stuNum, int subNum); /*按总分降序排列并录入名次*/
 
status printStatistics (student stu[], int stuNum, int subNum); /*输出统计数据*/
 
int getCommand (void); /*输入命令编号*/
status printMenuText (void); /*打印菜单文本*/
status runMeun (student stu[], int *stuNum, int subNum); /*运行菜单*/
status pressAnykeyToContinue (void);  /*按任意键继续*/
/**********************以上为函数声明**********************/

主界面

输入学生信息

输入学生信息-失败

输出学生信息

查找学生信息

删除学生信息

修改学生信息

修改学生信息-成功

按成绩降序排列并输出名次

输出统计数据

第3个回答  2017-07-28
为什么要1000行? 这简单的系统 讲道理500行都够呛
第4个回答  2017-07-21
哇...0分...
采纳我的吧。。