班级管理系统c语言学号姓名,c++学生成绩管理系统1、问题描述 学生信息包括:学号、姓名、性别、年龄、班级等信息。 小学生...

这是一个使用C++编写的链表结构学生管理系统,包括创建链表、查找学生、插入学生、删除学生和输出所有学生信息的功能。程序通过结构体定义了学生节点,包含了学号、姓名和成绩等字段,并提供了相应的操作函数。用户可以交互式地进行各项操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

满意答案

dcebd7a0de6265b6ccae5ead692f1eab.png

qw2206052

2016.01.11

dcebd7a0de6265b6ccae5ead692f1eab.png

采纳率:57%    等级:8

已帮助:660人

#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); } void find (list *h) { int k; // 要找的学生学号 list *p; p=h->next; printf("请输入要查找的学生学号:\n"); scanf("%d",&k); while (p && p->num!=k) p=p->next; if(p) { printf("学号\t姓名\t成绩\n"); printf("%d\t%s\t%d\n",p->num,p->name,p->score); } else printf("目标没找到\n"); } 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); } list *insert(list *h) { list *p,*q,*r,*head; head=h; r=h; p=h->next; // 下面构造一个学生的信息 q=(list *)malloc(sizeof(list)); printf("请输入待插入学生的学号:\n"); scanf("%d",&q->num); printf("请输入待插入学生的姓名:\n"); scanf("%s",&q->name); printf("请输入待插入学生的成绩:\n"); scanf("%d",&q->score); q->next=Null; // 找到链表的结尾结点 while(p!=Null) { r=p; p=p->next; } // 将新结点插入表尾 r->next=q; r=r->next; return (head); } 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(" | 4. 删除成绩 |\n"); printf(" | 5. 输出所有学生成绩 |\n"); printf(" | 0. 退出系统 |\n"); printf(" ---------------------------------------\n"); printf("请输入你的选择:\n"); scanf("%d",&k); switch(k) { case 1: p=creat(); break; case 2: find(p); break; case 3: p=insert(p); break; case 4: p=del(p); break; case 5: output(p); break; case 0: exit(0); default : printf("选择错误,重新开始!\n"); } }// while }追问: = =亲这个是c语言 我需要c++的..

02分享举报

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值