#include
#include
#include //字符串处理
#include
int n=4;
struct student
{
int num; //学号
char name[10]; //名字
float score[3]; //成绩
}stud[100];
int i,choose,a,t=0;
long int num;
int main ()
{
void save(void);
void input(void);
void output(void);
void scoremodify();
void namemodify();
void scorecheck();
void namecheck();
void Addstudent();
void sclsearch();
while(1)
{
printf(" ********************************************************* \n");
printf(" >>欢迎进入学生成绩记录系统<< \n");
printf(" 【1】-------------------------- 创建学生成绩信息 \n");
printf(" 【2】-------------------------- 显示所有学生成绩信息 \n");
printf(" 【3】-------------------------- 添加学生成绩信息 \n");
printf(" 【4】-------------------------- 按学号查询学生成绩信息 \n");
printf(" 【5】-------------------------- 按姓名查询学生成绩信息 \n");
printf(" 【6】-------------------------- 按学号修改学生的成绩 \n");
printf(" 【7】-------------------------- 按姓名修改学生的成绩 \n");
printf(" 【8】-------------------------- 按分数段显示学生的信息 \n");
printf(" 【0】-------------------------- 退出 \n");
printf(" ********************************************************* \n");
printf(" 请输入相应菜单编号: ");
scanf("%d",&a);
switch(a)
{
case 1:
input(); //输入
save(); //保存
break;
case 2:
output(); //输出
printf("\n");
system("PAUSE");
system("CLS"); //清屏
break;
case 3:
Addstudent();
printf("\n");
system("PAUSE");
system("CLS");
break;
case 4:
scorecheck();
printf("\n");
system("PAUSE");
system("CLS");
break;
case 5:
namecheck();
printf("\n");
system("PAUSE");
system("CLS");
break;
case 6:
scoremodify();
printf("\n");
system("PAUSE");
system("CLS");
break;
case 7:
namemodify();
printf("\n");
system("PAUSE");
system("CLS");
break;
case 8:
sclsearch();
printf("\n");
system("PAUSE");
system("CLS");
break;
case 0:exit(0);
default: ;
}
}
return 0;
}
void save()
{
FILE *fp;
if ((fp=fopen("stu.dat","wb"))==NULL)/*以只写的方式打开文件*/
{
printf("无法打开文件!\n");
return ;
}
for(i=0;iif (fwrite (&stud[i],sizeof(struct student),1,fp)!=1)/*写入字节为 1 的信息在文件中*/
printf("文件写入错误!\n");
fclose(fp);/*关闭文件*/
}
void input()//录入学生成绩
{
int i;
char a;
for(i=0;iprintf("\n 请输入学生成绩信息:\n");
printf("\n 请依次输入 学号 姓名 c语言成绩:\n");
scanf("%d%s%f",&stud[i].num,stud[i].name,&stud[i].score[0]);
printf("输入:y(继续),n(终止)!\n");
fflush(stdin); //清除输入缓存
scanf("%c",&a);
if(a=='n' || a=='N')
break;
}
n=i+1;
}
void Addstudent()
{
FILE *fp;
struct student s;
fp=fopen("stu.dat","ab");
if((fp=fopen("stu.dat","ab"))==NULL)
printf("File open error!\n");
else
{
printf("请输入所增加学生的 学号 姓名 c语言成绩:\n");
scanf("%d",&s.num );
scanf("%s",s.name);
scanf("%f",&s.score[0]);
fwrite (&s,sizeof(struct student),1,fp);
fclose(fp);/*关闭文件*/
}
printf("写入成功!\n");
}//end function Addstudent;
void output()
{
int i;
//float s;
FILE *fp;
if((fp=fopen("stu.dat","rb"))==NULL)
{
printf("cannot open file\n");
exit(0);
}
printf("\n 学号 姓名 c语言成绩\n");
for(i=0;fread(&stud[i],sizeof(struct student),1,fp)==1;i++)
{
printf("%d %10s % 10.2f\n",stud[i].num,stud[i].name,stud[i].score[0]);
}
fclose(fp);
n=i;
}
void scoremodify()
{
int number,i;
printf("请输入要修改信息的学生学号:");
scanf("%d",&number);
for(i=0;iif(number==stud[i].num)
break;/*查找判断*/
if(i/*查找判断*/
{
printf("请输入修改后的学生的信息:");
printf("\n 请输入学生的 c语言成绩:");
scanf("%f",&stud[i].score[0]);
printf("\n学号 姓名 c语言成绩\n");
printf("%d %s %.2f\n",stud[i].num,stud[i].name,stud[i].score[0]);
save();
}
else
printf("没找到该学生的信息\n");
system("pause");system("cls");
}
void namemodify()
{
int i;
char name[10];
printf("请输入要修改信息的学生姓名:");
scanf("%s",&name);
for(i=0;iif(strcmp(stud[i].name,name)==0)
break;/*查找判断*/
if(i/*查找判断*/
{
printf("请输入修改后的学生的信息:");
printf("\n 请输入学生的 c语言成绩:");
scanf("%f",&stud[i].score[0]);
printf("\n学号 姓名 c语言成绩\n");
printf("%d %s %.2f\n",stud[i].num,stud[i].name,stud[i].score[0]);
save();
}
else
printf("没找到该学生的信息\n");
system("pause");system("cls");
}
void namecheck()
{
char name[10];
printf("按照姓名查询请按\n");
printf("\n 请输入姓名:");
scanf("%s",&name);
printf("查询结果\n");
printf("学号 姓名 c语言成绩\n");
for(i=0;iif(strcmp(stud[i].name,name)==0)
{
printf("%d %s %.2f\n",stud[i].num,stud[i].name,stud[i].score[0]);
}
}
void scorecheck()
{
int b;
printf("按照学号查询请按\n");
{
printf("\n 请输入学号:");
scanf("%d",&b);
printf("查询结果\n");
printf("学号 姓名 c语言成绩\n");
for(i=0;iif(stud[i].num ==b)
{
printf("%d %s %.2f\n",stud[i].num,stud[i].name,stud[i].score[0]);
}
}
}
void sclsearch()
{
int i;
printf("90 分以上:\n");
printf("学号 姓名 c语言成绩\n");
for(i=0;iif(stud[i].score[0]>=90)
printf("%d %s %.2f\n",stud[i].num,stud[i].name,stud[i].score[0]);
}
printf("80~89:\n");
printf("学号 姓名 c语言成绩\n");
for(i=0;iif(stud[i].score[0]>=80&&stud[i].score[0]<90)
printf("%d %s %.2f\n",stud[i].num,stud[i].name,stud[i].score[0]);
}
printf("70~79:\n");
printf("学号 姓名 c语言成绩\n");
for(i=0;iif(stud[i].score[0]>=70&&stud[i].score[0]<80)
printf("%d %s %.2f\n",stud[i].num,stud[i].name,stud[i].score[0]);
}
printf("60~69:\n");
printf("学号 姓名 c语言成绩\n");
for(i=0;iif(stud[i].score[0]>=60&&stud[i].score[0]<70)
printf("%d %s %.2f\n",stud[i].num,stud[i].name,stud[i].score[0]);
}
printf("60 分以下:\n");
printf("学号 姓名 c语言成绩\n");
for(i=0;iif(stud[i].score[0]<60)
printf("%d %s %.2f\n",stud[i].num,stud[i].name,stud[i].score[0]);
}
}
“Devil组”引证GPT后的撰写:
需要以下几个步骤:
该回答引用ChatGPT
这个代码可以使用链表来存储学生信息。以下是大致的思路:
定义链表节点的结构体,其中包括学生信息和指向下一个节点的指针。
在输入和读取学生信息的函数中,将每个学生信息存储在一个新的链表节点中,并将该节点插入到链表的末尾。
在输出学生信息的函数中,遍历链表并输出每个节点中的学生信息。
在修改学生成绩的函数中,根据学号或姓名查找相应的节点并修改其成绩。
在查询学生成绩的函数中,根据学号或姓名查找相应的节点并输出其成绩。
在按分数段查询学生成绩的函数中,遍历链表并根据学生成绩输出相应的学生信息
该回答引用GPTᴼᴾᴱᴺᴬᴵ
这是一个简单的学生成绩记录系统,可以通过链表来实现。你需要创建一个学生结构体节点,并将其连接起来形成链表。
以下是一种可能的思路:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#define MAX_NAME_LEN 10
// 链表结点
struct Node {
int num;
char name[MAX_NAME_LEN];
float score;
struct Node *next;
};
// 链表头指针
struct Node *head = NULL;
// 声明函数
void save(void);
void input(void);
void output(void);
void scoremodify(void);
void namemodify(void);
void scorecheck(void);
void namecheck(void);
void Addstudent(void);
void sclsearch(void);
int main() {
int choose, t = 0;
long int num;
while (true) {
printf("*********************************************************\n");
printf(">>欢迎进入学生成绩记录系统<<\n");
printf("【1】-------------------------- 创建学生成绩信息\n");
printf("【2】-------------------------- 显示所有学生成绩信息\n");
printf("【3】-------------------------- 添加学生成绩信息\n");
printf("【4】-------------------------- 按学号查询学生成绩信息\n");
printf("【5】-------------------------- 按姓名查询学生成绩信息\n");
printf("【6】-------------------------- 按学号修改学生的成绩\n");
printf("【7】-------------------------- 按姓名修改学生的成绩\n");
printf("【8】-------------------------- 按分数段显示学生的信息\n");
printf("【0】-------------------------- 退出\n");
printf("*********************************************************\n");
printf("请输入相应菜单编号: ");
scanf("%d", &choose);
switch (choose) {
case 1:
input(); // 输入
save(); // 保存
break;
case 2:
output(); // 输出
printf("\n");
system("PAUSE");
system("CLS"); // 清屏
break;
case 3:
Addstudent();
printf("\n");
system("PAUSE");
system("CLS");
break;
case 4:
scorecheck();
printf("\n");
system("PAUSE");
system("CLS");
break;
case 5:
namecheck();
printf("\n");
system("PAUSE");
system("CLS");
break;
case 6:
scoremodify();
printf("\n");
system("PAUSE");
system("CLS");
break;
case 7:
namemodify();
printf("\n");
system("PAUSE");
system("CLS");
break;
case 8:
sclsearch();
printf("\n");
system("PAUSE");
system("CLS");
break;
case 0:
exit(0);
default:;
}
}
return 0;
}
void save() {
FILE *fp;
struct Node *p = head;
if ((fp = fopen("stu.dat", "wb")) == NULL) /* 以只写的方式打开文件*/
{
printf("无法打开文件!\n");
return;
}
while (p != NULL) {
if (fwrite(p,
case 8:
sclsearch();
printf("\n");
system("PAUSE");
system("CLS");
break;
case 0:
exit(0);
default: ;
}
}
void save()
{
FILE *fp;
if ((fp=fopen("stu.dat","wb"))==NULL)/以只写的方式打开文件/
{
printf("无法打开文件!\n");
return ;
}
for(i=0;i<n;i++)
if (fwrite (&stud[i],sizeof(struct student),1,fp)!=1)/写入字节为 1 的信息在文件中/
printf("文件写入错误!\n");
fclose(fp);/关闭文件/
}
void input()//录入学生成绩
{
int i;
char a;
for(i=0;i<n;i++)
{
printf("\n 请输入学生成绩信息:\n");
printf("\n 请依次输入 学号 姓名 c语言成绩:\n");
scanf("%d%s%f",&stud[i].num,stud[i].name,&stud[i].score[0]);
printf("输入:y(继续),n(终止)!\n");
fflush(stdin); //清除输入缓存
scanf("%c",&a);
if(a=='n' || a=='N')
break;
}
n=i+1;
}
void Addstudent()
{
FILE *fp;
struct student s;
fp=fopen("stu.dat","ab");
if((fp=fopen("stu.dat","ab"))==NULL)
printf("File open error!\n");
else
{
printf("请输入所增加学生的 学号 姓名 c语言成绩:\n");
scanf("%d",&s.num );
scanf("%s",s.name);
scanf("%f",&s.score[0]);
fwrite (&s,sizeof(struct student),1,fp);
fclose(fp);/关闭文件/
}
printf("写入成功!\n");
}//end function Addstudent;
void output()
{
int i;
//float s;
FILE *fp;
if((fp=fopen("stu.dat","rb"))==NULL)
{
printf("cannot open file\n");
exit(0);
}
printf("\n 学号 姓名 c语言成绩\n");
for(i=0;fread(&stud[i],sizeof(struct student),1,fp)==1;i++)
{
printf("%d %10s % 10.2f\n",stud[i].num,stud[i].name,stud[i].score[0]);
}
fclose(fp);
n=i;
}
void scoremodify()
{
int number,i;
printf("请输入要修改信息的学生学号:");
scanf("%d",&number);
for(i=0;i<n;i++)
{
if(stud[i].num==number)
{
printf("请输入新的c语言成绩:");
scanf("%f",&stud[i].score[0]);
printf("修改成功!\n");
break;
}
}
if(i==n)
printf("学生学号不存在!\n");
}
void namemodify()
{
char name[10];
int i,j=0;
printf("请输入要修改信息的学生姓名:");
scanf("%s",name);
for(i=0;i<n;i++)
{
if(strcmp(stud[i].name,name)==0)
{
printf("请输入新的c语言成绩:");
scanf("%f",&stud[i].score[0]);
printf("修改成功!\n");
j=1;
}
}
if(j==0)
printf("学生姓名不存在!\n");
}
void scorecheck()
{
int i,number;
printf("请输入要查询信息的学生学号:");
scanf("%d",&number);
for(i=0;i<count;i++)
{
if(student[i].number==number)
{
printf("学生姓名:%s\n",student[i].name);
printf("学生学号:%d\n",student[i].number);
printf("学生成绩:%d\n",student[i].score);
return;
}
}
printf("学生学号不存在!\n");
}
void ranklist()
{
int i,j;
struct student temp;
for(i=0;i<count-1;i++)
for(j=i+1;j<count;j++)
if(student[i].score<student[j].score)
{
temp=student[i];
student[i]=student[j];
student[j]=temp;
}
printf("成绩排名如下:\n");
for(i=0;i<count;i++)
{
printf("学生姓名:%s\n",student[i].name);
printf("学生学号:%d\n",student[i].number);
printf("学生成绩:%d\n",student[i].score);
}
}
void save()
{
int i;
FILE *fp;
if((fp=fopen("stu.txt","w"))==NULL)
{
printf("无法打开文件!\n");
return;
}
for(i=0;i<count;i++)
fprintf(fp,"%s %d %d\n",student[i].name,student[i].number,student[i].score);
fclose(fp);
printf("文件已保存!\n");
}
void read()
{
int i;
FILE *fp;
if((fp=fopen("stu.txt","r"))==NULL)
{
printf("无法打开文件!\n");
return;
}
count=0;
while(fscanf(fp,"%s %d %d\n",student[count].name,&student[count].number,&student[count].score)!=EOF)
count++;
fclose(fp);
printf("文件已读取!\n");
}
void menu()
{
printf("\n");
printf(" 学生成绩管理系统 \n");
printf("*************************\n");
printf("**** 1.录入学生成绩 ****\n");
printf("**** 2.删除学生成绩 ****\n");
printf("**** 3.修改学生成绩 ****\n");
printf("**** 4.查询学生成绩 ****\n");
printf("**** 5.成绩排名 ****\n");
printf("**** 6.保存文件 ****\n");
printf("**** 7.读取文件 ****\n");
printf("**** 0.退出系统 ****\n");
printf("*************************\n");
}