📄 function.h
字号:
message(INFO,"正在读取用户信息.......",WC);
display(head);
message(INFO,"请输入你要删除的用户名称:",NULL);
gets(uname);
gp=head->glink;
while(gp)
{
up=gp->ulink;
while(up)
{if(!strcmp(uname,up->user_name))
{
if(up==gp->ulink)
{
gp->ulink=up->next;
gp->b--;
//save_delete_group_info(head->glink,adpt->a);
free(up);
message(INFO,"该用户已删除!",WC);
for(i=0;i<adpt->num;i++)
{
if(strcmp(uname,adpt->user[i])==0)
{
for(j=i;j<adpt->num;j++)
strcpy(adpt->user[j],adpt->user[j+1]);
break;
}
}
adpt->num--;
save_system_info(adpt);
return 1;
}
else
{
p->next=up->next;
gp->b--;
save_delete_group_info(head->glink,adpt->a);
free(up);
for(i=0;i<adpt->num;i++)
{
if(strcmp(uname,adpt->user[i])==0)
{
for(j=i;j<adpt->num;j++)
strcpy(adpt->user[j],adpt->user[j+1]);
break;
}
}
adpt->num--;
save_system_info(adpt);
message(INFO,"该用户已删除!",WC);
return 1;
}
}
p=up;
up=up->next;
}
gp=gp->glink;
}
if(!gp)
{
message(ERROR,"该用户名不存在,删除用户失败!",WC);
}
return 1;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int load_user_settings(User_Group *system_info_pt,char name[][MAX_USER_LEN] ,int a)//载入用户信息函数
{
int i;
FILE *fp;
char filepath[MAX_MENU_LEN];
User_Item *user;
User_Group *p;
// 生成文件路径
if(a==0) return 0;
for(i=1;i<=a;i++)
{
p=system_info_pt->glink;
create_i_dir(filepath, "user",name[i-1]);
fp = fopen(filepath, "rb");
if(!(user= (User_Item *)malloc(sizeof(User_Item))))
printf("错误\n");
fread(user, sizeof(User_Item), 1, fp);
while(p)
{if(!strcmp(p->group_name,user->gname))
{ user->next=p->ulink;
p->ulink=user;
break;
}
p=p->glink;
}
}
fclose(fp);
return 1;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int load_usergr_settings(User_Group *system_info_pt,int a)//载入用户组信息函数
{
int i;
FILE *fp;
char filepath[MAX_MENU_LEN];
User_Group *useg;
// 生成文件路径
create_i_dir(filepath, "usergroup", "ghhg");
fp = fopen(filepath, "rb");
for(i=1;i<=a;i++)
{
if(!(useg= (User_Group *)malloc(sizeof(User_Group))))
printf("错误\n");
fread(useg, sizeof(User_Group), 1, fp);
system_info_pt->glink=useg;
system_info_pt=useg;
}
if(a)
{
system_info_pt->glink=NULL;
}
fclose(fp);
return 1;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int create_group(User_Group *head,admin *gecd)//创建用户组函数
{
CLS;
User_Group *p,*pt,*ps;
pt=head->glink;
p=(User_Group *)malloc(sizeof(User_Group));
message(INFO,"请输入新用户组的名称:",NULL);
scanf("%s",p->group_name);
while(pt)
{
if(!(strcmp(pt->group_name,p->group_name)))
{
message(ERROR,"该用户组已存在,请重新创建",WC);
return 1;
}
ps=pt;
pt=pt->glink;
}
if(!pt)
{
ps->glink=p;
p->glink=NULL;
p->ulink=NULL;
p->b=0;
gecd->a++;
save_system_info(gecd);
save_group_info(p);
message(INFO,"创建用户组成功,返回上层菜单",WC);
}
return 1;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int delete_group(User_Group *head,admin *gecd)//删除用户组函数
{
CLS;
User_Group *p,*pt,*ps;
char gname[MAX_USER_LEN];
int i=1;
char choice;
p=head->glink;
pt=head->glink;
message(INFO,"正在读取用户组信息........",W);
while(p) //输出存在的用户组序列
{
printf("【%d】:用户组%s\n",i++,p->group_name);
p=p->glink;
}
message(INFO,"请输入要删除的用户组名称:",NULL);
scanf("%s",gname);
while(pt)
{
if(!(strcmp(pt->group_name,gname)))
{
message(WARN,"若删除该组,则组中用户的信息将丢失.",NULL);
message(WARN,"你确认要删除该用户组吗?(Y/N)",NULL);
choice = getch();
if (('y' == choice) || ('Y' == choice))
{
if(pt==head->glink)
{
message(TIP,"该组含有系统配置文件,不能删除!",WC);
return 1;
}
else
ps->glink=pt->glink;
gecd->num-=pt->b;
free(pt);
message(INFO,"删除用户组成功,返回上层菜单",WC);
gecd->a--;
save_system_info(gecd);
save_delete_group_info(head->glink,gecd->a);
break;
}
else
message(INFO,"删除用户组取消",WC);
return 1;
}
ps=pt;
pt=pt->glink;
}
if(!pt)
{
message(ERROR,"该用户组不存在,删除组失败",WC);
}
return 1;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/*int change_user_group(User_Group *head,admin *adpt)//更改用户组函数
{
CLS;
User_Group *gp=head->glink;
User_Item *up,*p;
char uname[MAX_USER_LEN];
while(gp)
{
printf("用户组%s:\n",gp->group_name);
up=gp->ulink;
while(up)
{
printf("用户%s",up->user_name);
up=up->next;
}
gp=gp->glink;
}
message(INFO,"请输入你要转移的用户名称:",NULL);
gets(uname);
gp=head->glink;
while(gp)
{
up=gp->ulink;
while(up)
{
if(!strcmp(uname,up->user_name))
{
if(up==gp->ulink)
{
gp->ulink=up->next;
message(INFO,"该用户已从原组删除!",WC);
break;
}
else
{
p->next=up->next;
message(INFO,"该用户已从原组删除!",WC);
break;
}
if(up)
{
if(!strcmp(uname,up->user_name))
break;
}
}
p=up;
up=up->next;
}
gp=gp->glink;
}
if(!gp)
{
message(ERROR,"该用户名不存在,转移用户失败!",WC);
}
message(INFO,"请选择你要转入的组",WC);
gets(uname);
gp=head->glink;
while(gp)
{
if(strcmp(gp->group_name,uname)==0)
{
p=gp->ulink;
gp->ulink=up;
up->next=p;
}
gp=gp->glink;
}
if(!gp)
{
message(ERROR,"该用组不存在,转移用户失败!",WC);
}
return 1;
}*/
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int send_user_message(User_Group *g)
{
char time[MAX_INFO_SMY_LEN],messg[MAX_USER_LEN],mess[MAX_USER_LEN],
gname[MAX_INFO_SMY_LEN],uname[MAX_INFO_SMY_LEN];
FILE *fp;
char filepath[MAX_MENU_LEN];
User_Group *q=g->glink;
User_Item *p;
display(g);
message(INFO,"请输入你要发信的人所属组",NULL);
scanf("%s",gname);
while(q)
{
if(strcmp(q->group_name,gname)==0&&(q->b)>0)
{
message(INFO,"此用户组存在且有用户发送有效",NULL);
break;
}
q=q->glink;
}
if(!q)
{
message(INFO,"此用户组不存在,发信失败",NULL);
return 0;
}
p=q->ulink;
message(INFO,"请输入你要发送的用户",NULL);
scanf("%s",uname);
while(p)
{
if(strcmp(p->user_name,uname)==0)
message(INFO,"此用户存在发送有效",NULL);
break;
}
if(!p)
{
message(INFO,"此用户不存在发送无效",NULL);
}
message(INFO,"请输入你要发信时间",NULL);
scanf("%s",time);
message(INFO,"请输入你要发信的概要",NULL);
scanf("%s",messg);
build_i_dir("userinf",mess);
message(INFO,"请输入你要发的内容",NULL);
scanf("%s",mess);
create_i_dir(filepath,"userinf",mess);
fp=fopen(filepath, "wb");
if(!fp)
{printf("can not open file\n"); return 0;}
fputs(mess,fp);
fclose(fp);
(p->user_info_box)[p->count].flag=0;
strcmp((p->user_info_box)[p->count].info_summary,messg);
strcmp((p->user_info_box)[p->count].send_time,time);
strcmp((p->user_info_box)[p->count].sender_name,"admin");
save_user_info_b(p);
return 1;
}
int send_group_message(User_Group *g)
{
char time[MAX_INFO_SMY_LEN],messg[MAX_USER_LEN],mess[MAX_USER_LEN],
gname[MAX_INFO_SMY_LEN];
FILE *fp;
char filepath[MAX_MENU_LEN];
User_Group *q=g->glink;
User_Item *p;
display(g);
message(INFO,"请输入你要发信的人或组",NULL);
scanf("%s",gname);
while(q)
{
if(strcmp(q->group_name,gname)==0&&q->b)
{
message(INFO,"此用户存在发送有效",NULL);
break;
}
q=q->glink;
}
if(!q)
{
message(INFO,"此用户组不存在或无用户,发信失败",NULL);
return 0;
}
message(INFO,"请输入你要发信时间",NULL);
scanf("%s",time);
message(INFO,"请输入你要发信的概要",NULL);
scanf("%s",messg);
build_i_dir("userinf",mess);
message(INFO,"请输入你要发的内容",NULL);
scanf("%s",mess);
create_i_dir(filepath,"userinf",mess);
fp=fopen(filepath, "wb");
if(!fp)
{
printf("can not open file\n"); return 0;}
fputs(mess,fp);
fclose(fp);
p=q->ulink;
while(p)
{
(p->user_info_box)[p->count].flag=0;
strcpy((p->user_info_box)[p->count].info_summary,messg);
strcpy((p->user_info_box)[p->count].send_time,time);
strcpy((p->user_info_box)[p->count].sender_name,"admin");
save_user_info_b(p);
p=p->next;
}
return 1;
}
int send_admin_message(admin *adpt,User_Item *use)
{
CLS;
char time[MAX_INFO_SMY_LEN],messg[MAX_USER_LEN],mess[MAX_USER_LEN];
FILE *fp;
char filepath[MAX_MENU_LEN];
message(INFO,"请输入你要发信时间",NULL);
scanf("%s",time);
message(INFO,"请输入你要发信的概要",NULL);
scanf("%s",messg);
build_i_dir("admininf",mess);
message(INFO,"请输入你要发的内容",NULL);
scanf("%s",mess);
create_i_dir(filepath,"admininf",mess);
fp=fopen(filepath, "wb");
if(!fp)
{printf("can not open file\n"); return 0;}
fputs(mess,fp);
fclose(fp);
strcpy((adpt->admin_info_box)[adpt->count].info_summary,messg);
strcpy((adpt->admin_info_box)[adpt->count].send_time,time);
strcpy((adpt->admin_info_box)[adpt->count].sender_name,use->user_name);
adpt->count++;
save_system_info(adpt);
return 1;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -