程序设计课程设计 学生学籍管理系统

简介: 学生学籍管理系统

一、实验目的及要求

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

二、实验设备与平台

  1. 实验设备:计算机;
  2. 平台:Windows 2000操作系统,Visual C++ 6.0或Microsoft Visual Studio 2005/2008/2010/2012/2013。

三、实验内容与步骤

学生学籍管理系统:

设计一个程序,对学生的学籍信息进行管理。通过该系统实现对学生基本信息的录入、保存、删除、修改、查询等操作。

设计要求及提示如下:

1、学生基本信息包括:学号、姓名、性别、年龄、班号、专业名称、系别等。

2、使用类和对象的概念实现程序设计。

3、以菜单形式显示各功能项。

4、各功能项如下:

(1)学生基本信息的录入。

(2)学生基本信息的删除。

(3)学生基本信息的修改。

(4)学生基本信息的查询。

(a)按学号查询单个学生信息;

(b)按姓名查询单个学生信息;

©按性别查询学生信息;

(d)按班号查询学生信息;

(5)学生基本信息的统计。

(a)按性别统计学生人数;

(b)按班号统计学生人数;

©按年龄统计学生人数;

(d)按系别统计学生人数;

(6)退出系统。

5、执行某个功能之后,程序将重新显示菜单供用户选择。

6、将学生学籍信息保存到文件中。

#include<iostream>
using namespace std;
#include<string>
#define MAX 1000
void showMenu()
{
  cout << "***** 1:添加联系人 *****" << endl;
  cout << "***** 2:显示联系人 *****" << endl;
  cout << "***** 3:删除联系人 *****" << endl;
  cout << "***** 4:查找联系人 *****" << endl;
  cout << "***** 5:修改联系人 *****" << endl;
  cout << "***** 6:清空联系人 *****" << endl;
  cout << "***** 0:退出通讯录 *****" << endl;
}
struct person 
{
  string m_name;
  int m_sex;
  int m_age;
  string m_phone;
  string m_addr;
};
struct addressBooks
{
  struct person personArray[MAX];
  int size;
};
void addPerson(addressBooks * abs )
{
  if (abs->size > MAX)
  {
    cout << "通讯录已满" << endl;
  }
  else
  {
    string name, phone, addr;
    cout << "请输入姓名:";
    cin >> name;
    abs->personArray[abs->size].m_name = name;
    int sex, age;
    cout << "请输入性别,1代表男性,2代表女性:";   
    cin >> sex;
    abs->personArray[abs->size].m_sex = sex;
    cout << "请输入年龄:";
    cin >> age;
    abs->personArray[abs->size].m_age = age;
    cout << "请输入电话号码:";
    cin >> phone;
    abs->personArray[abs->size].m_phone = phone;
    cout << "请输入住址:";
    cin >> addr;
    abs->personArray[abs->size].m_addr = addr;
    abs->size++;
    cout << "添加成功" << endl;
    system("pause");
    system("cls");
  }
}
void showPerson(addressBooks* abs)
{
  if (abs->size== 0)
  {
    cout << "通讯录为空!" << endl;
  }
  else
  {
    for (int i = 0; i < abs->size; i++)
    {
      cout << "姓名:" << abs->personArray[i].m_name << '\t';
      cout << "性别:" <<(abs->personArray[i].m_sex==1?"男":"女")<< '\t';
      cout << "年龄:" << abs->personArray[i].m_age << '\t';
      cout << "号码:" << abs->personArray[i].m_phone << '\t';
      cout << "住址:" << abs->personArray[i].m_addr << endl;
    }
  }
  system("pause");
  system("cls");
}
int ifExit(addressBooks * abs,string name)
{
  for (int i = 0; i < abs->size; i++)
  {
    if (abs->personArray[i].m_name == name)
    {
      return i;
    }
  }
  return -1;
}
void delectPerson(addressBooks* abs)
{
  string name;
  cout << "请输入您想删除的联系人姓名:";
  cin >> name;
  int a= ifExit(abs, name);
  if (a == -1)
  {
    cout << "通讯录中无此人!" << endl;
  }
  else
  {
    for (int i = a; i < abs->size; i++)
    {
        abs->personArray[i] = abs->personArray[i + 1];
    }
    abs->size--;
    cout << "删除成功!" << endl;
  }
  system("pause");
  system("cls");
}
void searchPerson(addressBooks* abs, string name)
{
  int a = ifExit(abs, name);
  if (a == -1)
  {
    cout << "通讯录中无此人!" << endl;
  }
  else
  {
      cout << "姓名:" << abs->personArray[a].m_name << '\t';
      cout << "性别:" << (abs->personArray[a].m_sex == 1 ? "男" : "女") << '\t';
      cout << "年龄:" << abs->personArray[a].m_age << '\t';
      cout << "号码:" << abs->personArray[a].m_phone << '\t';
      cout << "住址:" << abs->personArray[a].m_addr << endl;
  }
  system("pause");
  system("cls");
}
void revisePerson(addressBooks* abs, string name)
{
  int a = ifExit(abs, name);
  if (a == -1)
  {
    cout << "通讯录中无此人!" << endl;
  }
  else
  {
    string name, phone, addr;
    cout << "请重新输入姓名:";
    cin >> name;
    abs->personArray[a].m_name = name;
    int sex, age;
    cout << "请重新输入性别,1代表男性,2代表女性:";
    cin >> sex;
    abs->personArray[a].m_sex = sex;
    cout << "请重新输入年龄:";
    cin >> age;
    abs->personArray[a].m_age = age;
    cout << "请重新输入电话号码:";
    cin >> phone;
    abs->personArray[a].m_phone = phone;
    cout << "请重新输入住址:";
    cin >> addr;
    abs->personArray[a].m_addr = addr;
    cout << "修改成功!" << endl;
  }
        system("pause");
    system("cls");
}
void cleanPerson(addressBooks* abs)
{
  abs->size = 0;
  cout << "通讯录已清空!" << endl;
  system("pause");
  system("cls");
}
int main()
{
  addressBooks abs;
  abs.size = 0;
  int select;
  while (1)
  {
    showMenu();
    cout << "请输入你的选择:";
    cin >> select;
    switch (select)
    {
    case 1:
      addPerson(&abs);
      break;
    case 2:
      showPerson(&abs);
      break;
    case 3:
      delectPerson(&abs);
      break;
    case 4:
    {
      string name;
      cout << "请输入您要查找的联系人姓名:";
      cin >> name;
      searchPerson(&abs, name);
      break;
    }
    case 5:
    {
      string name;
      cout << "请输入您要修改的联系人姓名:";
      cin >> name;
      revisePerson(&abs, name);
      break;
    }
      break;
    case 6:
      cleanPerson(&abs);
      break;
    case 0:
      cout << "欢迎下次使用" << endl;
      return 0;
      break;
    }
  }
}
相关文章
|
监控 安全 数据挖掘
如何精准监控员工上网:这三款员工上网行为监控告诉你
本文介绍了三款员工上网行为监控软件,以增强企业网络安全性。WorkWin提供USB管理、带宽控制及远程管理,确保资源有效分配和安全。InterGuard专注敏感数据检测、违规行为监控,即时消息审查,保障企业安全。而Hubstaff侧重工时追踪、活动记录和应用使用报告,优化工作效率和团队管理。这些工具旨在平衡安全与效率,助力企业保护资源和提升生产力。
986 3
|
数据采集 存储 XML
Python爬虫:深入探索1688关键词接口获取之道
在数字化经济中,数据尤其在电商领域的价值日益凸显。1688作为中国领先的B2B平台,其关键词接口对商家至关重要。本文介绍如何通过Python爬虫技术,合法合规地获取1688关键词接口,助力商家洞察市场趋势,优化营销策略。
|
Java Linux
【网络】高并发场景处理:线程池和IO多路复用
【网络】高并发场景处理:线程池和IO多路复用
393 2
|
SQL 关系型数据库 MySQL
SqlAlchemy 2.0 中文文档(四十九)(3)
SqlAlchemy 2.0 中文文档(四十九)
364 0
|
数据可视化 大数据 API
【推荐100个unity插件之22】基于UGUI的功能强大的简单易用的Unity数据可视化图表插件——XCharts3.0插件的使用
【推荐100个unity插件之22】基于UGUI的功能强大的简单易用的Unity数据可视化图表插件——XCharts3.0插件的使用
1335 0
|
存储 Web App开发 安全
XSS漏洞原理(三)存储型
XSS漏洞原理(三)存储型
|
JSON JavaScript 前端开发
Vue中的axios深度探索:从基础安装到高级功能应用的全面指南
在Vue项目中,高效的前后端通信是构建丰富用户体验的关键。axios作为前端与后端沟通的桥梁,其重要性不言而喻。本文将带您领略axios的魅力,从基本概念、安装方法,到高级应用技巧,助您快速掌握在Vue中利用axios进行HTTP请求的精髓。我们不仅会探讨axios的基础用法,如GET、POST请求,还将深入探索跨域配置、全局注册以及设置拦截器等高级功能,助您轻松实现优雅的前后端通信。
|
Java Maven Spring
Spring Boot中的依赖管理策略
Spring Boot中的依赖管理策略
|
存储 Ubuntu 关系型数据库
Docker从入门到精通:ubuntu系统安装docker
本文介绍了Docker的安装过程。首先,文章简述了Docker的组成部分:镜像(如模板用于创建容器服务)、容器(运行应用的独立实体)和仓库(存储镜像的库)。接着,针对Ubuntu系统,详细阐述了卸载旧版本Docker、更新软件包、安装依赖、添加Docker官方GPG密钥和软件源、安装Docker以及配置用户组的步骤。最后,通过启动Docker、验证安装是否成功(运行`hello-world`镜像)和查看Docker版本来确认安装完成。