用c语言编写一个学生成绩管理系统
1. C语言编写一个简单的学生成绩管理系统
C语言程序:
#include<stdio.h>
#include<string.h>
typedefstructstudent
{
charname[20]; /*姓名*/
intcode; /*学号*/
intkor,eng,math; /*3门课程的成绩*/
}STUDENT;
/*返回输入数据*/
STUDENTInput();
/*输出所有输入的数据*/
voidOutput(STUDENTinfo[],intcnt);
/*将输入分数转换为A-F*/
chargrade(intscore);
intmain()
{
STUDENTS[10];
intcnt=0,select;
inti,j;
intcode;
while(1)
{
printf(" 学生信息管理系统 ");
printf(" 1 添加 ");
printf(" 2 删除 ");
printf(" 3 查询 ");
printf(" 0 结束 ");
printf(" 您的选择[0-3]:");
scanf("%d",&select);
if(select<0||select>3)
continue;
if(select==0)
{
printf("退出系统! ");
break;
}
if(select==1) /*添加*/
{
S[cnt++]=Input();
}
elseif(select==2) /*删除*/
{
printf(" 待删除学生的学号:");
scanf("%d",&code);
for(i=0;i<cnt;i++)
if(S[i].code==code)
break;
if(i>=cnt)
{
printf("学号不存在,删除失败! ");
}
else{
for(j=i+1;j<cnt;j++)
{
strcpy(S[j-1].name,S[j].name);
S[j-1].code=S[j].code;
S[j-1].kor=S[j].kor;
S[j-1].eng=S[j].eng;
S[j-1].math=S[j].math;
}
cnt--;
printf("删除成功! ");
}
}
else /*查询*/
{
printf(" 待查找学生的学号:");
scanf("%d",&code);
for(i=0;i<cnt;i++)
if(S[i].code==code)
break;
if(i>=cnt)
{
printf("学号不存在,查找失败! ");
}
else
{
printf(" 查询结果: ");
Output(S,i);
}
}
}
return0;
}
/*返回输入数据*/
STUDENTInput()
{
STUDENTstu;
printf(" 新学生信息 ");
printf(" 学号:");
scanf("%d",&stu.code);
printf(" 姓名:");
getchar();
gets(stu.name);
printf(" 3门课程成绩(以空格分隔):");
scanf("%d%d%d",&stu.kor,&stu.eng,&stu.math);
returnstu;
}
/*输出所有输入的数据*/
voidOutput(STUDENTinfo[],intcnt)
{
printf("学号:%d ",info[cnt].code);
printf("姓名:");
puts(info[cnt].name);
printf("成绩:%c%c%c ",grade(info[cnt].kor),grade(info[cnt].eng),grade(info[cnt].math));
}
/*将输入分数转换为A-F*/
chargrade(intscore)
{
if(score<0||score>100)
return'F';
if(score>=90)
return'A';
if(score>=80)
return'B';
if(score>=70)
return'C';
if(score>=60)
return'D';
else
return'E';
}
运行测试:
2. 用C语言编写一个学生成绩管理系统。
#include<stdio.h> /*引用库函数*/
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
typedef struct /*定义结构体数组*/
{
char num[10]; /*学号*/
char name[20]; /*姓名*/
int score; /*成绩*/
}Student;
Student stu[80]; /*结构体数组变量*/
int menu_select() /*菜单函数*/
{
char c;
do{
system("cls"); /*运行前清屏*/
printf("\t\t****学生成绩管理系统****\n"); /*菜单选择*/
printf("\t\t | 1. 输入学生信息|\n");
printf("\t\t | 2. 显示学生信息 |\n");
printf("\t\t | 3. 排序 |\n");
printf("\t\t | 4. 增添学生信息 |\n");
printf("\t\t | 5. 删除学生信息 |\n");
printf("\t\t | 6. 查询 |\n");
printf("\t\t | 7. 统计 |\n");
printf("\t\t | 0. 退出 |\n");
printf("\t\t*****************************************\n");
printf("\t\t\t请选择操作(0-9):");
c=getchar(); /*读入选择*/
}while(c<'0'||c>'9');
return(c-'0'); /*返回选择*/
}
int Input(Student stud[],int n) /*输入若干条记录*/
{int i=0;
char sign,x[10]; /*x[10]为清除多余的数据所用*/
while(sign!='n'&&sign!='N') /*判断*/
{ printf("\t\t\t学号:"); /*交互输入*/
scanf("\t\t\t%s",stud[n+i].num);
printf("\t\t\t学生姓名:");
scanf("\t\t\t%s",stud[n+i].name);
printf("\t\t\t学生成绩:");
scanf("\t\t\t%d",&stud[n+i].score);
gets(x); /*清除多余的输入*/
printf("\t\t\t需要输入更多信息?(Y/N)");
scanf("\t\t\t%c",&sign); /*输入判断*/
i++;
}
return(n+i);
}
void Display(Student stud[],int n) /*显示所有记录*/
{
int i;
printf("\t\t\t-----------------------------------\n"); /*格式头*/
printf("\t\t\t学号\t\t姓名\t\t成绩\n");
printf("\t\t\t-----------------------------------\n");
for(i=1;i<n+1;i++) /*循环输入*/
{
printf("\t\t\t%-16s%-15s%d\n",stud[i-1].num,stud[i-1].name,stud[i-1].score);
if(i>1&&i%10==0) /*每十个暂停*/
{printf("\t\t\t-----------------------------------\n"); /*格式*/
printf("\t\t\t");
system("pause");
printf("\t\t\t-----------------------------------\n");
}
}
printf("\t\t\t");
system("pause");
}
void Sort_by_num(Student stud[],int n) /*按学号排序*/
{ int i,j,*p,*q,s;
char t[10];
for(i=0;i<n-1;i++) /*冒泡法排序*/
for(j=0;j<n-1-i;j++)
if(strcmp(stud[j].num,stud[j+1].num)>0)
{strcpy(t,stud[j+1].num);
strcpy(stud[j+1].num,stud[j].num);
strcpy(stud[j].num,t);
strcpy(t,stud[j+1].name);
strcpy(stud[j+1].name,stud[j].name);
strcpy(stud[j].name,t);
p=&stud[j+1].score;
q=&stud[j].score;
s=*p;
*p=*q;
*q=s;
}
}
int Insert_a_record(Student stud[],int n) /*插入一条记录*/
{char x[10]; /*清除多余输入所用*/
printf("\t\t\t学号:"); /*交互式输入*/
scanf("\t\t\t%s",stud[n].num);
printf("\t\t\t学生姓名:");
scanf("\t\t\t%s",stud[n].name);
printf("\t\t\t学生成绩:");
scanf("\t\t\t%d",&stud[n].score);
gets(x);
n++;
Sort_by_num(stud,n); /*调用排序函数*/
printf("\t\t\t添加成绩信息!\n"); /*返回成功信息*/
return(n);
}
int Delete_a_record(Student stud[],int n) /*按姓名查找,删除一条记录*/
{ char s[20];
int i=0,j;
printf("\t\t\t请输入所要删除数据的姓名:"); /*交互式问寻*/
scanf("%s",s);
while(strcmp(stud[i].name,s)!=0&&i<n) i++; /*查找判断*/
if(i==n)
{ printf("\t\t\t未找到数据!\n"); /*返回失败信息*/
return(n);
}
for(j=i;j<n-1;j++) /*删除操作*/
{
strcpy(stud[j].num,stud[j+1].num);
strcpy(stud[j].name,stud[j+1].name);
stud[j].score=stud[j+1].score;
}
printf("\t\t\t删除结束!\n"); /*返回成功信息*/
return(n-1);
}
void Query_a_record(Student stud[],int n) /*查找并显示一个记录*/
{ char s[20];
int i=0;
printf("\t\t\t请输入您所查找的学生姓名:"); /*交互式输入*/
scanf("\t\t\t%s",s);
while(strcmp(stud[i].name,s)!=0&&i<n) i++; /*查找判断*/
if(i==n)
{ printf("\t\t\t未找到!\n"); /*输入失败信息*/
return;
}
printf("\t\t\t学号是:%s\n",stud[i].num); /*输出该学生信息*/
printf("\t\t\t成绩是:%d\n",stud[i].score);
}
void Statistic(Student stud[],int n) /*新增功能,输出统计信息*/
{ int i,j=0,k=0,sum=0;
float aver; /*成绩平均值*/
for(i=0;i<n;i++) /*循环输入判断*/
{
sum+=stud[i].score;
if(stud[j].score>stud[i].score) j=i;
if(stud[k].score<stud[i].score) k=i;
}
aver=1.0*sum/n;
printf("\t\t\t总共有 %d 条信息.\n",n); /*总共记录数*/
printf("\t\t\t最高分:\n"); /*最高分*/
printf("\t\t\t学号:%s 姓名:%s 成绩:%d\n",stud[j].num,stud[j].name,stud[j].score);
printf("\t\t\t最低分:\n"); /*最低分*/
printf("\t\t\t学号:%s 姓名:%s 成绩:%d\n",stud[k].num,stud[k].name,stud[k].score);
printf("\t\t\t平均分 %5.2f\n",aver); /*平均分*/
}
void main() /*主函数*/
{
int n=0;
for(;;)
{
switch(menu_select()) /*选择判断*/
{
case 1:
printf("\t\t\t输入学生信息\n"); /*输入若干条记录*/
n=Input(stu,n);
break;
case 2:
printf("\t\t\t显示所有学生信息\n"); /*显示所有记录*/
Display(stu,n);
break;
case 3:
printf("\t\t\t排序\n");
Sort_by_num(stu,n); /*按学号排序*/
printf("\t\t\t排序结束!\n");
printf("\t\t\t");
system("pause");
break;
case 4:
printf("\t\t\t增添学生信息\n");
n=Insert_a_record(stu,n); /*插入一条记录*/
printf("\t\t\t");
system("pause");
break;
case 5:
printf("\t\t\t删除一个学生信息\n");
n=Delete_a_record(stu,n); /*按姓名查找,删除一条记录*/
printf("\t\t\t");
system("pause");
break;
case 6:
printf("\t\t\t查询\n");
Query_a_record(stu,n); /*查找并显示一个记录*/
printf("\t\t\t");
system("pause");
break;
case 7:
printf("\t\t\t统计\n");
Statistic(stu,n); /*新增功能,输出统计信息*/
printf("\t\t\t");
system("pause");
break;
case 0:
printf("\t\t\t程序结束\n"); /*结束程序*/
printf("\t\t\t");
system("pause");
exit(0);
}
}
}
3. 编程如何用C语言编写一个学生成绩管理系统程序
我们才做了这个作业。。。
#include <malloc.h>
#include <stdio.h>
#include <stdlib.h>
#define LEN sizeof(struct scorenode)
#define DEBUG
#include <string.h>
struct scorenode
{
int number;/*学号*/
char name[8];/*姓名*/
float cj1;/*成绩1*/
float cj2;/*成绩2*/
float cj3;/*成绩3 */
struct scorenode *next;
};
typedef struct scorenode score;
int n,k;/*n,k为全局变量,本程序中的函数均可以使用它*/
/*==============================================================================================*/
score *creat(void)
/*函数creat,功能:创建链表,此函数带回一个指向链表头的指针*/
{
score*head;
score *p1,*p2,*p3,*max;
int i,j;
float fen;
char t[10];
n=0;
p1=p2=p3=(score *)malloc(LEN);head=p3; /*申请一个新单元*/
printf("请输入学生资料,输0退出!\n");
repeat1: printf("请输入学生学号(学号应大于0):");/*输入大于0的学号*/
scanf("%d",&p1->number);
while(p1->number<0)
{
getchar();
printf("输入错误,请重新输入学生学号:");
scanf("%d",&p1->number);
}
/*输入学号为字符或小于0时,程序报错,提示重新输入学号*/
if(p1->number==0)
goto end;/*当输入的学号为0时,转到末尾,结束创建链表*/
else
{
p3=head;
if(n>0)
{
for(i=0;i<n;i++)
{
if(p1->number!=p3->number)
p3=p3->next;
else
{
printf("学号重复,请重输!\n");
goto repeat1;
/*当输入的学号已经存在,程序报错,返回前面重新输入*/
}
}
}
}
printf("请输入学生姓名:");
scanf("%s",&p1->name); /*输入学生姓名*/
printf("请输入cj1(0~100):"); /*输入cj1,成绩应在0-100*/
scanf("%f",&p1->cj1);
while(p1->cj1<0||p1->cj1>100)
{
getchar();
printf("输入错误,请重新输入cj1"); /*输入错误,重新输入成绩1*/
scanf("%f",&p1->cj1);
}
printf("请输入cj2(0~100):"); /*输入cj2,成绩应在0-100*/
scanf("%f",&p1->cj2);
while(p1->cj2<0||p1->cj2>100)
{
getchar();
printf("输入错误,请重新输入cj2"); /*输入错误,重新输入cj2直到正确为止*/
scanf("%f",&p1->cj2);
}
printf("请输入cj3(0~100):");/*输入cj3,成绩应在0-100*/
scanf("%f",&p1->cj3);
while(p1->cj3<0||p1->cj3>100)
{
getchar();
printf("输入错误,请重新输入cj3");
scanf("%f",&p1->cj3);} /*输入错误,重新输入cj3直到正确为止*/
head=NULL;
while(p1->number!=0)
{
n=n+1;
if(n==1)
head=p1;
else
p2->next=p1;
p2=p1;
p1=(score *)malloc(LEN);
printf("请输入学生资料,输0退出!\n");
repeat2:printf("请输入学生学号(学号应大于0):");
scanf("%d",&p1->number); /*输入学号,学号应大于0*/
while(p1->number<0)
{
getchar();
printf("输入错误,请重新输入学生学号:");
scanf("%d",&p1->number);
}
/*输入学号为字符或小于0时,程序报错,提示重新输入学号*/
if(p1->number==0)
goto end; /*当输入的学号为0时,转到末尾,结束创建链表*/
else
{
p3=head;
if(n>0)
{
for(i=0;i<n;i++)
{
if(p1->number!=p3->number)
p3=p3->next;
else
{
printf("学号重复,请重输!\n");
goto repeat2;
/*当输入的学号已经存在,程序报错,返回前面重新输入*/
}
}
}
}
printf("请输入学生姓名:");
scanf("%s",&p1->name);/*输入学生姓名*/
printf("请输入cj1(0~100):");
scanf("%f",&p1->cj1);/*输入cj1,成绩应在0-100*/
while(p1->cj1<0||p1->cj1>100)
{
getchar();
printf("输入错误,请重新输入cj1");
scanf("%f",&p1->cj1);}/*输入错误,重新输入cj1直到正确为止*/
printf("请输入cj2(0~100):");
scanf("%f",&p1->cj2);/*输入cj2,成绩应在0-100*/
while(p1->cj2<0||p1->cj2>100)
{
getchar();
printf("输入错误,请重新输入cj2");
scanf("%f",&p1->cj2);
} /*输入错误,重新输入cj2绩直到正确为止*/
printf("请输入cj3(0~100):");
scanf("%f",&p1->cj3);/*输入cj3,成绩应在0-100*/
while(p1->cj3<0||p1->cj3>100)
{
getchar();
printf("输入错误,请重新输入cj3");
scanf("%f",&p1->cj3);} /*输入错误,重新输入cj3直到正确为止*/
}
end: p1=head;
p3=p1;
for(i=1;i<n;i++)
{
for(j=i+1;j<=n;j++)
{
max=p1;
p1=p1->next;
if(max->number>p1->number)
{
k=max->number;
max->number=p1->number;
p1->number=k;
/*交换前后结点中的学号值,使得学号大者移到后面的结点中*/
strcpy(t,max->name);
strcpy(max->name,p1->name);
strcpy(p1->name,t);
/*交换前后结点中的姓名,使之与学号相匹配*/
fen=max->cj1;
max->cj1=p1->cj1;
p1->cj1=fen;
/*交换前后结点中的cj1,使之与学号相匹配*/
fen=max->cj2;
max->cj2=p1->cj2;
p1->cj2=fen;
/*交换前后结点中的cj2,使之与学号相匹配*/
fen=max->cj3;
max->cj3=p1->cj3;
p1->cj3=fen;
/*交换前后结点中的cj3,使之与学号相匹配*/
}
}
max=head;p1=head;/*重新使max,p指向链表头*/
}
p2->next=NULL;/*链表结尾*/
printf("输入的学生数为:%d个!\n",n);
return(head);
}
score *add(score *head,score *stu)
/*函数add,功能:追加学生资料,并且将所有学生资料按学号排序*/
{
score *p0,*p1,*p2,*p3,*max;
int i,j;
float fen;
char t[10];
p3=stu=(score *)malloc(LEN);/*开辟一个新单元*/
printf("\n输入要增加的学生的资料!");
repeat4: printf("请输入学生学号(学号应大于0):");
scanf("%d",&stu->number);
/*输入学号,学号应大于0*/
while(stu->number<0)
{
getchar();
printf("输入错误,请重新输入学生学号:");
scanf("%d",&stu->number);} /*输入错误,重新输入学号*/
/******************************************************/
if(stu->number==0)
goto end2;/*当输入的学号为0时,转到末尾,结束追加*/
else
{
p3=head;
if(n>0)
{for(i=0;i<n;i++)
{if(stu->number!=p3->number)
p3=p3->next;
else
{
printf("学号重复,请重输!\n");
goto repeat4;
/*当输入的学号已经存在,程序报错,返回前面重新输入*/
}
}
}
}
/******************************************************/
printf("输入学生姓名:");
scanf("%s",stu->name); /*输入学生姓名*/
printf("请输入cj1(0~100):");
scanf("%f",&stu->cj1); /*输入cj1,成绩应在0-100*/
while(stu->cj1<0||stu->cj1>100)
{getchar();
printf("输入错误,请重新输入cj1");
scanf("%f",&stu->cj1);
} /*输入错误,重新输入cj1直到正确为止*/
printf("请输入cj2(0~100):");
scanf("%f",&stu->cj2);/*输入cj2,成绩应在0-100*/
while(stu->cj2<0||stu->cj2>100)
{
getchar();
printf("输入错误,请重新输入cj2");
scanf("%f",&stu->cj2);}/*输入错误,重新输入cj2直到正确为止*/
printf("请输入cj3(0~100):");
scanf("%f",&stu->cj3);/*输入cj3,成绩应在0-100*/
while(stu->cj3<0||stu->cj3>100)
{
getchar();
printf("输入错误,请重新输入cj3");
scanf("%f",&stu->cj3);}/*输入错误,重新输入cj3直到正确为止*/
p1=head;
p0=stu;
if(head==NULL)
{head=p0;p0->next=NULL;}/*当原来链表为空时,从首结点开始存放资料*/
else/*原来链表不为空*/
{
if(p1->next==NULL)/*找到原来链表的末尾*/
{
p1->next=p0;
p0->next=NULL;/*将它与新开单元相连接*/
}
else
{
while(p1->next!=NULL)/*还没找到末尾,继续找*/
{
p2=p1;p1=p1->next;
}
p1->next=p0;
p0->next=NULL;
}
}
n=n+1;
p1=head;
p0=stu;
for(i=1;i<n;i++)
{
for(j=i+1;j<=n;j++)
{
max=p1;
p1=p1->next;
if(max->number>p1->number)
{
k=max->number;
max->number=p1->number;
p1->number=k;
/*交换前后结点中的学号值,使得学号大者移到后面的结点中*/
strcpy(t,max->name);
strcpy(max->name,p1->name);
strcpy(p1->name,t);
/*交换前后结点中的姓名,使之与学号相匹配*/
fen=max->cj1;
max->cj1=p1->cj1;
p1->cj1=fen;
/*交换前后结点中的cj1,使之与学号相匹配*/
fen=max->cj2;
max->cj2=p1->cj2;
p1->cj2=fen;
/*交换前后结点中的cj2绩,使之与学号相匹配*/
fen=max->cj3;
max->cj3=p1->cj3;
p1->cj3=fen;
/*交换前后结点中的cj3,使之与学号相匹配*/
}
}
max=head;p1=head;/*重新使max,p指向链表头*/
} end2:
printf("现在的学生数为:%d个!\n",n);
return(head);
}
/*========================================================
======================================*/
score *search(score *head)
/*函数search,功能:查询学生成绩*/
{int number;
score *p1,*p2;
printf("输入要查询的学生的学号,");
scanf("%d",&number);
while(number!=0)
{
if(head==NULL)
{printf("\n没有任何学生资料!\n");return(head);}
printf("-----------------------------------------\n");
printf("|学号\t|姓名\t|cj1\t|cj2\t|cj3\t|\n");
printf("-----------------------------------------\n");/*打印表格域*/
p1=head;
while(number!=p1->number&&p1->next!=NULL)
{p2=p1;p1=p1->next;}
if(number==p1->number)
{printf("|%d\t|%s\t|%.1f\t|%.1f\t|%.1f\t|\n",p1->number,p1->name,p1->cj1,p1->cj2,p1->cj3);
printf("-----------------------------------------\n");}/*打印表格域*/
else
printf("%d不存在此学生!\n",number);
printf("输入要查询的学生的学号,");
scanf("%d",&number);
}
printf("已经退出了!\n");
return(head);
}/*=============================================
=================================================*/
score *del(score *head)/*函数del,功能:删除学生资料*/
{
score *p1,*p2;
int number;
printf("输入要删除的学生的学号(输入0时退出):");
scanf("%d",&number);
getchar();
while(number!=0)/*输入学号为0时退出*/
{
if(head==NULL)
{
printf("\n没有任何学生资料!\n");
return(head);
}
p1=head;
while(number!=p1->number&&p1->next!=NULL)
/*p1指向的不是所要找的首结点,并且后面还有结点*/
{
p2=p1;p1=p1->next;
} /*p1后移一个结点*/
if(number==p1->number)
/*找到了*/
{
if(p1==head)
head=p1->next;
/*若p1指向的是首结点,把地二个结点地址赋予head*/
else
p2->next=p1->next;
/*否则将下一个结点地址 赋给前一结点地址*/
printf("已经删除:%d\n",number);n=n-1;
}
else
printf("%d不存在此学生!\n",number);
/*找不到该结点*/
printf("输入要删除的学生的学号:");
scanf("%d",&number);
getchar();
}
#ifdef DEBUG
printf("已经退出了!\n");
#endif
printf("现在的学生数为:%d个!\n",n);
return(head);
} /*==================================================
============================================*/
score *statistics(score *head)
/*函数statistics,功能:统计学生成绩*/
{
float sum1=0,sum2=0,sum3=0,ave1=0,ave2=0,ave3=0,max=0,min;
score *p;
int x,y=0,i=0;
p=head;
printf("1个人总分和平均分\t2单科平均分\t3总分最高分\t4总分最低分\n");
scanf("%d",&x);
getchar();
switch(x)
/*用switch语句实现功能选择*/
{
case 1: if(head==NULL)
{printf("\n没有任何学生资料!\n");return(head);}/*链表为空*/
else
{
printf("---------------------------------------------------------\n");
printf("|学号\t|姓名\t|cj1\t|cj2\t|cj3\t|总分\t|平均分\t|\n");
printf("---------------------------------------------------------\n");/*打印表格域*/
while(p!=NULL)
{
sum1=p->cj1+p->cj2+p->cj3; /*计算个人总分*/
ave1=sum1/3;/*计算个人平均分*/
printf("|%d\t|%s\t|%.1f\t|%.1f\t|%.1f\t|%.1f\t|%.1f\t|\n",p->number,p->name,p->cj1,p->cj2,p->cj3,sum1,ave1);
/*打印结果*/
printf("---------------------------------------------------------\n");/*打印表格域*/
p=p->next;}
}
return(head); break;
case 2: if(head==NULL)
{printf("\n没有任何学生资料!\n");return(head);}/*链表为空*/
while(p!=NULL)
{
sum1=sum1+p->cj1;
sum2=sum2+p->cj2;
sum3=sum3+p->cj3;/*计算总分*/
y=y+1;
ave1=sum1/y;
ave2=sum2/y;
ave3=sum3/y;/*计算平均分*/
p=p->next;/*使p指向下一个结点*/
}
printf("cj1平均分是%.1f\n",ave1);
printf("cj2平均分是%.1f\n",ave2);
printf("cj3平均分是%.1f\n",ave3);/*打印结果*/
return(head); break;
case 3:
if(head==NULL)
{printf("\n没有任何学生资料!\n");return(head);}/*链表为空*/
max=p->cj1+p->cj2+p->cj3;
while(i<n)
{
i=i+1;
sum1=p->cj1+p->cj2+p->cj3; /*计算个人总分*/
if(max<sum1)
max=sum1;
p=p->next;
}
printf("总分最高分:%.1f",max);
printf("\n");
return(head); break;
case 4: if(head==NULL)
{printf("\n没有任何学生资料!\n");return(head);}/*链表为空*/
while(p!=NULL)
{
min=p->cj1+p->cj2+p->cj3;
while(p!=NULL)
{sum2=p->cj1+p->cj2+p->cj3;
if(min>sum2)
min=sum2;
p=p->next;
}
}
printf("总分最低分:%.1f",min);
printf("\n");
return(head); break;
default :printf("输入错误,请重试!\n");
}
return(head);
}
/*===========================================================
===================================*/
int save(score *p1)
/*函数save,功能:保存学生的资料*/
{
FILE *fp;
char filepn[20];/*用来存放文件保存路径以及文件名*/
printf("请输入文件路径及文件名:");
scanf("%s",filepn);
if((fp=fopen(filepn,"w+"))==NULL)
{
printf("不能打开文件!\n");
return 0;
}
fprintf(fp," 学生成绩管理系统 \n");
fprintf(fp,"-------------------------------------------------------\n");
fprintf(fp,"| 学号\t| 姓名\t| cj1\t| cj2\t| cj3\t|\n");
fprintf(fp,"-------------------------------------------------------\n");
/*打印表格域*/
while(p1!=NULL)
{
fprintf(fp,"%d\t%s\t%.1f\t%.1f\t%.1f\t\n",p1->number,p1->name,p1->cj1,p1->cj2,p1->cj3);
p1=p1->next;/*下移一个结点*/
}
fclose(fp);
printf("文件已经保存!\n");
return 0;
}
int menu()/*函数menu,功能:菜单选择界面*/
{
int i,k;
printf("\t\t\t\t学生成绩管理系统\n");
for(i=0;i<80;i++)
printf("*");
printf("\t\t1创建资料\t\t\t2查询成绩\t\t\n");
printf("\t\t3删除资料\t\t\t4追加资料\t\t\n");
printf("\t\t5统计成绩\t\t\t6保存资料\t\t\n");
/*菜单选择界面*/
for(i=0;i<80;i++)
printf("*");
printf("请选择您所要的操作(选择(0)退出):");
scanf("%d",&k);/*选择操作*/
getchar();
return (k);}
/*==============================================================================================*/
main() /*主函数main,功能:通过调用creat,search,del,add,print,ststistics,save,taxis等函数,实现学生成绩查询系统功能*/
{
score *head=0,*stu=0;
while(1)
{
k=menu();
switch(k)/*用switch语句实现功能选择*/
{
case 1: head=creat();break;/*调用创建链表函数*/
case 2: head=search(head);break;/*调用查询函数*/
case 3: head=del(head); break;/*调用删除函数*/
case 4: head=add(head,stu);break;/*调用追加函数*/
case 5: statistics(head); break;/*调用统计函数*/
case 6: save(head);break;/*调用保存函数*/
case 0: exit(0);/*退出系统,返回主界面*/
default: printf("输入错误,请重试!\n");
}
}
}
4. 用c语言编写学生成绩管理程序
题目:学生成绩管理系统
专业:
班级:
姓名:
成绩:
指导教师:
完成日期:2010 6.16
一、目的
1. 进一步掌握和利用C语言进行程设计的能力;
2、 进一步理解和运用结构化程设计的思想和方法;
3、 初步掌握开发一个小型实用系统的基本方法;
4、 学会调试一个较长程序的基本方法;
5、 学会利用流程图或N-S图表示算法;
6、 掌握书写程设计开发文档的能力(书写课程设计报告);
二、内容与设计思想。
(1).系统功能与分析(填写你所设计的菜单及流程图)。
(2).数据结构
(3).模块设计
5. 怎样用c语言编写一个学生成绩管理系统
#include
"stdio.h"
#include
"stdlib.h"
#include
"string.h"
#define
NULL
0
int
shoudsave=0;
struct
student
{
char
num[10];
char
name[20];
char
sex[4];
int
cgrade;
int
mgrade;
int
egrade;
int
totle;
int
ave;
char
neartime[10];
};
typedef
struct
node
{
struct
student
data;
struct
node
*next;
}Node,*Link;
void
menu()
{
printf("********************************************************************************");
printf("\t1输入学生资料\t\t\t\t\t2删除学生资料\n");
printf("\t3查询学生资料\t\t\t\t\t4修改学生资料\n");
printf("\t5显示学生资料\t\t\t\t\t6统计学生成绩\n");
printf("\t7排序学生成绩\t\t\t\t\t8保存学生资料\n");
printf("\t9获取帮助信息\t\t\t\t\t0退出系统\n");
printf("********************************************************************************\n");
}
6. 怎样用c语言编写学生成绩管理系统
都大学生了,要靠自己动脑筋
7. 用C语言编程实现一个简单的学生成绩管理系统
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<memory.h>
typedefstructstudent
{
charnum[16];
charname[20];
floatscore[4];
structstudent*next;
}stu;
stu*head; //链头指针
stu*create() //创建链表,从文件读取信息
{
printf("Readingstudentinformation: ");
stu*p=NULL; //指针,指向个待插入的结点
stu*q=NULL; //指针,用于在其后插入结点
head=NULL; //一开始链表为空
FILE*r=fopen("input.dat","r");
p=(stu*)malloc(sizeof(stu));
while(fscanf(r,"%s%s%f%f%f",p->num,p->name,&p->score[0],&p->score[1],&p->score[2])!=EOF)
{
p->score[3]=(p->score[0]+p->score[1]+p->score[2])/3.0;
fprintf(stdout,"%s %s %g %g %g %.2f ",p->num,p->name,p->score[0],p->score[1],p->score[2],p->score[3]);
p->next=NULL;
if(head==NULL) //head为空,要插入第一个
{
head=p;
} //结点,让头指针指向结点p
else
{ //否则不是头结点,应将p结点
q->next=p; //插入到q结点的后面
}
q=p; //q指向当前最后一个结点
p=(stu*)malloc(sizeof(stu));
}
fclose(r);
if(head!=NULL)
{
q->next=NULL; //让q所指的最后一个结点的指针域为空说明这已是链尾了
}
returnhead; //返回头指针
}
voidsort(stu**head,intn)
{
FILE*w=NULL;
if(n==0)
{
w=fopen("sortByMath.dat","w");
}
elseif(n==1)
{
w=fopen("sortByEnglish.dat","w");
}
elseif(n==2)
{
w=fopen("sortByComputer.dat","w");
}
elseif(n==3)
{
w=fopen("sortByAvg.dat","w");
}
stu*q,*t,*p;
stu*new_head=newstu;
new_head->next=*head;
p=new_head;
t=NULL;
while(t!=new_head->next)
{
p=new_head;
q=p->next;
while(q->next!=t)
{
if((p->next->score[n])<(q->next->score[n]))
{
p->next=q->next;
q->next=q->next->next;
p->next->next=q;
}
p=p->next;
q=p->next;
}
t=q;
}
*head=new_head->next;
p=*head;
q=p->next;
printf("学号 姓名 数学 英语 计算机 平均成绩 ");
intgrade=1;
while(p!=NULL)
{
fprintf(w,"%s %s %g %g %g %.2f %d ",
p->num,p->name,p->score[0],p->score[1],p->score[2],p->score[3],grade);
fprintf(stdout,"%s %s %g %g %g %.2f %d ",
p->num,p->name,p->score[0],p->score[1],p->score[2],p->score[3],grade);
if(q!=NULL&&q->score[3]<p->score[3])grade+=1;
p=p->next;
if(q!=NULL)q=q->next;
}
printf(" ");
fclose(w);
}
voidcount(stu*head)
{
floatcnt[4][8];
inti,j;
for(i=0;i<4;i++)
{
for(j=0;j<8;j++)
{
if(j!=2)cnt[i][j]=0;
elsecnt[i][j]=100;
}
}
stu*r=head;
while(r!=NULL)
{
r=r->next;
}
}
intmain()
{
head=create();
printf("Sortingbyaveragescore: ");
sort(&head,3);
system("pause");
return0;
}
8. 用C语言编写一个学生成绩管理系统
// test4.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>
struct Student //学生结构体
{
char name[20]; //名字
char sex[10]; //性别
char zuanye[20]; //专业
char code[13]; //学号
char department[20]; //学院
char degree[20]; //学历
};
struct node
{
struct Student data;
struct node *next;
};
//---------------------------------------------------------------------------------
void print_menu(void) // 打印总菜单
{
printf(" |--------------------------------------------------|\n");
printf(" | 总 菜 单 : |\n");
printf(" |--------------------------------------------------|\n");
printf(" | 1--增加一个学生信息 | 5--删除一个学生信息 |\n");
printf(" | 2--显示一个学生信息 | 6--统计功能 |\n");
printf(" | 3--显示一个班级信息 | 7--结束 |\n");
printf(" | 4--修改一个学生信息 | \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 |\n");
printf(" |--------------------------------------------------|\n");
}
void print_menu4(void ) //打印修改功能
{
printf(" |--------------------------------------------------|\n");
printf(" | 修 改 功 能 : |\n");
printf(" |--------------------------------------------------|\n");
printf(" | 1--修改名字 | 5--修改学院 |\n");
printf(" | 2--修改性别 | 6--修改专业 |\n");
printf(" | 3--修改学号 | 7--不作修改 |\n");
printf(" | 4--修改学历 | \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 |\n");
printf(" |--------------------------------------------------|\n");
printf("再次选择选项 :");
}
void print_static_function_menu(void) //打印统计功能
{
printf(" |--------------------------------------------------|\n");
printf(" | 统 计 功 能 : |\n");
printf(" |--------------------------------------------------|\n");
printf(" | 1.男/女人数 | 3.一个专业人数 |\n");
printf(" | 2.一个班级人数 | 4.结束 |\n");
printf(" |--------------------------------------------------|\n");
printf("请选择选项:\n");
}
int compareCode(char a[],char b[]) //比较 判断是否是同一个班级
{
for(int i=0;i<9;i++)
if(a[i]!=b[i]) break;
if(i==9) return 1;
else return 0;
}
//-------------------------------------------------------------------------------------
void main() //主函数从这里开始
{
system("color 3");
printf("\n\n\n");
printf(" \3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\n");
printf(" \3\3\3\3\3\3\3\3\3\3 学 生 证 管 理 程 序 \3\3\3\3\3\3\3\3\n");
printf(" \3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\n");
printf(" \3\3\3\3\3\3 作者: \3\3\3\3\3\3\3\n");
printf(" \3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\n");
int choice;
struct node *studentlist=(struct node*)malloc(sizeof(struct node)); //学生链表头 //////////////////////////////////////////////////////////
studentlist->next=NULL;
struct node *temp=NULL;
struct node *p=(struct node*)malloc(sizeof(struct node));
char tempcode[13]; //临时学号
char tempclass[11]; //临时班级
char tempzuanye[20];//临时专业
int count=0;
int choice6,count_male,count_female;
const int sizeStu=sizeof(struct Student);
struct Student data;
FILE *fp;
if((fp=fopen("d:\\学生证管理程序.dat","rb"))==NULL)
{
fp=fopen("d:\\学生证管理程序.dat","wb");
}
fclose(fp);
fp=fopen("d:\\学生证管理程序.dat","rb");
while(fread(&data,sizeStu,1,fp)==1)
{
p->data=data;
p->next=NULL;
if(studentlist==NULL)
studentlist=p;
else
{ temp=studentlist;
while(temp->next!=NULL){temp=temp->next;}
temp->next=p;
}
p=(struct node*)malloc(sizeof(struct node));
}
fclose(fp);
print_menu(); //打印菜单
scanf("%d",&choice); //读进选项
while(choice!=7) //未遇到结束键
{
switch(choice)
{
//----------------------------------------------------------------
//选项1,增加学生学生证信息
case 1: //输入一个学生信息
p=(node*) malloc(sizeof(node));
printf("\n请输入姓名:");
scanf("%s",p->data.name);
printf("\n请输入性别(男/女):");
scanf("%s",p->data.sex);
printf("\n请输入学号(12位):");
scanf("%s",p->data.code);
printf("\n请输入学制(本科生/研究生):");
scanf("%s",p->data.degree);
printf("\n请输入学院:");
scanf("%s",p->data.department);
printf("\n请输入专业:");
scanf("%s",p->data.zuanye);
p->next=NULL;
//----------------------------------------------------------链表连接
if(studentlist==NULL) { studentlist=p; studentlist->next=NULL;}
else {
temp=studentlist;
while(temp->next!=NULL) ////////////////////
{
temp=temp->next;
}
temp->next=p;
p->next=NULL;
}
break;
//---------------------------------------------------------------------
//选项2,显示给定学生学生证信息
case 2: printf("\n请输入学生学号(12位数):");
scanf("%s",tempcode);
temp=studentlist;
while(temp!=NULL) //寻找响应的学生
{
if(strcmp(tempcode,temp->data.code)==0) break;
temp=temp->next;
}
if(temp==NULL) printf("\n不能找到该学生信息.\n");
else {
printf("------------------------------------------------\n");
printf("姓名: %s\n",temp->data.name);
printf("性别: %s\n",temp->data.sex);
printf("学号: %s\n",temp->data.code);
printf("学历: %s\n",temp->data.degree);
printf("学院: %s\n",temp->data.department);
printf("专业: %s\n",temp->data.zuanye);
printf("------------------------------------------------\n\n");
}
break;
//-----------------------------------------------------------------
//选项3,显示给定班级的学生信息
case 3:printf("\n请输入班级号 :"); //输入班级号
scanf("%s",tempclass);
while(strlen(tempclass)<10) //班级号位数小于10时,重新输入
{
printf("错误的班级号,请重新输入:");
scanf("%s",tempclass);
}
count=0; //班级学生数
temp=studentlist;
while(temp!=NULL) //检索链表,并打印相应学生的学生证信息
{
if(compareCode(tempclass,temp->data.code)) {//打印属于这个班级的学生
printf("-----------------------------------------------\n");
printf("姓名: %s\n",temp->data.name);
printf("性别: %s\n",temp->data.sex);
printf("学号: %s\n",temp->data.code);
printf("学历: %s\n",temp->data.degree);
printf("学院: %s\n",temp->data.department);
printf("专业: %s\n",temp->data.zuanye);
printf("-----------------------------------------------\n");
count++;
}
temp=temp->next;
}
if(count==0) printf("该班级还未有成员.\n");
break;
//-------------------------------------------------------------------
//选项4,修改给定学生的信息
case 4: printf("请输入要作修改的学生证号:");
scanf("%s",tempcode);
temp=studentlist;
while(temp!=NULL) //寻找响应的学生
{
if(strcmp(tempcode,temp->data.code)==0) break;
temp=temp->next;
}
if(temp==NULL) printf("\n找不到相应学生的信息.\n");//找不到相应的学生
else {
int choice2;
print_menu4();
scanf("%d",&choice2);
while(choice2!=7)
{
switch(choice2)
{
case 1:printf("修改名字:"); //修改名字
scanf("%s",temp->data.name);
break;
case 2:printf("修改性别:");//修改性别
scanf("%s",temp->data.sex);
break;
case 3:printf("修改学号:");//修改学号
scanf("%s",temp->data.code);
break;
case 4:printf("修改学历 :"); //修改学历
scanf("%s",temp->data.degree);
break;
case 5:printf("修改学院:"); //修改学院
scanf("%s",temp->data.department);
case 6:printf("修改专业:");//修改专业
scanf("%s",temp->data.zuanye);
break;
default: break;
}
printf("请选择选项:");
scanf("%d",&choice2); //再次选择菜单选项
}
}
break;
//----------------------------------------------------------------
//选项5,删除给定学号的学生
case 5: printf("\n输入学号 :"); //输入学号
scanf("%s", tempcode);
temp=studentlist;
p=temp;
while(temp!=NULL) //寻找相应的学生
{
if(strcmp(tempcode,temp->data.code)==0) break;
p=temp;
temp=temp->next;
}
if(temp==NULL) printf("\n找不到该学生信息.\n"); //找不到
else if(temp==studentlist) {studentlist=temp->next; free(temp);}
else {
p->next=temp->next;//找到时删除
free(temp);
}
break;
//------------------------------------------------------------------
//选项6,统计功能
case 6: print_static_function_menu();
scanf("%d",&choice6);//选择菜单选项
while(choice6!=4)
{
switch(choice6)
{
//选项1,统计男女个数
case 1:temp=studentlist;
count_male=0; //男生数
count_female=0; //女生数
while(temp!=NULL) //检索链表查找
{
if(strcmp(temp->data.sex,"男")==0) count_male++;
if(strcmp(temp->data.sex,"女")==0) count_female++;
temp=temp->next;
}
printf("男: %d\n",count_male);
printf("女: %d\n",count_female);
break;
//选项2,统计给定班级的人数
case 2:printf("请输入班级号:");
scanf("%s",tempclass); //给定班级
temp=studentlist;
count=0;
while(temp!=NULL) //检索链表查找
{
if(compareCode(temp->data.code,tempclass)==1) count++;
temp=temp->next;
}
printf("%s班级总人数为: %d\n",tempclass,count);
break;
case 3:printf("请输入专业:");
scanf("%s",tempzuanye); //给定专业
temp=studentlist;
count=0;
while(temp!=NULL) //检索链表查找
{
if(strcmp(temp->data.zuanye,tempzuanye)==0) count++;
temp=temp->next;
}
printf("%s专业总人数为: %d\n",tempzuanye,count);
break;
//缺省项
default: break;
}
printf("请选择选项:");
scanf("%d",&choice6);
}
break;
//-----------------------------------------------------------------
default:free(p); break;
}
if((fp=fopen("d:\\学生证管理程序.dat","wb"))==NULL)
{
printf("文件无法打开!");
return;
}
p=studentlist;
while(p)
{
fwrite(&p->data,sizeStu,1,fp);
p=p->next;
}
fclose(fp);
print_menu( );//打印菜单 进入循环
scanf("%d",&choice);
}
}
9. 用C语言编写一个简单的学生成绩管理的程序
我以前写了个,你拿去参考下吧:
#include <time.h>
#include<stdio.h>
#include<conio.h>
#include <stdlib.h>
#include<string.h>
#define MAX 80
void input();
void sort();
void display();
void insert();
void del();
void average();
void find();
void save();
void read();
void del_file();
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;
};
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\t\t\t\t9.删除文件中学员信息\n\t\t\t\t10.保存学员信息\n\t\t\t\t11.退出\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("cls");read();break;
case 9:system("cls");del_file();break;
case 10:system("cls");save();break;
case 11: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;i<now_no;i++)
{
for(j=1;j<=now_no-i;j++)
{
if(stu[j-1].ave<stu[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;i<now_no&&stu[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;i<now_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 save()/*保存数据函数*/
{
FILE *fp;
int i;
char filepath[20];
printf("输入要保存的文件路径:");
fflush(stdin);
gets(filepath);
if((fp=fopen(filepath,"w"))==NULL)
{
printf("\n保存失败!");
exit(0);
}
for(i=0;i<now_no;i++)
{
stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;
stu[i].ave=stu[i].sum/3;
fprintf(fp,"\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);
}
fclose(fp);
printf("学生信息已保存在%s中!\n",filepath);
system("pause");
system("cls");
}
void find()/*查询函数*/
{
int i;
char str[20],as;
do
{
printf("输入要查询的学生姓名:");
fflush(stdin);
gets(str);
for(i=0;i<now_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 average()/*求平均数*/
{
int i;
for(i=0;i<now_no;i++)
{
stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;
stu[i].ave=stu[i].sum/3;
}
}
void modify()/*修改数据函数*/
{
int i;
char str[20],as;
printf("输入要修改的学生姓名:");
fflush(stdin);
gets(str);
for(i=0;i<now_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");
}
void read()
{
FILE *fp;
int i;
char filepath[20];
printf("输入要读入的文件路径:");
fflush(stdin);
gets(filepath);
if((fp=fopen(filepath,"r"))==NULL)
{
printf("找不到%s文件!\n",filepath);
system("pause");
exit(0);
}
now_no=0;
for(i=0;i<MAX&&!feof(fp);i++)
{
fscanf(fp,"\t%d\t%s\t%s\t%f\t%f\t%f\t%f\n",&stu[i].no,stu[i].name,stu[i].sex,&stu[i].score1,&stu[i].score2,&stu[i].score3,&stu[i].ave);
now_no++;
}
fclose(fp);
printf("保存的在文件%s中的所有信息已经读入!\n",filepath);
system("pause");
system("cls");
}
void del_file()
{
FILE *fp;
char filepath[20];
printf("输入要删除的文件路径:");
fflush(stdin);
gets(filepath);
fp=fopen(filepath,"w");
fclose(fp);
printf("保存的在文件%s中的所有信息已经删除!\n",filepath);
system("pause");
system("cls");
}
10. 用C语言设计一个学生成绩管理系统
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#defineMAX1000
/*定义学生成绩信息结构*/
struct stu
{
char id[8];
char name[8];
(10)用c语言编写一个学生成绩管理系统扩展阅读:
short:修饰int,短整型数据,可省略被修饰的int。(K&R时期引入)
long:修饰int,长整型数据,可省略被修饰的int。(K&R时期引入)
long long:修饰int,超长整型数据,可省略被修饰的int。(C99标准新增)
signed:修饰整型数据,有符号数据类型。(C89标准新增)
unsigned:修饰整型数据,无符号数据类型。(K&R时期引入)
restrict:用于限定和约束指针,并表明指针是访问一个数据对象的唯一且初始的方式。(C99标准新增)
复杂类型关键字
struct:结构体声明。(K&R时期引入)
union:联合体声明。(K&R时期引入)
enum:枚举声明。(C89标准新增)
typedef:声明类型别名。(K&R时期引入)
sizeof:得到特定类型或特定类型变量的大小。(K&R时期引入)
inline:内联函数用于取代宏定义,会在任何调用它的地方展开。(C99标准新增)