开发学籍管理系统(3个核心机密)


实验项目名称 学生学籍管理系统

一、实验目的

通过设计一个小型的应用系统,使学生进一步掌握面向对象的程序设计方法开发学籍管理系统开发学籍管理系统,运用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
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上无法顺利运行

原因:

vs2019不识别万能头文件即#includevs2019会对freopen函数报错

解决:

将万能头文件删去,换成下列头文件

#include
#include
#include
#include
#include 

在vs2019里取消对freopen的报错,点击链接,参考这篇博客

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


免费领取: 只要加微信,回复“入门视频”,即刻获取 全网最系统,最容易入门的的Web前端入门全套视频,C语言入门全套入门视频,大数据全套入门视频,PhP全套入门视频,Pathon全套入门视频,Java全套入门视频!!!微信号:18370228235 ,立即领取!
版权申明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站不拥有所有权,不承担相关法律责任。如发现有侵权/违规的内容, 联系QQ892482387,本站将立刻清除。

分享到