在完成一学期的C++语言学习之后,写一个学生信息管理系统来丰富自己的实战经验。

课设内容的要求有主菜单模块、输入模块、查询模块、更新模块、排序模块、统计模块和输出模块,并且通过主菜单模块调用各个子模块。
主菜单模块须有循环嵌套语句实现用户不断对功能进行选择,并实现首次使用系统有录入信息的功能。
输入模块需要通过键盘输入信息并能输出到文件,说明程序必须包括文件操作流。
查询模块可分为两个子模块,分别通过姓名查询和学号查询并显示相应查询结果。
更新模块不仅更新还要确认是否保存到文件,要有if语句的运用。这样就可以结合输入模块运用同一个函数确认是否保存到文件。
排序模块可选择冒泡排序或者选择排序法,也需要将排序结果输出到屏幕,此时可以与其他有关的需要输出到屏幕上的模块调用同一个输出函数。
统计模块用if语句实现对各个区间的分数段实现输出到屏幕。
输出模块需要对所有信息进行输出,主要在排版问题上,要注意排版问题。用setw控制长度,在主函数里用switch()-case来控制用户的选择功能,调用相应函数,应用清屏函数相应美化界面会使用户获得较好的系统使用体验值。

源码如下所示

#include<iostream>
#include<fstream>
#include<conio.h>        //调用getch()的头文件
#include<string.h>       //对字符串的操作函数调用的头文件
#include<iomanip>
#include<stdlib.h>       //调节颜色头文件
using namespace std;
struct student
{char number[30];char name[30];char sex[3];double score[4];
}Stu[1000];
void input();             //输入学生信息
void save();              //保存学生信息
void readfile();          //读取学生信息
void search();            //查找学生信息
void search_number();     //按学号查找
void search_name();       //按姓名查找
void print(int i);        //单个输出函数
void output();            //输出学生信息
void clean();             //清屏
void add();               //添加学生信息
void del();               //删除学生信息
void change();            //修改学生信息
void order();             //排序
void Norder(int type);    //排序小函数
void no();                //统计各科各分数段以及不及格人数
int N=0;
int main()
{system("color F0");cout<<"                                            欢迎来到学生成绩管理系统!!!\n"<<endl;{cout<<"                                      --请输入任意键继续,进入个人信息页面--\n"<<endl;getch();//以下为输入学生信息模块system("color 1E");readfile();//从文件读取数据cout << "文件已经录入了" << N << "组数据,若仍需要增加,请您在管理系统中使用添加功能继续添加:\n";cout << "--请按任意键继续--\n";getch();system("CLS");//以下为管理功能模块int n;//n为功能选择参数while (true){system("color 1E");cout <<"                                           欢迎来到学生管理系统!!!\n"<<endl;cout << "                                             共有" << N << "名学生" << endl;cout << "                                            请选择所需要的功能0-8" << endl;cout << "                                            1-对学生信息进行输入" << endl;cout << "                                            2-对学生信息进行查看" << endl;cout << "                                            3-对单一学生信息进行查找" << endl;cout << "                                            4-对学生信息进行删除" << endl;cout << "                                            5-对学生信息进行修改" << endl;cout << "                                            6-对学生信息进行增添" << endl;cout << "                                            7-对学生信息进行排序输出" << endl;cout << "                                            8-对学生信息进行统计" << endl;cout << "                                            0-退出" << endl;cin >> n;system("cls");switch (n){case 1:{input();clean();break;}case 2:{output();clean();break;}case 3:{search();break;}case 4:{del();clean();break;}case 5:{change();clean();break;}case 6:{add();clean();break;}case 7:{order();clean();break;}case 8:{no();clean();break;}case 0:{system("cls");cout<<"****************************************************"<<endl;cout<<"————老师您辛苦了,谢谢老师!————"<<endl;cout<<"****************************************************"<<endl;return 0;}default:{system("color FB");cout<<"输入错误,请重新输入!\n"<<endl;system("CLS");break;}}}}return 0;
}//输入学生信息
void input()
{   system("color 20");cout<<"-------------输入学生信息-----------"<<endl;int n;cout << "首次输入学生信息个数为" << endl;cin >> n;for(int i=0;i<n;i++){cout<<"-------------输入学生信息-----------"<<endl;cout<<"请输入学生的学号:"<<endl;cin>>Stu[i].number;cout<<"请输入学生的姓名:"<<endl;cin>>Stu[i].name;cout<<"请输入学生的性别:"<<endl;cin>>Stu[i].sex;cout<<"请输入学生的高等数学成绩:"<<endl;cin>>Stu[i].score[0];cout<<"请输入学生的英语成绩:"<<endl;cin>>Stu[i].score[1];cout<<"请输入学生的计算机成绩:"<<endl;cin>>Stu[i].score[2];Stu[i].score[3] = (Stu[i].score[0] + Stu[i].score[1] + Stu[i].score[2]) / 3;N++;save();system("cls");}
}//读取学生信息
void readfile()
{fstream fcin;fcin.open("zxl.txt",ios::in);N=0;for(int i=0;!fcin.eof();i++)//eof是文件末尾,文件没读到文件末尾{fcin>>Stu[i].number;fcin>>Stu[i].name;fcin>>Stu[i].sex;fcin>>Stu[i].score[0];fcin>>Stu[i].score[1];fcin>>Stu[i].score[2];Stu[i].score[3]=(Stu[i].score[0]+Stu[i].score[1]+Stu[i].score[2])/3;if((Stu[i].number[0]>='0')&&(Stu[i].number[0]<='9'))N++;}fcin.close();
}//输出学生信息
void output()
{int i;system("color B4");cout << "查看学生信息\n";cout << left;//左对齐cout << "---------------------------------------------长大学生登记信息表-----------------------------------\n";cout << "|学号        |姓名         |性别         |数学        |英语       |计算机      |平均分        " << endl;cout << "--------------------------------------------------------------------------------------------------------------\n";for (i = 0; i<N; i++){cout << "|" << setw(14) << Stu[i].number << "|" << setw(14) << Stu[i].name << "|" << setw(14) <<Stu[i].sex << "|" << setw(14) <<Stu[i].score[0] << "|" << setw(14) << Stu[i].score[1] << "|" << setw(14) << Stu[i].score[2] << "|"<< setw(14) <<Stu[i].score[3] << endl;cout << "--------------------------------------------------------------------------------------------------------------\n";}clean();
}//保存学生信息
void save()
{ofstream fcout("zxl.txt", ios::trunc);//ios::trunc是覆盖原有内容(课本236页)int i;for (i = 0; i<N; i++){fcout <<Stu[i].number << "\t" << Stu[i].name << "\t" <<Stu[i].sex << "\t" <<Stu[i].score[0] << "\t"<<Stu[i].score[1] << "\t" <<Stu[i].score[2] <<endl;}fcout.close();
}
//查找学生信息
void search()
{system("color 82");int n;while (true){cout << "1  通过学号查找;" << endl;cout << "2    通过姓名查找;" << endl;cout << "0    返回上一级;" << endl;cin >> n;system("cls");switch (n){case 1:{search_number();getch();break;}case 2:{search_name();getch();break;}case 0:{return;}default:{cout << "输入错误!请重新输入" << endl;getch();continue;}}}
}
//按学号查找
void search_number()
{int i;char number[30];int flag = 0;cout << "请输入学号:" << endl;cin >> number;for (i = 0; i < N; i++){if (strcmp(Stu[i].number ,number)==0){flag = 1;print(i);}}if (flag==0)cout << "没有该生!" << endl;
}
//按姓名查找
void search_name()
{int i;int flag = 0;char name[30];cout << "请输入姓名" << endl;cin >> name;for (i = 0; i < N; i++){if (strcmp( Stu[i].name , name)==0){print(i);flag = 1;}}if(flag==0)cout << "没有该生!" << endl;
}
//输出单个学生信息
void print(int i)
{cout << "找到该生!(顺序为:学号、姓名、性别、高数成绩、英语成绩、计算机成绩、平均成绩)"<<endl;cout << Stu[i].number << "\t" << Stu[i].name << "\t" << Stu[i].sex << "\t" << Stu[i].score[0] << "\t" << Stu[i].score[1] << "\t" <<Stu[i].score[2] <<"\t"<<(Stu[i].score[0]+ Stu[i].score[1]+ Stu[i].score[2])/3<<endl;
}//添加学生信息
void add()
{system("color 4B");N=N+1;cout<<"-------------添加学生信息-----------"<<endl;cout<<"请输入添加学生的学号:"<<endl;cin>>Stu[N-1].number;cout<<"请输入添加学生的姓名:"<<endl;cin>>Stu[N-1].name;cout<<"请输入添加学生的性别:"<<endl;cin>>Stu[N-1].sex;cout<<"请输入添加学生的高等数学成绩:"<<endl;cin>>Stu[N-1].score[0];cout<<"请输入添加学生的英语成绩:"<<endl;cin>>Stu[N-1].score[1];cout<<"请输入添加学生的计算机成绩:"<<endl;cin>>Stu[N-1].score[2];Stu[N - 1].score[3] = (Stu[N - 1].score[0] + Stu[N - 1].score[1] + Stu[N - 1].score[2]) / 3;cout<<"是否保存?(1是0否)"<<endl;int z;cin>>z;if(z==1)save();else{N--;cout << "未存入原\"zxl.txt\"文件" << endl;}
}//删除学生信息
void del()
{system("color 60");int n, x;while (true){cout << "1   按学号查找并删除" << endl;cout << "2  按姓名查找并删除" << endl;cout << "0  返回上一级      " << endl;cin >> n;switch (n){case 1:{int i;char number[30];int flag = 0;cout << "请输入学号:" << endl;cin >> number;for (i = 0; i < N; i++){flag = i;if (strcmp(Stu[i].number , number)==0){print(i);for (int a = flag-1; a < N-1; a++)//flag-1是因为i++导致最后多了一个{Stu[a] = Stu[a + 1];N--;}cout << "是否保存本次删除?(1是,0否)" << endl;cin >> x;if (x==1){cout << "已添加到文件" << endl;save();}else{ readfile();break;}}else {cout << "输入错误!" << endl;break;}} break;}case 2:{int i;int flag = 0;char name[30];cout << "请输入姓名" << endl;cin >> name;for (i = 0; i < N; i++){flag=i;if (strcmp(Stu[i].name, name) == 0){print(i);for (int a = flag-1; a < N; a++)//flag-1是因为i++导致最后多了一个{Stu[a] = Stu[a + 1];N--;}cout << "是否保存本次删除?(1是,0否)" << endl;cin >> x;if (x==1){cout << "已添加到文件" << endl;save();}else{ readfile();break;}}else{cout<<"输入错误!"<<endl;break;}}break;}case 0:{ return;}default:{cout << "输入错误!请重新输入" << endl;continue;}}}
}//修改学生信息
void change()
{system("color 37");int n, x, m;while (true){getch();system("cls");cout << "1    按学号查找并修改" << endl;cout << "2  按姓名查找并修改" << endl;cout << "0  返回上一级       " <<endl;cin >> n;switch (n){case 1:{int i,x;char number[30];int flag = 0;cout << "请输入学号:" << endl;cin >> number;for (i = 0; i < N; i++){if (strcmp(Stu[i].number , number)==0){flag = i;print(i);cout<<"修改该生的 1-高数成绩  2-英语成绩  3-计算机成绩" << endl;cin >> m;if (m == 1){cout << "将该科成绩修改为" << endl;cin >> Stu[flag].score[0];}else if (m == 2){cout << "将该科成绩修改为" << endl;cin >> Stu[flag].score[1];}else if (m == 3){cout << "将该科成绩修改为" << endl;cin >> Stu[flag].score[2];}else{cout << "输入有误!请重新输入" << endl;continue;}cout << "是否确认保存修改?(1是,0否)" << endl;cin >> x;if (x == 1){cout << "已保存修改" << endl;save();}else{readfile();}clean();}else{cout<<"按任意键返回"<<endl;continue;}}break;}case 2:{int i;int flag = 0;char name[30];cout << "请输入姓名" << endl;cin >> name;for (i = 0; i < N; i++){if (strcmp(Stu[i].name, name) == 0){flag = i;print(i);cout << "修改该生的  1-高数成绩  2-英语成绩  3-计算机成绩" << endl;cin >> m;if (m == 1){cout << "将该科成绩修改为" << endl;cin >> Stu[flag].score[0];}else if (m == 2){cout << "将该科成绩修改为" << endl;cin >> Stu[flag].score[1];}    else if (m == 3){ cout << "将该科成绩修改为" << endl;cin >> Stu[flag].score[2];}else{cout << "输入有误!请重新输入" << endl;continue;}cout << "是否确认保存修改?(1是,0否)" << endl;cin >> x;if (x == 1){cout << "已保存修改" << endl;save();}else{readfile();}clean();}else{    cout<<"按任意键返回"<<endl;continue;}}break;}case 0:return;default:{cout<<"输入错误,请重新输入!"<<endl;continue;}}}
}//清屏 没错误
void clean()
{cout << "--请按任意键返回--\n"<<endl;getch();system("CLS");
}//排序 没错误
void order()
{system("color A8");cout<<"请输入排序方式(1-4):"<<endl;cout<<"1————按高数成绩排序"<<endl;cout<<"2————按英语成绩排序"<<endl;cout<<"3————按计算机成绩排序"<<endl;cout<<"4————按平均成绩排序"<<endl;int x;cin>>x;if(x==1||x==2||x==3||x==4){Norder(x-1);output();int b;cout << "是否将排序结果存入文件?(1是,0否)" << endl;cin >> b;if (b==1)save();else{readfile();cout << "未存入原\"zxl.txt\"文件" << endl;}}elsecout<<"输入错误,";
}
void Norder(int type)//排序小函数(冒泡排序)
{int i, j;student t;int flag;for (i = 0; i<N; i++){flag = 0;for (j = 0; j<N - i - 1; j++)if (Stu[j + 1].score[type]> Stu[j].score[type]){t =Stu[j + 1];Stu[j + 1] = Stu[j];Stu[j] = t;flag = 1;}if (flag == 0)break;}
}//统计各科各分数段以及不及格人数
void no()
{system("cls");cout<<"请输入统计方式(1-4)"<<endl;cout<<"1——平均分\n"<<"2——高数\n"<<"3——英语\n"<<"4——计算机\n"<<endl;int p;cin>>p;int i;int a=0,b=0,c=0,d=0,e=0;switch(p){case 1:{for(i=0;i<N;i++){if(Stu[i].score[3]>=90)a++;else if(Stu[i].score[3]>=80)b++;else if(Stu[i].score[3]>=70)c++;else if(Stu[i].score[3]>=60)d++;elsee++;}break;}case 2:{for(i=0;i<N;i++){if(Stu[i].score[0]>=90)a++;else if(Stu[i].score[0]>=80)b++;else if(Stu[i].score[0]>=70)c++;else if(Stu[i].score[0]>=60)d++;elsee++;}break;}case 3:{for(i=0;i<N;i++){if(Stu[i].score[1]>=90)a++;else if(Stu[i].score[1]>=80)b++;else if(Stu[i].score[1]>=70)c++;else if(Stu[i].score[1]>=60)d++;elsee++;}break;}case 4:{for(i=0;i<N;i++){if(Stu[i].score[2]>=90)a++;else if(Stu[i].score[2]>=80)b++;else if(Stu[i].score[2]>=70)c++;else if(Stu[i].score[2]>=60)d++;elsee++;}break;}                                           default:{cout<<"输入错误,请重新输入!"<<endl;}}cout<<"该科成绩:"<<endl;cout<<"九十分以上的有"<<a<<"个"<<endl;cout<<"八十分以上的有"<<b<<"个"<<endl;cout<<"七十分以上的有"<<c<<"个"<<endl;cout<<"六十分以上的有"<<d<<"个"<<endl;cout<<"不及格的有"<<e<<"个"<<endl;
}`

实现效果图如下
程序运行主页面效果图

首页先显示当前学生数据

程序功能选择页面

这个程序是在刚学完c++的时候写的,现在看有很多不足之处,在学完Javaweb之后,我使用Javaweb又开发了一个学生信息管理系统,基于Javaweb的学生信息管理系统连接了数据库,功能也较为齐全可以供初学者参考。

Javaweb学生信息管理系统

基于C++的学生信息管理系统的实现相关推荐

  1. C语言涉及数组的大作业,c语言大作业_基于数组的学生信息管理系统.doc

    . . word完美格式 <C语言程序设计实训1>报告 设 计 题 目: 基于数组的学生信息管理系统 学 院 名 称: 科学技术学院 专 业: 软件工程 班 级: 108班 姓 名: 大神 ...

  2. 基于html5的学生管理系统,基于HTML5的学生信息管理系统的设计与实现

    [摘要] 目前学校依然使用人工对学生信息进行管理,没有相关的学生信息管理系统,虽然学校硬件和网络设施已经提高,但对网络的利用最多也就是用QQ来传送文件及信息,效率低下,这种状态急需改变. 基于这种现状 ...

  3. 基于JavaSwing开发学生信息管理系统(SQLServer数据库版本) 毕业设计 课程设计 大作业

    基于JavaSwing开发学生信息管理系统(SQLServer数据库版本):   (大作业) 开发环境: Windows操作系统 开发工具: MyEclipse+Jdk+SQLServer数据库 运行 ...

  4. 基于SSM的学生信息管理系统

    基于SSM的学生信息管理系统 摘要 随着互联网技术和国内教育行业持续高速地发展,管理员为了能够更加方便地管理学生信息,学生信息管理系统被开发出来的目的是为了能够更加方便管理学生信息,一个良好的学生信息 ...

  5. 基于swing+awt学生信息管理系统

    源码编号:F-A02 项目类型:Java SE项目(awt+swing)开源免费 项目名称:基于swing+awt学生信息管理系统(manager) 当前版本:V1.0.1版本 主要技术:java.a ...

  6. html实现学生系统,基于HTML5的学生信息管理系统的设计与实现

    摘要: 目前学校依然使用人工对学生信息进行管理,没有相关的学生信息管理系统,虽然学校硬件和网络设施已经提高,但对网络的利用最多也就是用QQ来传送文件及信息,效率低下,这种状态急需改变. 基于这种现状, ...

  7. [Java]基于JDBC的学生信息管理系统的实现

    基于JDBC的学生信息管理系统的实现 功能说明 数据库系统实现 0.建表过程 1.新生入学信息添加,学生信息修改 2.课程信息维护(增加新课程,修改课程信息,删除没有选课的课程信息) 3.录入学生成绩 ...

  8. 学生信息录入java,基于java的学生信息管理系统

    基于java的学生信息管理系统中分为多级角色管理:包括系统管理员.学生和老师几种权限,采用了开发技术JSP以及MYSQL数据库作为本系统的开发工具.主要包括新闻模块,考试模块,学生模块,教师模块,选课 ...

  9. 基于PHP+MySQL学生信息管理系统的开发与设计

    一直以来我国领导人提倡以人为本的治国方案,而大学是未来人才的培养基地,如何能够更好的对学生信息进行管理,是很多高校一直在研究的一个问题,只有更加科学的对学生信息进行管理,才能够更加积极的培养国家的栋梁 ...

最新文章

  1. 【干货】前端自学之路(持续更新)
  2. MySQL中,当 update 修改数据与原数据相同时会再次执行吗?
  3. java utf-8格式,JAVA编写文件格式转换UTF-8
  4. Spring学习笔记1
  5. linux在芯片设计与实现,基于Linux的Atheros无线芯片网卡驱动的设计与实现
  6. c语言 将结构体放在flash,如何将 结构体 的 数据 定义在flash里面,并如何读出来,求各位达人帮助……...
  7. 【Makefile由浅入深完全学习记录2】初识 makefile 的结构
  8. python visual studio pandas_pandas DataFrame索引行列的实现
  9. uboot启动第一阶段——start.S
  10. 如何使用 WinUSB 与 USB 设备 (USBDevice) 通信
  11. 传文件 华为云桌面_怎么避免亚马逊账号关联(二)?阿里云华为云ECS远程桌面教程...
  12. is_null,is_numeric
  13. 新兴IT企业特斯拉(七)——充电先行
  14. 水印相机定位不准确怎么办_水印相机怎么定位位置
  15. Windows下令QProcess弹出CMD界面
  16. 漫画:什么是服务熔断
  17. EPLAN_语言翻译工具的使用
  18. 12306 售票网站新版验证码识别对抗
  19. 7-6 勇争前三 (10 分)
  20. PHP curl 中文gbk转utf8

热门文章

  1. MacBook Pro如何安装Python编译器
  2. 一篇网络流 基本模型超全总结(最大流 费用流 多源汇最大流 上下界可行流) 思路+代码模板
  3. shellcode后门免杀
  4. 基于javaweb的在线电子书小说阅读系统(java+layui+springboot+mysql+html+ftp)
  5. Wondershare PDFelement Pro Mac(好用的PDF编辑器)
  6. 成都短期嵌入式培训有用吗?成都短期嵌入式培训好就业吗?
  7. 服务器获取密钥文件,如何获取云服务器时使用的私钥文件
  8. Silverlight + WCF错误“The remote server returned an error: NotFound.”的解决方法
  9. google authenticator 工作原理
  10. 网站包含哪几个模块?