C语言 会员管理系统

 大一上学期期末项目设计;

思路参考:【千锋教育新版C语言程序设计视频教程(适合自学,c语言初学者入门教程)】 https://www.bilibili.com/video/BV1id4y1375a/?p=119&share_source=copy_web&vd_source=a6401c9820869ff8ca006c68478cde72

 

 

 

代码段:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<windows.h>
#include<conio.h>
//创建数据域 
struct Date{int year;int month;int day;
};
struct Goods{int goods1cost;int goods2cost;int goods3cost;int totalcost;
};struct Other{char likes[10];int integral;//积分为消费额的两倍; char coupon[20];
};struct number {char rank;//等级分 A/B/C/D/E 500积分为D,1000积分为C,2000积分积分为B,4000积分为A; char name[10];char phonenumber[20]; char gender[5];//性别分 男 / 女 struct Date link;struct Goods cost;struct Other thing2; };//创建节点 
struct Node{struct number data;struct Node *pnext;
};//头部指针全局化 
struct Node *list=NULL;//功能选项总开关; 
int key=0;//函数声明区域 
struct Node* CreatHead();//初始化头部指针 
void gotoxy(int x,int y);//光标定位 
void changeColors();//改变控制台颜色函数 
struct Node* createNode(struct number data);//创建新节点函数 
void insertInfo(struct Node* headNode,struct number data);//插入新数据节点函数 
void saveInfo(char *filename,struct Node *headNode);//同步文件数据函数 
void readInfo(char *filename,struct Node*headNode);//读取文件函数 
void showlist(struct Node*headNode);//总体打印函数 
void showlistplus(struct Node*headNode);//筛选函数 
void showlistplus2(struct Node*headNode);//筛选函数 
void analysis(struct number *temp);//分析函数 
void analysisplus(struct Node *temp);//分析函数 
void menu();//总菜单 
struct Node* SearchByName(struct Node* headNode,char *name);//根据姓名查找函数 
struct Node* SearchByphonenumber(struct Node* headNode,char *number);//根据手机号码查找函数 
void deleteByname(struct Node* headNode, char *name);//删除数据函数 
void menuone();//修改会员信息菜单 
void keyEvent();//选择功能 
//函数声明区域结束 //主函数 
int main()
{changeColors();//初始化头部指针 list=CreatHead();//读取原来文件的数据 readInfo("numberInfo.txt",list);while(1){menu();keyEvent();if(key==0)break;system("pause");system("cls"); //清屏}system("cls"); //清屏return 0;
}//用于初始化头部指针 
struct Node* CreatHead(){struct Node *pHeadNode = (struct Node*)malloc(sizeof(struct Node));if(pHeadNode == NULL)return NULL;pHeadNode->pnext=NULL;return pHeadNode;
}
//用于输出 " Nice to meet you " 
void gotoxy(int x,int y)
{// 光标定位函数COORD p;//定义结构体变量pHANDLE handle=GetStdHandle(STD_OUTPUT_HANDLE);// 获取当前函数句柄p.X=x;p. Y=y;//将光标的目标移动位置传递给结构体SetConsoleCursorPosition(handle,p);//移动光标
}
void changeColors(){system("color F4");//改变屏幕的背景色和前景色gotoxy(8,8);//光标定位到指定位置printf("Nice to meet you!\n");getch( );
}
//创建新的节点 
struct Node* createNode(struct number data){struct Node *newNode=(struct Node*)malloc(sizeof(struct Node));if(newNode==NULL)return NULL;newNode->data=data;newNode->pnext=NULL;return newNode;
}
void insertInfo(struct Node* headNode,struct number data){//根据传来的temp,创建一个新的Node 的结构体; newNodestruct Node *newNode= createNode(data);newNode->pnext = headNode -> pnext;headNode->pnext=newNode;
}
//同步文件操作 
void saveInfo(char *filename,struct Node *headNode){//打开文件FILE *fp=fopen(filename, "w");//写入文件 fprintfstruct Node *move = headNode->pnext;//fprintf(fp,"等级 姓名 性别 手机号 生日 商品1消费额 商品2消费额 商品3消费额 总消费额 积分 偏好 优惠券\n");while(move!=NULL){fprintf(fp,"%c %s %s %s %d/%d/%d %d %d %d %d %d %s %s\n",move->data.rank,move->data.name,move->data.gender,move->data.phonenumber,move->data.link.year,move->data.link.month,move->data.link.day,move->data.cost.goods1cost,move->data.cost.goods2cost,move->data.cost.goods3cost,move->data.cost.totalcost,move->data.thing2.integral,move->data.thing2.likes,move->data.thing2.coupon);move=move->pnext;}//关闭文件 fclose(fp);
}
//读取文件操作 
void readInfo(char *filename,struct Node*headNode){//fscanf 返回EOF FILE *fp = fopen(filename,"r");if(fp==NULL){fp = fopen(filename,"w");fclose(fp);return;}struct number temp;//"等级 姓名 性别 手机号码 生日 商品1消费额 商品2消费额 商品3消费额 总消费额 积分 偏好 优惠券\n"while(fscanf(fp,"%c %s %s %s %d/%d/%d %d %d %d %d %d %s %s\n",&temp.rank,temp.name,temp.gender,&temp.phonenumber,&temp.link.year,&temp.link.month,&temp.link.day,&temp.cost.goods1cost,&temp.cost.goods2cost,&temp.cost.goods3cost,&temp.cost.totalcost,&temp.thing2.integral,temp.thing2.likes,temp.thing2.coupon)!=EOF){insertInfo(list,temp);	}fclose(fp);
}
//总览全部信息 
void showlist(struct Node*headNode){struct Node *move = headNode->pnext;//printf("等级 姓名 性别 手机号码 生日 商品1消费额 商品2消费额 商品3消费额 总消费额 积分 偏好 优惠券\n");while(move!=NULL){printf("%c\t%s\t%s\t%s\t%d/%d/%d\t%d\t%d\t%d\t%d\t%d\t%s\t%s\n",move->data.rank,move->data.name,move->data.gender,move->data.phonenumber,move->data.link.year,move->data.link.month,move->data.link.day,move->data.cost.goods1cost,move->data.cost.goods2cost,move->data.cost.goods3cost,move->data.cost.totalcost,move->data.thing2.integral,move->data.thing2.likes,move->data.thing2.coupon);move=move->pnext;}
}
//筛选优质会员信息 
void showlistplus(struct Node*headNode){struct Node *move= headNode->pnext;while(move!=NULL){if(move->data.cost.totalcost>=4000){printf("%c\t%s\t%d\t%d\t优质会员\n",move->data.rank,move->data.name,move->data.cost.totalcost,move->data.thing2.integral);}move=move->pnext;}
}
//筛选信息 
void showlistplus2(struct Node*headNode){struct Node *move= headNode->pnext;while(move!=NULL){if(move->data.cost.totalcost>=4000){printf("%c\t%s\t%d\t%d\t%s\t优质会员\n",move->data.rank,move->data.name,move->data.cost.totalcost,move->data.thing2.integral,move->data.thing2.likes);}move=move->pnext;}
}
//进行数据分析 
void analysis(struct number *temp){temp->cost.totalcost=(temp->cost.goods1cost)+(temp->cost.goods2cost)+(temp->cost.goods3cost);temp->thing2.integral=(temp->cost.totalcost)*2;if(temp->thing2.integral>=500&&temp->thing2.integral<1000){temp->rank='D';strcpy(temp->thing2.coupon,"30元代金券3张"); }else if(temp->thing2.integral>=1000&&temp->thing2.integral<2000){temp->rank='C';strcpy(temp->thing2.coupon,"40元代金券4张");}else if(temp->thing2.integral>=2000&&temp->thing2.integral<4000){temp->rank='B';strcpy(temp->thing2.coupon,"80元代金券5张");}else if(temp->thing2.integral>=4000){temp->rank='A';strcpy(temp->thing2.coupon,"200元代金券6张");}else{temp->rank='E';strcpy(temp->thing2.coupon,"10元代金券5张"); }if(temp->cost.goods1cost>temp->cost.goods2cost){if(temp->cost.goods3cost>temp->cost.goods1cost){strcpy(temp->thing2.likes,"商品3"); }else{strcpy(temp->thing2.likes,"商品1"); }}else{if(temp->cost.goods3cost>temp->cost.goods2cost){strcpy(temp->thing2.likes,"商品3"); }else{strcpy(temp->thing2.likes,"商品2"); }}}
//进行修改数据后的数据分析 
void analysisplus(struct Node *temp){temp->data.cost.totalcost=(temp->data.cost.goods1cost)+(temp->data.cost.goods2cost)+(temp->data.cost.goods3cost);temp->data.thing2.integral=(temp->data.cost.totalcost)*2;if(temp->data.thing2.integral>=500&&temp->data.thing2.integral<1000){temp->data.rank='D';strcpy(temp->data.thing2.coupon,"30元代金券3张");}else if(temp->data.thing2.integral>=1000&&temp->data.thing2.integral<2000){temp->data.rank='C';strcpy(temp->data.thing2.coupon,"40元代金券4张");}else if(temp->data.thing2.integral>=2000&&temp->data.thing2.integral<4000){temp->data.rank='B';strcpy(temp->data.thing2.coupon,"80元代金券5张");}else if(temp->data.thing2.integral>=4000){temp->data.rank='A';strcpy(temp->data.thing2.coupon,"200元代金券6张");}else{temp->data.rank='E';strcpy(temp->data.thing2.coupon,"10元代金券5张"); }if(temp->data.cost.goods1cost>temp->data.cost.goods2cost){if(temp->data.cost.goods3cost>temp->data.cost.goods1cost){strcpy(temp->data.thing2.likes,"商品3"); }else{strcpy(temp->data.thing2.likes,"商品1"); }}else{if(temp->data.cost.goods3cost>temp->data.cost.goods2cost){strcpy(temp->data.thing2.likes,"商品3"); }else{strcpy(temp->data.thing2.likes,"商品2"); }}}
//打印菜单 
void menu(){printf("|*============================================*|\n");printf("|*            欢迎使用会员管理系统            *|\n");printf("|*============================================*|\n");printf("|*    1.录入会员信息                          *|\n");printf("|*    2.查找会员信息                          *|\n");printf("|*    3.修改会员信息                          *|\n");printf("|*    4.删除会员                              *|\n");printf("|*    5.会员消费奖励                          *|\n");printf("|*    6.优质会员筛选                          *|\n");printf("|*    7.优质会员商品推荐                      *|\n");printf("|*    8.速览会员信息                          *|\n");printf("|*    0.退出系统                              *|\n");printf("|*============================================*|\n");printf("     请输入功能选项0-8\n");}
//姓名查找函数 
struct Node* SearchByName(struct Node* headNode,char *name){struct Node *move = headNode->pnext;while(move!=NULL){if(strcmp(move->data.name,name)==0)break;move=move->pnext;}return move;
}
//手机号码查找函数 
struct Node* SearchByphonenumber(struct Node* headNode,char *number){struct Node *move = headNode->pnext;while(move!=NULL){if(strcmp(move->data.phonenumber,number)==0)break;move=move->pnext;}return move;
}
//删除函数 
void deleteByname(struct Node* headNode, char *name){struct Node *move = headNode->pnext;struct Node *pre = headNode;while(move!=NULL){if(strcmp(move->data.name,name)==0)break;pre = move;move=move->pnext;}if(move==NULL){return ;}else{printf("----------删除成功!------------\n"); pre->pnext=move->pnext;free(move);move=NULL;}}
//修改信息功能菜单 
void menuone(){printf("请问要修改的会员信息:\n");printf("1.姓名\n");printf("2.手机号码\n");printf("3.商品1消费额\n");printf("4.商品2消费额\n");printf("5.商品3消费额\n");
}//总体的key事件,用于功能选择 void keyEvent(){struct number temp;struct Node* result;int key2=0;printf("请输入选项:"); scanf("%d", &key);switch (key) {case 1: printf("您选择的功能是 [录入会员信息] \n");printf("录入的会员信息 姓名,性别,手机号码,生日(Year/Month/Day),商品1消费额,商品2消费额,商品3花费消费额\n");printf("请输入姓名:");scanf("%s",temp.name);printf("请输入性别:");scanf("%s",temp.gender);getchar();printf("请输入手机号码:");scanf("%s",temp.phonenumber);printf("请输入生日:");scanf("%d/%d/%d",&temp.link.year,&temp.link.month,&temp.link.day);printf("请输入商品1消费额度:");scanf("%d",&temp.cost.goods1cost); printf("请输入商品2消费额度:");scanf("%d",&temp.cost.goods2cost); printf("请输入商品3消费额度:"); scanf("%d",&temp.cost.goods3cost); //分析数据 analysis(&temp);//同步到链表中insertInfo(list,temp);//同步文件saveInfo("numberInfo.txt",list);break;    case 2: printf("您选择的功能是 [查找会员信息] \n");printf("请选择以那种方式查找:\n");printf("1.姓名查找\n");printf("2.手机号码查找\n");printf("选择方式: ");scanf("%d",&key2);switch(key2){case 1:printf("查询的会员姓名:");scanf("%s",temp.name);result=SearchByName(list,temp.name);break;case 2:printf("查询的会员手机号码:");scanf("%s",temp.phonenumber);result=SearchByphonenumber(list,temp.phonenumber);break;default:break;}if(result==NULL){printf("----------未找到此会员----------\n");} else{printf("等级\t姓名\t性别\t手机号码\t生日\t\t商品1消费额\t商品2消费额\t商品3消费额\t总消费额\t积分\t偏好\t优惠券\n");printf("%c\t%s\t%s\t%s\t%d/%d/%d\t%d\t%d\t%d\t%d\t%d\t%s\t%s\n",result->data.rank,result->data.name,result->data.gender,result->data.phonenumber,result->data.link.year,result->data.link.month,result->data.link.day,result->data.cost.goods1cost,result->data.cost.goods2cost,result->data.cost.goods3cost,result->data.cost.totalcost,result->data.thing2.integral,result->data.thing2.likes,result->data.thing2.coupon);}break;                case 3: printf("您选择的功能是 [修改会员信息] \n");printf("请选择以那种方式查找:\n");printf("1.姓名查找\n");printf("2.手机号码查找\n");printf("选择方式: ");scanf("%d",&key2);switch(key2){case 1:printf("查询的会员姓名:");scanf("%s",temp.name);result=SearchByName(list,temp.name);break;case 2:printf("查询的会员手机号码:");scanf("%s",temp.phonenumber);result=SearchByphonenumber(list,temp.phonenumber);break;default:break;}if(result==NULL){printf("----------未找到此会员----------\n");} else{printf("等级\t姓名\t性别\t手机号码\t生日\t\t商品1消费额\t商品2消费额\t商品3消费额\t总消费额\t积分\t偏好\t优惠券\n");printf("%c\t%s\t%s\t%s\t%d/%d/%d\t%d\t%d\t%d\t%d\t%d\t%s\t%s\n",result->data.rank,result->data.name,result->data.gender,result->data.phonenumber,result->data.link.year,result->data.link.month,result->data.link.day,result->data.cost.goods1cost,result->data.cost.goods2cost,result->data.cost.goods3cost,result->data.cost.totalcost,result->data.thing2.integral,result->data.thing2.likes,result->data.thing2.coupon);menuone();printf("请选择: ");int key3=0;scanf("%d",&key3);int cost;switch(key3){case 1:printf("新名字:"); char newname[10];scanf("%s",newname);strcpy(result->data.name,newname); saveInfo("numberInfo.txt",list);break;case 2:printf("新手机号码:");char newnumber[20];scanf("%s",newnumber);strcpy(result->data.phonenumber,newnumber); saveInfo("numberInfo.txt",list);break;case 3:printf("商品1新消费额:");scanf("%d",&cost);result->data.cost.goods1cost=cost;analysisplus(result);saveInfo("numberInfo.txt",list);break;case 4:printf("商品2新消费额:");scanf("%d",&cost);result->data.cost.goods2cost=cost;analysisplus(result); saveInfo("numberInfo.txt",list);break;case 5:printf("商品3新消费额:");scanf("%d",&cost);result->data.cost.goods3cost=cost;analysisplus(result);saveInfo("numberInfo.txt",list);break;default:break;}}break;case 4: printf("您选择的功能是 [删除会员信息] \n");printf("等级\t姓名\t性别\t手机号码\t生日\t\t商品1消费额\t商品2消费额\t商品3消费额\t总消费额\t积分\t偏好\t优惠券\n");showlist(list); printf("删除的会员的姓名:");scanf("%s",temp.name);deleteByname(list,temp.name); saveInfo("numberInfo.txt",list);break;    case 5: printf("您选择的功能是 [会员消费奖励查询] \n");printf("请选择以那种方式查找:\n");printf("1.姓名查找\n");printf("2.手机号码查找\n");printf("选择方式: ");scanf("%d",&key2);switch(key2){case 1:printf("查询的会员姓名:");scanf("%s",temp.name);result=SearchByName(list,temp.name);break;case 2:printf("查询的会员手机号码:");scanf("%s",temp.phonenumber);result=SearchByphonenumber(list,temp.phonenumber);break;default:break;}if(result==NULL){printf("----------未找到此会员----------\n");} else{printf("等级\t姓名\t性别\t手机号码\t生日\t总消费额\t积分\t偏好\t优惠券\n");printf("%c\t%s\t%s\t%s\t%d/%d/%d\t%d\t%d\t%s\t%s\n",result->data.rank,result->data.name,result->data.gender,result->data.phonenumber,result->data.link.year,result->data.link.month,result->data.link.day,result->data.cost.totalcost,result->data.thing2.integral,result->data.thing2.likes,result->data.thing2.coupon);}break;  case 6: printf("您选择的功能是 [优质会员筛选] \n");printf("等级\t姓名\t总消费额\t积分\n");showlistplus(list);break;case 7: printf("您选择的功能是 [优质会员商品推荐] \n");printf("等级\t姓名\t总消费额\t积分\t偏好\n");showlistplus2(list);break;           case 8:printf("您选择的功能是 [速览会员信息] \n"); printf("等级\t姓名\t性别\t手机号码\t生日\t\t商品1消费额\t商品2消费额\t商品3消费额\t总消费额\t积分\t偏好\t优惠券\n");showlist(list); break;             case 0: break;   default:printf("选项不存在,请重新选择");break;}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/252616.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

微信会员卡管理系统会员充值说明

云上铺微信会员卡管理系统会员充值即会员卡储值进行余额消费一种操作。 基础操作&#xff1a;点击【消费收银】→【会员充值】&#xff0c;显示有【会员充值/扣款/转账/提现】等业务&#xff0c;如下图所示&#xff1a; 会员充值必须先选择会员信息,输入会员卡号&#xff0c;或…

超市VIP卡管理系统

好久没有碰VS了。。。只好自己找个项目练手。 今天找了个练习的项目&#xff0c;超市VIP卡管理系统。 拿到手的项目需求就这么点。 &#xff08;1&#xff09; 会员卡使用磁卡&#xff0c;允许手工输入卡号和扫描器输入两种方式。会员卡号的长度为10位&#xff0c;前两位是各分…

自己开店怎么办会员卡-云上铺会员管理系统

现在的生意是越来越不好做&#xff0c;很多实体商家为了增加门店人气策划了很多引流活动。刚开始人气虽然上涨得很快&#xff0c;但客户的流失率也非常的高。因此&#xff0c;实体商家希望通过会员卡来留住消费的客户&#xff0c;但开店办会员的会员卡怎么办呢&#xff1f; ​ …

超市会员管理系统

目录 一、需求分析 二、问题描述 三、总体设计 四、详细设计 1&#xff09;数据类型 2) 函数名 3&#xff09;登陆界面 4&#xff09;主界面 5&#xff09;界面设计 &#xff08;1&#xff09;系统说明 &#xff08;2&#xff09; 输入会员信息 &#xff08;3&#xff09; 显示…

电子会员卡管理系统卡具配置

一.登录精通后台系统 1. 进行指定主机的卡具设置 1&#xff09; 点击【主机维护】选项 登录成功后&#xff0c;点击【主机维护】项进入主机维护界面&#xff1a; 2&#xff09; 选择主机 ①选中需要设置的主机&#xff0c;②点击右侧的【卡具设置】按钮&#xff1a; 3&#xff…

超市会员卡管理系统

用Map 集合存储会员卡 package shopsystem;public class Card {private String name;// 姓名private String cardNum;// 卡号private String code;// 密码private String date;// 开卡日期private int score;// 积分Overridepublic String toString() {return "开卡人姓名…

云上铺会员管理系统会员列表功能与说明

云上铺会员管理系统&#xff0c;会员列表功能&#xff0c;包含新增会员&#xff0c;编辑会员&#xff0c;会员信息筛选查询&#xff0c;业务管理&#xff0c;删除会员&#xff0c;导出会员信息&#xff0c;指定会员发送营销短信等功能。 一&#xff1a;会员筛选条件。进入会员管…

开发一个会员管理系统

背景 由于现在公司内客户量剧增&#xff0c; 简单的靠电话及笔记本记录&#xff0c;来维护客户有些困难&#xff0c;但又不想去花钱购买那些专业版的会员管理系统&#xff0c;只能自己动手撸一个相对简易的会员系统来使用了。 开发语言及使用技术 后端&#xff1a;java、mys…

电脑会员管理系统怎么弄,电脑会员卡管理系统怎么弄

商家之所以选择使用会员管理系统&#xff0c;是因为会员管理系统有很多优点。它可以帮助企业管理会员、商品、门店等信息&#xff0c;可以提高员工的工作效率&#xff0c;增加客户的满意度和信任度。引导客户成为会员&#xff0c;主要是让会员享受到相应的折扣和优惠&#xff0…

数据库之《会员管理系统》

目录 摘要 第一章 绪论 1.1课题简介 1.2 SQL Server简介 1.3数据库的实施 1.3.1.系统需求分析 1.3.2. 数据库需求分析 第二章 数据分析与建模 2.1数据流图&#xff08;E-R图&#xff09; 2.2数据字典&#xff08;关系模型&#xff09; 第三章 数据库的建立 3.1…

会员卡管理系统

本人现在正在参与医疗CRM系统的开发工作当中&#xff0c;主要负责会员卡管理这一块的工作&#xff0c;现在对业务会员卡的一些流程不是很清楚&#xff0c;有哪位朋友做过相关模块&#xff0c;可否指点指点&#xff0c;能否给借鉴一下源码&#xff1f;

免费会员管理管理系统

csdn下载链接&#xff1a; https://download.csdn.net/download/zhupengfei/11422345 本软件可免费使用&#xff0c;无限制。需要的可以直接下载安装。本软件win10可直接使用&#xff0c;其他版本的可能需要安装.net4.0组件。安装时有提示。 最近比较忙&#xff0c;软件已免…

会员管理系统

EXCEL 做的会员管理系统&#xff0c;需要的下载&#xff1a;https://download.csdn.net/download/qq441540598/21086139 本系统主要用于对会员的登记、充值、消费、充值查询、消费查询、会员统计、每月统计。本系统已经实现各个模块之前的自动调用&#xff0c;可实现会员办理&a…

ps图标长投影如何做?

https://jingyan.baidu.com/article/2f9b480dad9c8e41cb6cc297.html ps图标长投影 转载于:https://www.cnblogs.com/vip-deng-vip/p/8438102.html

Photoshop-为图像添加一个真实投影

首先&#xff0c;我选了一张索隆的画像&#xff0c;然后用“快速选择工具”将索隆抠了出来&#xff0c;按CtrlJ&#xff0c;复制到新图层&#xff0c;如图 双击该图层&#xff0c;出现如下弹窗&#xff0c;点击投影&#xff0c;可以修改“距离”、“扩展”、“大小”&#xff…

ps——投影字体效果

首先到网上找一张高清背景图&#xff0c;最好是风景图&#xff0c;做出来有感觉&#xff0c;哈哈哈然后设置饱和度为-25&#xff0c;曝光度为-5&#xff08;根据自己的图片自己设置参数&#xff09; 创建文字图层&#xff0c;栅格化图层&#xff0c;然后复制文字图层&#xff0…

Photoshop教程-投影字

1、建立RGB模式的图像&#xff0c;然后用文本工具输入“无影”两个字&#xff0c;字为绿色。 2、按住CTRL键用MOUSE点击图层面板文字层&#xff0c;选中文字。保持选择&#xff0c;新建图层。执行“编辑”(Edit)|“填充”(Fill)&#xff0c;用50&#xff05;灰色填充。 3、然…

【有利可图网】PS教程:图片切割效果制作

人像分割效果&#xff0c;感兴趣的朋友让我们一起来学习吧。 先看看效果图 1、首先我们还是老样子&#xff0c;将素材拖拽进PS&#xff0c;CTRLJ复制一层 2、接下来我们在最上方新建一个图层&#xff0c;填充灰色 3、好的&#xff0c;然后我们点击矩形工具&#xff0c;在灰色图…

PS如何为图片添加四面投影

如图所示&#xff0c;像四周的投影 很像Areo效果的Windows7. 用这样的图片做成PNG透明的效果非常好。 我们不妨仔细研究上图的两个角&#xff0c;发现其实只是简单的投影效果而已。 简单的使用投影效果即可。注意混合模式后面的颜色要选择深一些的颜色&#xff0c;距离和大…

用PS制作黑白画效果

1.案例说明 本例使用智能滤镜&#xff08;高反差保留、USM锐化&#xff09;、调整层和中性色图层&#xff0c;配合图层的一些基本操作&#xff0c;将彩色照片处理成黑白画效果。 2.操作步骤 1.打开图片&#xff1a; 通过选择滤镜|转换为智能滤镜命令&#xff0c;将背景层转…