⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 用户收件箱函数.txt

📁 一个典型的小区消息管理系统
💻 TXT
字号:
#define MAX_USER_LEN      100
#define MAX_INFO_NUM      100          //收件箱/发件箱的最大容量
#define MAX_INFO_SMY_LEN  20      //信件内容摘要的最大长度 
#define MAX_INFO_LEN      500    //信件的最大长度

={"adm","adm",{""},{{"","","",0}},0,1,0}
typedef struct           //发件箱结构体定义
{ char sender_name[MAX_USER_LEN];
  char send_time[MAX_USER_LEN];
  char info_body[MAX_INFO_LEN];  //信件主体内容数组
}Send_Box;


typedef struct   //收件箱结构体定义
{ char sender_name[MAX_USER_LEN];
  char send_time[MAX_USER_LEN];
  char info_summary[MAX_INFO_SMY_LEN]; //内容摘要数组
  
  int  flag;//标记信件状态已读或未读(初始化为0)
}Rec_Box;


typedef struct user     //用户结构体定义
{char user_name[MAX_USER_LEN];
  char user_code[MAX_USER_LEN];
  char gname[MAX_USER_LEN];   //用户所在的组名
  Rec_Box  user_info_box[MAX_INFO_NUM];  //用户收件箱数组
  
  int count;     //记录收到的信件数(初始化值为0)
  struct user *next;//指向同一组的下一个用户
}User_Item;



typedef struct usergrou      //用户组结构体定义
{char group_name[MAX_USER_LEN]; //用户组名
 
 struct usergroup *glink; //指向下一个用户组的指针
 User_Item  *ulink; //指向组里的第一个用户的指针
 int b;      //用户组包含的用户个数
}User_Group;


typedef struct    //管理员结构体定义
{
	char admin_name[MAX_MENU_LEN];
	char admin_code[MAX_MENU_LEN];
        char user[100][MAX_USER_LEN];
        Rec_Box  admin_info_box[MAX_INFO_NUM];  //管理员收件箱数组
        int count; 
	int  a;   //已存在的用户组个数
	int  num;   //已注册的用户个数
			
} admin;


Send_Box  info_box[MAX_INFO_NUM];    //全局发件箱数组
char status[2][10]={"未读","已读"};//flag对应的状态标示数组


int  display_rec_box()    //收件箱显示函数,按收到时间顺序排列         问题:如何将用户信息传递给收件箱显示函数
{int i,j,choice,num;
 while(1)
 { 
  message(INFO,"信件编号                  发布时间                      状态",NULL);
  message(INFO,"____________________________________________________________",NULL);
  if(count==0)  {message(INFO,"收件箱为空!",NULL); return 0;}
  else
      {for(i=count-1,j=1;i>=0;i--)      //应用堆栈,后进先出
          {printf("【%d】         %s              %s\n",j++,user_info_box[i].send_time,status[user_info_box[i].flag]);}
      }
  message(INFO,"请选择操作:",NULL);
  printf("【1】阅读来信:\n");
  printf("【2】删除信件:\n");
  printf("【3】返回上一层菜单:\n);
  printf("请输入操作编号:");
  scanf("%d",&choice);
  switch(choice)
        {case'1':
               {message(TIP,"请选择要阅读的信件编号:",NULL);
                scanf("%d",&num);
                goto read_info(count-num);
               }
         case'2':
                {goto dele_info(num,&count);
                 message(INFO,"正在更新收件箱列表",WC); 
                }
         case'3': 
                 return 1;          
        }   
 }
}


int  read_info(int i)//读取信件函数,num为用户选择的要读取信件的编号(即display_rec_box函数中显示时的编号)
{Rec_Box box;
 box=userpt->user_info_box[i]; 
 message(INFO,"正在读取信件",WC);
 printf("【information body】:\n");
 scanf("%s\n",box.info_summary); 
 printf("【information send time】:\n");
 scanf("%s\n",box.send_time); 
 printf("【information sender】:\n");
 scanf("%s\n",box.sender_name);
 if(!box.flag)
    box.flag;   //"未读"则改变信件状态
 return 1;
}
 

int dele_info(int num;int *count)   //删除信件函数
{Rec_Box box; int i,j=*count-num;  //j为要删除的信件在数组中的编号
 box=userpt->user_info_box[j];   
 for(i=j;i<*count;i++)     //将所选删除信件后面的信件前移
    userpt->user_info_box[i]=userpt->user_info_box[i+1]; 
 *count--;
 message(INFO,"删除信件成功!",NULL);
 message(INFO,"正在返回上一层菜单",WC);
 return 1;
}
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -