#include<iostream>
using namespace std; typedef struct student{
int id;//学号
string sex;
string name;
int cpp;//c++成绩
struct student *next;
}stu; stu *head=NULL; void test(); // 测试头指针是否为空
void record();//记录成绩
void modify();//修改成绩
void print();//打印单科成绩
void aver();//求各科的平均成绩
void Count();//成绩统计
void add();//添加学生
void delt();//删除学生
void print();//打印成绩 int main()
{
int choice;
cout<<"\t\t\t学生成绩管理系统\n\n\n";
cout<<"0.退出系统 1.记录信息 2.修改信息 3.平均成绩 4.统计成绩 5.添加信息 6.删除信息 7.打印成绩\n";
cout<<"输入选择(0-7): ";
cin>>choice;
while(1)
{
switch(choice)
{
case 0: exit(0);
case 1: record(); break;
case 2: modify(); break;
case 3: aver (); break;
case 4: Count (); break;
case 5: add (); break;
case 6: delt (); break;
case 7: print (); break;
default: cout<<"输入有误!\n"; break;
}
cout<<"输入选择(0-7): ";
cin>>choice;
}
return 0;
} void test() {
if (!head) {
cout << "head NULL\n";
exit(-1);
}
} void record()
{
stu *p,*q;
int i,n;
cout<<"输入学生人数: ";
cin>>n;
i=0;
cout<<"输入学生信息:姓名 学号 性别 成绩\n";
while(i<n)
{
p=new stu;
if(head==NULL)
{
head=p;
q=head;
}
else
{
cin>>p->name>>p->id>>p->sex>>p->cpp;
q->next=p;
q=p;
i++;
}
}
} void modify()
{
cout<<"输入要修改学生的学号: ";
int id;
cin>>id;
stu *p;
test();
p=head->next;
while(p)
{
if(p->id==id)
{
cout<<"请选择要修改的内容:\n";
cout<<"1.id 2.name 3.sex 4.cpp\n";
int choice;
cin>>choice;
switch(choice)
{
case 1:
{
int newid;
cout<<"输入新学号: ";
cin>>newid;
p->id=newid;
break;
}
case 2:
{
string newname;
cout<<"输入新名字: ";
cin>>newname;
p->name=newname;
break;
}
case 3:
{
string newsex;
cout<<"输入新性别: ";
cin>>newsex;
p->sex=newsex;
break;
}
case 4:
{
int newcpp;
cout<<"输入新成绩: ";
cin>>newcpp;
p->cpp=newcpp;
break;
}
default:cout<<"输入有误!\n"; break;
}
break;
}
p=p->next;
}
} void aver()
{
stu *p;
int sum,i;
sum=0;
i=0;
test();
p=head->next;
while(p)
{
sum+=p->cpp;
i++;
p=p->next;
}
cout<<"所有同学c++的平均成绩为: "<<sum/i<<endl;
} void Count()
{
int max;
stu *p,*q;
test();
p=head->next;
max=p->cpp;
q=p;
while(1)
{
p=p->next;
if(p==NULL)
break;
if(max<p->cpp)
{
max=p->cpp;
q=p;
}
}
cout<<q->name<<"的c++获得了第一名\n"<<"最高分为: "<<max<<endl;
} void add()
{
stu *p,*q;
p=new stu;
cout<<"输入新加同学的名字 学号 性别 c++成绩: ";
cin>>p->name>>p->id>>p->sex>>p->cpp;
p->next=head->next;
head->next=p;
} void delt()
{
//system("cls");
stu *p,*q;
int id;
cout<<"输入要删除学生的学号: ";
cin>>id;
test();
q=head;
p=q->next;
while(1)
{
if(p->id==id)
{
q->next=p->next;
delete p;
break;
}
q=p;
p=q->next;
}
} void print()
{
stu *p;
test();
p=head->next;
while(p)
{
cout<<p->name<<" "<<p->cpp<<endl;
p=p->next;
}
}

c++链表实现学生成绩管理系统(简易版)的更多相关文章

  1. 使用C++名单在文档处理和学生成绩管理系统相结合

    对于学生成绩管理系统,我并不陌生,几乎学习C人的语言.做项目会想到学生成绩管理系统,我也不例外.在研究中的一段时间C语言之后,还用C语言到学生管理系统,然后做几个链接.计数,这个系统是以前的系统上的改 ...

  2. C语言学生成绩管理系统(简易版)

    #include<stdio.h> #include<stdlib.h> #include<string.h> int readstudents(struct st ...

  3. 简易的学生成绩管理系统(C++实现)

    最近浅显的学习了C++的基础知识,想来练练手,于是就用单链表写了最经典的小项目,存粹学习,所以就在控制台下写了,写的有点简陋,码了大概400多行. 下面上代码: #include <cstdli ...

  4. 学生成绩管理系统(C++指针、链表、文件及面向对象的运用)

    学生成绩管理系统 功能页面显示:    实现源码: #include<iostream> #include<fstream> #include<cstring> # ...

  5. 从零开始的C程序设计大作业——学生成绩管理系统

    前言 学生成绩管理系统可以说是C语言程序设计的结课的必备大作业了.花了些时间,费了些头发肝了下,完成了两个系统,一个是控制台版本的,另一个用easyx图形库进行了优化. 先放出完成后的演示图片占个坑. ...

  6. 学生成绩管理系统 1.0(Java+MySql)

    真难…… 数据库建立不会,中文编码不会,插入数据不会,删除不会…… Java读入数据不会……数据库连接不会…… 你也好意思说自己是学计算机的啊魂淡…… 我会慢慢写2.0,3.0版的……噗…… src/ ...

  7. 《C语言编写 学生成绩管理系统》

    /* (程序头部凝视開始) * 程序的版权和版本号声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名: 学生成绩管理 ...

  8. c++学生成绩管理系统

    虽然比较水 =.= 但是写了两节课+一个中午 都是强迫症的锅 http://www.cnblogs.com/wenruo/p/4940182.html #include <cstdio> ...

  9. 《C语言 学生成绩管理系统》

    /* (盯着先拔头筹程序) * 该计划的版权声明和版本号 * Copyright (c) 2011, 烟台大学计算机学院学生的学校 * All rights reserved. * 文件名: 学生成绩 ...

随机推荐

  1. POJ_3090 Visible Lattice Points 【欧拉函数 + 递推】

    一.题目 A lattice point (x, y) in the first quadrant (x and y are integers greater than or equal to 0), ...

  2. P4219 [BJOI2014]大融合

    传送门 动态维护森林 显然考虑 $LCT$ 但是发现询问求的是子树大小,比较不好搞 维护 $sum[x]$ 表示节点 $x$ 的子树大小,$si[x]$ 表示 $x$ 的子树中虚儿子的子树大小和 那么 ...

  3. (找到最大的整数k使得n! % s^k ==0) (求n!在b进制下末尾0的个数) (区间满足个数)

    题目:https://codeforces.com/contest/1114/problem/C 将b分解为若干素数乘积,记录每个素数含多少次方 b = p1^y1·p2^y2·...·pm^ym. ...

  4. 114th LeetCode Weekly Contest Array of Doubled Pairs

    Given an array of integers A with even length, return true if and only if it is possible to reorder ...

  5. linux安装PHP7以及扩展

    Linux下安装PHP7 事先升级gcc4.8,然后安装PHP7,安装步骤参考:CentOS安装PHP7 1.Linux下编译的php没有php.ini 解决办法:从源代码目录中复制php.ini-d ...

  6. sqlmap命令小结

    --technique 这个参数可以指定sqlmap使用的探测技术,默认情况下会测试所有的方式. 支持的探测方式如下: B: Boolean-based blind SQL injection(布尔型 ...

  7. PIE SDK彩色空间变换

    1. 算法功能简介 使用彩色空间变换工具可以将三波段红.绿.蓝图像变换到一个特定的彩色空间,并且能从所选彩色空间变换回 RGB.两次变换之间,通过对比度拉伸,可以生成一个色彩增强的彩色合成图像.此外, ...

  8. Vue如何封装多个全局过滤器到一个文件

    #### 在写vue项目时,所用的过滤器很多时,把所有的过滤器方法封装在一个文件中,然后导出,并绑定在vue实例上 1.在src下创建filters文件夹,并新建index.js文件 2. index ...

  9. 用Verilog语言设计一个3-8译码器

    case语句 if_case语句 源码下载 Github >>

  10. nginx 配置优化指令

    worker_processes worker_processes指令是用来设计Nginx进程数,官方默认设为1,赋值太多了,将会对系统IO影响效率,降低Nginx服务器性能.但是为了让多核CPU能够 ...