【2】C++语法与数据结构之MFC_CList学生管理系统_链表内排序_函数指针

MFC中CList类库的遍历

#include <iostream>
#include "List.h"
using namespace std;
void main()
{CList list;list.AddHead(33);list.AddHead(88);list.AddHead(99);POSITION pos = list.GetHeadPosition();cout << "正向:" << endl;while (pos)cout << list.GetNext(pos) << endl;cout << "反向:" << endl;pos = list.GetTailPosition();while (pos)cout << list.GetPrev(pos) << endl;cout << "共有:" << list.GetCount() << "条数据" << endl;
}

C++中定义CStudent类

文件名:Student.h

#pragma once
#include <afxtempl.h>
typedef struct SUser
{int nNumb;char sName[20];float fMath;
}DATA;typedef bool(*BY_FUNC)(DATA& q,DATA& m);class CStudent
{CList<DATA> m_list;int Menu();int Input();void Delete();void Modify();void Print();void Sort(BY_FUNC pFunc);int SortMenu();void Load();void Save();public:CStudent();~CStudent();void Start();
};

类成员函数实现

文件名:Student.cpp

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include "Student.h"
using namespace std;
int CStudent::Menu()
{system("cls");//clear screenputs("\n\t\t1、浏览所有信息");puts("\t\t2、添加信息");puts("\t\t3、删除信息");puts("\t\t4、修改信息");puts("\t\t5、查找信息");puts("\t\t0、退出");printf("\t\t请选择:");int i = 0;cin >> i;switch (i){case 1:while (SortMenu());break;case 2:while (Input());break;case 3:Delete();case 4:Modify();}return i;
}int CStudent::Input()
{cout << "请输入学号:";DATA d;cin >> d.nNumb;cout << "请输入姓名和数学成绩(空格间隔):";cin >> d.sName >> d.fMath;m_list.AddTail(d);Print();Save();cout << "是否继续添加?";rewind(stdin);char c = getchar();return c == 'y' || c == 'Y';return 0;
}void CStudent::Delete()
{int nNumb;Print();cout << "\n请输入要删除的学号:";cin >> nNumb;POSITION pos = m_list.GetHeadPosition();while (pos){if (m_list.GetAt(pos).nNumb == nNumb){m_list.RemoveAt(pos);Print();cout << "删除成功!" << endl;system("pause");Save();return false;}m_list.GetNext(pos);}cout << "你输入的学号不存在,是否继续删除?[y/n]" ;char c = _getch();putchar(c);puts("");return 'y' == c || 'Y' == c;
}void CStudent::Modify()
{}void CStudent::Print()
{POSITION pos = m_list.GetHeadPosition();while (pos){DATA d = m_list.GetAt(pos);cout << d.nNumb << "\t" << d.sName << "\t" << d.fMath << endl;m_list.GetNext(pos);}system("pause");
}bool byNumb(DATA& q,DATA& m)
{return q.nNumb < m.nNumb;
}bool byName(DATA& q, DATA& m)
{return strcmp(q.sName, m.sName) < 0;
}bool byMath(DATA& q, DATA& m)
{return q.fMath > m.fMath;
}void CStudent::Sort(BY_FUNC pFunc)
{POSITION pos = m_list.GetHeadPosition(), m, q;while (pos){m = q = pos;m_list.GetNext(q);while (q){//if (m_list.GetAt(q).nNumb < m_list.GetAt(m).nNumb)if(pFunc(m_list.GetAt(q),m_list.GetAt(m)))m = q;m_list.GetNext(q);}if (m != pos){DATA t = m_list.GetAt(pos);m_list.SetAt(pos, m_list.GetAt(m));m_list.SetAt(m, t);}m_list.GetNext(pos);}Print();
}int CStudent::SortMenu()
{system("cls");puts("1.按学号排序");puts("2.按姓名排序");puts("3.按成绩排序");puts("4.不排序");puts("0.返回主菜单");int i = 0;cin >> i;BY_FUNC ps[] = { byNumb,byName,byMath };switch (i){case 1:case 2:case 3:Sort(ps[i-1]);break;case 4:Print();default:return i;}return i;return 0;
}void CStudent::Load()
{FILE* pf = fopen("stud.lv", "r");if (!pf){puts("加载文件时失败!");system("pause");return;}DATA t;while (fread(&t, 1, sizeof(DATA), pf) == sizeof(DATA))m_list.AddTail(t);fclose(pf);
}void CStudent::Save()
{FILE* pf = fopen("stud.lv", "w");if (!pf){puts("保存文件时失败!");system("pause");return;}POSITION pos = m_list.GetHeadPosition();while (pos){fwrite(pos, 1, sizeof(DATA), pf);m_list.GetNext(pos);}
}CStudent::CStudent()
{
}CStudent::~CStudent()
{
}void CStudent::Start()
{Load();while (Menu());
}

主函数

文件名:main.cpp

#include <iostream>
#include "Student.h"
int main()
{CStudent st;st.Start();return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/347194.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

neo4j cypher_neo4j / cypher:悬挂查询参数

neo4j cypher一直以来&#xff0c;我一直在使用neo4j的密码查询语言&#xff0c; 迈克尔一直在告诉我在查询中使用参数&#xff0c;但是查询的性能始终可以接受&#xff0c;因此我没有必要。 但是&#xff0c;最近我正在研究一个数据集&#xff0c;并使用类似于以下的代码创建了…

双容水箱液位模糊PID控制系统设计与仿真(Matlab/Simulink)

前些天发现了十分不错的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;没有广告&#xff0c;分享给大家&#xff0c;大家可以自行看看。&#xff08;点击跳转人工智能学习资料&#xff09; 微信公众号&#xff1a;创享日记 发送&#xff1a;双容模糊 获…

基于单片机步进电机控制器设计(正转反转指示灯挡位)

前些天发现了十分不错的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;没有广告&#xff0c;分享给大家&#xff0c;大家可以自行看看。&#xff08;点击跳转人工智能学习资料&#xff09; 微信公众号&#xff1a;创享日记 发送&#xff1a;单片机步进…

【3】C++语法与数据结构之MFC_CList学生管理系统_链表外排序_函数指针

注意&#xff1a;此时排序规则函数定义为全局函数 C中定义CStudent类 文件名&#xff1a;Student.h #pragma once #include <afxtempl.h> typedef struct SUser {int nNumb;char sName[20];float fMath; }DATA;typedef bool(*BY_FUNC)(DATA& q,DATA& m);class…

Java中Long到Int的精确转换

JDK 8附带所有令人眼前一亮的 东西 &#xff08; lambda表达式 &#xff0c; 流 &#xff0c; Optional &#xff0c;新的Date / Time API等&#xff09;来分散我的注意力 &#xff0c;我并没有过多注意添加方法Math.toIntExact&#xff08;&#xff09; 。 但是&#xff0c;这…

基于单片机的交通灯控制系统设计

前些天发现了十分不错的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;没有广告&#xff0c;分享给大家&#xff0c;大家可以自行看看。&#xff08;点击跳转人工智能学习资料&#xff09; 微信公众号&#xff1a;创享日记 发送&#xff1a;单片机交通…

【4】C++语法与数据结构之自己实现MFC的CList类库_学生管理系统

本文通过自己实现的CList双向链表数据结构来完成学生管理系统&#xff0c;同样采用链表外排序。 注意&#xff1a;此时排序规则函数仍然定义为全局函数 自己定义CList类 文件名&#xff1a;List.h -注意&#xff1a; POSITION不是VS默认的类型&#xff0c;而是重新定义为vo…

36个精美完整网站网页完整源码HTML+CSS+JS

以下列举前9个效果图&#xff0c;源码详见微信公众号下载 ①效果图 ②效果图 ③效果图 ④效果图 ⑤效果图 ⑥效果图 ⑦效果图 ⑧效果图 ⑨效果图 微信公众号&#xff1a;创享日记 发送&#xff1a;36 获取全部完整源码&#xff08;打开.html文件均即可用&…

【5】C++语法与数据结构之STL_list学生管理系统_链表内排序_函数指针

本文通过STL类库的list数据结构来完成学生管理系统&#xff0c;采用链表内排序&#xff0c;通过list类库自带sort函数进行排序。 注意&#xff1a;此时排序规则函数定义为类静态成员函数&#xff0c;等价于全局函数函数指针定义为 BY_FUNC ps[] { CStudent::byNumb,CStudent:…

ajax异步监控_监控整页(非AJAX),需要通知

ajax异步监控最近&#xff0c;在JSF中处理新图表和图表“导出服务”时&#xff0c;我遇到了一个非常普遍的问题。 当您执行长时间运行的任务&#xff08;操作&#xff09;时&#xff0c;您希望在开始时显示一个状态“请稍候……”对话框&#xff0c;并在响应到达时结束时关闭此…

公司产品移动端网页-前端网页设计技术精美网站源码HTML+CSS+JS

微信公众号&#xff1a;创享日记 发送&#xff1a;产品网页 获取完整源码&#xff08;打开即可用&#xff09; 效果①主页首页 /*页面重置*/ html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,f…

【6】C++语法与数据结构之STL_list学生管理系统_链表外排序_函数指针

本文通过STL类库的list数据结构来完成学生管理系统&#xff0c;采用链表外排序&#xff0c;通过函数指针实现。 注意&#xff1a;此时排序规则函数定义为类静态成员函数&#xff0c;等价于全局函数函数指针定义为 BY_FUNC ps[] { CStudent::byNumb,CStudent::byName,CStudent…

创建一个坚固的备份系统

在Foreach&#xff0c;我们拥有Synology RS815 来存储所有备份。 这些备份来自我们网络中的不同来源&#xff0c;例如路由器&#xff0c;交换机&#xff0c;数据库服务器&#xff0c;Web服务器&#xff0c;应用程序日志文件&#xff0c;邮件服务器等等。 Synology NAS使配置这…

班级网站-前端网页技术精美完整源码HTML+CSS+JS

微信公众号&#xff1a;创享日记 发送&#xff1a;班级网站 获取完整源码&#xff08;打开即可用&#xff09; 效果图①首页主页 效果图②关于页面 效果图③联系方式及留言 效果图④我们的画廊展示 其余及源码详见微信公众号下载&#xff01; <!DOCTYPE html> <html…

医药协会网站-前端网页技术设计HTML+CSS精美完整网页网站源码

微信公众号&#xff1a;创享日记 发送&#xff1a;医药协会网站 获取完整源码 效果图预览①主页首页 效果图预览②资源下载中心 效果图预览③登录/注册 效果图预览④文章资讯详情 效果图预览⑤文章资讯列表 效果图预览⑥留言板 效果图预览⑦图文列表 效果图预览⑧图文详情 源码…

数字通信系统仿真的MATLAB实现(QPSK)

关注公号【逆向通信猿】更精彩!!! 仿真结果 本文以QPSK为调制体制进行仿真,以下结果为比特信噪比Eb/N0=10dB(此时符号信噪比Es/N0=13dB,SNR信噪比=3.98dB,换算关系在代码中为第44行)时的各步骤结果图

动漫网站-前端网页技术精美网站源码HTML+CSS+JS

微信公众号&#xff1a;创享日记 发送&#xff1a;动漫网站 获取完整源码&#xff08;打开即可用&#xff09; 效果图①主页首页 效果图②作品列表展示页 效果图③作品详情展示页 效果图④联系我们 效果图⑤博客列表 效果图⑥博客详情 效果图⑦其它 其它及源码详见微信公众号下…

java设计模式迭代器模式_Java中的迭代器设计模式–示例教程

java设计模式迭代器模式迭代器模式是一种行为模式&#xff0c;它用于提供遍历一组对象的标准方式。 Iterator模式在Java Collection Framework中得到了广泛使用&#xff0c;其中Iterator接口提供了遍历集合的方法。 根据GoF&#xff0c;迭代器设计模式的意图是&#xff1a; 提…

【2021.02.09更新】数学常用基本公式

泰勒级数 条件不多说了&#xff0c;函数f(x)f(x)f(x)在点xx0x {x_0}xx0​出展开为 f(x0)f′(x0)(x−x0)f′′(x0)2!(x−x0)2⋯f(n)(x0)n!(x−x0)n⋯f({x_0}) f({x_0})(x - {x_0}) \frac{{f({x_0})}}{{2!}}{(x - {x_0})^2} \cdots \frac{{{f^{(n)}}({x_0})}}{{n!}}{(x - {…

服装商城电商-前端网页技术精美完整源码HTML+CSS+JS

微信公众号&#xff1a;创享日记 发送&#xff1a;服装电商 获取完整源码&#xff08;打开即可用&#xff09; 效果①主页首页 效果②登录页 效果③注册页 效果④结算结账页 效果⑤联系页 效果⑥找不到资源页 效果⑦商品列表页 效果⑧商品详情页 效果⑨心愿清单页 其余及源码详…