#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. my32_ error 1872 Slave failed to initialize relay log info structure from the repository

    重启了实例后,slave进程无法开启 Last_SQL_Errno: Last_SQL_Error: Slave failed to initialize relay log info structu ...

  2. C# 判读取得字符编码格式

    FileStream fs1 = new FileStream(folder + strPath, FileMode.Open); byte[] bytes = new byte[fs1.Length ...

  3. git换行符问题

    from: http://www.cnblogs.com/flying_bat/archive/2013/09/16/3324769.html 一.AutoCRLF#提交时转换为LF,检出时转换为CR ...

  4. 025-quartz之spring部分配置模板

    版本一: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://w ...

  5. ife task0001页面实现细节问题总结

    好久没写css了,突然对重构页面陌生了许多.不过也没什么,前面几个月一直扩充知识面,偏重了理论技术学习,结果还不算遗憾.昨天重拾css,针对问题做点总结: 一.语义化方面 1.HTML5新标签使用 标 ...

  6. 并列 inline-block 元素互相影响问题

    今天在做页面时发现一个很奇怪的问题:当两个设置了display: inline-block; 属性的元素并列排放时,它们的位置能够互相影响. 我们先来看看元素结构: <div class=&qu ...

  7. Nagios 利用NSClient++的check_nrpe方式使用自定义脚本监控windows

    分类 NsClient++来监控windows主机有三种方式:check_nt.check_nrpe.nsca.check_nt自带很多功能,但是扩展性差,check_nrpe可以通过执行自己定义的脚 ...

  8. What is Network Address Translation?---reference

    http://whatismyipaddress.com/nat What is Network Address Translation? Network Address Translation (N ...

  9. JS的从理解对象到创建对象

    JavaScript不是一门真正的面向对象语言,因为它连最基本的类的概念都没有,因此它的对象和基于类的语言中的对象也会有所不同.ECMA-262把对象定义为:“无序属性的集合,其属性可以包含基本值.对 ...

  10. 关于Javascript模块化和命名空间管理的问题说明

    最近闲下来的时候,稍微想了想这个问题.关于Javascript模块化和命名空间管理 [关于模块化以及为什么要模块化] 先说说我们为什么要模块化吧.其实这还是和编码思想和代码管理的便利度相关(没有提及名 ...