第十周课后实践:阅读程序--学生信息管理系统
来源:互联网 发布:数字网络配线架 编辑:程序博客网 时间:2024/06/05 03:05
代码:
#include <iostream>#include <cstring>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<d2bool 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; else n=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; else cout<<"女"<<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++; else s0++; 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<<"男"; else cout<<"女"; 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;}
运行结果:
0 0
- 第十周课后实践:阅读程序--学生信息管理系统
- 第九周 课后实践:阅读程序——(1)简单的学生信息管理系统
- 第九周 程序阅读-学生信息管理系统
- 第十一周课后实践:阅读程序
- 第十四周 课后实践:阅读程序
- 第九周阅读程序简单的学生信息管理系统
- 第九周阅读程序一:学生信息管理系统
- 程序阅读:简单C++学生信息管理系统
- 第十一周 课后实践:阅读程序(1)(2)
- 第十一周 课后实践:阅读程序(3)(4)
- 《C++语言基础》程序阅读——学生信息管理系统
- 第九周项目零:阅读程序(1):简单C++学生信息管理系统
- 第九周 《C++语言基础》程序阅读——学生信息管理系统
- 第二周课后实践-阅读程序
- 第二周课后实践--阅读程序
- 第二周课后实践阅读程序
- 第二周--课后实践:阅读程序
- 第二周 课后实践 程序阅读
- C++函数重载
- <NSCoding>存储数据 archivedDataWithRootObject unarchiveObjectWithData
- JDBC中语句超时与事务
- Java中的== 和 equal
- 摘要
- 第十周课后实践:阅读程序--学生信息管理系统
- 鸡啄米vc++2010系列10(模态对话框及其弹出过程)
- smartupload实现文件的上传、下载
- 提高第22课时,自测
- C语言 字符串替换 多次
- 关于Mongodb的全面总结,学习mongodb的人,可以从这里开始!
- 代码截图出现白色的图,或者黑色图
- android选择图片或拍照图片上传到服务器(包括上传参数)
- SSH纪实--最基本最基本的知识(三)