• 大小: 429KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-08-12
  • 语言: 其他
  • 标签: 服务器  TCP协议  

资源简介

~内容详细值得借鉴和下载~设计文档(员工信息管理系统概要设计、pthread多线程并发)和可使用的完整程序源码。实现的功能:当用户登录后,根据用户名判断用户是否为管理员。如果为管理员,则进入管理员目录,如果为普通员工,则进入员工目录。在管理员目录,可以查看任意员工的信息,还可修改员工的信息,包括工资、评级,添加或删除用户。在员工目录,可以查看自己的信息,不能查看其他人的信息,可以修改自己的电话,地址等个人信息,但不能修改工资等管理员权限信息。

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include “client.h“


int main(int argc const char *argv[])
{
int sockfd;
struct sockaddr_in  serveraddr;
MSG  msg;

if((sockfd = socket(AF_INET SOCK_STREAM 0)) < 0)
{
perror(“socket“);
exit(1);
}

bzero(&serveraddr sizeof(serveraddr));
serveraddr.sin_family = AF_INET;
serveraddr.sin_port = htons(atoi(argv[2]));
serveraddr.sin_addr.s_addr = inet_addr(argv[1]);

if(connect(sockfd (struct sockaddr*)&serveraddr sizeof(serveraddr)) < 0)
{
perror(“connect“);
exit(1);
}

while(1)
{
puts(“------------------------------------“);
puts(“----------Login ^_^  ^_^-------------“);
puts(“------------------------------------“);

/*
 *  输入登录信息
 */
printf(“please input your name >“);
fgets(msg.name N stdin);
msg.name[strlen(msg.name) - 1] = ‘\0‘;

printf(“please input your password >“);
fgets(msg.passwd N stdin);
msg.passwd[strlen(msg.passwd) - 1] = ‘\0‘;
msg.type = LOAD;


send(sockfd &msg sizeof(MSG) 0);//发送消息给服务器,进行登录验证。
printf(“---load type %d\n“ msg.type);
recv(sockfd &msg sizeof(MSG) 0);//接收服务器的反馈消息。

if(msg.sign ==  FAILED)//登录失败
{
printf(“%s\n“ msg.data);
continue;
}

if(msg.sign == SUCCESS)//登录成功 
{
if(msg.info.type == STAFF)
{
goto User;//进入普通用户界面
}
else if(msg.info.type == ADM)
{
goto Admin;// 进入管理员界面 
}
}
}

/*普通用户界面*/
User:
while(1)
{
/*普通用户权限*/
puts(“----------------------------------------------------“);
puts(“-------1: select info 2:modify passwd 3:exit --------“);
puts(“-----------------------------------------------------“);
printf(“please input you command >“);

/*
 *输入命令错误处理
 */
int command;
char clear[N];
if(scanf(“%d“&command) == 0)
{
fgets(clear N stdin);
continue;
}

switch(command)
{
case 1:
msg.type = READ;
strcpy(msg.info.name  msg.name); 
msg.info.no = 0;

send(sockfd &msg sizeof(MSG) 0);//发送查询消息
recv(sockfd &msg sizeof(MSG) 0);//接收服务器的反馈消息
printf(“ ---------recv sign %d\n“ msg.sign);
/*打印用户自身信息*/

printf(“姓名    地址                  年龄    级别\n“);
printf(“%s %s %d %d \n“msg.info.name msg.info.addr msg.info.age msg.info.level);
printf(“编号    工资    电话      用户类型\n“);
printf(“%d %lf %s %d \n“msg.info.no msg.info.salary msg.info.phone msg.info.type);

break;
case 2:
getchar();
printf(“please input your new password >“);
getchar();
fgets(msg.passwd N stdin);
msg.passwd[strlen(msg.passwd) - 1] = ‘\0‘; 
msg.type = CHANGE;
send(sockfd &msg sizeof(MSG) 0);//发送修改密码的消息
break;

case 3:
msg.type = QUIT;
send(sockfd &msg sizeof(MSG) 0);
goto Exit;//退出程序
}
}


/*管理员界面*/
Admin:
while(1)
{
/*管理员的权限*/
puts(“--------------------------------------------------------------------“);
puts(“-----1:add user 2:delete user  3:modify inf

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2017-11-02 09:31  员工管理系统项目\
     目录           0  2017-11-01 14:41  员工管理系统项目\client\
     目录           0  2017-11-01 14:41  员工管理系统项目\client\.svn\
     文件         370  2014-06-20 15:42  员工管理系统项目\client\.svn\all-wcprops
     文件         638  2014-06-20 15:42  员工管理系统项目\client\.svn\entries
     目录           0  2017-11-01 14:41  员工管理系统项目\client\.svn\prop-base\
     文件          53  2014-06-20 15:42  员工管理系统项目\client\.svn\prop-base\client.svn-base
     目录           0  2016-07-06 14:02  员工管理系统项目\client\.svn\props\
     目录           0  2017-11-01 14:41  员工管理系统项目\client\.svn\text-base\
     文件        9698  2014-06-20 15:42  员工管理系统项目\client\.svn\text-base\client.c.svn-base
     文件        1134  2014-06-20 11:22  员工管理系统项目\client\.svn\text-base\client.h.svn-base
     文件       16119  2014-06-20 15:42  员工管理系统项目\client\.svn\text-base\client.svn-base
     目录           0  2017-11-01 14:41  员工管理系统项目\client\.svn\tmp\
     目录           0  2016-07-06 14:02  员工管理系统项目\client\.svn\tmp\prop-base\
     目录           0  2016-07-06 14:02  员工管理系统项目\client\.svn\tmp\props\
     目录           0  2016-07-06 14:02  员工管理系统项目\client\.svn\tmp\text-base\
     文件       16119  2014-06-20 15:42  员工管理系统项目\client\client
     文件        9698  2016-06-17 09:22  员工管理系统项目\client\client.c
     文件        1134  2014-06-20 10:37  员工管理系统项目\client\client.h
     文件       94208  2014-06-19 21:26  员工管理系统项目\pthread多线程并发.doc
     目录           0  2017-11-01 14:41  员工管理系统项目\server\
     目录           0  2017-11-01 14:41  员工管理系统项目\server\.svn\
     文件         468  2014-06-20 15:42  员工管理系统项目\server\.svn\all-wcprops
     文件         794  2014-06-20 15:42  员工管理系统项目\server\.svn\entries
     目录           0  2017-11-01 14:41  员工管理系统项目\server\.svn\prop-base\
     文件          53  2014-06-20 15:42  员工管理系统项目\server\.svn\prop-base\info.dat.svn-base
     文件          53  2014-06-20 15:42  员工管理系统项目\server\.svn\prop-base\user.dat.svn-base
     目录           0  2016-07-06 14:02  员工管理系统项目\server\.svn\props\
     目录           0  2017-11-01 14:41  员工管理系统项目\server\.svn\text-base\
     文件        1017  2014-06-20 15:42  员工管理系统项目\server\.svn\text-base\head.h.svn-base
     文件        4104  2014-06-20 15:42  员工管理系统项目\server\.svn\text-base\info.dat.svn-base
............此处省略14个文件信息

评论

共有 条评论