虽然比较水 =。= 但是写了两节课+一个中午 都是强迫症的锅

http://www.cnblogs.com/wenruo/p/4940182.html

#include <cstdio>
#include <cstring>
#include <iostream> using namespace std; class student // student 类为管理系统的一个节点
{
friend class studentMessage;
student *next;
char name[30];
char num[30];
double score[6];
public:
student()
{
strcpy(name, "null");
strcpy(num, "null");
for (int i = 0; i < 6; ++i) score[i] = 0;
}
student(const student &a)
{
strcpy(name, a.name);
strcpy(num, a.num);
for (int i = 0; i < 6; ++i)
score[i] = a.score[i];
}
student &input()
{
cout << "姓名:"; cin >> name;
cout << "学号:"; cin >> num;
for (int i = 0; i < 5; ++i)
{
cout << "输入第" << (i + 1) << "门成绩:";
cin >> score[i];
score[5] += score[i];
}
return *this;
}
student* get_next()
{
return next;
}
void print()
{
printf("%8s %10s ", name, num);
for (int i = 0; i < 6; ++i) printf(" %6.2f ", score[i]);
printf("\n");
}
void Swap() // 交换当前结点和下一个
{
char temp[30];
strcpy(temp, name);
strcpy(name, next->name);
strcpy(next->name, temp); strcpy(temp, num);
strcpy(num, next->num);
strcpy(next->num, temp); for (int i = 0; i < 6; ++i)
{
int tmp = score[i];
score[i] = next->score[i];
next->score[i] = tmp;
}
}
}; class studentMessage
{
protected:
student *first;
student *last;
public:
studentMessage()
{
first = last = new student;
}
~studentMessage()
{
Clear();
delete first;
}
studentMessage &Append(); // 在链表尾部插入节点
student *Find(const char *x); // 查找
void Query(); // 查询
studentMessage &Delete(); // 删除查找结点
studentMessage &Clear(); // 删除所有结点
studentMessage &Sort(); // 按第i门课排序
void print(); // 显示所有节点
int menu(); // 显示菜单
}; studentMessage &studentMessage::Append()
{
student x;
x.input();
student *ptr = last;
*ptr = x;
last = new student;
ptr->next = last;
return *this;
} studentMessage &studentMessage::Delete()
{
char x[30];
cout << "输入要删除的信息(学号或姓名)\n";
cin >> x;
student *ptr = Find(x); if (ptr == last)
{
cout << "未找到相关信息\n";
return *this;
}
ptr->print();
cout << "是否删除此信息?(是输入1,否输入0)";
cin >> x;
if (*x == '1')
{
if (ptr == first)
{
first = first->next;
delete first;
}
else
{
student *temp = first;
while (temp->next != ptr) temp = temp->next;
temp->next = ptr->next;
delete ptr;
}
cout << "已删除\n";
}
else
{
cout << "已取消\n";
}
return *this;
} studentMessage &studentMessage::Clear()
{
char ch[30];
cout << "将删除所有信息。确认请按Y";
cin >> ch;
if (*ch != 'Y' && *ch != 'y')
{
cout << "已取消\n";
return *this;
}
student *ptr = first;
while (ptr != last)
{
student *next = ptr->next;
delete ptr;
ptr = next;
}
first = last;
return *this;
} void studentMessage::print()
{
if (first == last)
{
cout << "暂无信息\n";
return ;
}
cout << "---------------------------------成绩列表------------------------------" << endl;
cout << "序号 姓名 学号 成绩1 成绩2 成绩3 成绩4 成绩5 总成绩" << endl;
int no = 1;
student *ptr = first;
while (ptr != last)
{
printf("%3d:", no++);
ptr->print();
ptr = ptr->next;
}
} student *studentMessage::Find(const char *x)
{
student *ptr = first;
while (ptr != last)
{
if (strcmp(ptr->name, x) == 0 || strcmp(ptr->num, x) == 0)
break;
ptr = ptr->next;
}
return ptr;
} void studentMessage::Query()
{
char x[30];
cout << "输入你要查询的信息(学号或姓名)";
cin >> x;
student *ptr = Find(x);
if (ptr == last)
{
cout << "没有查询到相关信息\n";
}
else
{
ptr->print();
}
} // 冒泡排序
studentMessage &studentMessage::Sort()
{
int x;
cout << "输入你想按照哪门课的成绩来排序?((1-5)总成绩输入6):";
cin >> x;
x--;
student *ptr, *cnt = last;
while (cnt != first)
{
ptr = first;
while (ptr->next != cnt)
{
if (ptr->next->score[x] > ptr->score[x])
{
ptr->Swap();
}
ptr = ptr->next;
}
cnt = ptr;
}
return *this;
} int studentMessage::menu()
{
cout << "===============================\n";
cout << " 学生成绩管理系统\n\n";
cout << " 1.显示所有学生成绩\n";
cout << " 2.添加信息\n";
cout << " 3.查询信息\n";
cout << " 4.删除信息\n";
cout << " 5.成绩排序\n";
cout << " 6.删除所有信息\n";
cout << " 0.退出\n";
cout << "===============================\n"; int ch;
cin >> ch;
return ch;
} int main()
{
studentMessage ls;
int ch;
while (ch = ls.menu())
{
switch(ch)
{
case 1: ls.print(); break;
case 2: ls.Append(); break;
case 3: ls.Query(); break;
case 4: ls.Delete(); break;
case 5: ls.Sort(); break;
case 6: ls.Clear(); break;
}
} return 0;
}

  

c++学生成绩管理系统的更多相关文章

  1. Java项目:学生成绩管理系统(二)

    学生成绩管理系统(二):项目介绍 一.设计要求: 1.1 简单的图形界面登录功能. 1.2 对数据库的的信息的查询功能. 1.3 对数据库的的信息的修改功能. 1.4 对数据库的的信息的删除功能. 1 ...

  2. Java项目:学生成绩管理系统(一)

    学生成绩管理系统(一) 项目名称:学生成绩管理系统 项目需求分析(Need 需求): (1)该系统的用户分为教师和学生.教师的功能有:管理某一学生或课程的信息以及成绩,包括增.删.查.报表打印等:学生 ...

  3. 学生成绩管理系统[C]

    #include<stdio.h> #include<stdlib.h> #include<string.h> #include<conio.h> #d ...

  4. 【转】 [C/OC的那点事儿]NSMutableArray排序的三种实现(依赖学生成绩管理系统).

    原文网址:http://blog.csdn.net/ministarler/article/details/17018839 c语言实现的学生成绩管理系统是面向过程的,而OC实现的学生成绩管理系统则是 ...

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

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

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

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

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

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

  8. C语言练手自己编写学生成绩管理系统

    #include<stdio.h> #include<stdlib.h> /*定义学生结构体*/ struct Student { ]; ]; float Mark1; flo ...

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

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

随机推荐

  1. JAVA入门第一季(mooc-笔记)

    笔记相关信息 /** * @subject <学习与创业>作业1 * @author 信管1142班 201411671210 赖俊杰 * @className <JAVA入门第一季 ...

  2. 谷歌笔试题——排序,只允许0和其他元素交换

    2.2 长度为n的数组乱序存放着0至n-1. 现在只能进行0与其他数的swap,请设计并实现排序. 这题有一个隐含条件:即数组元素是连续的,即0--n-1,当你排好序后,你会发现数组元素和该元素的下标 ...

  3. CentOS搭建OpenVPN服务(简易版)

    OpenVPN服务端配置 1. 安装OpenVPN软件包 默认的Centos软件源里面没有OpenVPN的软件包,我们可以添加rpmforge的repo,从而实现yum安装openvpn 针对Cent ...

  4. Google考虑抛弃Cookies机制

    根据华尔街日报的报道,Google 正在考虑抛弃古老的浏览器 cookies 来追踪用户信息的机制.作为替代,Google 将开发一种「个人匿名标识机制」.Google 早前已经计划在 IE 和 iP ...

  5. 8086 cpu为什么要把段地址*16+偏移量形成物理地址呢?

    8086 cpu为什么要把段地址*16+偏移量形成物理地址呢? 这是因为,8086地址线是20位,段寄存器是16位,将段寄存器*16实际上就是向左移动4位,形成20位和8086的二十位地址线匹配. I ...

  6. Android list1去除list2中的元素

    public static void main(String[] args) { List<String> firList = new ArrayList<String>(); ...

  7. 基于CommentCoreLibrary简单的弹幕实现

    本文地址:http://www.cnblogs.com/liaoyu/p/ccl-demo.html 实现基于开源的 CommentCoreLibrary 最近有需求要实现一个简单的评论弹幕实现,通过 ...

  8. Android 圆角Button

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAbEAAADrCAYAAADnsqiUAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAA

  9. uva 11646 - Athletics Track

    题意:如图,体育场的跑道一圈是400米,其中弯道是两段半径相同的圆弧.已知矩形的长宽比例为a:b,求长和宽的具体数值. 注意:圆弧的圆心在纵轴线上! #include<iostream> ...

  10. linux编译安装git

    我的博客:www.while0.com 用的centos6.4中自带的git,版本为1.7.1,配置好github的sshkey后,clone下来的项目无法提交,提示: fatal: Unable t ...