实验项目名称 学生学籍管理系统
一、实验目的
通过设计一个小型的应用系统,使学生进一步掌握面向对象的程序设计方法,运用C++中的类与对象的概念结合面向对象程序设计的思想,独立完成应用系统的设计,并养成良好的编程习惯。通过这个实践教学平台,培养学生对计算机应用系统的综合设计能力,培养学生正确分析和解决问题的能力,了解系统开发的过程,逐步熟悉程序设计的方法。

二、实验要求

设计一个程序,对学生的学籍信息进行管理。通过该系统实现对学生基本信息的录入、保存、删除、修改、查询等操作。
设计要求及提示如下:
1、学生基本信息包括:学号、姓名、性别、年龄、班号、专业名称、系别等。
2、使用类和对象的概念实现程序设计。
3、以菜单形式显示各功能项。
4、各功能项如下:
(1)学生基本信息的录入。
(2)学生基本信息的删除。
(3)学生基本信息的修改。
(4)学生基本信息的查询。
(a)按学号查询单个学生信息;
(b)按姓名查询单个学生信息;
©按性别查询学生信息;
(d)按班号查询学生信息;
(5)学生基本信息的统计。
(a)按性别统计学生人数;
(b)按班号统计学生人数;
©按年龄统计学生人数;
(d)按系别统计学生人数;
(6)退出系统。
5、执行某个功能之后,程序将重新显示菜单供用户选择。
6、将学生学籍信息保存到文件中。

三、使用仪器、材料

使用CODE::BLACK编译器以及相关文件。

四.功能模块的设计分析及算法描述。

1.对于学生信息使用结构体Stu来储存;
2.创建一个Student,包含成员数据a[100](结构体Stu数组)和len(表总人数)以及各种成员函数file_cin()(从XS.txt中读取数据);
stu_cin()(录入函数);
stu_delete(int n)(删除函数);
stu_show() (输出到运行框上);
stu_vodify(int i)(修改函数);
stu_check(int flag)(查找函数);
stu_cal(int flag)(统计函数);
save()(输出到XS.txt);
3.使用system(“cls”)和while(cin>>flag)来实现界面的转换;
4.使用重定向来实现数据的读取与保存;(数据被储存在XS.txt中)
5.使用ofstream file(“XS.txt”, ios::trunc)来实现数据的更新;
6.使用文件夹将txt与运行程序放在一起,方便查找;

五.实验过程原始记录(源程序以及程序运行时的效果图)

#include<bits/stdc++.h>
using namespace std;
struct Stu//储存学生信息;
{int num;//学号string name;//名字string sex;//性别int year;//年龄int grade;//班级string major;//专业
};
class Student
{public:Stu a[100];int len;void file_cin()//从XS.txt中读取数据{freopen("XS.txt", "r", stdin);//重定向int n;cin>>n;len = n;for (int i=1; i<=n; i++){cin>>a[i].num>>a[i].name>>a[i].sex>>a[i].year>>a[i].grade>>a[i].major;}freopen("CON", "r", stdin);//关闭重定向}void stu_cin()//录入函数{len++;cout << "学号: ";cin>>a[len].num;cout << "姓名: ";cin>>a[len].name;cout << "性别: ";cin>>a[len].sex;cout << "年龄: ";cin>>a[len].year;cout << "班级: ";cin>>a[len].grade;cout << "专业: ";cin>>a[len].major;}void stu_delete(int n)//删除函数{for (int i=n; i<len; i++){a[i].num=a[i+1].num;a[i].name=a[i+1].name;a[i].sex=a[i+1].sex;a[i].year=a[i+1].year;a[i].grade=a[i+1].grade;a[i].major=a[i+1].major;}len--;}void stu_show()//输出到运行框上{for (int i=1; i<=len; i++){cout << i  << " ";cout << a[i].num  << " ";cout << a[i].name  << " ";cout << a[i].sex  << " ";cout << a[i].year  << " ";cout << a[i].grade  << " ";cout << a[i].major  << endl;}}void stu_vodify(int i)//修改函数{cout << a[i].num << " "<< a[i].name << " "<< a[i].sex << " "<< a[i].year << " "<< a[i].grade << " "<< a[i].major <<endl;cin>>a[i].num>>a[i].name>>a[i].sex>>a[i].year>>a[i].grade>>a[i].major;}void stu_check(int flag)//查找函数{if (flag==1)//按学号查询单个学生信息{cout << "请输入学号: ";int temp;cin>>temp;int judge=0;for (int i=1; i<=len; i++){if (a[i].num==temp){cout << a[i].num << " "<< a[i].name << " "<< a[i].sex << " "<< a[i].year << " "<< a[i].grade << " "<< a[i].major <<endl;judge=1;}}if (judge==0)cout << "数据库中午该学生信息! " << endl;}else if (flag==2)//按姓名查询单个学生信息{cout << "请输入姓名: ";string temp;cin>>temp;int judge=0;for (int i=1; i<=len; i++){if (a[i].name==temp){cout << a[i].num << " "<< a[i].name << " "<< a[i].sex << " "<< a[i].year << " "<< a[i].grade << " "<< a[i].major <<endl;judge=1;}}if (judge==0)cout << "数据库中午该学生信息! " << endl;}else if (flag==3)//按性别查询学生信息{cout << "请输入性别: ";string temp;cin>>temp;int judge=0;for (int i=1; i<=len; i++){if (a[i].sex==temp){cout << a[i].num << " "<< a[i].name << " "<< a[i].sex << " "<< a[i].year << " "<< a[i].grade << " "<< a[i].major <<endl;judge=1;}}if (judge==0)cout << "数据库中午该学生信息! " << endl;}else if (flag==4)//按班号查询学生信息{cout << "请输入班别: ";int temp;cin>>temp;int judge=0;for (int i=1; i<=len; i++){if (a[i].grade==temp){cout << a[i].num << " "<< a[i].name << " "<< a[i].sex << " "<< a[i].year << " "<< a[i].grade << " "<< a[i].major <<endl;judge=1;}}if (judge==0)cout << "数据库中午该学生信息! " << endl;}}void stu_cal(int flag)//统计函数{if (flag==1)//按性别统计学生人数{map<string ,int> ans;for (int i=1; i<=len; i++){ans[a[i].sex]++;}map<string ,int >::iterator it;for (it=ans.begin(); it!=ans.end(); it++){cout << it->first << " " << it->second << endl;}}else if (flag==2)//按班号统计学生人数{map<int ,int> ans;for (int i=1; i<=len; i++){ans[a[i].grade]++;}map<int ,int >::iterator it;for (it=ans.begin(); it!=ans.end(); it++){cout << it->first << " " << it->second << endl;}}else if (flag==3)//按年龄统计学生人数{map<int ,int> ans;for (int i=1; i<=len; i++){ans[a[i].year]++;}map<int ,int >::iterator it;for (it=ans.begin(); it!=ans.end(); it++){cout << it->first << " " << it->second << endl;}}else if (flag==4)//按系别统计学生人数{map<string ,int> ans;for (int i=1; i<=len; i++){ans[a[i].major]++;}map<string ,int >::iterator it;for (it=ans.begin(); it!=ans.end(); it++){cout << it->first << " " << it->second << endl;}}}void save()//输出到XS.txt{ofstream file("XS.txt", ios::trunc);file << len << endl;for (int i=1; i<=len; i++){file << a[i].num  << " ";file << a[i].name  << " ";file << a[i].sex  << " ";file << a[i].year  << " ";file << a[i].grade  << " ";file << a[i].major  << endl;}file.close();}
};
void print_windows()//打印选择功能界面
{cout << "\t\t\t\t\t\t\t学生学籍管理系统" << endl << endl << endl;cout << "\t\t\t\t(1)学生基本信息的录入。\t(2)学生基本信息的删除。" << endl<< endl << endl;cout <<"\t\t\t\t(3)学生基本信息的修改。\t(4)学生基本信息的查询。" << endl<< endl << endl;cout << "\t\t\t\t(5)学生基本信息的统计。\t(6)退出系统。" << endl << endl << endl;
}int main()
{Student stu;//实例化stu.file_cin();//输入系统数据print_windows();//打印选择功能界面int flag;//用户选择的功能while(cin>>flag){system("cls");if (flag==6)break;//退出系统else if (flag<1||flag>6)//非法输入的检查{cout << "无效操作" << endl;continue;}else if (flag==1)//学生基本信息的录入{cout <<"录入请输入1,返回请输入0" << endl;int temp_flag;while(cin>>temp_flag){system("cls");if (temp_flag==0){break;}else{stu.stu_cin();}cout <<"录入请输入1,返回请输入0" << endl;}}else if (flag==2)//学生基本信息的删除{stu.stu_show();int temp_flag;cout << "请输入想删除信息的序号或者输入0返回: ";while(cin>>temp_flag){system("cls");if (temp_flag==0){ break;}else if (temp_flag>0&&temp_flag<=stu.len){stu.stu_delete(temp_flag);stu.stu_show();cout << "请输入想删除信息的序号或者输入0返回: ";}else{cout << "输入非法!请再次输入: ";}}}else if (flag==3)//学生基本信息的修改{stu.stu_show();cout << "请输入需要修改信息的序号或者输入0返回: ";int temp_flag;while(cin>>temp_flag){system("cls");if (temp_flag==0)break;else if (temp_flag>0&&temp_flag<=stu.len)stu.stu_vodify(temp_flag);else cout << "输入非法! 请重新输入: ";cout << "请输入需要修改信息的序号或者输入0返回: ";}}else if (flag==4)//学生基本信息的查询{cout << "(1)按学号查询单个学生信息;" << endl;cout << "(2)按姓名查询单个学生信息;" << endl;cout << "(3)按性别查询学生信息;" << endl;cout << "(4)按班号查询学生信息;" << endl << endl;cout << "请选择任一项或者输入0返回: ";int temp_flag;while(cin>>temp_flag){system("cls");if(temp_flag==0)break;else if (temp_flag>0&&temp_flag<=4){stu.stu_check(temp_flag);}else cout << "输入非法! 请重新输入: ";cout << "(1)按学号查询单个学生信息;" << endl;cout << "(2)按姓名查询单个学生信息;" << endl;cout << "(3)按性别查询学生信息;" << endl;cout << "(4)按班号查询学生信息;" << endl << endl;cout << "请选择任一项或者输入0返回: ";}}else if (flag==5)//学生基本信息的统计{cout << "(1)按性别统计学生人数;" << endl;cout << "(2)按班号统计学生人数;" << endl;cout << "(3)按年龄统计学生人数;" << endl;cout << "(4)按系别统计学生人数;" << endl;cout << "请选择一项或者输入0返回: ";int temp_flag;while(cin>>temp_flag){system("cls");if (temp_flag==0)break;else if (temp_flag>0&&temp_flag<=4){stu.stu_cal(temp_flag);}else cout << "输入非法! 请重新输入: ";cout << "(1)按性别统计学生人数;" << endl;cout << "(2)按班号统计学生人数;" << endl;cout << "(3)按年龄统计学生人数;" << endl;cout << "(4)按系别统计学生人数;" << endl;cout << "请选择一项或者输入0返回: ";}}print_windows();//打印选择功能界面}stu.save();return 0;
}

我的个人hexo博客.

运行图略

六.实验总结与心得

通过类和结构体可以有效提高代码重用性和可读性;
可以使用文件来储存数据;
面向对象的思想让程序维护更简单,添加功能更方便

七. 关于vs2019上无法顺利运行

原因:

  1. vs2019不识别万能头文件即#include<bits/stdc++.h>
  2. vs2019会对freopen函数报错

解决:

  1. 将万能头文件删去,换成下列头文件
#include<iostream>
#include<Windows.h>
#include<algorithm>
#include<map>
#include <fstream>
  1. 在vs2019里取消对freopen的报错,点击链接,参考这篇博客

注:如果程序运行突然错误退出,请检查txt文件和程序的编码方式是否一致,不一致会导致文件读写错误。

[C++]学生学籍管理系统相关推荐

  1. 学籍管理系统 c语言流程图,程序设计基础 ——C语言第10章 综合应用案例——学生学籍管理系统...

    程序设计基础 第 10章 综合应用 案例 -学生学籍 管理系统 1 详细设计 需求分析 总体设计 第 10章 综合应用 案例 -学生学籍管理系统 编码实现 运行结果 2 设计一个利用 文件 处理方式, ...

  2. C语言课程设计——学生学籍管理系统

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

  3. C语言编程学生学籍登录窗口,C语言实现学生学籍管理系统

    本文实例为大家分享了C语言实现学生学籍管理系统的具体代码,供大家参考,具体内容如下 #include #include #include #include #include //*********** ...

  4. 学生签到系统c代码_C语言实现简单学生学籍管理系统

    #include #include #include #include #define N 100 /*存储100个学生的学籍信息*/ int flag; /*标记是否登录*/ struct date ...

  5. 学生学籍管理系统python_使用Python实现 学生学籍管理系统

    大家好,今天跟大家分享一个用Python实现的学生学籍管理系统: 该代码主体由五个函数组成: 1.add_stu() 添加 2.del_stu() 删除 3.print_stu()打印 4.exit_ ...

  6. 用C#连接到数据库实现学生学籍管理系统

    用C#连接到数据库实现学生学籍管理系统 前言 想必兄台是个正在实训阶段的大学生吧,如果你的实训内容是使用C#开发一个学生信息管理系统的话,那么这篇文章或许正好可以帮到你,说不定还让你的作品脱颖而出呢, ...

  7. c语言学籍管理实验报告,c语言实验报告(学生学籍管理系统)

    c语言实验报告(学生学籍管理系统) (20页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.90 积分 实实 验验 报报 告告学学 生生 学学 籍籍 ...

  8. 基于java的学生学籍管理系统(含源文件)

    欢迎添加微信互相交流学习哦! 项目源码:https://gitee.com/oklongmm/biye 目录 内容摘要    - 2 - 引言    - 4 - 学生学籍管理系统开发的意义和目的   ...

  9. c语言学生学籍管理修改,C语言课设之学生学籍管理系统.doc

    C语言课设之学生学籍管理系统.doc 题目学生学籍管理系统 目录一.个人简介.二.报告摘要.三.报告目录.四.报告正文. 1.系统需求分析 2.系统总体设计 3.系统详细设计六.总结. 二.报告摘要 ...

  10. [内附完整源码和文档] 基于Java的学生学籍管理系统

    摘 要 学生学籍管理系统是一个教育单位不可缺少的重要部分之一,学生学籍内容对学校的管理者和决策者来说都是至关重要的,而传统的学籍管理方式十分的复杂繁琐.低效率,在计算机普及的现代,开发一个高效简便学生 ...

最新文章

  1. ML之DL:机器学习领域发展最快的分支【深度学习】的发展史及其重要性节点之详细攻略
  2. Zabbix 监控TCP的SYN,establised
  3. 什么是java四大引用?
  4. C++对C的加强之新增Bool类型关键字
  5. 使用Azure云原生构建博客是怎样一种体验?(下篇)
  6. 霍纳法树形流图中处理机p个数_2009系统结构试卷答案
  7. 【数据库实验课堂】实验三:管理SQL Server表数据
  8. oracle死锁优化,Oracle性能优化之LockContention(转)
  9. Magento: 后台添加预览按钮 View product in frontend from Magento admin
  10. 实现类的构造函数,析构函数和赋值函数
  11. 编程之美读书笔记2.14 - 子数组之和的最大值
  12. C/C++回调方式系列之二class接口回调和lambda程式
  13. 设计模式(Java)—Facade模式
  14. 一些快捷键的用法,linux终端操作下
  15. mysql怎么加载txt文本1148_MySQLload从文件读入数据提示ERROR1148
  16. TPTP测试项目的性能
  17. Python实现视频转 gif 动图
  18. 在受控主机上创建文件或目录
  19. Android 内存溢出、垃圾回收、四种引用
  20. jQuery选择器代码详解(一)——Sizzle方法

热门文章

  1. 【Java基础系列教程】第六章 Java面向对象详解(一)_类和类的成员
  2. python中str类型_python中str指的是什么类型
  3. docker安装Lefse和分析流程
  4. SAP注塑行业ERP系统软件的分析
  5. 大连IT产业解析(1布局篇)
  6. 《2020年国际会计事务所排名》
  7. 【机器学习】适用于机器学习初学者的8个小项目
  8. 三种存储类型和三种存储方式
  9. DDoS攻击类型和缓解手段
  10. Spring Validation 验证框架全面总结