学生成绩信息管理

/*

题目:学生成绩管理系统

功能:学生成绩管理系统,每个学生是一个记录,包括学号,姓名,性别,3门课程成绩。系统

要求实现以下功能:

1、信息录入:录入学生成绩信息(包括学生学号、姓名、各门课程的成绩等);

2、信息查询:输入学号,查询学生各门课程的成绩,并显示。

3、排序:按各门课程的成绩平均分进行排序,并显示。

4、信息删除与修改——输入学号,删除该学生的成绩信息。

*/

#include<iostream>

#include <string>

#include<iomanip>

using namespace std;

class StudentData

{//建立学生类

public:

string name;  double average;

double math, english, chinese, chemistry, biology, physics, number;

StudentData *next;

StudentData *pre;

void insertdate()

{       cin >> chinese >> math >> english >> physics >> chemistry >> biology;        }

void setlang() { cin >> chinese; }

void setmath() { cin >> math; }

void setenglish() { cin >> english; }

void setphysics() { cin >> physics; }

void setchemistry() { cin >> chemistry; }

void setbiology() { cin >> biology; }//输入各科成绩

} ;

struct  linklist

{//带头指针和尾指针的双向链表

StudentData *head, *present;//头指针和当前指针

void insert_one();

void delete_data();

void setdata();

bool check();

void creat();

void output();

void setmore();

void averagerank();

}X;

void linklist::output()

{//打印链表,输出学生信息

cout << "        姓名        学号    语文    数学    英语    物理    化学    生物       平均分" << endl;

present = head;

while (present->next != NULL)

{//不取尾结点,尾节点为空

present->average = (present->chinese + present->math + present->english + present->physics + present->chemistry + present->biology) / 6;

cout << setw(12)<< present->name << setw(12) << present->number << setw(8) << present->chinese << setw(8) << present->math << setw(8) << present->english

<< setw(8) << present->physics << setw(8) << present->chemistry << setw(8) << present->biology << setw(16) << present->average <<endl;

present = present->next;

}

}

void linklist::creat()

{//创建空结点

present = new StudentData;

head = present;

present->next = NULL;

present->pre = NULL;

}

void linklist::insert_one()

{

present = new StudentData;

head->pre = present;

present->next = head;

head = present;

present->pre = NULL;//新加一个学生数据加在表头

cout << "请输入学生姓名: ";

cin >> present->name;

cout << "请输入学号:";

cin >> present->number;

cout << "请一次输入语文,数学,英语,物理,化学,生物各科成绩:" << endl;

present->insertdate();        //输入成绩

}

void linklist::delete_data()

{//删除学生信息

//string studentnam;

int sigh = 0;

cout << "请输入要删除的学生学号: ";

if (check())

{

if (present->pre == NULL)

{

head = present->next;

delete present;

present = head;

}

if (present->pre != NULL)

{

present->pre->next = present->next;

present->next->pre = present->pre;

head = present->pre;

delete present;

}

cout << "删除数据成功!" << endl;

}

else cout << "删除失败。" << endl;

}

bool linklist::check()

{//按学号查找并输出学生信息

present = head;

int idnumber;

cin >> idnumber;

while (present->next != NULL)

{

if (idnumber == present->number)

{

present->average = (present->chinese + present->math + present->english + present->physics + present->chemistry + present->biology) / 6;

cout << "        姓名        学号    语文    数学    英语    物理    化学    生物         平均分" << endl;

cout << setw(12) << present->name << setw(12) << present->number << setw(8) << present->chinese << setw(8) << present->math << setw(8) << present->english

<< setw(8) << present->physics << setw(8) << present->chemistry << setw(8) << present->biology << setw(16) << present->average << endl;

return true;

}

else

{

present = present->next;

continue;

}

}

cout << "查无此人!" << endl;

return false;

}

void linklist::setdata()

{//修改学生成绩

int subject;

cout << "请输入学生的学号: ";

if (check())

{       while (1)

{//设置个循环修改成绩,按0或者超出选项退出循环

cout << " 1.语文                          2.数学" << endl

<< " 3.英语                         4.物理" << endl

<< " 5.化学                         6. 生物" << endl

<< " 0.返回上级菜单                          " << endl;

cout << "请输入需要修改的科目编号及成绩: ";

cin >> subject;

switch (subject)

{

case 1:present->setlang();break;

case 2:present->setmath();break;

case 3:present->setenglish();break;

case 4:present->setphysics();break;

case 5:present->setchemistry();break;

case 6:present->setbiology();break;

case 0:cout << "回到上级菜单" << endl;;return;

default:

{

cout << "回到上级菜单。" << endl;//这行可以不要

return;

}

}

cout << "修改成功!" << endl;

}

}

}

void linklist::setmore()

{//通过循环次数来控制插入人数

cout << "请输入添加学生人数: ";

int n;

cin >> n;

while (n--) insert_one();

}

void linklist::averagerank()

{//注意链表的尾结点是默认值,因为在创建链表的时候是在空节点上逆序创建的

int  h = 0, k = 0;  present = head;

L:

while (present->next->next != NULL)

{

h = k;

if (present->average <= present->next->average)

{

present = present->next;

}//无需互换

if (present->average > present->next->average&&present->pre == NULL)

{

k++;

present->next = present->next->next;

present->next->pre->next = present;

present->pre = present->next->pre;

present->next->pre = present;

present->pre->pre = NULL;

}//头节点处链表间互换

if(present->average > present->next->average&&present->pre != NULL)

{

if (present->next->next != NULL)

{//最后一个空结点不纳入考虑

k++;

present->pre->next = present->next;

present->next = present->next->next;

present->pre->next->next = present;

present->pre->next->pre = present->pre;

present->pre = present->pre->next;

present->next->pre = present;

}

}

while (h != k)

{//若一次完整循环下来没有顺序变化,退出

while (present->pre != NULL) { present = present->pre; } goto L;

}

}

while (present->pre != NULL) { present = present->pre; }

head = present;//因为头结点不为空,修改完后可能会被改变,此处从新定位头结点

cout << "        姓名        学号    语文    数学    英语    物理    化学    生物                平均分" << endl;

do{

present->average = (present->chinese + present->math + present->english + present->physics + present->chemistry + present->biology) / 6;

cout << setw(12) << present->name << setw(12) << present->number << setw(8) << present->chinese << setw(8) << present->math << setw(8) << present->english

<< setw(8) << present->physics << setw(8) << present->chemistry << setw(8) << present->biology << setw(16) << present->average << endl;

present = present->next;

} while (present->next != NULL);

}

int main()

{

cout << "                                                    " << endl;

cout << "                             学生信息管理系统                     " << endl;

cout << "                                                    " << endl;

cout << "   1.添加一个学生信息                                   2.查询学生信息" << endl;

cout << "   3.删除学生信息                                           4.将学生信息列表输出" << endl;

cout << "   5.修改学生成绩                                           6.批量输入任意个数学生信息" << endl;;

cout << "   7.按各门成绩平均分进行排序                   0.退出系统                         " << endl;

cout << "                                                    " << endl;

X.creat();//先建空表

while (true) {

int choise;

cout << endl<<"请输入相应操作序号: " ;

cin >> choise;

switch (choise)

{

case 1:                X.insert_one();break;

case 2:

{

cout << "请输入查询学生的学号: ";

X.check(); break;

}

case 3:       X.delete_data();break;

case 4:       X.output();break;

case 5:       X.setdata();break;

case 6:       X.setmore();break;

case 7:       X.averagerank();break;

case 0:

break;

default:

cout << "对不起,有关功能正在开发!" << endl;break;

}

if (!choise) break;

}

return 0;

}

时间: 2024-12-07 10:54:33

学生成绩信息管理的相关文章

《团队-学生成绩管理-需求分析》

学生成绩管理系统--需求分析 开发意图: 采用学生成绩管理系统,可以方便地对学生和学生成绩进行管理. 用户特点: 本系统的最终用户只有一个:管理员.系统的管理员主要是对学生信息以及 学生成绩进行一些操作. 这些操作包括对学生信息的添加. 对学生成绩的录入以 及对学生成绩进行分析等. 可行性分析: 目前, 随着办公信息化的开展, 高校的扩招, 新生入学以及期末考试结束后,学校都需 要对一些繁琐的流程进行管理, 通过一个基于 B/S 架构的管理系统, 可以很好的将这一个过 程进行化繁为简. 此项目具

学生成绩录入系统设计与实现

团队成员:叶月欣,纪杨阳,季天梦,刘雨恬 阶段1 - 系统需求分析 [必做 1] 列出成绩录入系统功能需求. 功能需求 输入 处理 输出 密码输入 密码输入 判断是否正确 对,进入:错,提示 老师进入 学生成绩录入 学生成绩修改 输入数据 更新数据 输出数据 退出系统 输入数据 判断是否退出 退出 [必做 2] 画出该学生成绩录入系统的用例图. [必做 3] 将系统开发工作分解为若干任务,画出WBS. [必做 4] 将任务分配到团队成员.列出任务分配表. 序号    任务名称 完成者     起

asp.net299学生成绩管理系统

转载于我帮你毕业设计  QQ 97095639 需要详细资料和演示的可以去 www.hongtaibysj.com 查看 一.技术实现: 开发语言: asp.net, 框架: mvc ,模式:B/S 数据库 : sqlserver , 开发工具: vs sqlserver . 论文字数:1万左右. 二.功能实现: 学生信息管理系统是一个典型的数据库应用程序,由班级信息管理.学生学籍管理.课程信息管理.成绩信息管理.个人信息管理等模块组成,特规划如下: 系统管理模块 该模块的主要任务是维护系统的正

用C#创建2个类,使用继承,抽象类的特性做学生基本信息管理

1.学生基本信息管理 (1)使用控制台程序做界面 (2)至少10个属性和5个方法 (3)使用继承.抽象类等面向对象特性 (4)测试要求:测试程序中用到的面向对象特性. <span style="font-size:32px;color:#ff0000;">主函数</span> using System; using System.Collections.Generic; using System.Linq; using System.Text; using Sy

基于WEB的C#学生成绩管理系统

在信息化时代的不断冲击下,学生成绩管理系统与计算机技术的结合,将会是一条提高学生成绩管理系统水平的捷径.使用计算机对学生成绩管理系统的各项基本信息进行管理,比起手工管理来说既方便又简便,而且易于管理.搜索速度快.存储量大等多个优点.将其使用在学生成绩管理系统中,不仅能够提高学生成绩管理系统中管理员的工作效率,而且可以使学生成绩管理系统更加科学与规范.从某些方面上来说,现代学生成绩管理系统的不断标准化促使学生成绩管理系统各方面的管理都逐渐与现代信息处理密切相连,因此应该开发学生成绩管理系统系统将现

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

/* (程序头部凝视開始)* 程序的版权和版本号声明部分* Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved.* 文件名: 学生成绩管理系统 * 作 者: 刘江波 * 完毕日期: 2012 年 6 月 23 日* 版 本 号: v.623 * 对任务及求解方法的描写叙述部分 * 程序头部的凝视结束 */ #include "stdio.h" #include"string" /*定义学生结构体*/ struc

学生成绩管理程序(C语言dos程序)

在昨天写的一个血生成绩管理程序 给大家分享一下 本程序仅供学习交流 代码如下: 1 /*本程序为简单的学生信息管理系统,作为技术交流,并不作为其它用途*/ 2 #include<stdio.h> 3 #include<string.h> 4 5 void rank1(float b[]); 6 int count = 1; 7 //结构体 8 struct student 9 { 10 char name[10]; //学生的姓名 11 char subject[10]; //学生

作业6 学生成绩录入系统设计与实现 阶段一

作业要求: [必做 1] 列出成绩录入系统功能需求. [必做 2] 画出该学生成绩录入系统的用例图. [必做 3] 将系统开发工作分解为若干任务,画出WBS [必做 4] 将任务分配到团队成员.列出任务分配表. [选做 5] 陈述团队协作的出现的问题.矛盾.以及你是如何解决的. 贡献比:许洪科(50%)            袁宇鹏(50%) 1.列出功能需求(共同讨论完成) 基础性 扩展性 创新性 1.教师登录/注销 2.成绩录入/修改 3.学生查询成绩 1.成绩导入(从WPS或者Office

学生——成绩表2.2

一.表说明同“学生——成绩表2.1” 二.目录 选课情况 1.       查询学过"张三"老师授课的同学的信息 2.       查询没学过"张三"老师授课的同学的信息 3.       查询选修了全部课程的学生信息 4.       查询没有学全所有课程的同学的信息 5.       查询出只选有两门课程的全部学生的学号和姓名 6.       检索至少选修两门课程的学生学号 7.       查询每门课程被选修的学生数 8.       查询学过编号为&quo