登录
首页 » Others » 基于C++的学生选课系统

基于C++的学生选课系统

于 2020-12-09 发布
0 337
下载积分: 1 下载次数: 1

代码说明:

基于C++制作的一个学生选课系统,有学生和管理员两种身份。管理员可以对学生课程,成绩管理,课程设置,密码修改,学生可以选课,退课等。实现功能较完善

下载说明:请别用迅雷下载,失败请重下,重下不扣分!

发表评论

0 个回复

  • LabVIEW序设计模式
    详细介绍了LabVIEW常用的几种设计模式,比如简单状态机,消息队列,生产者消费者处理模式,并给出了详细的例程供参考.
    2020-12-08下载
    积分:1
  • sqlite经典书籍
    sqlite经典书籍
    2020-07-01下载
    积分:1
  • SAR雷达成像点目标仿真——RD算法和CS算法(序+注释)
    SAR雷达成像点目标仿真,包含RD算法和CS算法的原理+Matlab程序,程序每一行均有注释,适合入门以τ的时闫发射啁啾脉冲,然后切换天线开关接收回波信号。脉冲重复间隔为l发接收图雷达发射脉冲串的时序当雷达不处于发射状态时,它接收反射回波。发射和接收回波的时间序列如图所示在机载情况下,每个回波可以在脉冲发射间隔内直接接收到。但是在星载情况下,由于距离过大,某个脉冲的回波要经过个脉冲间隔才能接收到。这里仿真为了方便,默认为机载情況脉冲回波时间图脉冲雷达的发射与接攻周期假设为信号持续时间,下标表示距离向:为重复频率,为重复周期,等于。接收序列中,τ衣示发射第个脉冲时,目标回波相对于发射序列的延时。雷达的发射序列数学表达式为式式中,表示矩形信号,为距离向的信号调频率,为载频。雷达回波信号由发射信号波形,天线方向图,斜距,目标,环境等因素共同决定,若不考虑环境因素,则单点目标雷达回波信号可写成式所示:其中,G表示点目标的雷达散射截面,表示点目标天线方向图双向幅度加权,z表示载机发射第个脉冲时,电磁波再次回到载机时的延时r,带入式中得式就是单点目标叵波信号模型,其中,是分量,它决定距离向分辨率;为多普勒分量,它决定方位向分辨率对于任意一个脉冲,回波信号可表小为式所小我们知道,由于随慢时间的变化而变化,所以计算机记录到的回波数据存储形式如图所示:贴棘·●鲁通ib●幽●中@中●●●。●●鲁●●ed●●i●●一●●:b●t老!y·●●●●●Outuinh0ib●●●●·:·:·;D●●中·!达脉冲长度斜距(军样数或单元置)图目标照射时间内,单个点目标回波能量在信号处理器的二维存储器中的轨迹4距离徙动及校正根据图可知,在倾斜角为零或很小的时侯,目标与雷达的瞬时距离为,根据几何关系可知,,根据泰勒级数展开可得:由式可知,不同慢时间对应着不同的并且是一个双曲线形式或者近似为个二次肜式。如图所示,同一目标的回波存储在计算机里不在同一直线上,存在距离徙动从而定义距离徙动量:为了进行方位向的压缩,方位向的回波数据必须在同一条直线上,也就是说必须校止距离徙动Δ。由式()可知,不同的最近距离对应着不同的▲,因此在时域处理距离徙动会非常麻烦。因此,对方位向进行傅里叫变换,对距离向不进行变换,得到新的域。由于方位向的频率即为多普勒频率,所以这个新的域也称为距离多普勒域将斜距写成多普勒的函数,即。众所周知,对最近距离为的点目标回波多普勒是倾斜角b的函数,即=2,斜距,于是6:≈所以距离多普勒域中的我距离徙动为Δ,可发现它不随慢时间变换同一最短距离对应着相同大小的距离徙动。因此在距离多普勒域对一个距离徙动校正就是对一组具有相同最短距离的点目标的距离徙动校止,这样可以节省运算量。为了对距离徙动进行校正,需要得到距离徙动单元,即距离徙动体现在存储单元中的移动数值,距离徙动单元可以表示为△这个值通常为一个分数,由于存储单元都是离散的,所以不同通过在存储单元简单的移动得到准确的值。为了得到准确的徙动校正值,通常需要进行插值运算。本仿真釆用了两种插值方法最近邻点插值和插值,下面分别进行介绍。最近邻点插值法的优点是简单而快速,缺点是不够精确。Δ其中为整数部分为小数部分,整数部分徙动可以直接通过平移消除,对于小数部分则通过四舍五入的方法变为或者,这样就可以得到较为精确的插值插值原理如下:在基带信号下,卷积核是函数插值信号为即为所有输入样本的加权平均。可通过频域来理解,如图所示,采样信号频普等于以采样率重复的信号频谱。为了重建信号,只需要一个周期频谱(如基带周期),因此需要理想矩形低通滤波器在频域中提取基带频谱(如图)所示。凵知该理想滤波器在时域中是函数。由于频域相乘相当于时域卷积,故插值可以通过与核的卷积来实现信号频谱幅度理想低通滤波器-101频率图理憇低通滤波器怎样对采样信号进行插值5点目标成像 matlab仿真5.1距离多普勒算法距离多普勒算法(是在年至年为民用星载提出的,它兼顾了成熟、简单、髙效和精确等因素,至今仍是使用最广泛的成像算法。它通过距离和方位上的频域操作,到达了高效的模块化处理要求,同吋又具有了一·维操作的简便性。图示意了的处理流程。这里主要讨论小倾斜角及短孔径下的基本处理框当数据处在方位时域时,可通过快速卷积进行距离压缩。也就是说,距离后随即进行距离向匹配滤波,再利用距离完成距离压缩。回波信号为:距离向压缩后的信号为:通过方位将数据变换至距离多普勒域,多普勒中心频率估计以及大部分后续操作都在该域进行。方位向傅里叶变换后信号为:在距离多普勒域进行随距离时间及方位频率变化的,该域中同距离上的组日标轨迹相互重合。将距离徙动曲线拉直到与方位频率轴平行的方向。这里可以采用最近邻点插值法或者插值法,具体插值方法见前面。假设插值是精确的,信号变为:通过每一距离门上的频域匹配滤波实现方位压缩。为进行方位压缩,将后的乘以频域匹配滤波器最后通过方位将数据变换回时域,得到压缩后的复图像。复原后的图像为:正达原始教据距离压缩方位向傅里叶变换距离徙动校正方位压方位向傅里叶逆变及多视叠加压缩数据图距离多普勒算法流程图5.2 Chirp Sca l ing算法距离多普勒算法具有诸多优点,但是距离多普勒算法有两点不足:首先,当用较长的核函数提高距离徙动校正()精度时,运算量较大:其次,二次距离压缩()对方位频率的依赖性问题较雉解决,从而限制了其对某些大斜视角和长孔径的处理精度。算法避免」中的插值操作,通过对信号进行频率调制,实现了对该信号的尺度变换或平移图显示了算法处理流程。这里主要讨论小倾斜角及短孔径下的基本处理框图。主要步骤包括四次和三次相位相乘。通过方位向将数据变换到距离多普勒域。通过相位相乘实现操作,使所有目标的距离徙动轨迹·致化。这是第步相位相乘。用以改交线调频率尺度的二次相位函数为通过距离向将数据变到二维频域。通过与参考函数进行相位相乘,同吋完成距离压缩、和‘致这是第二步相位相乘。用于距离压缩,距离徙动校正的相位函薮写为:通过距离向将数据变回到距离多普勒域。通过与随距离变化的匹配滤波器进行相位相乘,实现方位压缩。此外,由于步骤中的操作,相位相乘中还需要附加一项相位校正。这是第三步相位相乘。补偿由引起的剩余相位函数是:最后通过方位向将数据变回到二维时域,即图像域雷达原始数据SAR信号域方位向傅里叶变换第一步相位相乘补余RCMC中的距离多Chirp sealing操作普勒域距离向傅里叶变换第一步相位相乘参考函数相乘用于距离压细、SRC和一致RCMC频域距离向傅里叶逆变美第三步(最后方位压缩及相位校王步)相位相乘距离多晋勒域方位向傅里叶道变换SAR图像域压缩数据图算法流程图简而言之,算法是将徙动曲线逐一校正,算法是以某一徙动曲线为参考,在域内消除不同距离门的徙动山线的差异,令这些曲线成为一组相互平行的曲线,然后在二维频率域內统一的去掉距离徒动。通俗一点就是,算法是将弯曲的信号一根根矫直,而算法是先把所有信号都掰得一样弯,然后再统一矫直。6仿真结果6.1使用最近邻点插值的距离多普勒算法仿真结果本文首先对个点目标的回波信号进行了仿真,个点目标构成了矩形的个顶点和中心,其坐标分别如下,格式为(方位向距离向后向反射系数):图的上图是距离向压缩后的图像,从图中可以看到条回波信号(其中有几条部分重合,但仍能看出米)目标回波信号存在明显的距离徙动,需要进行校正。图的下图是通过最近邻点插值法校正后的图像,可以看出图像基本被校正为直线。配萬向压缩,未交正距离徒动的图像距高可距离压缩,权E距高徒动日的图像L图距离向压缩后最近邻点插值的结果图为进行方位向压缩后形成的图像,可以明显看出个点日标,并且个点日标构成了矩形的四个顶点及其中心。方位向压缩后的图像图通过最近邻点插值生成的点目标图像6.2使用最近邻点插值的距离多普勒算法仿真结果图上图为通过距离压缩后的图像,图的下图为通过插值法校止后的图像。距离甸压缩,未校正距离徙动的图像距离向距离向压缩,校止离徙动后的图像距离向图距离向压缩后插值的结果图为进行方位向压缩后形成的图像,可以明显看出个点目标,并且个点目标构成了矩形的四个顶点及其中心。方位向缩后的图像图通过插值生成的点目标图像6.3 Chirp Scal ing算法仿真结果可样,在中,对个点目标的回波信号进行了仿真,个点目标构成了矩形的个顶点和中心,其坐标分别如下,格式为(方位向距离向后向反射系数):
    2020-12-05下载
    积分:1
  • 快递分拣机器人设计文档(不含源码)
    快递分拣机器人设计文档(不含源码)
    2021-05-06下载
    积分:1
  • 逆合成孔径成像MATLAB算法)配书源代码
    Inverse Synthetic Aperture Radar Imaging With MATLAB Algorithms(逆合成孔径成像MATLAB算法)配书源代码,可用于学习和理解ISAR的基本算法和实现过程。
    2020-12-12下载
    积分:1
  • 内存乒乓缓存机制和消息分发机制的C代码实现
    用C代码实现乒乓内存缓冲机制,具体实用价值,帮助您提高内存响应速度与及时数据的处理。unsigned long writeunsigned long greadunsigned long overflowST TWTMSG QUEUE:/ Helper macros for accessing Msg queues. *#define tWt QUEUE EMPty(a)(((g->write==(q)->gread)? 1: 0)#define twt_ QUeUe full(a)(((((q)->qwrite +1% TIMEWEIGHT TASKQUEUE SIZED)==(q)->gread)?1: 0)米 generate a Msg entity*正常返回消息体的指针,异常返回NULLT TWTMSG* generateMsg(tT-TWTMSG* pmSg=nULL,if(NULL =-(ptMsg malloc(sizeof(T TWTMSG)))return NULL;memset(ptMsg, 0, sizeof(T TWTMSG)return pmSg;destroy a Msgvoid destroy Msg(t TWTMSG ptMsgif(NULL ptMsg->pfDestroyMsg)pt Msg->pfDestroy Msg(ptMsg->pvMsg)if (NULL != pt Msg)free(pmSgfree a Msg Queuevoid freeTWTMsg Que(T TWTMSG QUEUE* ptMsgQif(NULL =ptMsg Afree(ptMsg Q);Init a Msg QT TWTMSG QUEUE* initTWTMsg QueoT TWTMSG QUEUE pmSg Q= NULlif (NULL ==(ptMsgQ malloc(sizeof(T_ TWTMSG QUeue)goto ErrRetmemset(ptMsgQ, 0, sizeof(T TWTMSG QUEUE))return pmSg Q;Errretprintf( initTWTMsg Que Fail! ")freeTWTMsgQue(ptMsg Q)return nullPop a pvMsg packet from a msg packet queues param g is the packet queue from which to pop the pbuf@return pointer to pvMsg packet if available, NULl otherwiseT TWTMSG* TWTMsg Get(T_ TWTMSG QUEUE aT TWTMSG*//*加锁if(TWT_ QUEUE_ EMPTY(a))iReturn a NUll pointer if the queue is emptypmSg=NULL;else is The queue is not empty so return the next frame from itand adjust the read pointer accordinglypmSg=g->pvMsglq >greadg->gread =((q->gread +1)% TIMEWEIGHT_TASKQUEUE_ SIZE)/*解锁return(pmSg);Push a pmSg packet onto a pvMsg packet queue@param p is the pmsg to push onto the packet queue@param g is the packet queue.W @return 0 if successful, -1 if q is fullnt TWTMsg Send(T tWTMSg*p, T TWTMSG QUEUE *qint ret/if(!TWT_ QUEUE FULL(al)iThe queue isn t full so we add the new frame at the currentw write position and move the write pointer.g->pvMsgla->write]=pg- >write =((q->qwrite+1)% TIMEWEIGHT TASKQUEUE SIZE;ret =oThe stack is full so we are throwing away this value. Keep trackof the number of times this happensg->overflow++ret =-1://*解锁return(ret)**米**米来米***来米*半米*米*半米*米求***半*米米求半**米求半**半求半和*米*//消息分发机制//*算法是//*正常返回0,出错返回-1水米米******水*米*水**米*半*水米米冰半**水水*水米米半米冰水*米水水*水*米水水extern int RecToFile MsgProc(T_ MSG_ REC2 FILE* ptMsg);int DispatchMsg(T TWTMSG *ptMsgitif(NULl = ptMsg goto ErrRet/*dispatch msg*/switch(ptMsg->en Msg Type)case TWT PINgPoNgBuff recRecTo File Msg Procl(TMSG_REC2FE) (pmSg->pMsg);/*处理消息*/destroy Msg( pmSg;/*消毁消息breakdefault.printf("Dispatch Msg Msgtype Error! n")break.return 0ErrRetprintf("Dispatch Msg Fail! ";return-1./*buff size*/#defineP| NGPONG_ BUFF BSIZE0X20000//10*1024*1024/*10M*/*ping pong buff*///chargacPINGBUFF[PINGPONG BUFF BSIZE]; /* Ping Buff*///chargacPONGBUFF[PINGPONG_ BUFF BSIZE] *Pong Buff*/水米米*********米*水**米*半*水米米水**冰水*水米米半半水半米冰水*米水水*水*米米//*释放 ping pong buff/必然成功//*无返回木***木*水****本**水*水水*水****本水**水水****水水***本***米*水void Destroy Ping Pong Butt(T PINGPONGBUFF USE DES ptPing Pong Butt)nLoopif (NULL = pt Ping pong buffreturnfor (nLoop=0; nLooptIng BuffUse[nLoop]. pcHeadAddr)free(ptPing Pong ->t Ping BuffUse[nLoop]. pcHeadAddr)free(pt Ping pong Buff)/初始化 ping pong buff返回 pign pong buff的描述指针//*正常返回0,出错返回-1水水水水水水水水水木水木水水水水水木水木水水水水水水水水本水水水水水水水水水本水水水水水水水水水水水水水T PINGPONGBUFF USE DES InitPing Pong Buff(unsigned int n BuffSizeT PINGPONGBUFF USE DES* ptBuffDes=NULLintnLoop/*获取buf描述*if NULL==(ptBuffDes=malloc(sizeof(T PINGPONGBUFF USE DES))))goto ErrRetmemset(pt BuffDes, 0, sizeof(T_PINGPONGBUFF USE_ DES));/*分别初始化ping和pong*/for(nLoop=0; nLooptIng BuffUsenLoop pcHeadAddr =malloc n BuffSize))goto Err Ret;ptBuffDes->tIng BuffUselnLoop] nBuffSize nBuffsizeptBuffDes->tPing BuffUse[nLoop]. oFfsetptBuffDes->tPing BuffUsenLoop) eUseStatus-=BUFF WRITEABLE;pt BuffDes->eCurUseIDBUFF PINGreturn pt BuffDesErrretprintf("lnitPing Pong Buff Fail!");DestroyIng Pong Buff(pt BuffDes)turn null平**米**米*米***来米米*米*米*半米*米米米来*半米平**米米求*来*半求半来*米求*和*米*/*Reset ping pong buff//*正常返回0,出错返回-1米米米米水冰米*米米水**米米冰*米水米米米米水米水*水米米来米米x米来米米水冰来来宋来水米来米来冰#define ResetBuffUse(ptBuffuse)pt BuffUse->oFfset0pt BuffUse->eUseStatus BUFF WRITEABLEgenerate a file rec msg*正常返回消息体的指针,异常返回NULLT_MSG_REC2lGK SenFRMSB(T_BUFF_USE_DES *ptBuffUse, REC_FILE_DESLIST *ptFileListRT MSG REC2FILE KE* ptRFMsg= NULL;if(NULL ==(ptRFMsg malloc(sizeof(T_ MSG REC2 FILE)return nUllptRFMsg- >pt BuffUse pt BuffUseptRFMsg->pt Filelist ptFilelist;return ptRFMsg
    2020-12-03下载
    积分:1
  • Automotive SPICE PRM v4.5中文
    Automotive SPICE PRM A-SPICE过程参考模型V4.5 中文版
    2020-12-05下载
    积分:1
  • 哈尔滨工业大学C语言
    哈尔滨工业大学C语言的题库,打印出来有近90页,绝对超值。
    2021-05-06下载
    积分:1
  • DevExpressPatch 8.0 for Visual Studio 2019(16.2) devexpress 18.2.7
    已经重新打包,支持devexpress18.2.7,支持vs2019 16.2的版本。
    2020-12-06下载
    积分:1
  • contourlet工具箱
    contourlet工具箱matlab,不是太好找
    2020-06-21下载
    积分:1
  • 696516资源总数
  • 106914会员总数
  • 0今日下载