数据结构课设 (快餐店 POS 机计费系统、成绩分析、算术表达式)

article/2025/3/15 15:40:53

目录

快餐店 POS 机计费系统

学生成绩分析系统

算术表达式

参考文献


快餐店 POS 机计费系统

【任务描述】

校园快餐店一共出售三大类食品:饮料,主食,小食品。设计一个快餐店的 POS 机计费系统,

对快餐店的食品信息、销售信息进行管理。

【功能要求】

⑴ 管理员功能:

◼ 食品信息管理:添加、查询、修改、删除、存盘。能够对食品进行多种查询。

◼ 销售管理:录入顾客一次购买的食品信息,包括食品编号,单价,数量等;计算购买食品

的总金额,用户所付金额,找零金额,输出消费明细账单。

◼ 统计功能:可对指定日期、指定名称食品、指定种类食品的销量、收入总额等数据进行统

计,并按一定的格式进行显示。

⑵ 设计提示:

系统只设置一个管理员,通过密码登录系统,进行食品信息管理、食品销售以及各类信息查

询。

【功能模块图】

快餐店pos机计费系统功能板块如图1所示:

 【函数】

根据各模块的功能,确定各模块设计如下:

int record();  // 管理员登录模块

void main();  // 菜单模块(主函数)

FOOD *creat ();  // 销售信息管理模块

void product(); // 食品信息管理、统计功能模块

void mainmenu();  // 菜单模块

void fun1();  // 录入信息模块

void fun2();  //更新信息模块

void shang1();  //增加模块

void shang2(); //删除板块

void shang3(); //修改板块

int yi1(); //菜单板块

void fun3(); //查询板块

void fun4(); //统计功能板块

【数据结构】

 记录、整理pos机内各种信息时,链表、结构体和数组都是可行方案。在这里使用链表可以克服数据规模局限的缺点,可以较好地利用计算机内存空间,实现灵活的内存动态管理。结构体使各个数据变得有关联性。

typedef struct n//(链表)录入顾客消费信息
{int drink,food,snack;//饮料、主食、小吃(编号)int number,price,all;//数量、单价、总价struct n *next;
}FOOD;struct goods//(结构体)对商品进行录入、更新、查询;统计销售信息
{int num;//编号char name[20];//名称char type[20];//类别int price1;//进价int price2;//售价int shou;//销售量int profit;
}good[20];
int n;//输入的商品总数,全局变量

【程序关键部分】

FOOD *creat()//记录顾客的消费信息。
{FOOD *head,*p,*P;head=(FOOD *)malloc(sizeof(FOOD));head->next=NULL;int i,j,k;int bill,pay,count;//消费的总金额、顾客支付的钱、找零int adrink,afood,asnack;int bdrink,bfood,bsnack;bill=0;pay=0;count=0;printf("您要买几种饮料?\n");scanf("%d",&adrink);for(i=0;i<adrink;i++){p=(FOOD *)malloc(sizeof(FOOD));fflush(stdin);printf("请输入第%d饮料的编号:\n",i+1);scanf("%d",&p->drink);fflush(stdin);printf("请输入此种饮料的单价:\n");scanf("%d",&p->price);printf("请输入此种饮料的购买数量:\n");scanf("%d",&p->number);bill+=(p->price)*(p->number);p->all=(p->price)*(p->number);p->next=head->next;head->next=p;}printf("您要买几种主食?\n");scanf("%d",&afood);for(i=0;i<afood;i++){p=(FOOD *)malloc(sizeof(FOOD));fflush(stdin);printf("请输入第%d主食的编号:\n",i+1);scanf("%d",&p->food);fflush(stdin);printf("请输入此种主食的单价:\n");scanf("%d",&p->price);printf("请输入此种主食的购买数量:\n");scanf("%d",&p->number);bill+=(p->price)*(p->number);p->all=(p->price)*(p->number);p->next=head->next;head->next=p;}printf("您要买几种小吃?\n");scanf("%d",&asnack);for(i=0;i<asnack;i++){p=(FOOD *)malloc(sizeof(FOOD));fflush(stdin);printf("请输入第%d小吃的编号:\n",i+1);scanf("%d",&p->snack);fflush(stdin);printf("请输入此种小吃的单价:\n");scanf("%d",&p->price);printf("请输入此种小吃的购买数量:\n");scanf("%d",&p->number);bill+=(p->price)*(p->number);p->all=(p->price)*(p->number);p->next=head->next;head->next=p;}printf("您的消费总额为:%d\n",bill);//具体消费printf("您支付了:");scanf("%d",&pay);printf("应找零:%d\n",pay-bill);//pay-bill=找零return head;
}void fun1()
{   int i;printf("请输入要输入的商品总数:");scanf("%d",&n);for(i=0;i<n;i++){printf("请输入商品编号:");scanf("%d",&good[i].num);printf("\n请输入商品名称:");scanf("%s",good[i].name);printf("\n请输入商品进价:");scanf("%d",&good[i].price1);printf("\n请输入商品售价:");scanf("%d",&good[i].price2);printf("\n请输入商品销售量:");scanf("%d",&good[i].shou);printf("\n请输入商品类别:");scanf("%s",good[i].type);good[i].profit=good[i].price2*good[i].shou;//计算收入总额}printf("\n\n\t\t\t\t输入成功,按任意键返回上一级菜单");
}
void shuchu()
{int i;for(i=0;i<n;i++){if(good[i].num!=0){printf("\n======================================================================================================================\n");printf("商品编号:%d  |商品名称:%s  |商品售价:%d  |商品进货量:%d  |商品销售量:%d  |商品类别:%s  |商品收入总额:%d",good[i].num,good[i].name,good[i].price1,good[i].price2,good[i].shou,good[i].type,good[i].profit);printf("\n======================================================================================================================");}}
}
int yi1()
{int choose;printf("\t\t\t商品更新界面\n");printf("===========================================================\n");printf("1.商品增加\n");printf("2.商品删除\n");printf("3.商品修改\n");printf("4.返回上一界面\n");printf("请输入你的操作:");scanf("%d",&choose);return(choose);
}
void shang1()
{printf("\n请输入商品编号:");scanf("%d",&good[n].num);printf("\n请输入商品名称:");scanf("%s",good[n].name);printf("\n请输入商品进价:");scanf("%d",&good[n].price1);printf("\n请输入商品售价:");scanf("%d",&good[n].price2);printf("\n请输入商品销售量:");scanf("%d",&good[n].shou);printf("\n请输入商品类别:");scanf("%s",good[n].type);good[n].profit=(good[n].shou)*(good[n].price2);n++;printf("\n商品添加成功!");
}
void shang2()
{shuchu();int choose,i;printf("\n\n\t\t输入你想删除的商品编号:");scanf("%d",&choose);for(i=0;i<n;i++){if(choose==good[i].num)memset(good+i,0,sizeof(struct goods));//删除函数//#include<string.h>}printf("\n\n\n\t\t删除成功!");
}
void shang3()
{int choose,i;shuchu();printf("\n\t\t请输入你想要修改的商品编号:");scanf("%d",&choose);for(i=0;i<n;i++){if(choose==good[i].num){printf("\n请输入商品编号:");scanf("%d",&good[i].num);printf("\n请输入商品名称:");scanf("%s",good[i].name);printf("\n请输入商品进价:");scanf("%d",&good[i].price1);printf("\n请输入商品售价:");scanf("%d",&good[i].price2);printf("\n请输入商品销售量:");scanf("%d",&good[i].shou);printf("\n请输入商品类别:");scanf("%s",good[i].type);}}printf("修改成功!");
}
void fun2()
{int choose;while((choose=yi1())!=4){switch(choose){case 1:shang1();break;case 2:shang2();break;case 3:shang3();break;default:printf("输入错误,请重新输入");break;}}printf("按返回上一级菜单");
}
void fun3()
{int choose,i;shuchu();printf("\n请输入你想要查询的商品编号:");scanf("%d",&choose);for(i=0;i<n;i++){if(choose==good[i].num&&good[i].num!=0)printf("商品编号:%d\n商品名称:%s\n商品进价:%d\n商品售价:%d\n商品销售量:%d\n商品类别:%s\n商品收入总额:%d\n",good[i].num,good[i].name,good[i].price1,good[i].price2,good[i].shou,good[i].type,good[i].profit);}
}
void fun4()//统计消费信息
{int choose,i,k;char s1[20],s2[20];struct goods st2;printf("1.指定商品的销售统计\n");printf("2.指定类别的销售统计\n");printf("3.返回上一菜单\n");printf("\n请输入你的选择:");scanf("%d",&choose);switch(choose){case 1:shuchu();printf("\n请输入你想选择的商品名称:");scanf("%s",s2);for(k=0;k<n;k++){good[k].profit=good[k].price2*good[k].shou;st2=good[k];if(strcmp(s2,(char*)&st2.name)==0)printf("\t商品编号:%d\n\t商品名称:%s\n\t商品进价:%d\n\t商品售价:%d\n\t商品销售量:%d\n\t商品类型:%s\n\t\t\t销售统计如下\n\t商品收入总额:%d\n",good[k].num,good[k].name,good[k].price1,good[k].price2,good[k].shou,good[k].type,good[k].profit);}break;case 2:shuchu();printf("请你输入特定类别:");scanf("%s",s1);for(k=0;k<n;k++){st2=good[k];if(strcmp(s1,(char*)&st2.type)==0)printf("商品编号:%d\n商品名称:%s\n商品进价:%d\n商品售价:%d\n商品销售量:%d\n商品类型:%s\n\t\t\t销售统计\n商品收入总额:%d\n",good[k].num,good[k].name,good[k].price1,good[k].price2,good[k].shou,good[k].type,good[k].profit);}break;case 3:printf("按任意键返回上一级菜单");break;default:printf("输入错误,请重新输入");}
}
int record()
{int i,j;char ID[10]="123456",KEY[10]="123456",id[10],key[10],ch;printf("Please enter the id and key of administrators\n");printf("id:\n");for(i=0;ch=getch();i++){if(ch==13)break;else{id[i]=ch;printf("%c",ch);}}id[i]='\0';printf("\nkey:\n");for(j=0;ch=getch();j++){if(ch==13)break;else{key[j]=ch;printf("*");}}key[j]='\0';printf("\n");if((strcmp(ID,id)==0)&&(strcmp(KEY,key)==0)){fflush(stdin);return 1;}else{return 0;}
}

【测试】

系统主要功能模块的运行结果如以下图所示:

管理员登录及主菜单
商品信息管理
录入商品信息
增加商品信息
修改商品信息
删除商品信息    
查询商品信息
统计功能运行 
退出系统

学生成绩分析系统

【任务描述】

设计并实现一个成绩分析系统,能够实现录人、保存一个班级学生多门课程的成绩、并对成绩进行分析等功能。具体要求如下:
(1)定义一个菜单,方便用户实现下述操作。要求菜单简洁、易操作、界面美观。 

(2)建立磁盘文件input.dat,用于保存学生及其成绩信息。

(3)读取磁盘文件input.dat中的数据,并进行处理。要求实现如下功能:
●按各门课程成绩排序,将排序的结果保存到磁盘文件中。
●计算每人的平均成绩,按平均成绩排序,将排序的结果保存到磁盘文件中。
●能够统计各门课程的平均成绩、最高分、最低分、不及格人数、60~69分人数、70~79分人数、80~89分人数、90分以上人数。
●根据学生姓名或学号查询其各门课成绩,需考虑重名情况的处理。

【概要设计】

void sort();//按各科成绩排序

void search();//按输入信息查询成绩

void search_name();//按姓名查询学生成绩(处理重名)

int search_number();//按学号查询学生成绩

void count_computer();//统计计算机最高分、最低分以及各分数段人数

void count_english();//统计英语最高分、最低分以及各分数段人数

void count_math();//统计数学最高分、最低分以及各分数段人数

void ave_sort1();//每个人的平均成绩排序

void readFile();//从磁盘读取保存学生信息的文件

【存储结构】

struct student
{char number[4];char name[10];float math;float english;float computer;float ave_score;float sort[3];
}stu[MAXSIZE];

【流程图】

 【程序关键部分】

void readFile()
{FILE *fp;char file_name[10],head_file[15]={"D:\\"};printf("请输入文件名:");gets(file_name);//getchar();strcat(head_file,file_name);fp=fopen(head_file,"r");if(fp==NULL){printf("打开错误!");exit(0);}int i=0,j=0;char num[4],name[10];float m,e,c;float ave;ave_m=0;ave_e=0;ave_c=0;printf("学号\t姓名\t数学\t英语\t计算机\n");for(i=0;i<N;i++){ave==0;fscanf(fp,"%s%s%f%f%f",num,name,&m,&e,&c);ave=m+e+c;ave_m+=m;ave_e+=e;ave_c+=c;strcpy(stu[i].number,num);stu[i].number[3]='\0';strcpy(stu[i].name,name);stu[i].math=m;stu[i].sort[0]=m;stu[i].english=e;stu[i].sort[1]=e;stu[i].computer=c;stu[i].sort[2]=c;stu[i].ave_score=ave/3;printf("%s\t%s\t%0.1f\t%0.1f\t%0.1f\n",stu[i].number,stu[i].name,stu[i].math,stu[i].english,stu[i].computer);}fclose(fp);
}void ave_sort1()
{int i,j;float temp,flag;for(i=0;i<N;i++){flag=1;for(j=0;j<N-i;j++){if(stu[j].ave_score>stu[j+1].ave_score){flag=0;temp=stu[j].ave_score;stu[j].ave_score=stu[j+1].ave_score;stu[j+1].ave_score=temp;}}if(flag==1)break;}
}void count_math()
{int i;float result[2];//存最高分数、最低分数result[0]=result[1]=stu[0].math;int count[5]={0,0,0,0,0};//五个分数段人数for(i=0;i<N;i++){if(result[0]<stu[i].math)result[0]=stu[i].math;if(result[1]>stu[i].math)result[1]=stu[i].math;if(stu[i].math<60.00)count[0]++;if(stu[i].math>=60.00&&stu[i].math<70.00)count[1]++;if(stu[i].math>=70.00&&stu[i].math<80.00)count[2]++;if(stu[i].math>=80.00&&stu[i].math<90.00)count[3]++;if(stu[i].math>=90.00)count[4]++;}printf("\n数学:\n");printf("最高分:%0.2f\n最低分:%0.2f\n不及格人数:%d\n60~69:%d\n70~79:%d\n80~89:%d\n90以上:%d\n",result[0],result[1],count[0],count[1],count[2],count[3],count[4]);
}void count_english()
{int i;float result[2];result[0]=result[1]=stu[0].english;int count[5]={0,0,0,0,0};for(i=0;i<N;i++){if(result[0]<stu[i].english)result[0]=stu[i].english;if(result[1]>stu[i].english)result[1]=stu[i].english;if(stu[i].english<60.00)count[0]++;if(stu[i].english>=60.00&&stu[i].english<70.00)count[1]++;if(stu[i].english>=70.00&&stu[i].english<80.00)count[2]++;if(stu[i].english>=80.00&&stu[i].english<90.00)count[3]++;if(stu[i].english>=90.00)count[4]++;}printf("\n英语:\n");printf("最高分:%0.2f\n最低分:%0.2f\n不及格人数:%d\n60~69:%d\n70~79:%d\n80~89:%d\n90以上:%d\n",result[0],result[1],count[0],count[1],count[2],count[3],count[4]);
}void count_computer()
{int i;float result[2];result[0]=result[1]=stu[0].computer;int count[5]={0,0,0,0,0};for(i=0;i<N;i++){if(result[0]<stu[i].computer)result[0]=stu[i].computer;if(result[1]>stu[i].computer)result[1]=stu[i].computer;if(stu[i].computer<60.00)count[0]++;if(stu[i].computer>=60.00&&stu[i].computer<70.00)count[1]++;if(stu[i].computer>=70.00&&stu[i].computer<80.00)count[2]++;if(stu[i].computer>=80.00&&stu[i].computer<90.00)count[3]++;if(stu[i].computer>=90.00)count[4]++;}printf("\n计算机:\n");printf("最高分:%0.2f\n最低分:%0.2f\n不及格人数:%d\n60~69:%d\n70~79:%d\n80~89:%d\n90以上:%d\n",result[0],result[1],count[0],count[1],count[2],count[3],count[4]);
}int search_number()
{char number[4];int i;int tag=0;printf("\n学号:");scanf("%s",number);getchar();for(i=0;i<N;i++){if(strcmp(number,stu[i].number)==0){tag=1;printf("该学生成绩查询结果如下:\n数学:%0.1f 英语:%0.1f 计算机:%0.1f\n",stu[i].math,stu[i].english,stu[i].computer);break;}}if(tag==0)printf("\n||无效输入||\n");
}void search_name()
{char name[10];int i;int count=0;printf("\n姓名:");scanf("%s",name);getchar();for(i=0;i<N;i++){if(strcmp(name,stu[i].name)==0){printf("该学生成绩查询结果如下:\n数学:%0.1f 英语:%0.1f 计算机:%0.1f\n",stu[i].math,stu[i].english,stu[i].computer);count++;}}if(count>=2){printf("有重名情况,可再根据学号查询");search_number();}if(count==0)printf("\n||无效输入||\n");
}void search()
{int x;int i;printf("\n\t\t\t\t|0:退出程序。|\n");printf("\t\t\t\t|1:根据学号查询。|\n");printf("\t\t\t\t|2:根据姓名查询。|\n");while(1){scanf("%d",&x);if(x==0)break;else{switch(x){case 2:search_name();break;case 1:search_number();break;default:break;}}}
}void sort()
{int i,j,k;k=0;float temp,flag;while(k<N){for(i=0;i<3;i++){flag=1;for(j=0;j<3-i;j++){if(stu[k].sort[j]>stu[j+1].ave_score){flag=0;temp=stu[k].sort[j];stu[k].sort[j]=stu[k].sort[j+1];stu[k].sort[j+1]=temp;}}if(flag==1)break;}k++;}
}

【测试】

input.txt :
将计算结果存入output.txt中
读取文件中保存的学生成绩
计算每个学生的平均成绩并排序和每科的平均成绩

统计数学成绩
统计英语成绩
统计计算机成绩
查询学生信息

 算术表达式

【任务内容】

算数表达式求值

【功能要求】

经过分析,本系统需完成的主要功能如下:用户可通过键盘输入四则运算的表达式,判断表达式是否正确并计算表达式的值。

  1. 可以通过键盘接收算数表达式。
  2. 可以判断表达式是否正确,比如括号是否匹配,除数是否为0等。
  3. 支持表达式含有括号。

【流程图】

【函数】

int InitStack

(Stack &S);//初始化S

int Pop(Stack &S,

ElemType &e);//取并删除栈顶元素(e接收元素)

int EmptyStackEmpty

(Stack &S);//判断栈S是否为空

int ShowStack(Stack S);//输出S

int Operate(int a,char f,int b);//四则运算

int Push(Stack &S,

ElemType e);//e为要插入栈的新栈顶元素

char Precede(char a,char b);//判定运算符栈的栈顶运算符i与读入的运算符j之间优先关系的函数

int Push(Stack &S,

ElemType e);//e为要插入栈的新栈顶元素

void EvaluateExpression();//运算符优先法

int In(char ch);//判断运算符输入是否正确

【数据结构】

 采用栈作为计算四则运算的存储结构。灵活运用其先进后出的性质。

typedef int ElemType;
//定义栈
typedef struct
{ElemType *base;ElemType *top;int stacksize;
}Stack;

 【程序关键部分】

int InitStack(Stack &S)
{S.base=(ElemType*)malloc(STACK_SIZE*sizeof(ElemType));if(!S.base)exit(-2);S.top=S.base;S.stacksize=STACK_SIZE;return 1;
}
int EmptyStack(Stack &S)
{S.top=S.base;return 1;
}
int GetTop(Stack S)
{ElemType e;e=*(S.top-1);return e;
}
int Push(Stack &S,ElemType e)
{if(S.top-S.base>=S.stacksize){S.base=(ElemType *)realloc(S.base,(S.stacksize+N)*sizeof(ElemType));//追加存储空间if(!S.base)exit(-2);S.top=S.base+S.stacksize;S.stacksize+=N;}*S.top++=e;
}
int Pop(Stack &S,ElemType &e)
{if(S.top==S.base)return 0;e=*--S.top;
}
int ShowStack(Stack S)
{ElemType *p=S.base;while(p!=S.top)printf("%d",*p++);
}
int In(char ch)
{int res;switch(ch){case '+':case '-':case '*':case '/':case '(':case ')':case '#': res=1;break;default: res=0;break;}return res;
}
char Precede(char a, char b)
{int i,j;int form[7][7]={{1,1,-1,-1,-1,1,1},{1,1,-1,-1,-1,1,1},{1,1,1,1,-1,1,1},{1,1,1,1,-1,1,1},{-1,-1,-1,-1,-1,0,2},{1,1,1,1,2,1,1},{-1,-1,-1,-1,-1,2,0}};switch(a){case '+':i=0;break;case '-':i=1;break;case '*':i=2;break;case '/':i=3;break;case '(':i=4;break;case ')':i=5;break;case '#':i=6;break;}switch(b){case '+':j=0;break;case '-':j=1;break;case '*':j=2;break;case '/':j=3;break;case '(':j=4;break;case ')':j=5;break;case '#':j=6;break;}if(form[i][j]==1)return '>';//高else if(form[i][j]==-1)return '<';//低elsereturn '=';//等于
}
int Operate(int a, char f, int b)
{switch(f){case '+': return a+b;case '-': return a-b;case '*': return a*b;case '/': return a/b;}
}
void EvaluateExpression()
{char c, d[100];int i, f, num, a, b;Stack OPTR, OPND;//OPTR和OPND分别为运算符栈和运算数栈InitStack(OPTR);InitStack(OPND);Push(OPTR, '#');c=getchar();while(c!='#'||GetTop(OPTR)!='#'){if(c>='0'&&c<='9'){i=0;do{d[i++]=c;c=getchar();}while(c>='0'&&c<='9');d[i]='\0';num=atoi(d);//atoi(string)把字符串转换成长整型数Push(OPND, num);}//if(){}把算术式中所有数字压入OPND栈中else if(In(c)==1){switch(Precede(GetTop(OPTR),c)){case '<'://栈顶元素优先权低Push(OPTR,(int)c);c=getchar();break;case '=': //脱括号并接收下一运算字符Pop(OPTR,f);c=getchar();break;case '>': //退栈并将运算结果入栈Pop(OPTR,f);Pop(OPND,b);Pop(OPND,a);Push(OPND,Operate(a,f,b));break;}}}c=getchar();//接收最后输入的一个回车符printf("所求表达式的值为:");ShowStack(OPND);printf("\n");
}

【测试】 

算式表达式

参考文献

[1]《C程序设计》第二版,谭浩强著。北京:清华大学出版社,2004年。

[2]《数据结构》,严蔚敏、吴伟民。北京:清华大学出版社,2005年。

     

                 


http://chatgpt.dhexx.cn/article/5PIxt5kW.shtml

相关文章

linux文件系统-文件的写与读

只有打开可文件以后&#xff0c;或者建立起进程与文件之间的连接之后&#xff0c;才能对文件进行读写。文件的读写主要是通过系统调用read和write来完成的&#xff0c;对于读写的进程&#xff0c;目标文件由一个打开文件号代表。 为了提高效率&#xff0c;稍微复杂一点的操作系…

数学模型——泊车模型(2022年Mathorcup数学建模挑战赛C题,含Matlab代码)

写在前面 之前做了一个2022年Mathorcup数学建模挑战赛C题的比赛心得&#xff0c;上一篇文章主要讲了A*算法的改进以及A*算法如何在C题的第3问的应用。本文主要介绍C题的第2问&#xff0c;即三种泊车模型如何建立&#xff0c;因此部分并非我写&#xff0c;在比赛期间&#xff0…

Python小白的数学建模课-16.最短路径算法

最短路径问题是图论研究中的经典算法问题&#xff0c;用于计算图中一个顶点到另一个顶点的最短路径。在图论中&#xff0c;最短路径长度与最短路径距离却是不同的概念和问题&#xff0c;经常会被混淆。求最短路径长度的常用算法是 Dijkstra 算法、Bellman-Ford 算法和Floyd 算法…

数学建模有关DNA序列k-mer index的问题

原问题是这样的&#xff1a; 给定一个DNA序列&#xff0c;这个系列只含有4个字母ATCG&#xff0c;如 S “CTGTACTGTAT”。给定一个整数值k&#xff0c;从S的第一个位置开始&#xff0c;取一连续k个字母的短串&#xff0c;称之为k-mer&#xff08;如k 5&#xff0c;则此短串为CT…

数学建模暑期集训26:遗传算法

遗传算法是优化类问题的经典智能算法。本篇将介绍遗传算法的基本概念以及利用遗传算法来求解单目标规划模型。 达尔文进化论的基本思想 遗传算法的设计是受到达尔文进化论的启发。先看下面这张图的几个基本概念。 一些花构成一个种群。 每朵花被称为个体。 每个个体内有染色…

2021年亚太杯三等奖选手C题思路

文章目录 亚太杯C题第一小问亚太杯C题第二小问亚太杯C题第三小问亚太杯C题第四小问亚太杯C题第五小问 昨天晚上刚出了亚太杯的成绩&#xff0c;获得了三等奖&#xff0c;毕竟是第一次参加数学建模比赛&#xff0c;不是成功参与奖就很高兴了&#xff0c;结束了之后&#xff0c;还…

python使用networks读取txt文件画一个有权有向图

class demo():def __init__(self):self.file_pathtest.txt#图文件 def draw_graph(self):G2 nx.DiGraph() # 创建&#xff1a;空的 有向图f open(self.file_path)lines [l.split() for l in f.readlines() if l.strip()]# print(lines)for i in lines:G2.add_edge(i[0],…

数学建模常用功能

目录 pandas读取数据 查看数据异常 提取指定列 将dataframe数据以numpy形式提取 数据划分 随机森林回归 GBDT回归 特征重要性可视化 输出&#xff1a; ​ 绘制3D散点图 导入自定义包且.py文件修改时jupyter notebook自动同步 dataframe删除某列中重复字段并删除对应行…

c语言文件操作

文件操作读写 1 文件处理原理及基本概念 C语言的文件处理功能&#xff0c;大体上分为两种&#xff1a;一种是设置缓冲区&#xff0c;另一种是不设置缓冲区。因为不设置缓冲区的方法直接对磁盘进行操作&#xff0c;速度较慢&#xff0c;并且由于不是C的标准函数&#xff0c;跨…

无人机视角展示(无人机图像定位 )--某数学建模A题MATLAB代码

近期没啥空&#xff0c;水个简单的。。。。 目前只写了第一问&#xff0c;有空再写。。。。。 问题描述 无人驾驶飞机简称“无人机”&#xff0c;是利用无线电遥控设备和自备的程序控制装置操纵的不载人飞机。搭载图像设备的无人机在高空航拍、区域巡视、军事侦查等方面有广泛…

2020 全国大学生数学建模竞赛C题思路+代码

题目链接&#xff1a;天翼云盘 珍藏美好生活 家庭云|网盘|文件备份|资源分享 前言 又是一年数据挖掘题型&#xff0c;第一次接触这种题型还是在去年的mathorcup上&#xff0c;这种题的难度就在于指标的建立和数据的处理上。后面会出一份关于数据挖掘题型&#xff0c;我的相关经…

PU learning半监督学习

半监督学习 Positive-unlabeled learning 什么是半监督学习 让学习器不依赖外界交互、自动地利用未标记样本来提升学习性能&#xff0c;就是半监督学习&#xff08;semi-supervised learning&#xff09;。 要利用未标记样本&#xff0c;必然要做一些将未标记样本所揭示的数…

详解基于图卷积的半监督学习

Kipf和Welling最近发表的一篇论文提出&#xff0c;使用谱传播规则&#xff08;spectral propagation&#xff09;快速近似spectral Graph Convolution。 和之前讨论的求和规则和平均规则相比&#xff0c;谱传播规则的不同之处在于聚合函数。它使用提升到负幂的度矩阵D对聚合进行…

【半监督医学图像分割 2023】RCPS

文章目录 【半监督医学图像分割 2023 】RCPS摘要1. 介绍2. 相关工作2.1 医学图像分割2.1 半监督学习2.3 对比学习 3. 方法3.1 整体概述3.2 纠正伪监督3.3 双向Voxel对比学习。 4. 实验 【半监督医学图像分割 2023 】RCPS 论文题目&#xff1a;RCPS: Rectified Contrastive Pseu…

半监督之数据增强

目录 前言 传统常见的 Free Lunch for Few-shot Learning: Distribution Calibration Learning to Augment for Data-Scarce Domain BERT Knowledge Distillation MixText: Linguistically-Informed Interpolation of Hidden Space for Semi-Supervised Text Classificati…

半监督的语义分割

现阶段传统的语义分割已经逐渐走向瓶颈&#xff0c;你设计一个网络&#xff0c;修改一下U-Net增加一个模块&#xff0c;现在已经很难再出优秀的成果&#xff0c;大家对你的创新程度认可度也越来越低。所以现在大家在进行语义分割的时候往往需要自行创造出一些需求&#xff0c;比…

半监督学习介绍

转载地址 https://blog.csdn.net/ice110956/article/details/13775071 什么是半监督学习? 传统的机器学习技术分为两类&#xff0c;一类是无监督学习&#xff0c;一类是监督学习。 无监督学习只利用未标记的样本集&#xff0c;而监督学习则只利用标记的样本集进行学习。 但…

半监督目标检测相关方法总结

戳我&#xff0c;查看GAN的系列专辑~&#xff01; 等你着陆&#xff01;【GAN生成对抗网络】知识星球&#xff01; 作者丨kinredon知乎 编辑丨极市平台 来源丨https://zhuanlan.zhihu.com/p/404160115 近期阅读了一些半监督目标检测&#xff08;Semi-Supervised Object Detecti…

半监督深度学习

个人博客&#xff1a;wyxogo.top 半监督学习 在有标签数据无标签数据混合成的训练数据中使用的机器学习算法。一般假设&#xff0c;无标签数据比有标签数据多&#xff0c;甚至多得多。 要求&#xff1a; 无标签数据一般是有标签数据中的某一个类别的&#xff08;不要不属于的…

半监督学习深度学习算法

该文章主体摘自知乎糯米稻谷的文章&#xff0c;对一些细节添加了自己的理解 文章链接https 半监督学习 啥是半监督学习&#xff08;Semi-supervised Learning&#xff09;1.简单自训练&#xff08;simple self-training&#xff09;2.协同训练&#xff08;co-training&#xff…