c语言课程设计学生成绩管理系统,c语言课程设计学生成绩管理系统p
C语言程序设计学生成绩管理系统
#include "stdio.h"
/*定义学生结构体*/
struct Student
{
char ID[20];
char Name[20];
float Mark1;
float Mark2;
float Mark3;
float Average;
};
/*声明学生数组及学生数量*/
struct Student students[1000];
int num=0;
/*求平均值*/
float Avg(struct Student stu)
{
return (stu.Mark1+stu.Mark2+stu.Mark3)/3;
}
/*通过学号返回数组下标*/
int Student_SearchByIndex(char id[])
{
int i;
for (i=0;inum;i++)
{
if (strcmp(students[i].ID,id)==0)
{
return i;
}
}
return -1;
}
/*通过姓名返回数组下标*/
int Student_SearchByName(char name[])
{
int i;
for (i=0;inum;i++)
{
if (strcmp(students[i].Name,name)==0)
{
return i;
}
}
return -1;
}
/*显示单条学生记录*/
void Student_DisplaySingle(int index)
{
printf("%10s%10s%8s%8s%8s%10s\n","学号","姓名","成绩","成绩","成绩","平均成绩");
printf("-------------------------------------------------------------\n");
printf("%10s%10s%8.2f%8.2f%8.2f%10.2f\n",students[index].ID,students[index].Name,
students[index].Mark1,students[index].Mark2,students[index].Mark3,students[index].Average);
}
/*插入学生信息*/
void Student_Insert()
{
while(1)
{
printf("请输入学号:");
scanf("%s",students[num].ID);
getchar();
printf("请输入姓名:");
scanf("%s",students[num].Name);
getchar();
printf("请输入成绩:");
scanf("%f",students[num].Mark1);
getchar();
printf("请输入成绩:");
scanf("%f",students[num].Mark2);
getchar();
printf("请输入成绩:");
scanf("%f",students[num].Mark3);
getchar();
students[num].Average=Avg(students[num]);
num++;
printf("是否继续?(y/n)");
if (getchar()=='n')
{
break;
}
}
}
/*修改学生信息*/
void Student_Modify()
{
float mark1,mark2,mark3;
while(1)
{
char id[20];
int index;
printf("请输入要修改的学生的学号:");
scanf("%s",id);
getchar();
index=Student_SearchByIndex(id);
if (index==-1)
{
printf("学生不存在!\n");
}
else
{
printf("你要修改的学生信息为:\n");
Student_DisplaySingle(index);
printf("-- 请输入新值--\n");
printf("请输入学号:");
scanf("%s",students[index].ID);
getchar();
printf("请输入姓名:");
scanf("%s",students[index].Name);
getchar();
printf("请输入成绩:");
scanf("%f",students[index].Mark1);
getchar();
printf("请输入成绩:");
scanf("%f",students[index].Mark2);
getchar();
printf("请输入成绩:");
scanf("%f",students[index].Mark3);
getchar();
students[index].Average=Avg(students[index]);
}
printf("是否继续?(y/n)");
if (getchar()=='n')
{
break;
}
}
}
/*删除学生信息*/
void Student_Delete()
{
int i;
while(1)
{
char id[20];
int index;
printf("请输入要删除的学生的学号:");
scanf("%s",id);
getchar();
index=Student_SearchByIndex(id);
if (index==-1)
{
printf("学生不存在!\n");
}
else
{
printf("你要删除的学生信息为:\n");
Student_DisplaySingle(index);
printf("是否真的要删除?(y/n)");
if (getchar()=='y')
{
for (i=index;inum-1;i++)
{
students[i]=students[i+1];
}
num--;
}
getchar();
}
printf("是否继续?(y/n)");
if (getchar()=='n')
{
break;
}
}
}
/*按姓名查询*/
void Student_Select()
{
while(1)
{
char name[20];
int index;
printf("请输入要查询的学生的姓名:");
scanf("%s",name);
getchar();
index=Student_SearchByName(name);
if (index==-1)
{
printf("学生不存在!\n");
}
else
{
printf("你要查询的学生信息为:\n");
Student_DisplaySingle(index);
}
printf("是否继续?(y/n)");
if (getchar()=='n')
{
break;
}
}
}
/*按平均值排序*/
void Student_SortByAverage()
{
int i,j;
struct Student tmp;
for (i=0;inum;i++)
{
for (j=1;jnum-i;j++)
{
if (students[j-1].Averagestudents[j].Average)
{
tmp=students[j-1];
students[j-1]=students[j];
students[j]=tmp;
}
}
}
}
/*显示学生信息*/
void Student_Display()
{
int i;
printf("%10s%10s%8s%8s%8s%10s\n","学号","姓名","成绩","成绩","成绩","平均成绩");
printf("-------------------------------------------------------------\n");
for (i=0;inum;i++)
{
printf("%10s%10s%8.2f%8.2f%8.2f%10.2f\n",students[i].ID,students[i].Name,
students[i].Mark1,students[i].Mark2,students[i].Mark3,students[i].Average);
}
}
/*将学生信息从文件读出*/
void IO_ReadInfo()
{
FILE *fp;
int i;
if ((fp=fopen("Database.txt","rb"))==NULL)
{
printf("不能打开文件!\n");
return;
}
if (fread(num,sizeof(int),1,fp)!=1)
{
num=-1;
}
else
{
for(i=0;inum;i++)
{
fread(students[i],sizeof(struct Student),1,fp);
}
}
fclose(fp);
}
/*将学生信息写入文件*/
void IO_WriteInfo()
{
FILE *fp;
int i;
if ((fp=fopen("Database.txt","wb"))==NULL)
{
printf("不能打开文件!\n");
return;
}
if (fwrite(num,sizeof(int),1,fp)!=1)
{
printf("写入文件错误!\n");
}
for (i=0;inum;i++)
{
if (fwrite(students[i],sizeof(struct Student),1,fp)!=1)
{
printf("写入文件错误!\n");
}
}
fclose(fp);
}
/*主程序*/
main()
{
int choice;
IO_ReadInfo();
while(1)
{
/*主菜单*/
printf("\n------ 学生成绩管理系统------\n");
printf("1. 增加学生记录\n");
printf("2. 修改学生记录\n");
printf("3. 删除学生记录\n");
printf("4. 按姓名查询学生记录\n");
printf("5. 按平均成绩排序\n");
printf("6. 退出\n");
printf("请选择(1-6):");
scanf("%d",choice);
getchar();
switch(choice)
{
case 1:
Student_Insert();
break;
case 2:
Student_Modify();
break;
case 3:
Student_Delete();
break;
case 4:
Student_Select();
break;
case 5:
Student_SortByAverage();
Student_Display();
break;
case 6:
exit();
break;
}
IO_WriteInfo();
}
}
怎样用C语言写学生成绩管理系统?
程序如下: #include\x0d\x0avoid main()\x0d\x0a{\x0d\x0a float student[100][7];\x0d\x0a//student[][0]存放学号,student[][1]到student[][4]存放四门成绩,\x0d\x0a//student[][5]存放总分,student[][6]存放平均分,student[][7]存放排名\x0d\x0a int n,i,j,k,p,t,count,flag;\x0d\x0a int a[100],b[100],c[100];\x0d\x0a//a[]存放排序后的下标,b[]存放总分(备份),c[]存放排名的数据\x0d\x0a printf("输入学生的个数:\n");\x0d\x0a scanf("%d",n);\x0d\x0a for(i=0;ib[i+1])\x0d\x0a {\x0d\x0a c[i]=count;\x0d\x0a count++;\x0d\x0a }\x0d\x0a }\x0d\x0a printf("\n以下是统计结果:\n");\x0d\x0a printf("学号 s[1] s[2] s[3] s[4] 总分 平均分 排名\n");\x0d\x0a for(i=0;i
回答于?2022-11-16
C语言编写一个简单的学生成绩管理系统
C语言程序:
#include?stdio.h
#include?string.h
typedef?struct?student
{
char?name[20]; /*?姓名?*/
int?code; /*?学号?*/
int?kor,?eng,?math; /*?3门课程的成绩?*/
}STUDENT;
/*?返回输入数据?*/
STUDENT?Input();
/*?输出所有输入的数据?*/
void?Output(STUDENT?info[],?int?cnt);
/*?将输入分数转换为A-F?*/
char?grade(int?score);
int?main()
{
STUDENT?S[10];
int?cnt?=?0,?select;
int?i,?j;
int?code;
while(1)
{
printf("\t学生信息管理系统\n\n");
printf("\t\t1\t添加\n");
printf("\t\t2\t删除\n");
printf("\t\t3\t查询\n");
printf("\t\t0\t结束\n");
printf("\t\t您的选择[0-3]:");
scanf("%d",?select);
if(select??0?||?select??3)
continue;
if(select?==?0)
{
printf("退出系统!\n");
break;
}
if(select?==?1) /*?添加?*/
{
S[cnt++]?=?Input();
}
else?if(select?==?2) /*?删除?*/
{
printf("\t\t待删除学生的学号:");
scanf("%d",?code);
for(i=0;?icnt;?i++)
if(S[i].code?==?code)
break;
if(i?=?cnt)
{
printf("学号不存在,删除失败!\n");
}
else?{
for(j=i+1;?jcnt;?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("删除成功!\n");
}
}
else /*?查询?*/
{
printf("\t\t待查找学生的学号:");
scanf("%d",?code);
for(i=0;?icnt;?i++)
if(S[i].code?==?code)
break;
if(i?=?cnt)
{
printf("学号不存在,查找失败!\n");
}
else
{
printf("\t查询结果:\n");
Output(S,?i);
}
}
}
return?0;
}
/*?返回输入数据?*/
STUDENT?Input()
{
STUDENT?stu;
printf("\t\t新学生信息\n");
printf("\t\t学号:");
scanf("%d",?stu.code);
printf("\t\t姓名:");
getchar();
gets(stu.name);
printf("\t\t3门课程成绩(以空格分隔):");
scanf("%d%d%d",?stu.kor,?stu.eng,?stu.math);
return?stu;
}
/*?输出所有输入的数据?*/
void?Output(STUDENT?info[],?int?cnt)
{
printf("学号:%d\n",info[cnt].code);
printf("姓名:");
puts(info[cnt].name);
printf("成绩:%c?%c?%c\n",?grade(info[cnt].kor),?grade(info[cnt].eng),?grade(info[cnt].math));
}
/*?将输入分数转换为A-F?*/
char?grade(int?score)
{
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';
}
运行测试:
C语言课程设计学生成绩管理系统
这是昨晚一个人找我做的,他给了我一百块钱买我的代码,现在我不要你的钱了,你采纳我我就发代码给你
用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语言