#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. bzoj 1189 二分+最大流

    题目传送门 思路: 先预处理出每个人到每扇门的时间,用门作为起点进行bfs处理. 然后二分时间,假设时间为x,将每扇门拆成1到x,x个时间点,表示这扇门有几个时间点是可以出去的.对于一扇门,每个时间点 ...

  2. 2019.3.25 SQL语句(进阶2)

    子查询 数据库中的表沿用 上一篇博客 中使用的Employee1. 练习: 1.求所有年龄比张三小的人 select * from Employee1 where age < (select a ...

  3. QT跟VC++结合来进行插件的验证机制

    由于最近公司要开发一个以C++插件机制为主的,主要有一个问题就是C++的二进制兼容性的问题.一旦类使用虚函数,只要随便改动下增删查改下头文件的虚函数,就会导致程序在跑的时候进行乱跳,因为这个时候exe ...

  4. query的参数解析

    SQLiteDatabase dbInstance;Cursor cursor = dbInstance.query(String table,String []Columns, String sel ...

  5. html 复选框checkbox

    统计选中复选框的个数 <html> <head> <title> </title> <script> function static_num ...

  6. nyoj 999——师傅又被妖怪抓走了——————【双广搜】

    师傅又被妖怪抓走了 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 话说唐僧复得了孙行者,师徒们一心同体,共诣西方.自宝象国救了公主,承君臣送出城西,沿路饥餐渴饮,悟 ...

  7. C++程序设计基础(2)变量

    注:读<程序员面试笔记>笔记总结 1.知识点 (1)C++变量命名只能包含字母.数字.下划线,其中开头不能是数字:大小写敏感:习惯上变量用小写字母,常量.宏定义用大写字母. (2)变量的作 ...

  8. oracle 报错:ORA-02019 未找到数据库的连接说明

    一.问题描述 我之前连的是别的数据库,现在更换了数据库的连接,然后就报了如下的错误: 我使用的是NHibernate,我找到映射文件后发现我用了dblink,代码中table="COM_OR ...

  9. javascript移动端滑屏事件

    来看看在pc上面的几个事件:onmousedown,onmousemove,onmouseup 我相信大家对这几个事件一定不陌生,第一个onmousedown表示鼠标按下,第二个onmousemove ...

  10. avalon实现分页组件

    前言 分页组件比较常见,但是用avalon实现的见的不多,这个分页组件,可以适配2种分页方式, 第一种是每次点击下一页,就请求一次后台,并返回当页数据和总条数,我称之为假分页: 第二种是一次性把所有数 ...