c语言学生成绩管理函数 学生成绩系统管理c语言

用C语言编写学生信息管理程序(给出五个主要函数就OK啦?。?/h2>/*接上一楼*/
struct
Student
*create()
/*create函数定义,此函数实现创建单向动态链表*/
{
struct
Student
*head=NULL,*p1,*p2;
/*head,链表的头指针;*p1,*p2,中间指针变量*/
puts("\n现在请输入学院名:");
scanf("%s",college);
puts("\n年级:");
scanf("%s",grade);
puts("\n专业和班级:");
scanf("%s",classname);
puts("\n下面请按提示依次输入数据:\n(如果要结束输入,请输入学号0)");
p1=p2=(struct
Student
*)malloc(LEN);
puts("输入第一个学生的学号:");
scanf("%ld",p1-num);
puts("输入此学生成绩:\n英语:");
scanf("%f",p1-score.english);
puts("数学:");
scanf("%f",p1-score.math);
puts("计算机:");
scanf("%f",p1-score.computer);
total_and_aver(p1);/*计算总分和平均分*/
p1-grade=mark_grade(p1);
for(;p1-num!=0;)
{
len;
if(len==1)
head=p1;
else
p2-next=p1;
p2=p1;
p1=(struct
Student
*)malloc(LEN);
puts("输入下一个学生的学号:");
scanf("%ld",p1-num);
puts("输入此学生成绩:\n英语:");
scanf("%f",p1-score.english);
puts("数学:");
scanf("%f",p1-score.math);
puts("计算机:");
scanf("%f",p1-score.computer);
total_and_aver(p1);/*计算总分和平均分*/
p1-grade=mark_grade(p1);
}
p2-next=NULL;
return
(head);
}
struct
Student
*del(struct
Student
*head,long
del_num)
/*del函数定义,此函数实现从现有链表中删除一个结点*/
{
struct
Student
*p1,*p2;
if(head==NULL)
puts("空表,没有任何数据记录 。\n");
else
{
for(p1=head;!(del_num==p1-num||p1-next==NULL);p2=p1,p1=p1-next);
if(del_num==p1-num)
{
if(p1==head)head=p1-next;
else
p2-next=p1-next;
printf("学号为%ld学生的数据删除成功 。\n",del_num);
--len;
}
else
printf("未找到学号为%ld学生的记录 。\n",del_num);
}
return
(head);
}
struct
Student
*insert(struct
Student
*head,struct
Student
*new_student)
/*insert函数定义,此函数实现向现有链表中插入一个结点或覆盖相同学号的数据*/
{
struct
Student
*p0=new_student,*p1=head,*p2;
char
control;
if(head==NULL)
{
head=p0;
p0-next=NULL;
puts("数据插入成功 。\n");
}
else
{
for(;((*p0).num(*p1).num)(p1-next!=NULL);p2=p1,p1=p1-next);
if((*p0).num==(*p1).num)
{
printf("已经存在一个学号为%ld的学生的数据,要覆盖原有数据吗?\n输入
Y
=覆盖原有数据\n输入其它=保留原有数据\n",p0-num);
FFLUSH;
scanf("%c",control);
FFLUSH;
switch
(control)
{
case
'Y':
case
'y':if(p1==head){head=p0;p0-next=p1-next;}
else
{p2-next=p0;p0-next=p1-next;}
puts("数据已经更新\n");break;
default:break;
}
len--;
}
else
if((*p0).num(*p1).num)
{
if(p1==head)head=p0;
else
p2-next=p0;
p0-next=p1;
puts("数据插入成功 。\n");
}
else
{
p1-next=p0;
p0-next=NULL;
puts("数据插入成功 。\n");
}
}
len;
return
(head);
}
struct
Student
*sort(struct
Student
*head)
/*sort函数定义,此函数实现对链表中的数据按照平均分高低排序*/
{
struct
Student
*p1,*p2;
for(p1=head;p1-next!=NULL;p1=p1-next)
for(p2=p1-next;p2!=NULL;p2=p2-next)
{
if(p1-score.averagep2-score.average)
{
SWAP(p1-num,p2-num);
SWAP(p1-grade,p2-grade);
SWAP(p1-score.english,p2-score.english);
SWAP(p1-score.math,p2-score.math);
SWAP(p1-score.computer,p2-score.computer);
SWAP(p1-score.total,p2-score.total);
SWAP(p1-score.average,p2-score.average);
}
}
return
head;
}
/*接下一楼*/
用C语言设计一个学生成绩管理系统#include stdio.h
#include string.h
#include stdlib.h
#define MAX 1000
/*定义学生成绩信息结构*/
struct stu
{
char id[8];
char name[8];
扩展资料:
short:修饰int,短整型数据,可省略被修饰的int 。(KR时期引入)
long:修饰int,长整型数据,可省略被修饰的int 。(KR时期引入)
long long:修饰int,超长整型数据,可省略被修饰的int 。(C99标准新增)
signed:修饰整型数据,有符号数据类型 。(C89标准新增)
unsigned:修饰整型数据,无符号数据类型 。(KR时期引入)
restrict:用于限定和约束指针,并表明指针是访问一个数据对象的唯一且初始的方式 。(C99标准新增)
复杂类型关键字
struct:结构体声明 。(KR时期引入)
union:联合体声明 。(KR时期引入)
enum:枚举声明 。(C89标准新增)
typedef:声明类型别名 。(KR时期引入)
sizeof:得到特定类型或特定类型变量的大小 。(KR时期引入)
inline:内联函数用于取代宏定义,会在任何调用它的地方展开 。(C99标准新增)
参考资料来源:百度百科-c语言
c语言编写查询学生成绩管理程序 。#includestdio.h
#includestdlib.h
#includestring.hstruct record
{
char xuehao[10];//学号
char name[20]; //姓名
char sex[3];//性别
int ke1;//数学
int ke2 ;//语文
int ke3;//英语
int pin;
}stu[50];
int k=1,n,m;void readfile();
void seek();
void insert();
void del();
void save();
void menu();
void seek()
{int i,j,item,flag;brchar s1[20];brprintf("------------------\n");brprintf("1.按学号查询\n");brprintf("2.退出本菜单\n");brprintf("------------------\n");brwhile(1)br{ printf("请选择子菜单编号:");brscanf("%d",item);brflag=0;brswitch(item)br{brcase 1:brprintf("请输入要查询的学生的学号:\n");brscanf("%s",s1);brfor(i=0;in;i)brif(strcmp(stu[i].xuehao,s1)==0)br{ flag=1;brprintf("该学生学号 , 姓名,性别 , 数学,语文,英语 分别为:\n");brprintf("%s%s%s%d%d%d",stu[i].xuehao,stu[i].name,brstu[i].sex,stu[i].ke1,stu[i].ke2,stu[i].ke3);br}
if(flag==0)
printf("该学号不存在!\n"); break;
case 2:return;
default:printf("请在1-2之间选择\n");
}
}
}
void insert()
{ int i=n,j,flag;
printf("请输入待增加的学生数:\n");
scanf("%d",m);
do
{ flag=1;
while(flag)
{ flag=0;
printf("请输入第 %d 个学生的学号:\n",i 1);
scanf("%s",stu[i].xuehao);
for(j=0;ji;j)
if(strcmp(stu[i].xuehao,stu[j].xuehao)==0)
{ printf("已有该学号,请检查后重新录入!\n");
flag=1;
break;
}
}
printf("请输入第 %d 个学生的姓名:",i 1);
scanf("%s",stu[i].name);
printf("\n请输入第 %d 个学生的性别:",i 1);
scanf("%s",stu[i].sex);
printf("\n请输入第 %d 个学生的数学成绩:",i 1);
scanf("%d",stu[i].ke1);
printf("\n请输入第 %d 个学生的语文成绩:",i 1);
scanf("%d",stu[i].ke2);
printf("\n请输入第 %d 个学生的英语成绩:",i 1);
scanf("%d",stu[i].ke3);if(flag==0)
{ i=i;
i;
}
}while(in m);
n =m;
printf("录入完毕!\n\n");
}void del()
{ int i,j,flag=0;
char s1[20];
printf("请输入要删除学生的学号:\n");
scanf("%s",s1);
for(i=0;in;i)
if(strcmp(stu[i].xuehao,s1)==0)
{ flag=1;
for(j=i;jn-1;j)
stu[j]=stu[j 1];
}
if(flag==0)
printf("该学号不存在!\n");
if(flag==1)
{ printf("删除成功,显示结果请选择菜单6\n");
n--;
}
}
void readfile()
{
char buf[80],*p="student.dat";
FILE *fp;
int i=0;
if ((fp=fopen("student.dat","r"))==NULL)
{ printf("Open file %s error! Strike any key to exit!",p);
system("pause");
exit(0);
}
while(fscanf(fp,"%s%s%s%d%d%d",stu[i].xuehao,stu[i].name,
stu[i].sex,stu[i].ke1,stu[i].ke2,stu[i].ke3)==6)
{ i;
i=i;
}
fclose(fp);
n=i;
printf("录入完毕!\n");
}void save()
{ int i,j,k,flag=0;
FILE *fp;
fp=fopen("student.dat","w");
for(i=0;im;i)
{
fprintf(fp,"%s%s%d%d%d",stu[i].xuehao,stu[i].name,stu[i].sex,stu[i].ke1,
stu[i].ke2,stu[i].ke3);
fclose(fp);
printf("已储存");
}
}
void paixu()
{
int i,j,k,t;
for(i=0;im;i)
{
stu[i].pin=(stu[i].ke1 stu[i].ke2 stu[i].ke3)/3;
}
for(i=0;i=m-2;i)
{
k=i;
for(j=i 1;j=m-1;j)
if(stu[j].pinstu[k].pin)
k=j;
if(k!=i)
{
t=stu[k].pin;
stu[k].pin=stu[i].pin;
stu[i].pin=t;
}
}
for(i=0;im;i)
{printf("第 %d 个学生的姓名%s:",i 1,stu[i].name);brprintf("\n第 %d 个学生的性别:%s",i 1,stu[i].sex);brprintf("\n第 %d 个学生的数学成绩:%d",i 1,stu[i].ke1);brprintf("\n第 %d 个学生的语文成绩:%d",i 1,stu[i].ke2);brprintf("\n第 %d 个学生的英语成绩:%d",i 1,stu[i].ke3);brprintf("\n第 %d 个学生的平均成绩:%d",i 1,stu[i].pin);br }
}
void menu()
{ int nub;
printf(" \n\n学生成绩管理系统\n\n");
printf("*****系统功能菜单*****\n");
printf("----------------------\n");
printf("1.输入学生信息\n");
printf("2.查询学生信息\n");
printf("3.按学号删除信息\n");
printf("4.读入学生信息\n");
printf("5.保存信息(要把修改保存到文件,退出程序前必须执行本项)\n");
printf("6.查询学生平均成绩信息\n");
printf("0.退出系统\n");
printf("----------------------\n");
printf("请选择菜单编号:");
scanf("%d",nub);
switch(nub)
{
case 1:insert();break;
case 2:seek();break;
case 3:del();break;
case 4:readfile();break;
case 5:save();break;
case 6:paixu();break;
case 0:k=0;break;
default:printf("请在0-6之间选择\n");
}}
void main()
{
while(k)
menu();
}
//平均数是排序后,输出的,如果你不想直接输入 , 那就不要对每个学生进行选择排序了
【c语言学生成绩管理函数 学生成绩系统管理c语言】关于c语言学生成绩管理函数和学生成绩系统管理c语言的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读