1.linuxä¸cpå½ä»¤å¦ä½ç¨ Cè¯è¨å®ç°
2.学生信息管理系统源代码
3.剖析Linux内核源码解读之《配置与编译》
4..cp是系统单周期cpu设计源码什么意思?
5.[转]Megatron-LM源码系列(八): Context Parallel并行
6.源码详解系列(八)--全面讲解HikariCP的使用和源码
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: