c++链表实现学生成绩管理系统(简易版)
#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++链表实现学生成绩管理系统(简易版)的更多相关文章
- 使用C++名单在文档处理和学生成绩管理系统相结合
对于学生成绩管理系统,我并不陌生,几乎学习C人的语言.做项目会想到学生成绩管理系统,我也不例外.在研究中的一段时间C语言之后,还用C语言到学生管理系统,然后做几个链接.计数,这个系统是以前的系统上的改 ...
- C语言学生成绩管理系统(简易版)
#include<stdio.h> #include<stdlib.h> #include<string.h> int readstudents(struct st ...
- 简易的学生成绩管理系统(C++实现)
最近浅显的学习了C++的基础知识,想来练练手,于是就用单链表写了最经典的小项目,存粹学习,所以就在控制台下写了,写的有点简陋,码了大概400多行. 下面上代码: #include <cstdli ...
- 学生成绩管理系统(C++指针、链表、文件及面向对象的运用)
学生成绩管理系统 功能页面显示: 实现源码: #include<iostream> #include<fstream> #include<cstring> # ...
- 从零开始的C程序设计大作业——学生成绩管理系统
前言 学生成绩管理系统可以说是C语言程序设计的结课的必备大作业了.花了些时间,费了些头发肝了下,完成了两个系统,一个是控制台版本的,另一个用easyx图形库进行了优化. 先放出完成后的演示图片占个坑. ...
- 学生成绩管理系统 1.0(Java+MySql)
真难…… 数据库建立不会,中文编码不会,插入数据不会,删除不会…… Java读入数据不会……数据库连接不会…… 你也好意思说自己是学计算机的啊魂淡…… 我会慢慢写2.0,3.0版的……噗…… src/ ...
- 《C语言编写 学生成绩管理系统》
/* (程序头部凝视開始) * 程序的版权和版本号声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名: 学生成绩管理 ...
- c++学生成绩管理系统
虽然比较水 =.= 但是写了两节课+一个中午 都是强迫症的锅 http://www.cnblogs.com/wenruo/p/4940182.html #include <cstdio> ...
- 《C语言 学生成绩管理系统》
/* (盯着先拔头筹程序) * 该计划的版权声明和版本号 * Copyright (c) 2011, 烟台大学计算机学院学生的学校 * All rights reserved. * 文件名: 学生成绩 ...
随机推荐
- C - 思考使用差分简化区间操作
FJ's N (1 ≤ N ≤ 10,000) cows conveniently indexed 1..N are standing in a line. Each cow has a positi ...
- Oracle 设定字符集
在Redhat上安装Oracle 10g没有设定字符集,采用的是操作系统默认字符集:WE8ISO8859P1,将字符集修改为:ZHS16GBK.由于过程不可逆,首先需要备份数据库. 1.数据库全备 2 ...
- aoj0118
一.题意:有三种水果分别用,'@','*','#'三种符号表示,上下左右相连的同种水果被看做是一个区域,问一共有多少个区域 二.思路:用dfs去标记相连区域,然后遍历每个没有被标记的位置进行dfs 三 ...
- myEclipse注册码地址2019年最新
myEclipse注册码地址2019年最新 https://www.sojson.com/myeclipse8.5/
- (转)Shell——基本运算符
Shell 基本运算符 原文:http://blog.csdn.net/sinat_36053757/article/details/70319481 Shell 和其他编程语言一样,支持多种运算符, ...
- Spring混合配置时,遇到配置文件路径NotFound,使用PathMatchingResourcePatternResolver解决
在将spring的xml配置改为java配置的过程中,遇到了一些问题,block时间比较长的一个问题是资源(.xml, .properties)的路径找不到,最后是使用PathMatchingReso ...
- React.js 小书 Lesson9 - 事件监听
作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson9 转载请注明出处,保留原文链接和作者信息. 在 React.js 里面监听事件是很容易的事情 ...
- python pickle命令执行与marshal 任意代码执行
1.python pickle反序列化漏洞 自己的理解: 由于在类的__reduce__方法中提供了我们可以自定义程序如何去解序列化的方法,因此如果应用程序接受了不可信任的序列化的数据,那么就可能导致 ...
- 【VirtualBox】快照
一.快照备份 虚拟机系统快照下来,以后就可以恢复到快照之前的系统 右上角->虚拟电脑工具->快照
- 从零开始写C# MVC框架之--- 配置log4日志
在框架中配置日志分2步,一个是在帮助项目Zy.Utilities--Zy.Utility.Core中新建log类,封装写入日志方法,还需要在Zy.Utility.Core添加 log4net 的引用 ...