#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. 【算法笔记】B1015 德才论

    1015 德才论 (25 分) 宋代史学家司马光在<资治通鉴>中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人.凡取人之术,苟不得圣人,君 ...

  2. leetcode 493 Reverse Pairs

    题意:给定一个数组nums,求若 i<j and nums[i] > 2*nums[j] 的逆序对. Note: 数组的长度不会超过50,000 不愧是hard模式的题目,虽然已经知道可以 ...

  3. HDU6393(LCA + RMQ + 树状数组) n边图,两点最短距离 , 修改边权

    这道题的进阶版本 进阶版本 题意: 一个n个点,n条边的图,2中操作,1是将某条边的权值更改,2是询问两点的最短距离. 题解: 由于n个点,n条边,所以是树加一个环,将环上的边随意取出一条,就是1颗树 ...

  4. 微信小程序 template模板使用

    参考文章: 微信小程序-template模板使用

  5. [转] NOI, NOIP, IOI, ACM

    [From] http://blog.csdn.net/chenbean/article/details/38928243 NOI是教育部和中国科协委托中国计算机学会举办了全国青少年计算机程序设计竞赛 ...

  6. Oracle:DBMS_STATS.GATHER_TABLE_STATS的语法

    转自: http://cjjwzs.iteye.com/blog/1143893 作用:DBMS_STATS.GATHER_TABLE_STATS统计表,列,索引的统计信息. DBMS_STATS.G ...

  7. 转: centos系统home下的中文目录改为英文目录

    转自h t t p : / /xugang-1017-126-com.iteye.com/blog/2081845 如果安装了中文版的Cent OS之后,root目录和home目录下会出现中文的路径名 ...

  8. linux Ubuntu14.04 python(c++版本) tesorflow(python版本)c++

    一.环境变量配置: export M2_HOME=/home/ustcjing/Maven/apache-maven- export JAVA_HOME=/usr/lib/jvm8/java expo ...

  9. 行业UI设计师总结UI设计8个趋势

    纵观整个设计的历史可以发现,设计的历史演变都无一例外都是从复杂的装饰性设计逐步的演化为更加注重功能性的简洁化设计.并且设计师们还在不停的试图通过各种设计语言的创新追求极至设计的可能性.设计潮流变更的核 ...

  10. Bootstrap 斜体、文本对齐、缩略图、地址、列表等

    目录1.标题2.页面主体3.强调    a.小号文本    b.着重    c.斜体    d.对齐class    e.强调class4.缩略语5.地址6.列表    a.无序列表    b.有序列 ...