//********************************************************************#include "ps2.h"//********************************************************************#define clr_ps2_clk() (ps2_clk=0)#define set_ps2_clk() (ps2_clk=1)#define clr_ps2_data() (ps2_data=0)#define set_ps2_data() (ps2_data=1)#define db (1<<3)#define cmp_db() (P2^=db)#define set_db() (P2&=~db) #define clr_db() (P2|=db)//********************************************************************#define delay_5us nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;#define delay_10us delay_5us;delay_5us#define delay_15us delay_5us;delay_10us#define delay_20us delay_10us;delay_5us#define delay_40us delay_20us;delay_15us#define delay_50us delay_40us;delay_10us//************************************************************************
2025/4/20 0:18:41 59KB ps/2 at89s52 开机自检 程序
1
在本文中,我们将深入探讨如何使用MFC(MicrosoftFoundationClasses)中的链表类来构建一个学生管理系统。
MFC是微软提供的一套C++类库,它简化了Windows应用程序的开发,特别是用户界面部分。
链表作为一种高效的数据结构,非常适合用于管理动态数据集合,如学生的个人信息。
我们要了解MFC中的CList类,它是实现链表功能的基础。
CList类提供了添加、删除、遍历元素等操作,可以存储任意类型的对象,包括自定义的学生结构体。
在学生管理系统中,每个学生的信息可能包括姓名、学号、年龄、成绩等字段,这些信息可以封装在一个名为`Student`的结构体或类中。
创建`Student`类或结构体:```cppstructStudent{CStringname;//学生姓名intid;//学号intage;//年龄floatscore;//成绩};```接下来,我们需要利用CList类来管理`Student`对象。
需要包含MFC头文件`#include`,然后创建一个CList实例,并声明其存储类型为`Student`指针:```cppCListstudentList;```添加学生信息到链表中:```cppvoidAddStudent(CStudent*pStudent){studentList.AddHead(pStudent);}```遍历链表显示所有学生信息:```cppvoidDisplayAllStudents(){CList::POSITIONpos=studentList.GetHeadPosition();while(pos!=NULL){CStudent*pStudent=studentList.GetNext(pos);//打印或处理学生信息}}```此外,还可以实现查找、删除特定学生等功能。
例如,根据学号查找学生:```cppCStudent*FindStudentById(intid){CList::POSITIONpos=studentList.GetHeadPosition();while(pos!=NULL){CStudent*pStudent=studentList.GetNext(pos);if(pStudent->id==id){returnpStudent;}}returnNULL;//如果未找到返回NULL}voidRemoveStudentById(intid){CStudent*pToRemove=FindStudentById(id);if(pToRemove!=NULL){studentList.Remove(pToRemove);}}```为了与用户交互,我们通常会结合MFC的对话框类(CDialog)创建一个用户界面,用户可以通过输入框输入学生信息,通过按钮触发上述函数。
在MFC应用中,通常会继承CDialog类创建一个自定义对话框,并在其中处理按钮事件。
考虑到文件I/O,我们可以将学生数据保存到文件中,以便下次启动程序时恢复。
这可以通过序列化(Serialization)机制实现。
MFC提供了CObject类的Serialize成员函数,使得派生类(如`Student`)可以轻松地进行序列化和反序列化操作。
创建一个.CPP文件来处理文件操作:```cppvoidSaveToFile(CFile&file){studentList.Serialize(file);}voidLoadFromFile(CFile&file){studentList.Serialize(file);}```在对话框的OnOpen或OnSave事件中,打开文件对话框,获取文件路径,然后调用这些函数进行读写操作。
通过以上步骤,我们已经构建了一个基于MFC链表类的学生管理系统,实现了学生信息的增删查改以及文件操作。
MFC的CList类为我们提供了一种灵活且高效的管理动态数据集的方式,使得开发这样的系统变得相对简单。
在实际项目中,还可以根据需求增加更多的功能,如排序、过滤等。
2025/4/12 18:37:03 2.24MB 学生管理系统
1
第6章解决“实用C编程”第6章中的练习练习6-1:编写一个程序来查找两个之间的距离的平方点。
(对于更高级的问题,请找到实际距离。
此问题涉及使用标准功能sqrt。
请使用您的帮助系统来查找有关如何使用此功能的更多信息。
)#include#include<math.h>intmain(){ floatx1,y1,x2,y2,gdistance; printf("Inputx1:"); scanf("%f",&x1); printf("Inputy1:"); scanf("%f",&y1);printf("Inputx2:"); scanf("%f",&x2); printf("Inputy2:");
2025/4/3 11:14:32 1KB
1
优化设计鲍威尔法c#程序实例,优化设计大作业#include"stdio.h"#include"stdlib.h"#include"math.h"doubleobjf(doublex[]){doubleff;ff=x[0]*x[0]+x[1]*x[1]-x[0]*x[1]-10*x[0]-4*x[1]+60;return(ff)
1
编译好的proj库,包括bin,include,lib,share,test等
603KB proj
1
给定一张开空间流形三角形网格曲面,将它无自交地展开为一张二维三角形网格。
曲面只有一个边界。
用opennl解线性方程组,具体看下include,下个opennl才能运行。
写的时候用vs2010,具体算法看注释吧。
2025/3/5 16:57:51 2.93MB 流形曲面 参数化 floater 网格曲面
1
#include#includeusingnamespacestd;classMinHeapNode{friendclassFlowshop;public:booloperator<(constMinHeapNode&a)const{returna.bb<bb;}private:voidInit(int);voidNewNode(MinHeapNode,int,int,int,int);ints;//已安排作业数intf1;//机器1上最后完成时间intf2;//机器2上最后完成时间intsf2;//当前机器2上的完成时间和intbb;//当前完成时间和下界int*x;//当前作业调度};voidMinHeapNode::Init(intn){//最小堆结点初始化x=newint[n];for(inti=0;i<n;i++)x[i]=i;
2025/2/24 19:31:30 32KB th
1
选举投票系统#include"shead.h"#include"user.h"voidaddUser();voidadmin();voidbrowseIntro();voidclearVote();voidcreatFile();voidcreatUser();voiddelUser();voidguest();voidmodifyIntro();voidmodifyUserNumber();voidqueryIntro();voidsortByUsernum();voidsortByVote();voidvote();
2025/2/14 14:23:39 86KB 选举 投票 系统
1
这个程序利用Winpcap库来捕获IP数据包。
在调试时注意:1:务必将“Include”文件夹下的所有头文件拷贝到VC安装目录下的库文件夹中,如"D:\ProgramFiles\MicrosoftVisualStudio\VC98\Include"。
2:将“Lib”文件夹下面的所以库拷贝到VC安装目录下的Lib文件夹下,比如"D:\ProgramFiles\MicrosoftVisualStudio\VC98\Lib"。
以上1、2两个步骤其实是为了让程序能够利用winpcap这个开发包。
这时程序能够正确编译连接了。
要让程序能够运行,还必须安装winpcap驱动程序WinPcap_3_1.exe。
2025/2/7 13:15:07 1.06MB 捕获IP数据包
1
tlc2543数模转换驱动32版#ifndef TLC2543H#defineTLC2543H#endif#include"stm32f10xh"#include"sysh"#include"delayh"#defineCSPFout8#defineCLKPFout9#defineDOutPFin10#defineEOCPFin11#defineDInPFout12u16read2543u8port;
2025/2/2 8:46:57 898B 模数转换
1
共 217 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡