当前位置:首页 > 问答大全 > 用C语言设计一学生成绩管理系统,要求: 1、加入一个学生的成绩 2、删除一个学生的成绩 3、求各学生的总分

用C语言设计一学生成绩管理系统,要求: 1、加入一个学生的成绩 2、删除一个学生的成绩 3、求各学生的总分

被浏览: 0次 2023年08月14日 11:28
热门回答(2个)
游客1

#include

#include

#include

#define MAXLEN 100

#define Null 0

typedef struct node {

int num; // 学号

char name[MAXLEN]; // 姓名

int score; // 分数

struct node *next; // 指针域
}list;

list *creat() // 新增成绩
{
list *head,*p,*r;

int i,n; // n 为学生没禅咐人数

head=(list *)malloc(sizeof(list));

head->next=Null;

r=head;

printf("请输入学生人数.\n");

scanf("%d",&n);

for(i=1;i<=n;i++) {

p=(list *)malloc(sizeof(list));

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

scanf("%d",&p->num);

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

scanf("%s",&p->name);

printf("请输入学生成绩:\n");

scanf("%d",&p->score);

p->next=Null;

r->next=p;

r=r->next;
}

return (head);

}

list *del (list *h) // 删除成绩
{
int k; // 要删除的学生学号

list *p,*q; // 为什么要两个指针呢?

q=h;

p=h->next;

printf("请袭凯输入待删除的学生学号:\n");

scanf("%d",&k);

while (p && p->num!=k) {

q=p;

p=p->next;
}

if(p) {

q->next=p->next;

free(p);
}

else

printf("没有此学生的记录,无法删除!\n");

return (h);

}

void output(list *h) // 输出成绩
{
list *p;

printf("学号\t姓名\t成绩\n");

p=h->next;

while (p!=NULL) {

printf("%d\t%s\t%d\n",p->num,p->name,p->score);

p=p->next;
}
}

void main()
{
list *p;

int k; // 控制循环的标志

while (1) {

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

printf(" | 学生成绩管理系统 |\n");

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

printf(" | 1. 登记成绩 |\n");

printf(" | 2. 删除成绩 |\n");

printf(" | 3. 输出所有学生成绩 |\枯纯n");

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

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

printf("请输入你的选择:\n");

scanf("%d",&k);

switch(k) {

case 1: p=creat(); break;

case 2: p=del(p); break;

case 3: output(p); break;

case 0: exit(0);

default : printf("选择错误,重新开始!\n");
}

}
}

游客2

数组把学知唯生的成绩定义成一个数组a[k] k值为学生个数 例如为10 a[10]
需加入放到最后new,删除最备简开始的
int i,j;
long sum;
for(i=0;i<仿猛裤9;i++)
{a[i]=a[i+1];}
a[9]=new;
for(j=0;j<10;j++)
{sum=sum+a[i];}