C++实现成绩管理模拟系统
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++实现成绩管理模拟系统的更多相关文章
- 学生成绩管理C语言版
[标题]学生成绩管理的设计与实现 [开发语言]C语言 [概要设计]使用结构体存储学生的学号.姓名和成绩信息,实现对学生成绩类的基本操作:增加.删除.查询.排序 [测试数据]按提示输入5组正确的正确的数 ...
- 学生成绩管理C++版
[标题]学生成绩管理的设计与实现 [开发语言]C++ [主要技术]STL [概要设计]类名:student 类成员:No.Name.Math.Eng.Chn.Cpro.Sum 成员函数:getname ...
- JAVA课程设计 学生成绩管理
学生成绩管理 可实现功能: 添加学生功能:姓名.学号.性别.出生年月日.(学号自动生成且唯一) 添加学生成绩功能:每个人都有数学.Java与体育四门课,可分课程输入成绩. 根据学生学号查找学生成绩功能 ...
- C语言文件实现学生成绩管理
C语言实现学生成绩管理 项目简介 用C语言的链表及文件操作实现学生成绩的管理,实现主要的添加.修改.删除.查询的主要功能,并在程序关闭时将数据存储在二进制的文件中并加密.下一次打开程序,先解密二进制文 ...
- DDD实战成绩管理---用户故事
本次DDD实践选取我们都熟悉的高校成绩管理作为例子. (一).需求描述 每学期学校教务处老师会进行教学安排,具体就是建立教学班,指定该教学班代课教师,上课学生,然后进行排课(忽略此部分,这是另一个系统 ...
- JAVA基础代码分享--学生成绩管理
问题描述: 从键盘读入学生成绩,找出最高分,并输出学生成绩等级. 成绩>=最高分-10 等级为’A’ 成绩>=最高分-20 等级为’B’ 成绩>=最高分-30 等级为’C’ ...
- JAVA课程设计个人博客 学生成绩管理 201521123023 戴建钊
1. 团队课程设计博客链接 http://www.cnblogs.com/kawajiang/p/7062407.html 2.个人负责模块或任务说明 我主要负责实现随机生成10万个学生及其姓名.学号 ...
- JAVA课程设计个人博客 学生成绩管理 201521123001 张陈东芳
1. 团队课程设计博客链接 http://www.cnblogs.com/kawajiang/p/7062407.html 2.个人负责模块或任务说明 我主要负责实现学生信息的添加功能.学生成绩的录入 ...
- JAVA课程设计个人博客 学生成绩管理 201521123014 黄绍桦
1. 团队课程设计博客链接 http://www.cnblogs.com/kawajiang/p/7062407.html 2.个人负责模块或任务说明 本人主要负责DAO模式.添加和修改学生的信息功能 ...
随机推荐
- python常用快捷键
最重要的快捷键1. ctrl+shift+A:万能命令行2. shift两次:查看资源文件 新建工程第一步操作1. module设置把空包分层去掉,compact empty middle packa ...
- LeetCode 148——排序链表
1. 题目 2. 解答 2.1 快速排序 可参考 快速排序和归并排序 中的第一种快速排序思想,与在数组中排序有两点不同. 第一,我们需要取最后一个元素作为主元,在数组中可以直接访问到最后一个元素,但在 ...
- 【Python进阶】无论API怎么变,SDK都可以根据URL实现完全动态的调用
现在很多网站都搞REST API,比如新浪微博.豆瓣啥的,调用API的URL类似: http://api.server/user/friends http://api.server/user/time ...
- 亚马逊中国耳机巨头Jabra官方旗舰店上线
日前,亚马逊中国(Z.cn)宣布,全球无线技术顶级领导品牌 Jabra (捷波朗)官方旗舰店正式上线,产品品类涵盖蓝牙耳机.音乐耳机.无线音箱和车载系列产品.Jabra 旗舰店上线伊始便汇集了 60 ...
- 1.openldap介绍
1.openldap介绍 OpenLDAP是轻型目录访问协议(Lightweight Directory Access Protocol,LDAP)的自由和开源的实现,在其OpenLDAP许可证下发行 ...
- three的初步探索之表象篇
首先three.js是啥?用来干啥的?首先在谈这个之前,先说下canvas,canvas是h5新生的一个功能,可以用来画图,表达许多更绚丽的特效,然后canvas目前有个软当,就是只能2d,不支持三维 ...
- C++ STL栈和队列
在C++标准库(STL)中,实现了栈和队列,方便使用,在这里我整理了一下笔记,作简要介绍. 1,栈(stack): 头文件 : #include<stack> 定义栈 :stack< ...
- C++的反思与总结
博客作业学到的东西: 1.博客作业应该说是从寒假就开始了,因为博客作业,所以我寒假时都不敢玩得太疯狂,毕竟还有博客作业没做呢.有了博客作业,我就从一个连博客是什么都不知道无知少年,开始去了解博客是什么 ...
- Python学习 - 入门篇2(更新中)
前言 学习渠道:慕课网:Python进阶 记录原因:我只是想边上课边做笔记而已,呵呵哒 食用提示:教程环境基于Python 2.x,有些内容在Python 3.x中已经改变 函数式编程 定义:一种抽象 ...
- struts2--文件上传大小
Struts2文件上传的大小限制问题 问题:上传大文件报错-- 解决:修改struts.xml文件中的参数如下 <constant name="struts.multipart.max ...