程序阅读:简单C++学生信息管理系统
课程首页在: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++学生信息管理系统相关推荐
- 用python设计学生管理系统_基于python和tkinter实现的一个简单的学生信息管理系统...
一个简单的学生信息管理系统基于python和tkinter 1.需求分析1.大学生信息管理系统使用tkinter接口创建一个窗口.使界面更漂亮.2. 实现与数据库的连接,教师和学生的信息可以保存或读取 ...
- c++ stl list实现简单的学生信息管理系统
c++ stl list实现简单的学生信息管理系统 问题描述: 已知有20个学生记录(包括学号.姓名.成绩)的文件student.dat.要求编程序实现查询.排序.插入.删除诸功能. 系统的基本功能: ...
- python成绩管理系统设计 gui csdn_用golang简单编写学生信息管理系统
用golang简单编写学生信息管理系统 发布时间:2020-09-04 11:45:16编辑:三青(参考七米老师的视频)查看次数:187 student.gopackage main import & ...
- JavaWeb 入门 最简单的学生信息管理系统
最近在学习JavaWeb,整理一下.写了个很简单的学生信息管理系统.系统只包括简单的对学生信息进行增删改查.系统采用三层设计模式. 先展示一下系统的业务处理逻辑图: 逻辑如图所示,获取前端用户交互信息 ...
- Java语言写一个简单的学生信息管理系统,通过JDBC连接数据库对学生信息进行增删改查,采用三层思想和DBUtils第三方框架。
我把源代码和sql文件放GitHub上了,你们可以自行下载:https://github.com/fenglily1/student. 有问题可以留言或私信,我看到就会回. 进阶版加上页面的管理系统在 ...
- JavaWeb之简单的学生信息管理系统(二)
JavaWeb之简单的学生信息管理系统(一) JavaWeb之简单的学生信息管理系统(二) JavaWeb之简单的学生信息管理系统(三) 今日任务:实现学生管理系统的查找和添加功能! 一. 查询学生信 ...
- java实现简单的学生信息管理系统
java实现简单的学生信息管理系统(无界面) 学生类实体: package com.edu.imau.wcy;public class Stu {private String stuNum;//学号p ...
- C#毕业设计——基于C#+asp.net+sqlserver的学生信息管理系统设计与实现(毕业论文+程序源码)——学生信息管理系统
基于C#+asp.net+sqlserver的学生信息管理系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于C#+asp.net+sqlserver的学生信息管理系统设计与实现,文章末尾 ...
- 【java毕业设计】基于javaEE+SSH+SQL Server的学生信息管理系统设计与实现(毕业论文+程序源码)——学生信息管理系统
基于javaEE+SSH+SQL Server的学生信息管理系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于javaEE+SSH+SQL Server的学生信息管理系统设计与实现,文章 ...
- java毕业设计——基于JSP+sqlserver的学生信息管理系统设计与实现(毕业论文+程序源码)——学生信息管理系统
基于JSP+sqlserver的学生信息管理系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于JSP+sqlserver的学生信息管理系统设计与实现,文章末尾附有本毕业设计的论文和源码下 ...
最新文章
- DeepFashion: Powering Robust Clothes Recognition and Retrieval with Rich Annotations – CVPR 2016
- 1x pcie 速度_在主板规格上,x8在“1 x PCIe 3.0 x16(x8带宽)”中的含义是什么?...
- matlab数据的拼接
- 一场实验室意外爆炸事故,解决了58年量子难题,让科学家意外发现“核电共振”...
- oracle查询表占用空,查询dba_tables 为啥有的表的表空间为空
- js中用tagname和id获取元素的3种方法
- SAP Cloud for Customer销售订单External Note的建模细节
- php raido mysql,linux – 如何停止并修复已失败且I / O挂起的RAID 5阵列?
- Exchange 2010 (四) CAS Array部署
- ASP.NET前台html页面AJAX提交数据后台ashx页面接收数据
- matlab打乱矩阵行,matlab 中,怎么让一个矩阵按某一列排列,并且行也跟着变动?...
- linux vi编辑器常用命令
- 2021-05-26python 批量更改图片格式
- 《Python基础教程(第3版)》笔记:第8章异常
- centos 6 安装 net-speeder
- vos怎样停止、启动和重启服务器?
- matlab7.1一直打不开,Matlab 7.1安装及打不开问题解决
- java wtc_通过Java来调用WTC服务 | 学步园
- css 文本超出2行就隐藏并且显示省略号
- AI 智能修复老照片,效果惊艳到我了!| 附代码
热门文章
- python中print说法正确的是_python中的print()输出
- java树遍历算法_Java递归算法实现目录树的遍历
- Linux之进程管理基础概念
- 三目(三元)运算符??::的形式
- 美团多渠道打包方案详解,速度快到白驹过隙 1
- Hadoop数据读写原理
- 2.大约QT数据库操作,简单的数据库连接操作,增删改查数据库,QSqlTableModel和QTableView,事务性操作,大约QItemDelegate 代理...
- 【转】Linux下发生段错误时如何生成core文件
- 《MonkeyRunner原理剖析》第九章-MonkeyImage实现原理 - 第七节 - 文件图片及子图处理类BufferedImageChimpImage...
- 一、理解网络编程和套接字