【单周期cpu设计源码】【creo开发源码】【概念指数公式源码】cp系统源码

时间:2024-12-23 04:05:01 编辑:年线上升源码公式 来源:牛股战法源码

1.linux中cp命令如何用 C语言实现
2.学生信息管理系统源代码
3.剖析Linux内核源码解读之《配置与编译》
4..cp是系统单周期cpu设计源码什么意思?
5.[转]Megatron-LM源码系列(八): Context Parallel并行
6.源码详解系列(八)--全面讲解HikariCP的使用和源码

cp系统源码

linux中cp命令如何用 C语言实现

       1,首先需要了解cp的原理。

       2,可以参考cp的源码去了解其原理

       3,cp命令的源码可以在linux内核中找到。

       4,或者下载busybox其中也会有cp的源码

       åªæœ‰äº†è§£å…¶åŽŸç†ä¹‹åŽæ‰èƒ½è°ˆå¦‚何实现。参考代码如下:

#include <stdio.h>

       #include <stdlib.h>

       #include <sys/stat.h>

       #include <sys/types.h>

       #include <fcntl.h>

       #include <errno.h>

       #include <unistd.h>

       #include <string.h>

       #define BUF_SIZE 

       #define PATH_LEN 

       void my_err(char *err_string, int line )

       {

           fprintf(stderr,"line:%d ",line);

           perror(err_string); 

           exit(1);

       }

       void copy_data(const int frd,const int fwd)

       {

           int read_len = 0, write_len = 0;

           unsigned char buf[BUF_SIZE], *p_buf;

           while ( (read_len = read(frd,buf,BUF_SIZE)) ) {

               

               if (-1 == read_len) {

                   my_err("Read error", __LINE__);

               }

               else if (read_len > 0) {  //把读取部分写入目标文件

                   p_buf = buf;

                   while ( (write_len = write(fwd,p_buf,read_len)) ) {

                       if(write_len == read_len) {

                           break;

                       }

                       else if (write_len > 0) {  //只写入部分

                           p_buf += write_len;

                           read_len -= write_len;

                       }

                       else if(-1 == write_len) {

                           my_err("Write error", __LINE__);

                       }

                   }

                   if (-1 == write_len) break;

               }

           }

       }

       int main(int argc, char **argv) 

       {

           

           int frd, fwd; //读写文件描述符

           int len = 0;

           char *pSrc, *pDes; //分别指向源文件路径和目标文件路径

           struct stat src_st,des_st;

           

           if (argc < 3) {

               printf("用法 ./MyCp <源文件路径> <目标文件路径>\n");

               my_err("arguments error ", __LINE__);

           }

           

           frd = open(argv[1],O_RDONLY);

           if (frd == -1) {

               my_err("Can not opne file", __LINE__);

           }

           if (fstat(frd,&src_st) == -1) {

               my_err("stat error",__LINE__);

           }

           /*检查源文件路径是否是目录*/

           if (S_ISDIR(src_st.st_mode)) {

               my_err("略过目录",__LINE__);

           }

           

           pDes = argv[2];

           stat(argv[2],&des_st);

           if (S_ISDIR(des_st.st_mode)) {  //目标路径是目录,则使用源文件的文件名

               

               len = strlen(argv[1]);

               pSrc = argv[1] + (len-1); //指向最后一个字符

               /*先找出源文件的文件名*/

               while (pSrc >= argv[1] && *pSrc != '/') {

                   pSrc--;

               }

               pSrc++;//指向源文件名

               

               len = strlen(argv[2]); 

               // . è¡¨ç¤ºå¤åˆ¶åˆ°å½“前工作目录

               if (1 == len && '.' == *(argv[2])) {

                   len = 0; //没有申请空间,后面就不用释放

                   pDes = pSrc;

               }

               else {  //复制到某目录下,使用源文件名

                   pDes = (char *)malloc(sizeof(char)*PATH_LEN);

                   if (NULL == pDes) {

                       my_err("malloc error ", __LINE__);

                   }

                   

                   strcpy(pDes,argv[2]);

               

                   if ( *(pDes+(len-1)) != '/' ) {  //目录缺少最后的'/',则补上’/‘

                       strcat(pDes,"/");

                   }

                   strcat(pDes+len,pSrc);

               }

           }

           

           /* æ‰“开目标文件, ä½¿æƒé™ä¸Žæºæ–‡ä»¶ç›¸åŒ*/ 

           fwd = open(pDes,O_WRONLY | O_CREAT | O_TRUNC,src_st.st_mode);

           if (fwd == -1) {

               my_err("Can not creat file", __LINE__);

           }

           copy_data(frd,fwd);

           //puts("end of copy");

           if (len > 0 && pDes != NULL)

               free(pDes);

           

           close(frd);

           close(fwd);

           return 0;

       }

学生信息管理系统源代码

       void Sort(student *&head, char type,char maxOrMin)

       {

       /*参数说明:

       type=='1' 按 语文 排列

       type=='2' 按 数学 排列

       type=='3' 按 英语 排列

       type=='4' 按 总分 排列

       type=='5' 按 平均分 排列

       type=='6' 按 座号 排列

       */

       student *pHead,*pH;

        pHead=pH=head;

       int len=GetLength(head);

        float *array=new float[len];

       int i;

       int x=0;

       float num=0;

       while(head)

       {

        Count(head);

       if(type=='1')

       {

        num=head->chinaNum;

       }

       else if(type=='2')

       {

        num=head->mathNum;

       }

       else if(type=='3')

       {

        num=head->englishNum;

       }

       else if(type=='4')

       {

        num=head->result;

       }

       else if(type=='5')

       {

        num=head->average;

       }

       else if(type=='6')

       {

        num=head->num;

       }

       array[x]=num;

       x++;

       head=head->next;

       }

       head=pHead;

       if(maxOrMin=='1')

       {

        for( i=1; i<len; i++)

        {

        for(int j=0; j<len-i; j++)

        {

        if(array[j]<array[j+1])

        {

        float num;

        num=array[j];

        array[j]=array[j+1];

        array[j+1]=num;

        }

        }

        }

        }

       else

       {

        for( i=1; i<len; i++)

        {

        for(int j=0; j<len-i; j++)

        {

        if(array[j]>array[j+1])

        {

        float num;

        num=array[j];

        array[j]=array[j+1];

        array[j+1]=num;

        }

        }

        }

       }

       int pos=1;

       for(i=0; i<len; i++)

       {

        head=pHead;

        while(head)

        {

        if(type=='1')

        {

        num=head->chinaNum;

        }

        else if(type=='2')

        {

        num=head->mathNum;

        }

        else if(type=='3')

        {

        num=head->englishNum;

        }

        else if(type=='4')

        {

        num=int(head->result);

        }

        else if(type=='5')

        {

        num=int(head->average);

        }

        else if(type=='6')

        {

        num=int(head->num);

        }

        int n=0;

        if(int(array[i])==int(num))

        {

        if(int(array[i])!=int(array[i+1]))

        {

        if(n==0)

        {

        n=pos;

        }

        head->pos=pos;

        pos++;

        }

        else

        {

        head->pos=n;

        }

        }

        head=head->next;

        }

       }

       head=pH;

       delete []array;

       }

       void Count(student *&head)

       {

       head->result=head->chinaNum+head->englishNum+head->mathNum;

       head->average=head->result/3;

       }

       void DeleteAll(student* &head)

       {

       student *cp,*np;

        cp=head;

       while(cp)

       {

        np=cp->next;

        delete cp;

        cp=np;

       }

       head=NULL;

       }

       void ChaXun(string str,student *head)

       {

       Sort(head,'4','1');

       cout<<"欢迎使用查询功能"<<endl<<endl;

       cout<<"请输入你要按什么查询 1->一般查询 2->查找最多 3->查找最少"<<endl;

       string s;

       cin>>s;

       while(s[0]!='1'&&s[0]!='2'&&s[0]!='3')

       {

        cout<<"你输入错误,请重新输入."<<endl;

        cin>>s;

       }

       if(s[0]=='1')

       {

        cout<<"按什么查询?"<<endl;

        cout<<"1->姓名 2->座号 3->语文成绩 4->数学成绩 "

        <<"5->英语成绩 6->总分 7->平均分 8->排名"<<endl;

        cin>>str;

        while(str[0]!='1' && str[0]!='2' &&

        str[0]!='3' && str[0]!='4' &&

        str[0]!='5' && str[0]!='6' &&

        str[0]!='7' && str[0]!='8' )

        {

        cout<<"你输入错误,请重新输入."<<endl;

        cin>>str;

        }

        char findStr[];

        cout<<"请输入要查找的关键字或关键数:"<<endl;

        cin>>findStr;

        switch(str[0])

        {

        case '1':

        Find(head,findStr,'1');

        break;

        case '2':

        Find(head,findStr,'2');

        break;

        case '3':

        Find(head,findStr,'3');

        break;

        case '4':

        Find(head,findStr,'4');

        break;

        case '5':

        Find(head,findStr,'5');

        break;

        case '6':

        Find(head,findStr,'6');

        break;

        case '7':

        Find(head,findStr,'7');

        break;

        case '8':

        Find(head,findStr,'8');

        break;

        }

       }

       else if(s[0]=='2')

       {

        cout<<"请输入要按什么查询?"<<endl;

        cout<<"1->语文成绩 2->数学成绩 "

        <<"3->英语成绩 4->总分 5->平均分 6->排名"<<endl;

        string s;

        cin>>s;

        switch(s[0])

        {

        case '1':

        FindMaxOrMin(head,'1','1');

        break;

        case '2':

        FindMaxOrMin(head,'2','1');

        break;

        case '3':

        FindMaxOrMin(head,'3','1');

        break;

        case '6':

        FindMaxOrMin(head,'6','1');

        break;

        case '5':

        FindMaxOrMin(head,'5','1');

        break;

        default:

        FindMaxOrMin(head,'4','1');

        break;

        }

       }

       else if(s[0]=='3')

       {

        cout<<"请输入要按什么查询?"<<endl;

        cout<<"1->语文成绩 2->数学成绩 "

        <<"3->英语成绩 4->总分 5->平均分 6->排名"<<endl;

        string s;

        cin>>s;

        switch(s[0])

        {

        case '1':

        FindMaxOrMin(head,'1','2');

        break;

        case '2':

        FindMaxOrMin(head,'2','2');

        break;

        case '3':

        FindMaxOrMin(head,'3','2');

        break;

        case '6':

        FindMaxOrMin(head,'6','2');

        break;

        case '5':

        FindMaxOrMin(head,'5','2');

        break;

        default:

        FindMaxOrMin(head,'4','2');

        break;

        }

       }

       }

       void ZengJia(string str, student* &head)

       {

       student *pNew=new student;

       cout<<"欢迎使用增加功能"<<endl<<endl;

       cout<<"请输入新学生的名字 :"<<endl;

       cin>>pNew->name;

       cout<<"请输入新学生的座号 :"<<endl;

       cin>>pNew->num;

       cout<<"请输入他的语文分数 :"<<endl;

       cin>>pNew->chinaNum;

       cout<<"请输入他的数学分数"<<endl;

       cin>>pNew->mathNum;

       cout<<"请输入他的英语分数"<<endl;

       cin>>pNew->englishNum;

       cout<<"插入记录的 (1->最前面 2->最后面)"<<endl;

       cin>>str;

       while(str[0]!='1' && str[0]!='2')

       {

        cout<<"你输入错误,请重新输入."<<endl;

        cout<<"插入记录的 (1->最前面 2->最后面)"<<endl;

        cin>>str;

       }

       if(str[0]=='1')

       {

        InsertFront(head,pNew);

       }

       else if(str[0]=='2')

       {

        InsertRear(head,pNew);

       }

       cout<<"新学生增加成功."<<endl;

       }

       void ShanChu(string str, student *&head)

       {

       char delStr[];

       cout<<"欢迎使用删除功能"<<endl<<endl;

       cout<<"1->查询删除 2->全部删除"<<endl;

       cin>>str;

       while(str[0]!='1' && str[0]!='2')

       {

        cout<<"输入错误,请重新输入."<<endl;

        cin>>str;

       }

       if(str[0]=='1')

       {

        cout<<"请输入要删除的关键字"<<endl;

        cin>>delStr;

        cout<<"1->删除第一条找到的记录 2->删除所有找到的记录"<<endl;

        cin>>str;

        while(str[0]!='1'&&str[0]!='2')

        {

        cout<<"你输入错误,请重新输入."<<endl;

        cin>>str;

        }

        cout<<"你真的要删除吗? 1->删除 2->取消"<<endl;

        string s;

        cin>>s;

        if(str[0]=='1')

        {

        if(str[0]=='1')

        {

        Delete(head,delStr,1);

        }

        else

        {

        Delete(head,delStr,2);

        }

        }

        else

        {

        cout<<"你已经取消删除了."<<endl;

        }

       }

       else

       {

        cout<<"你真的要删除全部数据吗?这样会使你的数据全部丢失哦."<<endl;

        cout<<"1->全部删除 2->取消删除"<<endl;

        cin>>str;

        if(str[0]=='1')

        {

        DeleteAll(head);

        }

        else

        {

        cout<<"你已经取消删除了."<<endl;

        }

       }

       }

       void PaiMing(string str, student* head)

       {

       string s;

       cout<<"欢迎使用排名功能"<<endl<<endl;

       cout<<"排名选择: 1->升序 2->降序"<<endl;

       cin>>s;

       cout<<"请输入要按什么排名?"<<endl;

       cout<<"1->语文成绩 2->数学成绩 3->英语成绩 "

        <<"4->总分 5->平均分 6->座号"<<endl;

       cin>>str;

       while(str[0]!='1' && str[0]!='2' &&

        str[0]!='3' && str[0]!='4' &&

        str[0]!='5' && str[0]!='6' )

       {

        cout<<"你输入错误,请重新输入."<<endl;

        cin>>str;

       }

       cout<<"姓名:"<<setw(8)<<"座号:"<<setw()

        <<"语文分数:"<<setw() <<"数学分数:"

        <<setw()<<"英语分数:"<<setw(8)<<"总分数:"

        <<setw(8)<<"平均分:"<<setw(6)<<"名次:"<<endl<<endl;

       if(s[0]=='2')

       {

        switch(str[0])

        {

        case '1':

        Sort(head,'1','1');

        break;

        case '2':

        Sort(head,'2','1');

        break;

        case '3':

        Sort(head,'3','1');

        break;

        case '4':

        Sort(head,'4','1');

        break;

        case '5':

        Sort(head,'5','1');

        break;

        case '6':

        Sort(head,'6','1');

        break;

        }

       }

       else

       {

        switch(str[0])

        {

        case '1':

        Sort(head,'1','2');

        break;

        case '2':

        Sort(head,'2','2');

        break;

        case '3':

        Sort(head,'3','2');

        break;

        case '4':

        Sort(head,'4','2');

        break;

        case '5':

        Sort(head,'5','2');

        break;

        case '6':

        Sort(head,'6','2');

        break;

        }

       }

        ShowList(head);

       return ;

       }

       void XianShi(string str, student *head)

       {

       Sort(head,'4','1');

       string s;

       cout<<"欢迎使用显示功能"<<endl;

       cout<<"1->显示全部记录 2->显示记录数目"<<endl;

       cin>>s;

       if(s[0]=='2')

       {

        cout<<"记录的数目是:"<<GetLength(head)<<endl;

       }

       else

       {

        ShowList(head);

       }

       }

       void XuiGai(string str, student *&head)

       {

       string s;

       student *std;

       cout<<"欢迎使用修改功能"<<endl;

       cout<<"请输入你要按什么查询"<<endl;

       cout<<"1->姓名 2->座号 3->语文成绩 4->数学成绩 "

        <<"5->英语成绩 "<<endl;

       cin>>str;

       while(str[0]!='1' && str[0]!='2' &&

        str[0]!='3' && str[0]!='4' &&

        str[0]!='5' )

       {

        cout<<"你输入错误,请重新输入."<<endl;

        cin>>str;

       }

       char findStr[];

       cout<<"请输入要查找的关键字或关键数:"<<endl;

       cin>>findStr;

       switch(str[0])

       {

       case '1':

        std=Find(head,findStr,'1');

        Reword(std);

        break;

       case '2':

        std=Find(head,findStr,'2');

        Reword(std);

        break;

       case '3':

        std=Find(head,findStr,'3');

        Reword(std);

        break;

       case '4':

        std=Find(head,findStr,'4');

        Reword(std);

        break;

       case '5':

        std=Find(head,findStr,'5');

        Reword(std);

        break;

       }

       Write(head);

       if(std!=NULL)

       {

        cout<<"修改成功."<<endl;

       }

       }

       int Run()

       {

       bool isLoad=false;

       student* head=NULL;

       student *pNew=new student;

       head=Read();

       SetTitle(false);

       if(head!=NULL)

       { Sort(head,'5','1');

        Count(head);

       }

       string str;

       SetTitle(false);

       cout<<" 欢迎使用学生管理系统 "<<endl<<endl;

       cout<<" 1->用户登陆 2->退出程序 "<<endl;

       cin>>str;

       if(str[0]=='2')

       {

        AboutMe();

        return 0;

       }

       else

       {

        isLoad=Enter('1');

        system("cls");

        if(isLoad==true)

        {

        SetTitle(true);

        cout<<" 恭喜,您输入的密码正确.可以对本系统的进行任何操作."<<endl;

        }

        else

        {

        cout<<" Sorry,您输入的密码错误.你不能修改本系统的任何内容."<<endl;

        }

       }

       begin:

       cout<<endl<<endl;

       cout<<" 欢迎使用学生管理系统 "<<endl<<endl;

       cout<<" 1->增加功能 2-查询功能"<<endl;

       cout<<" 3->删除功能 4-排名功能"<<endl;

       cout<<" 5->显示功能 6-修改功能"<<endl;

       cout<<" 7->用户设置 8-退出程序"<<endl;

       cout<<"请输入您的选择: "<<endl;

       cin>>str;

       while(str[0]!='8')

       {

        if(isLoad==true && head!=NULL)

        {

        cout<<endl<<endl;

        if(str[0]=='1')

        {

        ZengJia(str, head);

        Sort(head,'4','1');

        Write(head);

        }

        else if(str[0]=='2')

        {

        ChaXun(str,head);

        }

        else if(str[0]=='3')

        {

        ShanChu(str,head);

        Sort(head,'4','1');

        Write(head);

        }

        else if(str[0]=='4')

        {

        PaiMing(str,head);

        }

        else if(str[0]=='5')

        {

        XianShi(str,head);

        }

        else if(str[0]=='6')

        {

        XuiGai(str,head);

        Write(head);

        }

        else if(str[0]=='7')

        {

        cout<<"欢迎使用用户修改功能"<<endl;

        isLoad=Enter('2');

        }

        else if(str[0]=='8')

        {

        AboutMe();

        return 0;

        }

        else

        {

        cout<<"你输入错误,请重新输入."<<endl;

        goto begin;

        }

        }

        else if(isLoad==false && head!=NULL)

        {

        if(str[0]=='2')

        {

        ChaXun(str,head);

        }

        else if(str[0]=='4')

        {

        PaiMing(str,head);

        }

        else if(str[0]=='5')

        {

        XianShi(str,head);

        }

        else

        {

        cout<<"你不是管理员,不能进行此项功能."<<endl;

        cout<<"你只能进行 查询功能 显示功能 排名功能"<<endl;

        }

        }

        else if( head==NULL && isLoad==true)

        {

        cout<<"系统检查到你没有任何记录,不能进行任何操作,只能增加记录."<<endl;

        ZengJia(str, head);

        Write(head);

        head=Read();

        }

        else if( head==NULL && isLoad==false)

        {

        cout<<"因为你没有登陆,系统又检查到你没有任何记录,你不能进行任何操作."<<endl;

        }

        cout<<endl<<endl;

        cout<<"按任何键继续进行操作."<<endl;

        getchar();

        getchar();

        system("cls");

        goto begin;

       }

       AboutMe();

       return 0;

       }

       void SetTitle(bool isLoad)

       {

       HWND hwnd=GetForegroundWindow();

       if(isLoad==false)

       {

        SetWindowText(hwnd," 学生管理系统(没有登陆)");

       }

       else

       {

        SetWindowText(hwnd," 学生管理系统(已经登陆)");

       }

       system("color a");

       }

       void AboutMe()

       {

       char*pStr= " ┃ \n"

        " ┃ \n"

        " ┏━━━━┻━━━━┓ \n"

        " ┃ 关于作者 ┃ \n"

        " ┏━━━━┻━━━━━━━━━┻━━━━┓\n"

        " ┃ ┃\n"

        " ┃ Aauthor: