C++实现基本的成绩管理系统

需求:

1-学生姓名等基本字段

2-学生成绩字段

3-实现成绩修改和基本统计输出

 #include<iostream>
#include<windows.h>
#include<fstream>
#include<cstring>
using namespace std;
const int MAX=;
const char* savefile="info.dat"; //文件保存地址
class student//先定义一个学生信息类,内部的成员变量是公有的。
{public:
char name[];//学生姓名
int stu_no;//学号,只能输入数字
double c_score;//分数,双浮点类型
};
class ManageStu
{public:
ManageStu();//初始化
~ManageStu();
void controlsystem();
private:
void menu();//菜单
void input();//输入学生成绩
void displayone(int i,int style=);
void search();//按照学号和姓名查询成绩
void ModifyScore() ;//修改学生成绩
void waitkey();//等待输入按键函数
void statistics();//统计,最低成绩,最高成绩,总成绩和平均成绩
void Initial();//从数据记录中下载数据
void Save();//将数据上传到数据库中
void displayarea(int low,int high);
void print();//显示输出
student stu[MAX];//最多放MAX的个学生
int N;//目前学生人数
};
//主菜单
void ManageStu::menu()
{
system("cls");
cout<<endl;
cout<<"\t\t ********************主菜单********************"<<endl;
cout<<"\t\t|| 1-输入学生成绩 ||"<<endl;
cout<<endl;
cout<<"\t\t|| 2-查询学生成绩 ||"<<endl;
cout<<endl;
cout<<"\t\t|| 3-修改学生成绩 ||"<<endl;
cout<<endl;
cout<<"\t\t|| 4-学生成绩分段显示 ||" <<endl;
cout<<endl;
cout<<"\t\t|| 5-成绩统计信息 ||" <<endl;
cout<<endl;
cout<<"\t\t|| 0-退出 ||"<<endl;
cout<<"\t\t **********************************************" <<endl;
cout<<"选择操作(0-5):";
}
//总控制函数,在里面将所有的功能选择使用
void ManageStu::controlsystem()
{
cout<<endl;
cout<<"===============================================================================\n"<<endl;
cout<<"\n\n 欢迎进入2013级计算机系C++学生成绩管理系统 ";
cout<<endl;
cout<<"\n\n 作者:陈龙\n";
cout<<"===============================================================================\n"<<endl;
Sleep() ;
OPEN://本段程序的标签,可以方便循环操作
menu();//调用菜单
int cho;//输入调用菜单中的选项
cin>>cho;
system("cls");//选择相应的操作后,清除屏幕上的其他信息,只显示要操作的信息
switch(cho)//选择结构,灵活进入各个功能
{
case :input();break;
case :search();break;
case :ModifyScore();break;
case :print();break;
case :statistics();break;
case :return;//程序结束的地方
default: goto OPEN; //输入错误,默认重新开始
}
goto OPEN;
}
void ManageStu::input()//输入函数实现代码
{//输入相应的信息
char conti='Y';
do{
cout<<"根据提示输入信息"<<endl;//提示信息
cout<<"学号:";cin>>stu[N].stu_no;
cout<<"姓名:";cin>>stu[N].name;
cout<<"C++成绩: ";cin>>stu[N].c_score;
cout<<"是否继续输出(y/n): ";cin>>conti;
N++;
}while(conti=='Y'||conti=='y');//判断是否继续输入
}
void ManageStu::displayone(int i,int style)
{
if(style==)
{
cout<<"学号:"<<stu[i].stu_no<<endl;
cout<<"姓名:"<<stu[i].name<<endl;
cout<<"C++成绩:" <<stu[i].c_score<<endl;
}
else
{
cout<<"学号:"<<stu[i].stu_no<<" ";
cout<<"姓名:"<<stu[i].name<<" ";
cout<<"C++成绩:" <<stu[i].c_score<<endl;
}
}
void ManageStu::search()
{//查询代码实现
int choice;
SEAR:{
system("cls");
cout<<"\t *************查询方式***************"<<endl;
cout<<"\t|| 1-学号查询 ||"<<endl;
cout<<endl;
cout<<"\t|| 2-姓名查询 ||"<<endl;
cout<<endl;
cout<<"\t|| 0-返回上一级菜单 ||"<<endl;
cout<<"\t ***********************************" <<endl;}
cout<<"选择查询方式(1,2):";cin>>choice;
int result=-;//保存查找到的信息
switch(choice)
{
case :{
int stuno;
cout<<"输入学号:";cin>>stuno;
for(int i=;i<N;i++)//遍历查询相符合的信息
{
if(stu[i].stu_no==stuno)
{
result=i;//保存到result
break;//退出查询
}
}
break;}
case :{
char name[];
cout<<"输入姓名:";cin>>name;
for(int i=;i<N;i++) //遍历查询
{
if(!strcmp(stu[i].name,name))
{
result=i;
break;
}
}
break;
}
case : return;
default: goto SEAR;//选择错误默认返回初始菜单状态
}
if(result==-)//如果result的值没有改变说明没有找到
{
cout<<"没有符合条件的学生!";
}
else{
cout<<"查询结果:"<<endl;
displayone(result);
}
char ch;
cout<<"是否继续查询(y/n):";cin>> ch;
if(ch=='y'||ch=='Y')goto SEAR;//如果继续查询则返回初始菜单状态
//否则默认退出本函数
}
void ManageStu::ModifyScore()
{//修改分数代码实现
MODI:
int result=-;//保存查找的结果
char name[];
cout<<"输入学生姓名:";cin>>name;
for(int i=;i<N;i++)
{
if(!strcmp(stu[i].name,name))
{
result=i;
break;
}
}
if(result==-)
{
cout<<"没有符合条件的学生"<<endl;
}
else
{
cout<<"查询结果:"<<endl;
displayone(result);
cout<<endl;
cout<<"输入"<<stu[result].name<<"的新成绩";cin>>stu[result].c_score;
cout<<"修改后的信息如下"<<endl;
displayone(result);
cout<<endl;
}
char ch;
cout<<"是否继续查询修改(y/n):";cin>> ch;
if(ch=='y'||ch=='Y')goto MODI;
}
void ManageStu::waitkey()//等待按键的函数实现代码
{
cout<<endl<<"按ENTER键退出"<<endl;
getchar();//等待按键,以留在所操作的节面上,
getchar();//按键后就可以返回主界面
}
void ManageStu::statistics()//统计学生信息实现代码
{
if(N==)
{
cout<<"没有学生信息"<<endl;
waitkey();return;
}
double sum=stu[].c_score;//保存总分
int result=;//保存分数最高者的编号
int lows=;//保存分数最低者的编号 for(int i=;i<N;i++)
{
if(stu[i].c_score>stu[result].c_score)
result=i;
else if(stu[i].c_score<stu[result].c_score)
lows=i;
sum+=stu[i].c_score;
}
cout<<"\t\t总成绩是:\t\t"<<sum<<endl;
cout<<"\t\t平均成绩是:\t\t"<<sum/N<<endl;
cout<<endl;
cout<<"=============================================="<<endl;
cout<<"\t\t最高成绩:\t\t"<<endl;
displayone(result) ;
cout<<endl;
cout<<"=============================================="<<endl;
cout<<"\t\t最低成绩:\t\t"<<endl;
displayone(lows);
cout<<endl;
waitkey();//代码作用同上
}
ManageStu::ManageStu()
{
N=;//初始化0个学生
Initial();//调用初始化代码,从文件中下载学生信息
}
ManageStu::~ManageStu()
{
Save();//当退出时自动保存到 文件中
}
void ManageStu::Initial()
{
ifstream in(savefile,ios::in);//打开文件,输入模式
while(in>>stu[N].stu_no)//直到将文件中的信息全部加载完为止
{
in>>stu[N].name>>stu[N].c_score;
N++;//自动使记录加一
}
in.close();//关闭文件句柄
}
void ManageStu::Save()//保存文件
{
ofstream out(savefile,ios::out);//打开文件,输出模式
for(int i=;i<N;i++)//将所有的信息保存到文件中
{
out<<stu[i].stu_no<<" "<<stu[i].name<<" "<<stu[i].c_score<<endl;
}
out.close();//关闭文件句柄
}
//按照最低分最高分查询相应分数段信息
void ManageStu::displayarea(int low,int high)
{
cout<<low<<"<=成绩 <"<<high<<" :"<<endl;
for(int i=;i<N;i++)
{
if(stu[i].c_score>=low&&stu[i].c_score<high)
{
displayone(i,);//调用输出单个信息的函数,指定style参数为1
//即按照第二种格式输出
} }
}
void ManageStu::print()
{//调用按照最低分和最高分查询信息的函数输出相应分数段的信息
if(N==){
cout<<"没有学生成绩" <<endl;
waitkey();return;
}
//>=90
displayarea(,);
//80-89
displayarea(,);
//70-79
displayarea(,);
//60-70
displayarea(,);
//0-60
displayarea(,);
waitkey();//在此等待按键,若不按键就会留在这个输出界面上
//否则无法留在输出界面,直接返回菜单,导致无法看到输出结果
}
int main()
{
ManageStu command;
command.controlsystem();//调用控制函数实现代码
return ;
}

C++实现成绩管理模拟系统的更多相关文章

  1. 学生成绩管理C语言版

    [标题]学生成绩管理的设计与实现 [开发语言]C语言 [概要设计]使用结构体存储学生的学号.姓名和成绩信息,实现对学生成绩类的基本操作:增加.删除.查询.排序 [测试数据]按提示输入5组正确的正确的数 ...

  2. 学生成绩管理C++版

    [标题]学生成绩管理的设计与实现 [开发语言]C++ [主要技术]STL [概要设计]类名:student 类成员:No.Name.Math.Eng.Chn.Cpro.Sum 成员函数:getname ...

  3. JAVA课程设计 学生成绩管理

    学生成绩管理 可实现功能: 添加学生功能:姓名.学号.性别.出生年月日.(学号自动生成且唯一) 添加学生成绩功能:每个人都有数学.Java与体育四门课,可分课程输入成绩. 根据学生学号查找学生成绩功能 ...

  4. C语言文件实现学生成绩管理

    C语言实现学生成绩管理 项目简介 用C语言的链表及文件操作实现学生成绩的管理,实现主要的添加.修改.删除.查询的主要功能,并在程序关闭时将数据存储在二进制的文件中并加密.下一次打开程序,先解密二进制文 ...

  5. DDD实战成绩管理---用户故事

    本次DDD实践选取我们都熟悉的高校成绩管理作为例子. (一).需求描述 每学期学校教务处老师会进行教学安排,具体就是建立教学班,指定该教学班代课教师,上课学生,然后进行排课(忽略此部分,这是另一个系统 ...

  6. JAVA基础代码分享--学生成绩管理

    问题描述: 从键盘读入学生成绩,找出最高分,并输出学生成绩等级. 成绩>=最高分-10  等级为’A’   成绩>=最高分-20  等级为’B’ 成绩>=最高分-30  等级为’C’ ...

  7. JAVA课程设计个人博客 学生成绩管理 201521123023 戴建钊

    1. 团队课程设计博客链接 http://www.cnblogs.com/kawajiang/p/7062407.html 2.个人负责模块或任务说明 我主要负责实现随机生成10万个学生及其姓名.学号 ...

  8. JAVA课程设计个人博客 学生成绩管理 201521123001 张陈东芳

    1. 团队课程设计博客链接 http://www.cnblogs.com/kawajiang/p/7062407.html 2.个人负责模块或任务说明 我主要负责实现学生信息的添加功能.学生成绩的录入 ...

  9. JAVA课程设计个人博客 学生成绩管理 201521123014 黄绍桦

    1. 团队课程设计博客链接 http://www.cnblogs.com/kawajiang/p/7062407.html 2.个人负责模块或任务说明 本人主要负责DAO模式.添加和修改学生的信息功能 ...

随机推荐

  1. Logistic回归 逻辑回归 练习——以2018建模校赛为数据源

    把上次建模校赛一个根据三围将女性分为四类(苹果型.梨形.报纸型.沙漏)的问题用逻辑回归实现了,包括从excel读取数据等一系列操作. Excel的格式如下:假设有r列,则前r-1列为数据,最后一列为类 ...

  2. 常用DOS指令备忘

    1.删除整个目录,包括空目录 rd D:\管理\2012新同学练习\.svn /s/q /s 删除当前目录及子目录 /q 不询问直接删除 2.拷贝目录树 xcopy D:\管理\2012新同学练习 E ...

  3. rhel6 mysql skip-grant-tables 添加用户报错 ERROR 1290

    不小心把数据库密码忘掉了, 这个时候我们只需要在数据库的配置文件里面添加 skip-grant-tables 然后重新启动服务,再登录数据库就不要我们输入密码了 这个时候我成功登录数据,可是不小心又把 ...

  4. nagios监控安装esxi的服务器(宿主机)

    首先,该博文大部分内容来自网络,少部分是自己监控过程中遇到的问题.如果有侵权,请联系告知!!! 现在互联网公司,有能力的都是自己研发监控系统,要么就是zabbix或者小米的监控,还都二次开发等等,可能 ...

  5. ES6的新特性(21)——Proxy

    Proxy 概述 Proxy 用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种“元编程”(meta programming),即对编程语言进行编程. Proxy 可以理解成,在目标对 ...

  6. 浅谈TSM概念、系统架构及技术发展

    NFC作为一种近距离的无线通信技术,提供了一种更直接.更安全的现场交互解决方案.它能够允许电子设备之间进行非接触式点对点数据传输,实现数据交换.访问内容与服务.有了它,手机不再只是打电话.发短信以及上 ...

  7. 初识 es6

    es6 可能出来已经有一段时间了,但是我到今天才发现他的好,却不是很了解他,也不知道各个浏览器的兼容性怎么样?今天就把他们都弄明白. 新增命令 let ES6新增了let命令,用来声明变量.它的用法类 ...

  8. Hadoop HDFS环境搭建

    1,首先安装JDK,下面如果JDK出现安装错误,可以卸载 卸载 1.卸载用 bin文件安装的JDK方法: 删除/usr/java目录下的所有东西 2.卸载系统自带的jdk版本方法: 查看自带的jdk: ...

  9. selenium Object Page 设计模式理解及实现!

    Page Object模式是Selenium中的一种测试设计模式,主要是将每一个页面设计为一个Class,其中包含页面中需要测试的元素(按钮,输入框,标题 等),这样在Selenium测试页面中可以通 ...

  10. linux学习笔记4

    查看当前系统还有哪些用户 who 字符计数 wc -l(line) 可以统计有多少行 -w(word) 可以统计有多少个单词 -c(character) 可以统计有多少个字符  切个字符 - 排序 l ...