课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759,内有完整教学方案及资源链接

【程序阅读】阅读并执行以下的程序,找出当中出现构造函数、友元函数、运算符重载、静态数成员语法现象出现的位置。细致体会其使用方法,在以后的设计中可以灵活应用有关方法和技巧

#include <iostream>
#include <string.h>
using namespace std;
#define MAX 100class CDate  // 定义日期类
{
private:unsigned short int year;   // 年unsigned short int month;  // 月unsigned short int day;    // 日
public:CDate(int y=0,int m=0,int d=0);bool operator < (CDate d);friend istream & operator >> (istream &in,CDate &d);friend ostream & operator<<(ostream &out,CDate &d);friend bool CheckValid(CDate d);friend bool LeapYear(int year);void SetDate(int y,int m,int d);
};
CDate::CDate(int y,int m,int d):year(y),month(m),day(d) {}
// 设置日期
void CDate::SetDate(int y,int m,int d)
{year=y;month=m;day=d;
}
// 重载输入运算符>>
istream &operator>>(istream &in,CDate &d)
{char ch1,ch2;cout<<"请输入日期(输入格式:YYYY-MM-DD):";while(1){cin>>d.year>>ch1>>d.month>>ch2>>d.day;if (ch1=='-' && ch2=='-')if (CheckValid(d)) break;cerr<<"时间格式或取值不对! 请又一次输入\n";}return cin;
}
// 重载输出运算符<<
ostream &operator<<(ostream &out,CDate &d)
{out<<d.year<<"年"<<d.month<<"月"<<d.day<<"日";return out;
}
// 推断日期d1<d2
bool CDate::operator < (CDate d)
{if (year<d.year) return true;if (year>d.year) return false;if (month<d.month) return true;if (month>d.month) return false;if (day<d.day) return true;return false;
}// 检查是否为闰年
bool LeapYear(int year)
{if (year%4==0 && year%100 || year%400==0)return true;return false;
}// 检查日期合法性
bool CheckValid(CDate d)
{int n;if (d.month<1 || d.month>12) return false;if (d.day<1) return false;n=31;switch(d.month){case 2:if (LeapYear(d.year))n=29;elsen=28;break;case 4:case 6:case 9:case 11:n=30;break;}if (d.day>n) return false;return true;
}class CStudent
{
private:char *name;              // 姓名bool sex;                // 性别CDate date;              // 出生日期,类对象作数据成员
public:static int num;          // 学生人数CStudent();void InputData();friend void Sort();      // 排序friend void FindName();  // 按姓名查询friend void Statistic(); // 按性别统计friend void Display();   // 显示所有信息
} stu[MAX];
int CStudent::num=0;
CStudent::CStudent() {}
// 输入信息
void CStudent::InputData()
{int p;char s[41];cout<<"请输入学生信息(NO."<<num<<"):\n";cout<<"姓名:";cin>>s;name=new char[strlen(s)+1];strcpy(name,s);cout<<"性别(1-男。0-女):";cin>>p;if (p)  sex=true;else sex=false;cin>>date;cout<<endl;
}
// 排序
void Sort()
{int i,j,p,num;char *tn;bool ts;CDate td;num=CStudent::num;for(i=1; i<num; i++){p=i;for(j=i+1; j<=num; j++)if (stu[j].date<stu[p].date) p=j;//找到当前未排序元素中年龄最小的对象的下标if (p==i) continue;//以下交换stu[i]和stu[p]tn=stu[i].name;stu[i].name=stu[p].name;stu[p].name=tn;ts=stu[i].sex;stu[i].sex=stu[p].sex;stu[p].sex=ts;td=stu[i].date;stu[i].date=stu[p].date;stu[p].date=td;}
}
// 按姓名查询
void FindName()
{char name[41];int i,num;cout<<"请输入姓名:";cin>>name;num=CStudent::num;for(i=1; i<=num; i++)if (strcmp(stu[i].name,name)==0) break;if (i>num){cout<<"查无此人!"<<endl<<endl;return;}//假设查到了,显示学生信息cout<<"姓名:"<<stu[i].name<<endl;cout<<"性别:";if (stu[i].sex)cout<<"男"<<endl;elsecout<<"女"<<endl;cout<<"生日:"<<stu[i].date<<endl;cout<<endl;
}
// 按性别统计
void Statistic()
{int i,num,s1,s0;num=CStudent::num;s1=0;s0=0;for(i=1; i<=num; i++)if (stu[i].sex==1)s1++;elses0++;cout<<"男生人数:"<<s1<<endl;cout<<"女生人数:"<<s0<<endl;cout<<endl;
}// 显示所有信息
void Display()
{int i,num;num=CStudent::num;for(i=1; i<=num; i++){cout<<stu[i].name<<"\t";if (stu[i].sex)cout<<"男";elsecout<<"女";cout<<"\t"<<stu[i].date<<endl;}cout<<endl;
}int main()
{char *menu[]= { "","输入信息","排序","按姓名查询","按性别统计","显示所有信息","退出" };int i,p;bool end;end=false;while(!end){for(i=1; i<7; i++)cout<<i<<"  "<<menu[i]<<endl;cin>>p;switch(p){case 1:                          // 输入信息CStudent::num++;stu[CStudent::num].InputData();break;case 2:                          // 排序Sort();break;case 3:                          // 按姓名查询FindName();break;case 4:                          // 按性别统计人数Statistic();break;case 5:                          // 显示所有信息Display();break;case 6:                          // 退出end=true;break;}}return 0;
}

【扩展提示】你是否可以在如上设计基础上,添加文件保存数据,使其趋向于真正有用的系统?

==================== 迂者 贺利坚 CSDN博客专栏=================
|== IT学子成长指导专栏 专栏文章的分类文件夹(不定期更新) ==|
|== C++ 课堂在线专栏  贺利坚课程教学链接(分课程年级) ==|
|== 我写的书——《逆袭大学——传给IT学子的正能量》    ==|
===== 为IT菜鸟起飞铺跑道,和学生一起享受快乐和激情的大学 =====

转载于:https://www.cnblogs.com/lxjshuju/p/6768109.html

程序阅读:简单C++学生信息管理系统相关推荐

  1. 用python设计学生管理系统_基于python和tkinter实现的一个简单的学生信息管理系统...

    一个简单的学生信息管理系统基于python和tkinter 1.需求分析1.大学生信息管理系统使用tkinter接口创建一个窗口.使界面更漂亮.2. 实现与数据库的连接,教师和学生的信息可以保存或读取 ...

  2. c++ stl list实现简单的学生信息管理系统

    c++ stl list实现简单的学生信息管理系统 问题描述: 已知有20个学生记录(包括学号.姓名.成绩)的文件student.dat.要求编程序实现查询.排序.插入.删除诸功能. 系统的基本功能: ...

  3. python成绩管理系统设计 gui csdn_用golang简单编写学生信息管理系统

    用golang简单编写学生信息管理系统 发布时间:2020-09-04 11:45:16编辑:三青(参考七米老师的视频)查看次数:187 student.gopackage main import & ...

  4. JavaWeb 入门 最简单的学生信息管理系统

    最近在学习JavaWeb,整理一下.写了个很简单的学生信息管理系统.系统只包括简单的对学生信息进行增删改查.系统采用三层设计模式. 先展示一下系统的业务处理逻辑图: 逻辑如图所示,获取前端用户交互信息 ...

  5. Java语言写一个简单的学生信息管理系统,通过JDBC连接数据库对学生信息进行增删改查,采用三层思想和DBUtils第三方框架。

    我把源代码和sql文件放GitHub上了,你们可以自行下载:https://github.com/fenglily1/student. 有问题可以留言或私信,我看到就会回. 进阶版加上页面的管理系统在 ...

  6. JavaWeb之简单的学生信息管理系统(二)

    JavaWeb之简单的学生信息管理系统(一) JavaWeb之简单的学生信息管理系统(二) JavaWeb之简单的学生信息管理系统(三) 今日任务:实现学生管理系统的查找和添加功能! 一. 查询学生信 ...

  7. java实现简单的学生信息管理系统

    java实现简单的学生信息管理系统(无界面) 学生类实体: package com.edu.imau.wcy;public class Stu {private String stuNum;//学号p ...

  8. C#毕业设计——基于C#+asp.net+sqlserver的学生信息管理系统设计与实现(毕业论文+程序源码)——学生信息管理系统

    基于C#+asp.net+sqlserver的学生信息管理系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于C#+asp.net+sqlserver的学生信息管理系统设计与实现,文章末尾 ...

  9. 【java毕业设计】基于javaEE+SSH+SQL Server的学生信息管理系统设计与实现(毕业论文+程序源码)——学生信息管理系统

    基于javaEE+SSH+SQL Server的学生信息管理系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于javaEE+SSH+SQL Server的学生信息管理系统设计与实现,文章 ...

  10. java毕业设计——基于JSP+sqlserver的学生信息管理系统设计与实现(毕业论文+程序源码)——学生信息管理系统

    基于JSP+sqlserver的学生信息管理系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于JSP+sqlserver的学生信息管理系统设计与实现,文章末尾附有本毕业设计的论文和源码下 ...

最新文章

  1. DeepFashion: Powering Robust Clothes Recognition and Retrieval with Rich Annotations – CVPR 2016
  2. 1x pcie 速度_在主板规格上,x8在“1 x PCIe 3.0 x16(x8带宽)”中的含义是什么?...
  3. matlab数据的拼接
  4. 一场实验室意外爆炸事故,解决了58年量子难题,让科学家意外发现“核电共振”...
  5. oracle查询表占用空,查询dba_tables 为啥有的表的表空间为空
  6. js中用tagname和id获取元素的3种方法
  7. SAP Cloud for Customer销售订单External Note的建模细节
  8. php raido mysql,linux – 如何停止并修复已失败且I / O挂起的RAID 5阵列?
  9. Exchange 2010 (四) CAS Array部署
  10. ASP.NET前台html页面AJAX提交数据后台ashx页面接收数据
  11. matlab打乱矩阵行,matlab 中,怎么让一个矩阵按某一列排列,并且行也跟着变动?...
  12. linux vi编辑器常用命令
  13. 2021-05-26python 批量更改图片格式
  14. 《Python基础教程(第3版)》笔记:第8章异常
  15. centos 6 安装 net-speeder
  16. vos怎样停止、启动和重启服务器?
  17. matlab7.1一直打不开,Matlab 7.1安装及打不开问题解决
  18. java wtc_通过Java来调用WTC服务 | 学步园
  19. css 文本超出2行就隐藏并且显示省略号
  20. AI 智能修复老照片,效果惊艳到我了!| 附代码

热门文章

  1. python中print说法正确的是_python中的print()输出
  2. java树遍历算法_Java递归算法实现目录树的遍历
  3. Linux之进程管理基础概念
  4. 三目(三元)运算符??::的形式
  5. 美团多渠道打包方案详解,速度快到白驹过隙 1
  6. Hadoop数据读写原理
  7. 2.大约QT数据库操作,简单的数据库连接操作,增删改查数据库,QSqlTableModel和QTableView,事务性操作,大约QItemDelegate 代理...
  8. 【转】Linux下发生段错误时如何生成core文件
  9. 《MonkeyRunner原理剖析》第九章-MonkeyImage实现原理 - 第七节 - 文件图片及子图处理类BufferedImageChimpImage...
  10. 一、理解网络编程和套接字