当前位置:首页 > 代码 > 正文

成绩管理系统源代码(学生成绩管理系统php源码)

admin 发布:2022-12-19 16:06 111


今天给各位分享成绩管理系统源代码的知识,其中也会对学生成绩管理系统php源码进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

c语言程序学生成绩管理系统源代码

头文件:::

#ifndef H_STUDENT_HH

#define H_STUDENT_HH

#include "stdio.h"

#include "string.h"

#include "malloc.h"

#define LEN sizeof(struct message_student) /*一个结构体数组元素的长度*/

#define numsubs 5 /*学科数目*/

typedef struct message_student /*结构体定义*/

{

char number[6];

char name[20];

char sex[4];

float subject[numsubs];

float score;

float average;

int index;

}student;

extern int numstus; /*学生数目*/

extern student *pointer; /*指向结构体数组*/

extern int lens;

int menu_select(); /*函数声明*/

int openfile(student stu[]);

int findrecord(student stud[]);

int writetotext(student stud[]);

void welcome();

void display1();

void showtable();

void sort(student stu[]);

void deleterecord(student stu[],int i);

void addrecord(student stud[]);

void display(student stud[],int n1,int n2);

void amendrecord(student stud[]);

void count(student stud[]);

void sortnum(student stud[]);

void sortnum2(student stud[]);

void sortname(student stud[]);

void sortname2(student stud[]);

void sortcount(student stud[]);

void sortcount2(student stud[]);

void statistic(student stud[]);

void display1();

#endif

#include "head.h"

int menu_select()

{

char c;

printf("\n\n");

printf(" | 1. 增加学生记录 5.统计信息 |\n");

printf(" | 2. 查询学生记录 6.打开文件 |\n");

printf(" | 3. 修改学生记录 7.保存文件 |\n");

printf(" | 4. 学生纪录排序 8.显示记录 |\n");

printf(" | 0.退出系统 |\n");

printf("\n\n");

printf("请选择(0-8):");

c=getchar();

getchar();

return (c-'0');

}

#include "head.h"

int findrecord(student stud[]) /*查找信息*/

{

char str[2];

int i,num;

if(numstus==0)

{

printf("没有可被查找的记录\n");

return -1;

}

else

{

printf("以何种方式查找?\n1.学号\t2.姓名\t3.名次\n");

gets(str);

if(str[0]=='1') /*按学号查找*/

{

printf("请输入学号:");

gets(str);

for(i=0;i=numstus;i++)

if(strcmp(str,stud[i].number)==0)

{

display(stud,i,i);

break;

}

else continue;

}

else if(str[0]=='2') /*按姓名查找*/

{

printf("请输入姓名:");

gets(str);

for(i=0;i=numstus;i++)

if(strcmp(str,stud[i].name)==0)

{

display(stud,i,i);

break;

}

else continue;

}

else if(str[0]=='3') /*按名次查找*/

{

printf("请输入名次:");

scanf("%d",num);

getchar();

for(i=0;i=numstus;i++)

if(num==stud[i].index)

{

display(stud,i,i);

break;

}

else continue;

}

if(inumstus)

{

printf("没有查找所要的信息。\n");

return -1;

}

return i;

}

}

#include"head.h"

int openfile(student stu[])

{

int i=0,j;

FILE *fp;

char filename[20],str[2];

if(numstus!=0)

{

printf("已经有记录存在,是否保存?(y/n)");

gets(str);

if(str[0]=='y'||str[0]=='Y')

writetotext(stu);

}

printf("请输入文件名:");

gets(filename);

numstus=0;

if((fp=fopen(filename,"rb+"))==NULL)

{

printf("无法打开该文件\n");

return(-1);

}

fscanf(fp,"%d",numstus);

fgetc(fp);

while(inumstus)

{

fscanf(fp,"%s",stu[i].number);

fscanf(fp,"%s",stu[i].name);

fscanf(fp,"%s",stu[i].sex);

for(j=0;jnumsubs;j++)

fscanf(fp,"%f",stu[i].subject[j]);

fscanf(fp,"%f",stu[i].score);

fscanf(fp,"%f",stu[i].average);

fscanf(fp,"%d",stu[i].index);

i++;

}

fclose(fp);

printf("文件读取成功\n");

printf("是否显示纪录?(y/n)");

gets(str);

if(str[0]=='y'||str[0]=='Y')

display(stu,0,numstus-1);

return(0);

}

#include "head.h"

void sort(student stud[])

{

int i,j=0;

char str[5];

student *p;

p=stud;

if(numstus==0)

{

printf("没有可供查询的记录!");

}

while(1)

{

for(i=0;;i++)

{

printf(" 请输入查询方式:");

printf("(直接输入回车则结束查询操作)\n");

printf("1.按照学号\t");

printf("2.按照姓名\t");

printf("3.按照名次\n");

gets(str);

if(strlen(str)==0) break;

if(str[0]=='1')

{

printf("请输入排序次序:\n");

printf("1.升序排列\t");

printf("2.降序排列\n");

gets(str);

if(str[0]=='1')

sortnum2(p);

else

sortnum(p);

display(stud,0,numstus-1);

}

else if(str[0]=='2')

{

printf("请输入排序次序:\n");

printf("1.升序排列\t");

printf("2.降序排列\n");

gets(str);

if(str[0]=='1')

sortname2(p);

else

sortname(p);

display(stud,0,numstus-1);

}

else if(str[0]=='3')

{

printf("请输入排序次序:\n");

printf("1.升序排列\t");

printf("2.降序排列\n");

gets(str);

if(str[0]=='1')

sortcount2(p);

else

sortcount(p);

display(stud,0,numstus-1);

}

else printf("请输入1~3");

printf("是否退出排序?(y/n)");

gets(str);

if(str[0]=='y'||str[0]=='Y') break;

}

return;

}

}

void sortnum(student stud[])

{

int i,j;

student temp;

student *p;

p=stud;

for(i=0;inumstus;i++)

for(j=0;jnumstus-i-1;j++)

{

if(strcmp(stud[j+1].number,stud[j].number)0)

{

temp=*(p+j);

*(p+j)=*(p+j+1);

*(p+j+1)=temp;

}

}

}

void sortnum2(student stud[])

{

int i,j;

student temp;

student *p;

p=stud;

for(i=0;inumstus;i++)

for(j=0;jnumstus-i-1;j++)

{

if(strcmp(stud[j].number,stud[j+1].number)0)

{

temp=*(p+j);

*(p+j)=*(p+j+1);

*(p+j+1)=temp;

}

}

}

void sortname(student stud[])

{

int i,j;

student temp;

student *p;

p=stud;

for(i=0;inumstus;i++)

for(j=0;jnumstus-i-1;j++)

{

if(strcmp(stud[j+1].name,stud[j].name)0)

{

temp=*(p+j);

*(p+j)=*(p+j+1);

*(p+j+1)=temp;

}

}

}

void sortname2(student stud[])

{

int i,j;

student temp;

student *p;

p=stud;

for(i=0;inumstus;i++)

for(j=0;jnumstus-i-1;j++)

{

if(strcmp(stud[j].name,stud[j+1].name)0)

{

temp=*(p+j);

*(p+j)=*(p+j+1);

*(p+j+1)=temp;

}

}

}

void sortcount(student stud[])

{

int i,j;

student temp;

student *p;

p=stud;

for(i=0;inumstus;i++)

for(j=0;jnumstus-i-1;j++)

{

if(stud[j+1].indexstud[j].index)

{

temp=*(p+j);

*(p+j)=*(p+j+1);

*(p+j+1)=temp;

}

}

}

void sortcount2(student stud[])

{

int i,j;

student temp;

student *p;

p=stud;

for(i=0;inumstus;i++)

for(j=0;jnumstus-i-1;j++)

{

if(stud[j].indexstud[j+1].index)

{

temp=*(p+j);

*(p+j)=*(p+j+1);

*(p+j+1)=temp;

}

}

}

#include"head.h"

void statistic(student stud[]) /*新增功能,输出统计信息*/

{

int i,j=0,k=0;

char c1,str[2];

float average[numsubs],sum=0;

if(numstus==0)

printf("没有可被查找的记录\n");

else

{

while(1)

{

printf("下面将统计考试成绩\n");

printf("请选择你要统计哪科的成绩 1.A\t2.B\t3.C\t4.D\t5.E\n");

c1=getchar();

printf("\t一共有个%d记录\n",numstus); /*总共记录数*/

switch(c1)

{

case '1':

for(i=0;inumstus;i++) /*循环输入判断*/

{

sum+=stud[i].subject[0];

if(stud[k].subject[0]stud[i].subject[0]) k=i;

if(stud[j].subject[0]stud[i].subject[0]) j=i;

}

average[0]=sum/numstus;

printf("\t科目A的最高分:\n"); /*最高分*/

printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[0]);

printf("\t科目A的最低分是:\n"); /*最低分*/

printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[0]);

printf("\t科目A的平均分是 %5.2f\n",average[0]); /*平均分*/

break;

case '2':

for(i=0;inumstus;i++) /*循环输入判断*/

{

sum+=stud[i].subject[1];

if(stud[k].subject[1]stud[i].subject[1]) k=i;

if(stud[j].subject[1]stud[i].subject[1]) j=i;

}

average[1]=sum/numstus;

printf("\t科目B的最高分:\n"); /*最高分*/

printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[1]);

printf("\t科目B的最低分是:\n"); /*最低分*/

printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[1]);

printf("\t科目B的平均分是 %5.2f\n",average[1]); /*平均分*/

break;

case '3':

for(i=0;inumstus;i++) /*循环输入判断*/

{

sum+=stud[i].subject[2];

if(stud[k].subject[2]stud[i].subject[2]) k=i;

if(stud[j].subject[2]stud[i].subject[2]) j=i;

}

average[2]=sum/numstus;

printf("\t科目C的最高分:\n"); /*最高分*/

printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[2]);

printf("\t科目C的最低分是:\n"); /*最低分*/

printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[2]);

printf("\t科目C的平均分是 %5.2f\n",average[2]); /*平均分*/

break;

case '4':

for(i=0;inumstus;i++) /*循环输入判断*/

{

sum+=stud[i].subject[3];

if(stud[k].subject[3]stud[i].subject[3]) k=i;

if(stud[j].subject[3]stud[i].subject[3]) j=i;

}

average[3]=sum/numstus;

printf("\t科目D的最高分:\n"); /*最高分*/

printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[3]);

printf("\t科目D的最低分是:\n"); /*最低分*/

printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[3]);

printf("\t科目D的平均分是 %5.2f\n",average[3]); /*平均分*/

break;

case '5':

for(i=0;inumstus;i++) /*循环输入判断*/

{

sum+=stud[i].subject[4];

if(stud[k].subject[4]stud[i].subject[4]) k=i;

if(stud[j].subject[4]stud[i].subject[4]) j=i;

}

average[4]=sum/numstus;

printf("\t科目E的最高分:\n"); /*最高分*/

printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[4]);

printf("\t科目E的最低分是:\n"); /*最低分*/

printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[4]);

printf("\t科目E的平均分是 %5.2f\n",average[4]); /*平均分*/

break;

default:printf("输入错误!请输入1~5之间的数\n");

}

sum=0;

getchar();

printf("是否继续进行统计?(y/n)");

gets(str);

if(str[0]=='y'||str[0]=='Y') ;

else break;

}

}

}

#include"head.h"

int writetotext(student stud[]) /*将所有记录写入文件*/

{

int i=0,j;

FILE *fp;

char filename[20];

printf("输入文件名称:");

gets(filename);

fp=fopen(filename,"w");

fprintf(fp,"%d\n",numstus);

while(inumstus)

{

fprintf(fp,"%s %s %s ",stud[i].number,stud[i].name,stud[i].sex);

for(j=0;jnumsubs;j++)

fprintf(fp,"%f ",stud[i].subject[j]);

fprintf(fp,"%f %f %d ",stud[i].score,stud[i].average,stud[i].index);

i++;

}

fclose(fp);

printf("已成功存储!\n");

display(stud,0,numstus-1);

numstus=0;

return 0;

}

#include"head.h"

void welcome()

{

printf("\t*************************************************************\n");

printf("\t\t\t\t这是一个学生成绩管理系统\n\t\t\t\t 倾情奉献 欢迎使用!\n");

printf("\t*************************************************************\n");

}

void showtable()

{

printf("---------------------------------------------------------------------------------------\n");

printf("学号\t姓名\t性别\tA\tB\tC\tD\tE\t总分\t平均分\t名次\n");

printf("---------------------------------------------------------------------------------------\n");

}

void display(student stud[],int n1,int n2)

{

int i;

showtable(); /*显示表头*/

for(i=n1;i=n2;i++)

printf("%s\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%d\t\n",stud[i].number,stud[i].name,stud[i].sex,stud[i].subject[0],stud[i].subject[1],stud[i].subject[2],stud[i].subject[3],stud[i].subject[4],stud[i].score,stud[i].average,stud[i].index);

/*通过循环输出数据*/

}

void display1()

{

printf("\t\t本系统由计应精英一组亲情制作\n\n");

printf("\t\t制作人员列表: (按比划)\n");

printf("\t\t王庆斌\t\t\t张威\n\t\t李智\t\t\t周在峰\n\t\t杨凯\t\t\t胡杨\n");

printf("\n\n");

getchar();

}

#include"head.h"

#includestring.h

void amendrecord(student stud[])

{

char str[5]; /*供用户输入*/

int i=-1,j;

if(numstus==0) /*没有记录返回*/

printf("没有可供修改的记录!");

while(i0)

{

i=findrecord(stud);

if(i=0)

{

printf("要删除这个学生的信息吗?(y/n)");

gets(str);

if(str[0]=='y'||str[0]=='Y')

{

deleterecord(stud,i);

count(stud);

}

else

{

printf("确定要修改这个学生的信息吗?(y/n)");

gets(str);

if(str[0]=='y'||str[0]=='Y')

{

printf("下面请重新输入学生的信息:\n");

printf("请输入学号:");

gets(stud[i].number);

printf("请输入姓名:");

gets(stud[i].name);

printf("请输入性别(男/女 1/0):");

gets(str);

if(str[0]=='0')

strcpy(stud[i].sex,"女");

else

strcpy(stud[i].sex,"男");

stud[i].score=0;

printf("请按顺序输入成绩:");

for(j=0;jnumsubs;j++)

{

scanf("%f",stud[i].subject[j]);

stud[i].score+=stud[i].subject[j];

}

getchar();

stud[i].average=stud[i].score/numsubs;

}

count(stud);

}

display(stud,0,numstus-1);

}

printf("是否继续进行其他修改?(y/n)\n");

gets(str);

if(str[0]=='y'||str[0]=='Y')

i=-1;

else i=1;

}

}

void deleterecord(student stu[],int i) /*删除信息*/

{

int j;

while(i=0)

{

for(j=i;jnumstus;j++)

stu[j]=stu[j+1];

numstus--;

printf("删除成功!\n");

}

}

void count(student stud[])

{

int i,j;

for(i=0;inumstus;i++)

{

stud[i].index=1;

for(j=0;jnumstus;j++)

if(stud[j].scorestud[i].score)

stud[i].index++;

}

}

#include "head.h"

void addrecord(student stud[])

{

int i=0,j,num;

char str[5];

if(numstus!=0)

{

printf("已有记录存在是否覆盖?(y/n)\n");

gets(str);

if(str[0]=='Y'||str[0]=='y')

i=0;

else i=numstus;

}

printf("请输入增加的学生信息条目数:");

scanf("%d",num);

if(i==0)

numstus=num;

else numstus+=num;

if(numstuslens)

{

lens+=50;

pointer=(student *)realloc(pointer,lens*LEN);

}

printf("请输入学生信息:\n");

for(;inumstus;i++)

{

getchar();

printf("请输入学号:");

gets(pointer[i].number);

printf("请输入姓名:");

gets(pointer[i].name);

printf("请输入性别(男/女 1/0):");

gets(pointer[i].sex);

if(pointer[i].sex[0]=='0') strcpy(pointer[i].sex,"女");

else strcpy(pointer[i].sex,"男");

printf("请输入各科成绩:(按ABCDE的顺序):");

stud[i].score=0;

for(j=0;jnumsubs;j++)

{

scanf("%f",stud[i].subject[j]); /*计算总分*/

stud[i].score+=stud[i].subject[j];

}

stud[i].average=stud[i].score/numsubs; /*计算平均分*/

}

count(stud); /*附名次*/

display(stud,0,numstus-1);

getchar();

}#include "head.h"

int numstus;

int lens;

student *pointer;

void main()

{

int i=1;

char str[2];

lens=100;

pointer=(student *)malloc(lens*LEN); /*分配内存*/

numstus=0;

welcome(); /*欢迎界面*/

while(i0)

{

i=menu_select(); /*控制菜单*/

switch(i)

{

case 1:addrecord(pointer);break; /*增加学生信息*/

case 2:findrecord(pointer);break; /*查询学生信息*/

case 3:amendrecord(pointer);break; /*修改学生信息*/

case 4:sort(pointer);break; /*学生信息排序*/

case 5:statistic(pointer);break; /*统计信息*/

case 6:openfile(pointer);break; /*打开文件*/

case 7:writetotext(pointer);break; /*保存文件*/

case 8:display(pointer,0,numstus-1);break; /*显示记录*/

case 0:

if(numstus!=0) printf("是否保存当前记录?(y/n)");

gets(str);

if(str[0]=='y'||str[0]=='Y')

writetotext(pointer);

i=-1;break; /*退出系统*/

default:printf("请输入数字0~8:\n");i=1; /*输入错误*/

}

}

printf("\t\t欢迎再次使用本系统。\n\n");

display1();

}

自己一改就能用,给我加分哈!

学生成绩管理系统 用C语言编写的 原代码

C语言课程设计任务书

一、题目: 学生成绩管理

二、目的与要求

1. 目的:

(1)基本掌握面向过程程序设计的基本思路和方法;

(2)达到熟练掌握C语言的基本知识和技能;

(3)能够利用所学的基本知识和技能,解决简单的程序设计问题

2. 要求

基本要求:

1. 要求利用C语言面向过程的编程思想来完成系统的设计;

2. 突出C语言的函数特征,以多个函数实现每一个子功能;

3. 画出功能模块图;

4. 进行简单界面设计,能够实现友好的交互;

5. 具有清晰的程序流程图和数据结构的详细定义;

6. 熟练掌握C语言对文件的各种操作。

创新要求:

在基本要求达到后,可进行创新设计,如系统用户功能控制,对管理员级和一般级别的用户系统功能操作不同

三、信息描述

输入一个班10个学生的学号和每个学生考试三门功课(数学、英语、计算机基础)的成绩。编程计算出每个学生的总分和平均分,并按学生成绩优劣排序,最后打印一张按高分到低分名次排序的成绩单。要求:

1)排序用一个函数实现。

2)打印的成绩单表项包括:序号,学号、数学、英语、计算机、总分、平均分。

3)按实验报告电子模板格式填写实验内容。

四、功能描述

1. 学生基本信息及成绩所选科目成绩的录入。

2. 基本信息的查询(分系、班级;分科目)与修改。

3. 对每系或每班各科成绩进行分析(即求单科平均成绩、及格率和优秀率);

4. 对所开课程的成绩分析(求其平均成绩,最高分和最低分);

5. 对学生考试成绩进行排名(单科按系别或班级进行排名,对每一个班级,同一学期学生总体成绩进行排名,并显示各科成绩信息)

五. 程序源代码

#include stdio.h

#include stdlib.h

#define STU_NUM 10 /*宏定义学生的数量*/

struct student /*定义一个结构体用来存放学生学号、三门课成绩、总分及平均成绩*/

{

char stu_id[20]; /*学生学号;*/

float score[3]; /*三门课成绩;*/

float total; /*总成绩;*/

float aver; /*平均成绩;*/

};

/*排序用一个函数来实现*/

void SortScore(student *stu,int n)

{

student stud;

for(int i = 0; i n-1; i++)

for(int j = i+1 ; j n; j++)

{

if(stu[i].total stu[j].total)

{

stud = stu[i];

stu[i] = stu[j];

stu[j] = stud;

}

}

}

int main( )

{

student stu[STU_NUM]; /*创建结构体数组中有10个元素,分别用来保存这10个人的相关信息。*/

/*输入这十个学生的相关信息*/

for(int i = 0; iSTU_NUM; i++)

{

printf("请输入第%d个学生的学号:",i+1);

scanf("%s",stu[i].stu_id);

printf("输入第%d个学生的数学成绩:",i+1);

scanf("%f",stu[i].score[0]);

printf("输入第%d个学生的英语成绩:",i+1);

scanf("%f",stu[i].score[1]);

printf("输入第%d个学生的计算机成绩:",i+1);

scanf("%f",stu[i].score[2]);

stu[i].total = stu[i].score[0]+stu[i].score[1]+stu[i].score[2];

stu[i].aver = stu[i].total/3;

}

printf("\n");

SortScore(stu,STU_NUM);/*调用排序函数*/

/*输出排序后的各学生的成绩*/

for(i = 0 ; i STU_NUM; i++)

{

printf("序号: %d\t",i);

printf("学号:%s\t",stu[i].stu_id);

printf("数学:%f\t",stu[i].score[0]);

printf("英语:%f\t",stu[i].score[1]);

printf("计算机:%f\t",stu[i].score[2]);

printf("平均成绩:%f\t",stu[i].aver);

printf("总分:%f\t",stu[i].total);

printf("\n\n");

}

return 0;

}

注:(源程序中主要标识符含义说明)

#define STU_NUM 10 /*宏定义学生的数量*/

struct student /*定义一个结构体用来存放学生学号、三门课成绩、总分及平均成绩*/

{

char stu_id[20]; /*学生学号;*/

float score[3]; /*三门课成绩;*/

float total; /*总成绩;*/

float aver; /*平均成绩;*/

}

实验结果:

输入 :(只输入后面的数字,前面的文字是自己产生的)。

请输入第1个学生的学号:001

输入第1个学生的数学成绩:1

输入第1个学生的英语成绩:1

输入第1个学生的计算机成绩:1

请输入第2个学生的学号:002

输入第2个学生的数学成绩:2

输入第2个学生的英语成绩:2

输入第2个学生的计算机成绩:2

请输入第3个学生的学号:003

输入第3个学生的数学成绩:3

输入第3个学生的英语成绩:3

输入第3个学生的计算机成绩:3

请输入第4个学生的学号:004

输入第4个学生的数学成绩:4

输入第4个学生的英语成绩:4

输入第4个学生的计算机成绩:4

请输入第5个学生的学号:005

输入第5个学生的数学成绩:5

输入第5个学生的英语成绩:5

输入第5个学生的计算机成绩:5

请输入第6个学生的学号:006

输入第6个学生的数学成绩:6

输入第6个学生的英语成绩:6

输入第6个学生的计算机成绩:6

请输入第7个学生的学号:007

输入第7个学生的数学成绩:7

输入第7个学生的英语成绩:7

输入第7个学生的计算机成绩:7

请输入第8个学生的学号:008

输入第8个学生的数学成绩:8

输入第8个学生的英语成绩:8

输入第8个学生的计算机成绩:8

请输入第9个学生的学号:009

输入第9个学生的数学成绩:9

输入第9个学生的英语成绩:9

输入第9个学生的计算机成绩:9

请输入第10个学生的学号:010

输入第10个学生的数学成绩:10

输入第10个学生的英语成绩:10

输入第10个学生的计算机成绩:10

输出:

序号: 0 学号:010 数学:10.000000 英语:10.000000 计算机:10.000000

平均成绩:10.000000 总分:30.000000

序号: 1 学号:009 数学:9.000000 英语:9.000000 计算机:9.000000

平均成绩:9.000000 总分:27.000000

序号: 2 学号:008 数学:8.000000 英语:8.000000 计算机:8.000000

平均成绩:8.000000 总分:24.000000

序号: 3 学号:007 数学:7.000000 英语:7.000000 计算机:7.000000

平均成绩:7.000000 总分:21.000000

序号: 4 学号:006 数学:6.000000 英语:6.000000 计算机:6.000000

平均成绩:6.000000 总分:18.000000

序号: 5 学号:005 数学:5.000000 英语:5.000000 计算机:5.000000

平均成绩:5.000000 总分:15.000000

序号: 6 学号:004 数学:4.000000 英语:4.000000 计算机:4.000000

平均成绩:4.000000 总分:12.000000

序号: 7 学号:003 数学:3.000000 英语:3.000000 计算机:3.000000

平均成绩:3.000000 总分:9.000000

序号: 8 学号:002 数学:2.000000 英语:2.000000 计算机:2.000000

平均成绩:2.000000 总分:6.000000

序号: 9 学号:001 数学:1.000000 英语:1.000000 计算机:1.000000

平均成绩:1.000000 总分:3.000000

七、撰写课程设计报告或课程设计总结

课程设计报告要求:

总结报告包括需求分析、总体设计、详细设计、编码(详细写出编程步骤)、测试的步骤和内容、课程设计总结、参考资料等,不符合以上要求者,则本次设计以不及格记。

C语言常见错误

书写标识符时,忽略了大小写字母的区别

main()

{

int a=5;

printf("%d",A);

}

编译程序把a和A认为是两个不同的变量名,而显示出错信息。C认为大写字母和小写字母是两个不同的字符。习惯上,符号常量名用大写,变量名用小写表示,以增加可读性。

2.忽略了变量的类型,进行了不合法的运算。

main()

{

float a,b;

printf("%d",a%b);

}

%是求余运算,得到a/b的整余数。整型变量a和b可以进行求余运算,而实型变量则不允许进行“求余”运算。

3.将字符常量与字符串常量混淆。

char c;

c="a";

在这里就混淆了字符常量与字符串常量,字符常量是由一对单引号括起来的单个字符,字符串常量是一对双引号括起来的字符序列。C规定以“\”作字符串结束标志,它是由系统自动加上的,所以字符串“a”实际上包含两个字符:‘a'和‘\',而把它赋给一个字符变量是不行的。

4.忽略了“=”与“==”的区别。

在许多高级语言中,用“=”符号作为关系运算符“等于”。如在BASIC程序中可以写

if (a=3) then …

但C语言中,“=”是赋值运算符,“==”是关系运算符。如:

if (a==3) a=b;

前者是进行比较,a是否和3相等,后者表示如果a和3相等,把b值赋给a。由于习惯问题,初学者往往会犯这样的错误。

5.忘记加分号。

分号是C语句中不可缺少的一部分,语句末尾必须有分号。

a=1

b=2

编译时,编译程序在“a=1”后面没发现分号,就把下一行“b=2”也作为上一行语句的一部分,这就会出现语法错误。改错时,有时在被指出有错的一行中未发现错误,就需要看一下上一行是否漏掉了分号。

{ z=x+y;

t=z/100;

printf("%f",t);

}

对于复合语句来说,最后一个语句中最后的分号不能忽略不写(这是和PASCAL不同的)。

6.多加分号。

对于一个复合语句,如:

{ z=x+y;

t=z/100;

printf("%f",t);

};

复合语句的花括号后不应再加分号,否则将会画蛇添足。

又如:

if (a%3==0);

I++;

本是如果3整除a,则I加1。但由于if (a%3==0)后多加了分号,则if语句到此结束,程序将执行I++语句,不论3是否整除a,I都将自动加1。

再如:

for (I=0;I5;I++);

{scanf("%d",x);

printf("%d",x);}

本意是先后输入5个数,每输入一个数后再将它输出。由于for()后多加了一个分号,使循环体变为空语句,此时只能输入一个数并输出它。

7.输入变量时忘记加地址运算符“”。

int a,b;

scanf("%d%d",a,b);

这是不合法的。Scanf函数的作用是:按照a、b在内存的地址将a、b的值存进去。“a”指a在内存中的地址。

8.输入数据的方式与要求不符。①scanf("%d%d",a,b);

输入时,不能用逗号作两个数据间的分隔符,如下面输入不合法:

3,4

输入数据时,在两个数据之间以一个或多个空格间隔,也可用回车键,跳格键tab。

②scanf("%d,%d",a,b);

C规定:如果在“格式控制”字符串中除了格式说明以外还有其它字符,则在输入数据时应输入与这些字符相同的字符。下面输入是合法的:

3,4

此时不用逗号而用空格或其它字符是不对的。

3 4 3:4

又如:

scanf("a=%d,b=%d",a,b);

输入应如以下形式:

a=3,b=4

9.输入字符的格式与要求不一致。

在用“%c”格式输入字符时,“空格字符”和“转义字符”都作为有效字符输入。

scanf("%c%c%c",c1,c2,c3);

如输入a b c

字符“a”送给c1,字符“ ”送给c2,字符“b”送给c3,因为%c只要求读入一个字符,后面不需要用空格作为两个字符的间隔。

10.输入输出的数据类型与所用格式说明符不一致。

例如,a已定义为整型,b定义为实型

a=3;b=4.5;

printf("%f%d\n",a,b);

编译时不给出出错信息,但运行结果将与原意不符。这种错误尤其需要注意。

11.输入数据时,企图规定精度。

scanf("%7.2f",a);

这样做是不合法的,输入数据时不能规定精度。

12.switch语句中漏写break语句。

例如:根据考试成绩的等级打印出百分制数段。

switch(grade)

{ case 'A':printf("85~100\n");

case 'B':printf("70~84\n");

case 'C':printf("60~69\n");

case 'D':printf("60\n");

default:printf("error\n");

由于漏写了break语句,case只起标号的作用,而不起判断作用。因此,当grade值为A时,printf函数在执行完第一个语句后接着执行第二、三、四、五个printf函数语句。正确写法应在每个分支后再加上“break;”。例如

case 'A':printf("85~100\n");break;

13.忽视了while和do-while语句在细节上的区别。

(1)main()

{int a=0,I;

scanf("%d",I);

while(I=10)

{a=a+I;

I++;

}

printf("%d",a);

}

(2)main()

{int a=0,I;

scanf("%d",I);

do

{a=a+I;

I++;

}while(I=10);

printf("%d",a);

}

可以看到,当输入I的值小于或等于10时,二者得到的结果相同。而当I10时,二者结果就不同了。因为while循环是先判断后执行,而do-while循环是先执行后判断。对于大于10的数while循环一次也不执行循环体,而do-while语句则要执行一次循环体。

14.定义数组时误用变量。

int n;

scanf("%d",n);

int a[n];

数组名后用方括号括起来的是常量表达式,可以包括常量和符号常量。即C不允许对数组的大小作动态定义。

15.在定义数组时,将定义的“元素个数”误认为是可使的最大下标值。

main()

{static int a[10]={1,2,3,4,5,6,7,8,9,10};

printf("%d",a[10]);

}

C语言规定:定义时用a[10],表示a数组有10个元素。其下标值由0开始,所以数组元素a[10]是不存在的。

16.初始化数组时,未使用静态存储。

int a[3]={0,1,2};

这样初始化数组是不对的。C语言规定只有静态存储(static)数组和外部存储(exterm)数组才能初始化。应改为:

static int a[3]={0,1,2};

17.在不应加地址运算符的位置加了地址运算符。

scanf("%s",str);

C语言编译系统对数组名的处理是:数组名代表该数组的起始地址,且scanf函数中的输入项是字符数组名,不必要再加地址符。应改为:

scanf("%s",str);

18.同时定义了形参和函数中的局部变量。

int max(x,y)

int x,y,z;

{z=xy?x:y;

return(z);

}

形参应该在函数体外定义,而局部变量应该在函数体内定义。应改为:

int max(x,y)

int x,y;

{int z;

z=xy?x:y;

return(z);

}

这是我们今年的课设答案,绝对正确哦!!

【急】求C语言学生成绩管理系统源代码,要能用的

#include time.h

#includestdio.h

#includeconio.h

#include stdlib.h

#includestring.h

#define MAX 80

void input();

void sort();

void display();

void insert();

void del();

void average();

void find();;

void read();;

void average();

void modify();

int now_no=0;

struct student

{

int no;

char name[20];

char sex[4];

float score1;

float score2;

float score3;

float sort;

float ave;

float sum;

};

void average()/*求平均数*/

{

int i;

for(i=0;inow_no;i++)

{

stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;

stu[i].ave=stu[i].sum/3;

}

}

struct student stu[MAX],*p;

main()/*主函数*/

{

int as;

start: printf("\n\t\t\t欢迎使用学生成绩管理系统\n");

/*一下为功能选择模块*/

do

{

printf("\n\t\t\t\t1.录入学员信息\n\t\t\t\t2.显示学员信息\n\t\t\t\t3.成绩排序信息\n\t\t\t\t4.添加学员信息\n\t\t\t\t5.删除学员信息\n\t\t\t\t6.修改学员信息\n\t\t\t\t7.查询学员信息\n\t\t\t\t8.退出\n");

printf("\t\t\t\t选择功能选项:");

fflush(stdin);

scanf("%d",as);

switch(as)

{

case 1:system("cls");input();break;

case 2:system("cls");display();break;

case 3:system("cls");sort();break;

case 4:system("cls");insert();break;

case 5:system("cls");del();break;

case 6:system("cls");modify();break;

case 7:system("cls");find();break;;

case 8:system("exit");exit(0);

default:system("cls");goto start;

}

}while(1);

/*至此功能选择结束*/

}

void input()/*原始数据录入模块*/

{

int i=0;

char ch;

do

{

printf("\t\t\t\t1.录入学员信息\n输入第%d个学员的信息\n",i+1);

printf("\n输入学生编号:");

scanf("%d",stu[i].no);

fflush(stdin);

printf("\n输入学员姓名:");

fflush(stdin);

gets(stu[i].name);

printf("\n输入学员性别:");

fflush(stdin);

gets(stu[i].sex);

printf("\n输入学员成绩1:");

fflush(stdin);

scanf("%f",stu[i].score1);

printf("\n输入学员成绩2:");

fflush(stdin);

scanf("%f",stu[i].score2);

printf("\n输入学员成绩3:");

fflush(stdin);

scanf("%f",stu[i].score3);

printf("\n\n");

i++;

now_no=i;

printf("是否继续输入?(Y/N)");

fflush(stdin);

ch=getch();

system("cls");

}

while(ch!='n'ch!='N');

system("cls");

}

void sort()/*排序数据函数*/

{

struct student temp;

int i,j;

average();

for(i=1;inow_no;i++)

{

for(j=1;j=now_no-i;j++)

{

if(stu[j-1].avestu[j].ave)

{

temp=stu[j];

stu[j]=stu[j-1];

stu[j-1]=temp;

}

}

}

}

void display()/*显示数据函数*/

{

int i;

char as;

average();

do

{

printf("\t\t\t班级学员信息列表\n");

printf("\t编号\t姓名\t性别\t成绩1\t成绩2\t成绩3\t平均值\n");

for(i=0;inow_nostu[i].name[0];i++)printf("\t%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].ave);

printf("\t\t按任意键返回主菜单.");

fflush(stdin);

as=getch();

}

while(!as);

system("cls");

}

void insert()/*插入数据函数*/

{

char ch;

do

{

printf("\n\t\t输入新插入学员队信息\n");

printf("\n输入学生编号:");

scanf("%d",stu[now_no].no);

fflush(stdin);

printf("\n输入学员姓名:");

fflush(stdin);

gets(stu[now_no].name);

printf("\n输入学员性别:");

fflush(stdin);

gets(stu[now_no].sex);

printf("\n输入学员成绩1:");

fflush(stdin);

scanf("%f",stu[now_no].score1);

printf("\n输入学员成绩2:");

fflush(stdin);

scanf("%f",stu[now_no].score2);

printf("\n输入学员成绩3:");

fflush(stdin);

scanf("%f",stu[now_no].score3);

printf("\n\n");

now_no=now_no+1;

sort();

printf("是否继续输入?(Y/N)");

fflush(stdin);

ch=getch();

system("cls");

}

while(ch!='n'ch!='N');

}

void del()/*删除数据函数*/

{

int inum,i,j;

printf("输入要删除学员的编号:");

fflush(stdin);

scanf("%d",inum);

for(i=0;inow_no;i++)

{

if(stu[i].no==inum)

{

if(i==now_no)now_no-=1;

else

{

stu[i]=stu[now_no-1];

now_no-=1;

}

sort();

break;

}

}

system("cls");

}

void find()/*查询函数*/

{

int i;

char str[20],as;

do

{

printf("输入要查询的学生姓名:");

fflush(stdin);

gets(str);

for(i=0;inow_no;i++)

if(!strcmp(stu[i].name,str))

{

printf("\t编号\t姓名\t性别\t成绩1\t成绩2\t成绩3\t平均值\n");

printf("\t%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].ave);

}

printf("\t\t按任意键返回主菜单.");

fflush(stdin);

as=getch();

}

while(!as);

system("cls");

}

void modify()/*修改数据函数*/

{

int i;

char str[20],as;

printf("输入要修改的学生姓名:");

fflush(stdin);

gets(str);

for(i=0;inow_no;i++)

if(!strcmp(stu[i].name,str))

{

system("cls");

printf("\n\t\t输入修改学员信息\n");

printf("\n输入学生编号:");

fflush(stdin);

scanf("%d",stu[i].no);

printf("\n输入学员性别:");

fflush(stdin);

gets(stu[i].sex);

printf("\n输入学员成绩1:");

fflush(stdin);

scanf("%f",stu[i].score1);

printf("\n输入学员成绩2:");

fflush(stdin);

scanf("%f",stu[i].score2);

printf("\n输入学员成绩3:");

fflush(stdin);

scanf("%f",stu[i].score3);

printf("\n\n");

sort();

break;

}

system("cls");

}

C语言学生成绩管理系统代码 急!!!!!!

我有个现成的,不一定符合你的要求,呵呵

/*11.3.2 源程序*/

/***********xuesheng.c***********/

/******头文件(.h)***********/

#include "stdio.h" /*I/O函数*/

#include "stdlib.h" /*其它说明*/

#include "string.h" /*字符串函数*/

#include "conio.h" /*屏幕操作函数*/

#include "mem.h" /*内存操作函数*/

#include "ctype.h" /*字符操作函数*/

#include "alloc.h" /*动态地址分配函数*/

#define N 3 /*定义常数*/

typedef struct z1 /*定义数据结构*/

{

char no[11];

char name[15];

int score[N];

float sum;

float average;

int order;

struct z1 *next;

}STUDENT;

/*以下是函数原型*/

STUDENT *init(); /*初始化函数*/

STUDENT *create(); /*创建链表*/

STUDENT *delete(STUDENT *h); /*删除记录*/

void print(STUDENT *h); /* 显示所有记录*/

void search(STUDENT *h); /*查找*/

void save(STUDENT *h); /*保存*/

STUDENT *load(); /*读入记录*/

void computer(STUDENT *h); /*计算总分和均分*/

STUDENT *insert(STUDENT *h); /*插入记录*/

void append(); /*追加记录*/

void copy(); /*复制文件*/

STUDENT *sort(STUDENT *h); /*排序*/

STUDENT *index(STUDENT *h); /*索引*/

void total(STUDENT *h); /*分类合计*/

int menu_select(); /*菜单函数*/

/******主函数开始*******/

main()

{

int i;

STUDENT *head; /*链表定义头指针*/

head=init(); /*初始化链表*/

clrscr(); /*清屏*/

for(;;) /*无限循环*/

{

switch(menu_select()) /*调用主菜单函数,返回值整数作开关语句的条件*/

{ /*值不同,执行的函数不同,break 不能省略*/

case 0:head=init();break; /*执行初始化*/

case 1:head=create();break; /*创建链表*/

case 2:head=delete(head);break; /*删除记录*/

case 3:print(head);break; /*显示全部记录*/

case 4:search(head);break; /*查找记录*/

case 5:save(head);break; /*保存文件*/

case 6:head=load(); break; /*读文件*/

case 7:computer(head);break; /*计算总分和均分*/

case 8:head=insert(head); break; /*插入记录*/

case 9:copy();break; /*复制文件*/

case 10:head=sort(head);break; /*排序*/

case 11:append();break; /*追加记录*/

case 12:head=index(head);break; /*索引*/

case 13:total(head);break; /*分类合计*/

case 14:exit(0); /*如菜单返回值为14程序结束*/

}

}

}

/*菜单函数,返回值为整数*/

menu_select()

{

char *menu[]={"***************MENU***************", /*定义菜单字符串数组*/

" 0. init list", /*初始化*/

" 1. Enter list", /*输入记录*/

" 2. Delete a record from list", /*从表中删除记录*/

" 3. print list ", /*显示单链表中所有记录*/

" 4. Search record on name", /*按照姓名查找记录*/

" 5. Save the file", /*将单链表中记录保存到文件中*/

" 6. Load the file", /*从文件中读入记录*/

" 7. compute the score", /*计算所有学生的总分和均分*/

" 8. insert record to list ", /*插入记录到表中*/

" 9. copy the file to new file", /*复制文件*/

" 10. sort to make new file", /*排序*/

" 11. append record to file", /*追加记录到文件中*/

" 12. index on nomber", /*索引*/

" 13. total on nomber", /*分类合计*/

" 14. Quit"}; /*退出*/

char s[3]; /*以字符形式保存选择号*/

int c,i; /*定义整形变量*/

gotoxy(1,25); /*移动光标*/

printf("press any key enter menu......\n"); /*压任一键进入主菜单*/

getch(); /*输入任一键*/

clrscr(); /*清屏幕*/

gotoxy(1,1); /*移动光标*/

textcolor(YELLOW); /*设置文本显示颜色为黄色*/

textbackground(BLUE); /*设置背景颜色为蓝色*/

gotoxy(10,2); /*移动光标*/

putch(0xc9); /*输出左上角边框┏*/

for(i=1;i44;i++)

putch(0xcd); /*输出上边框水平线*/

putch(0xbb); /*输出右上角边框 ┓*/

for(i=3;i20;i++)

{

gotoxy(10,i);putch(0xba); /*输出左垂直线*/

gotoxy(54,i);putch(0xba);

} /*输出右垂直线*/

gotoxy(10,20);putch(0xc8); /*输出左上角边框┗*/

for(i=1;i44;i++)

putch(0xcd); /*输出下边框水平线*/

putch(0xbc); /*输出右下角边框┛*/

window(11,3,53,19); /* 制作显示菜单的窗口,大小根据菜单条数设计*/

clrscr(); /*清屏*/

for(i=0;i16;i++) /*输出主菜单数组*/

{

gotoxy(10,i+1);

cprintf("%s",menu[i]);

}

textbackground(BLACK); /*设置背景颜色为黑色*/

window(1,1,80,25); /*恢复原窗口大小*/

gotoxy(10,21); /*移动光标*/

do{

printf("\n Enter you choice(0~14):"); /*在菜单窗口外显示提示信息*/

scanf("%s",s); /*输入选择项*/

c=atoi(s); /*将输入的字符串转化为整形数*/

}while(c0||c14); /*选择项不在0~14之间重输*/

return c; /*返回选择项,主程序根据该数调用相应的函数*/

}

STUDENT *init()

{

return NULL;

}

/*创建链表*/

STUDENT *create()

{

int i; int s;

STUDENT *h=NULL,*info; /* STUDENT指向结构体的指针*/

for(;;)

{

info=(STUDENT *)malloc(sizeof(STUDENT)); /*申请空间*/

if(!info) /*如果指针info为空*/

{

printf("\nout of memory"); /*输出内存溢出*/

return NULL; /*返回空指针*/

}

inputs("enter no:",info-no,11); /*输入学号并校验*/

if(info-no[0]=='@') break; /*如果学号首字符为@则结束输入*/

inputs("enter name:",info-name,15); /*输入姓名,并进行校验*/

printf("please input %d score \n",N); /*提示开始输入成绩*/

s=0; /*计算每个学生的总分,初值为0*/

for(i=0;iN;i++) /*N门课程循环N次*/

{

do{

printf("score%d:",i+1); /*提示输入第几门课程*/

scanf("%d",info-score[i]); /*输入成绩*/

if(info-score[i]100||info-score[i]0) /*确保成绩在0~100之间*/

printf("bad data,repeat input\n"); /*出错提示信息*/

}while(info-score[i]100||info-score[i]0);

s=s+info-score[i]; /*累加各门课程成绩*/

}

info-sum=s; /*将总分保存*/

info-average=(float)s/N; /*求出平均值*/

info-order=0; /*未排序前此值为0*/

info-next=h; /*将头结点做为新输入结点的后继结点*/

h=info; /*新输入结点为新的头结点*/

}

return(h); /*返回头指针*/

}

/*输入字符串,并进行长度验证*/

inputs(char *prompt, char *s, int count)

{

char p[255];

do{

printf(prompt); /*显示提示信息*/

scanf("%s",p); /*输入字符串*/

if(strlen(p)count)printf("\n too long! \n"); /*进行长度校验,超过count值重输入*/

}while(strlen(p)count);

strcpy(s,p); /*将输入的字符串拷贝到字符串s中*/

}

/*输出链表中结点信息*/

void print(STUDENT *h)

{

int i=0; /* 统计记录条数*/

STUDENT *p; /*移动指针*/

clrscr(); /*清屏*/

p=h; /*初值为头指针*/

printf("\n\n\n****************************STUDENT********************************\n");

printf("|rec|nO | name | sc1| sc2| sc3| sum | ave |order|\n");

printf("|---|----------|---------------|----|----|----|--------|-------|-----|\n");

while(p!=NULL)

{

i++;

printf("|%3d |%-10s|%-15s|%4d|%4d|%4d| %4.2f | %4.2f | %3d |\n", i, p-no,p-name,p-score[0],p-score[1],

p-score[2],p-sum,p-average,p-order);

p=p-next;

}

printf("**********************************end*********************************\n");

}

/*删除记录*/

STUDENT *delete(STUDENT *h)

{

STUDENT *p,*q; /*p为查找到要删除的结点指针,q为其前驱指针*/

char s[11]; /*存放学号*/

clrscr(); /*清屏*/

printf("please deleted no\n"); /*显示提示信息*/

scanf("%s",s); /*输入要删除记录的学号*/

q=p=h; /*给q和p赋初值头指针*/

while(strcmp(p-no,s)p!=NULL) /*当记录的学号不是要找的,或指针不为空时*/

{

q=p; /*将p指针值赋给q作为p的前驱指针*/

p=p-next; /*将p指针指向下一条记录*/

}

if(p==NULL) /*如果p为空,说明链表中没有该结点*/

printf("\nlist no %s student\n",s);

else /*p不为空,显示找到的记录信息*/

{

printf("*****************************have found***************************\n");

printf("|no | name | sc1| sc2| sc3| sum | ave |order|\n");

printf("|----------|---------------|----|----|----|--------|-------|-----|\n");

printf("|%-10s|%-15s|%4d|%4d|%4d| %4.2f | %4.2f | %3d |\n", p-no,

p-name,p-score[0],p-score[1],p-score[2],p-sum,

p-average,p-order);

printf("********************************end*******************************\n");

getch(); /*压任一键后,开始删除*/

if(p==h) /*如果p==h,说明被删结点是头结点*/

h=p-next; /*修改头指针指向下一条记录*/

else

q-next=p-next; /*不是头指针,将p的后继结点作为q的后继结点*/

free(p); /*释放p所指结点空间*/

printf("\n have deleted No %s student\n",s);

printf("Don't forget save\n");/*提示删除后不要忘记保存文件*/

}

return(h); /*返回头指针*/

}

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

/*首次使用,新建score.in文件,在里面打入0

可用程序

#includestdio.h

FILE *fin

main()

{

fin=fopen("score.in","r");

fprintf(fin,"0");

return 0;

}

完成

*/

#includestdio.h

#includestdlib.h

#includeconio.h

#includewindows.h

#includetime.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;sumi;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;rn;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;coni;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;

}

//求采纳

求学生成绩管理系统的源代码

#include stdio.h

#include stdlib.h

#define FILENAME "student.dat"

typedef enum{MAN, WOMAN} SEX;

typedef struct tagStudent

{

int num; //学生的编号

char name[20]; //学生的姓名

SEX sex; //学生的性别

int age; //学生的年龄

char major[20]; //学生的专业

struct tagStudent *next;//下一个节点的指针

}STUDENT, *PSTUDENT;

STUDENT g_head; //头节点

//1.显示菜单

void ShowMenu();

//2.获取用户选择的菜单的编号

int GetMenuChoose();

//3.创建一个节点,它会返回一个新创建的学生信息节点的指针

PSTUDENT CreateStudent();

//4.把学生信息节点加入到链表中

int AddStudent(PSTUDENT pstu);

//5.返回指定编号学生节点的上一个节点的指针

PSTUDENT GetPrevAddr(int num);

//6.显示所有学生信息

void ShowAll();

//7.显示信息数量

int ShowStudentCount();

//8.修改学生信息,参数为要修改的学生的编号

void ModityStudent(int num);

//9.获取用户的选择

int Question(const char *pstr);

//10.获取用户输入的学生的编号

int GetInputNum();

//11.删除编号为num的学生信息

void DelStudent(int num);

//12.删除所有的学生信息

void DelAll();

//13.把学生信息保存到文件当中

void SaveToFile();

//14.从文件中读取学生信息

void LoadFromFile();

int main()

{

int running = 1;

while(running)

{

switch(GetMenuChoose())

{

case 0:

running = 0;

break;

case 1:

// printf("你选择了菜单1\n");

AddStudent(CreateStudent());

break;

case 2:

// printf("你选择了菜单2\n");

DelStudent(GetInputNum());

break;

case 3:

printf("你选择了菜单3\n");

break;

case 4:

// printf("你选择了菜单4\n");

ModityStudent(GetInputNum());

break;

case 5:

// printf("你选择了菜单5\n");

DelAll();

break;

case 6:

// printf("你选择了菜单6\n");

ShowAll();

break;

case 7:

// printf("你选择了菜单7\n");

ShowStudentCount();

break;

case 8:

// printf("你选择了菜单8\n");

LoadFromFile();

break;

case 9:

// printf("你选择了菜单9\n");

SaveToFile();

break;

}

system("pause");

}

return 0;

}

//1.显示菜单

void ShowMenu()

{

system("cls");

printf("-----------------------------学生管理系统--------------------------------\n");

printf("\n\t1.添加学生信息    2.删除某个学生信息    3.显示某个学生信息\n");

printf("\t4.修改学生信息    5.删除所有学生信息    6.显示所有学生信息\n");

printf("\t7.显示信息数量    8.读取文件学生信息    9.保存学生信息至文件\n");

printf("\t0.退出系统\n");

printf("\n-------------------------------------------------------------------------\n");

}

//2.获取用户选择的菜单的编号

int GetMenuChoose()

{

int num;//保存用户选择的菜单编号

ShowMenu();

printf("请选择菜单(0 ~ 9):");

while(1 != scanf("%d", num) || num  0 || num  9)

{

ShowMenu();

printf("选择菜单错误,请重新选择(0 ~ 9):");

fflush(stdin);//清空输入缓冲区

}

return num;

}

//3.创建一个节点,它会返回一个新创建的学生信息节点的指针

PSTUDENT CreateStudent()

{

int sex;

PSTUDENT pstu = (PSTUDENT)malloc(sizeof(STUDENT));//在堆内存申请空间,存储学生信息

if(!pstu)

{

printf("申请内存空间失败!\n");

return NULL;

}

printf("请输入学生的编号(整型):");

while(1 != scanf("%d", pstu-num) || GetPrevAddr(pstu-num))

{

printf("学生编号输入错误或已经存在,请重新输入学生的编号(整型):");

fflush(stdin);

}

printf("请输入学生的姓名(小于20字符):");

scanf("%20s", pstu-name);//(*pstu).name

printf("请选择学生的性别(1.男  2.女):");

while(1 != scanf("%d", sex) || sex  1 || sex  2)

{

printf("性别选择错误,请重新选择学生的性别(1.男  2.女):");

fflush(stdin);

}

if(1 == sex)

pstu-sex = MAN;

else

pstu-sex = WOMAN;

printf("请输入学生的年龄(10 ~ 40):");

while(1 != scanf("%d", pstu-age) || pstu-age  10 || pstu-age  40)

{

printf("年龄输入错误!请重新输入学生的年龄(10 ~ 40):");

fflush(stdin);

}

printf("请输入学生的专业(小于20字符):");

scanf("%20s", pstu-major);

pstu-next = NULL;

return pstu;

}

//4.把学生信息节点加入到链表中

int AddStudent(PSTUDENT pstu)

{

PSTUDENT ps = g_head;

if(!pstu)

{

return 0;

}

//判断一下该学生信息是不是已经存在

if(GetPrevAddr(pstu-num))

{

printf("编号为%d的学生信息已经存在!\n", pstu-num);

free(pstu);//释放该节点内存空间

return 0;

}

//while循环的作用是找到当前链表的最后一个节点

while(ps-next)

ps = ps-next;

//把新节点加入到最后那个节点的后面

ps-next = pstu;

pstu-next = NULL;

return 1;

}

//5.返回指定编号学生节点的上一个节点的指针

PSTUDENT GetPrevAddr(int num)

{

PSTUDENT pstu = g_head;

while(pstu-next)

{

if(pstu-next-num == num)

return pstu;

pstu = pstu-next;

}

return NULL;

}

//6.显示所有学生信息

void ShowAll()

{

PSTUDENT pstu = g_head;

printf("--------------------------------------------------------------------\n");

printf("  编号        姓名            性别     年龄               专业\n");

printf("--------------------------------------------------------------------\n");

while(pstu-next)

{

printf("  %-8d  ", pstu-next-num);

printf("%-20s", pstu-next-name);

printf("%-6s", pstu-next-sex == MAN ? "男" : "女");

printf("%4d", pstu-next-age);

printf("%20s\n", pstu-next-major);

pstu = pstu-next;//让指针指向下一个节点

}

printf("--------------------------------------------------------------------\n");

}

//7.显示信息数量

int ShowStudentCount()

{

int count = 0;

PSTUDENT pstu = g_head;

while(pstu-next)

{

++count;

pstu = pstu-next;

}

printf("\n当前共有%d位学生信息。\n", count);

return count;

}

//8.修改学生信息,参数为要修改的学生的编号

void ModityStudent(int num)

{

PSTUDENT pstu = GetPrevAddr(num);//获取要修改的学生节点的上一个节点

int choose;

if(!pstu)

{

printf("没有编号为%d的学生信息。\n", num);

return;

}

pstu = pstu-next;//将要修改的学员节点的指针改为指向自己的

printf("当前学生的姓名为%s,", pstu-name);

if(Question("确定要修改吗?"))

{

printf("请输入学生的姓名(小于20字符):");

scanf("%20s", pstu-name);

}

printf("当前学生的性别为%s,", pstu-sex == MAN ? "男" : "女");

if(Question("确定要修改吗?"))

{

printf("请输入学生的性别(1.男 2.女):");

while(1 != scanf("%d", choose) || choose  1 || choose  2)

{

printf("输入错误,请重新输入学生的性别(1.男 2.女):");

fflush(stdin);

}

if(1 == choose)

pstu-sex = MAN;

else

pstu-sex = WOMAN;

}

printf("当前学生的年龄为%d,", pstu-age);

if(Question("确定要修改吗?"))

{

printf("请输入学生的年龄(10 ~ 40):");

while(1 != scanf("%d", pstu-age) || pstu-age  10 || pstu-age  40)

{

printf("年龄输入错误!请重新输入学生的年龄(10 ~ 40):");

fflush(stdin);

}

}

printf("当前学生的专业为%s,", pstu-major);

if(Question("确定要修改吗?"))

{

printf("请输入学生的专业(小于20字符):");

scanf("%20s", pstu-major);

}

printf("修改完毕!\n");

}

//9.获取用户的选择

int Question(const char *pstr)

{

char answer;

printf("%s请选择(y or n):", pstr);

while(1 != scanf(" %c", answer) || (answer != 'y'  answer != 'n'))

{

printf("输入错误!%s请重新选择(y or n):", pstr);

fflush(stdin);//清空输入缓冲区,C库函数

}

if('y' == answer)

return 1;

else

return 0;

}

//10.获取用户输入的学生的编号

int GetInputNum()

{

int num;

printf("请输入学生的编号(整型):");

while(1 != scanf("%d", num))

{

printf("编号输入错误!请重新输入学生的编号(整型):");

fflush(stdin);

}

return num;

}

//11.删除编号为num的学生信息

void DelStudent(int num)

{

PSTUDENT pstu, ptmp;

if(pstu = GetPrevAddr(num))

{

if(!Question("确定要删除该学生信息吗?"))

{

return;

}

ptmp = pstu-next;

pstu-next = ptmp-next;

free(ptmp);

printf("删除了编号为%d的学生信息。\n", num);

}

else

{

printf("没有找到编号为%d的学生信息。\n", num);

}

}

//12.删除所有的学生信息

void DelAll()

{

PSTUDENT pstu = g_head.next, ptmp;

int count = 0;

if(!Question("确定要删除当前所有的学生信息吗?"))

{

return;

}

while(pstu)

{

ptmp = pstu;

pstu = pstu-next;

free(ptmp);

++count;

}

printf("共删除了%d位学生信息。\n", count);

g_head.next = NULL;

}

//13.把学生信息保存到文件当中

void SaveToFile()

{

FILE *pf = fopen(FILENAME, "wb");

PSTUDENT pstu = g_head;

int i = 0, count = ShowStudentCount();

if(!pf)

{

printf("打开待写入的文件失败!\n");

return;

}

if(!Question("确定要将当前学生信息保存到文件中吗?"))

{

fclose(pf);

return;

}

fwrite(count, 1, sizeof(count), pf);//把学生信息的数量先写入到文件头

while(pstu-next)

{

fwrite(pstu-next, 1, sizeof(STUDENT), pf);//把每位学生信息写入文件

++i;

pstu = pstu-next;

}

fclose(pf);

if(i == count)

{

printf("成功的写入了%d条学生信息。\n", count);

}

else

{

printf("应写入%d条学生信息,实际写入%d条学生信息。\n", count, i);

}

}

//14.从文件中读取学生信息

void LoadFromFile()

{

int i, count = 0, repeat = 0;

FILE *pf;

PSTUDENT pstu;

printf("提示:从文件中读取学生信息会询问是否清空当前学生信息(不清空表示合并所有信息)。\n");

if((pf = fopen(FILENAME, "rb")) == NULL)

{

printf("文件还没有创建,请手工输入学生信息并保存吧!\n");

return;

}

DelAll();//删除之前的所有学生信息,然后从文件中读取

fread(count, 1, sizeof count, pf);//获取学生信息的数量

for(i = 0; i  count; ++i)

{

pstu = (PSTUDENT)malloc(sizeof(STUDENT));

fread(pstu, 1, sizeof(STUDENT), pf);

if(!AddStudent(pstu))

{

++repeat;//保持有多少个和当前链表中相重复的学生信息

}

}

fclose(pf);

printf("文件读取完毕!新增学生信息%d条。\n", count - repeat);

}

这个累死我了,我要财富值。。。为了这个不容易啊

成绩管理系统源代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于学生成绩管理系统php源码、成绩管理系统源代码的信息别忘了在本站进行查找喔。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/11979.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载