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

满意答案

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分享举报

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、问题描述  学生信息包括学号姓名性别年龄班级信息。  小学生除了包括学生所有信息外,还包括英语、数学和语文成绩。  中学生除了包括小学生所有信息外,还包括地理、历史成绩、家庭住址等信息。 大学生除了包括学生所有信息外,还包括专业、家庭地址、联系方式等信息。  2、功能要求  (1)添加功能:程序能够添加不同学生的记录,提供选择界面供用户选择所要添加的类别,要求学号要唯一,如果添加了重复学号的记录时,则提示数据添加重复并取消添加。  (2)查询功能:可根据学号姓名信息对已添加的学生记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。  (3)显示功能:可显示当前系统中所有学生的记录,每条记录占据一行。  (4)编辑功能:可根据查询结果对相应的记录进行修改,修改时注意学号的唯一性。  (5)删除功能:主要实现对已添加的学生记录进行删除。如果当前系统中没有相应的记录,则提示“记录为空!”并返回操作。  (6)统计功能:能根据多种参数进行统计。能统计学生人数、按性别统计、按年龄统计等。  (7)保存功能:可将当前系统中各类记录存入文件中,存入方式任意。  (8)读取功能:可将保存在文件中的信息读入到当前系统中,供用户进行使用

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值