企业员工管理系统开发

  • 程序介绍
    • 代码

程序介绍

系统介绍
企业员工信息管理系统主要是对企业员工的基本信息进行增、删、改、查的相关操作,以便用户可以快速地对这些信息进行管理。本系统对管理者的控制更加严格,只设置一个管理账号。
操作流程
用户在编译完成后会产生一个系统的可执行文件,用户只要双击可执行文件就可以进入系统,如果是第一次进入系统,首先要对系统进行初始化,如图所示,初始化完成后,再次双击系统执行文件,进入如图的界面。

用户在输入正确密码后,进入系统的功能选择界面如图所示。在这个界面用户可以选择相应的操作。

代码

//头文件
#include <stdio.h>
#include <stdlib.h>
#include <string.h>//存储员工信息的结构体
typedef struct employee
{int num;                       //员工号char duty[10];                 //员工职务char name[10];                //员工姓名char sex[3];                  //员工性别unsigned char age;            //员工年龄char edu[10];                 //教育水平int salary;                   //员工工资char tel_office[13];          //办公电话char tel_home[13];            //家庭电话char mobile[13];              //手机char qq[11];                //qq号码char address[31];             //家庭住址struct employee *next;
}EMP;//全局变量
char password[9];               //系统密码
EMP *emp_first,*emp_end;        //定义指向链表的头结点和尾节点的指针
char gsave,gfirst;              //判断标示//自定义函数声明
void addemp(void);              //添加员工信息的函数
void findemp(void);             //查找员工信息的函数
void listemp(void);             //显示员工信息列表的函数
void modifyemp(void);           //修改员工信息的函数
void summaryemp(void);          //统计员工信息的函数
void delemp(void);              //删除员工信息的函数
void resetpwd(void);            //重置系统的函数
void readdata(void);            //读取文件数据的函数
void savedata(void);            //保存数据的函数
int modi_age(int s);            //修改员工年龄的函数
int modi_salary(int s);         //修改员工工资的函数
char *modi_field(char *field,char *s,int n);            //修改员工其他信息的函数
EMP *findname(char *name);                              //按员工姓名查找员工信息
EMP *findnum(int num);                                  //按员工工号查找员工信息
EMP *findtelephone(char *name);                         //按员工的通讯号码查找员工信息
EMP *findqq(char *name);                                //按员工的QQ号查找员工信息
void displayemp(EMP *emp,char *field,char *name);       //显示员工信息
void checkfirst(void);                                  //初始化检测
void bound(char ch,int n);                              //画出分界线
void login();                                           //登录检测
void menu();                                            //主菜单列表/**
*  员工信息添加
*/
void addemp()
{FILE *fp;               //声明一个文件型指针EMP *emp1;              //声明一个结构型指针int i=0;char choice='y';if((fp=fopen("employee.dat","ab"))==NULL)       //判断信息文件中是否有信息{printf("打开文件employee.dat出错!\n");getch();return;                                         }     do{i++;emp1=(EMP *)malloc(sizeof(EMP));          //申请一段内存if(emp1==NULL)                             //判断内存是否分配成功{printf("内存分配失败,按任意键退出!\n");getch();return;              }printf("请输入第%d个员工的信息,\n",i);bound('_',30);printf("工号:");scanf("%d",&emp1->num);printf("职务:");scanf("%s",&emp1->duty);printf("姓名:");scanf("%s",&emp1->name);printf("性别:");scanf("%s",&emp1->sex);printf("年龄:");scanf("%d",&emp1->age);printf("文化程度:");scanf("%s",&emp1->edu);printf("工资:");scanf("%d",&emp1->salary);printf("办公电话:");scanf("%s",&emp1->tel_office);printf("家庭电话:");scanf("%s",&emp1->tel_home);printf("移动电话:");scanf("%s",&emp1->mobile);printf("QQ:");scanf("%s",&emp1->qq);printf("地址:");scanf("%s",&emp1->address);emp1->next=NULL;if(emp_first==NULL)            //判断链表头指针是否为空{emp_first=emp1;emp_end=emp1;                   }else {emp_end->next=emp1;emp_end=emp1;      }fwrite(emp_end,sizeof(EMP),1,fp);  //对数据流添加数据项gfirst=0;printf("\n");bound('_',30);printf("\n是否继续输入?(y/n)");fflush(stdin);                     //清除缓冲区choice=getch();if(toupper(choice)!='Y')           //把小写字母转换成大写字母{fclose(fp);                    //关闭文件流printf("\n输入完毕,按任意键返回\n");getch();return;                        }system("cls");      }while(1);
}void bound(char ch,int n)
{while(n--)putch(ch);printf("\n");return;
}/*首次使用,进行用户信息初始化*/
void checkfirst()
{FILE *fp,*fp1;                              //声明文件型指针char pwd[9],pwd1[9],pwd2[9],pwd3[9],ch;int i;char strt='8';    if((fp=fopen("config.bat","rb"))==NULL)     //判断系统密码文件是否为空{printf("\n新系统,请进行相应的初始化操作!\n");bound('_',50);getch();do{printf("\n设置密码,请不要超过8位:");for(i=0;i<8&&((pwd[i]=getch())!=13);i++)putch('*');printf("\n再确认一次密码:");for(i=0;i<8&&((pwd1[i]=getch())!=13);i++) putch('*');    pwd[i]='\0';  pwd1[i]='\0';if(strcmp(pwd,pwd1)!=0)             //判断两次新密码是否一致{printf("\n两次密码输入不一致,请重新输入!\n\n");}else break;}while(1);if((fp1=fopen("config.bat","wb"))==NULL){printf("\n系统创建失败,请按任意键退出!");getch();exit(1);                                        }i=0;while(pwd[i]){pwd2[i]=(pwd[i]^ strt);        putw(pwd2[i],fp1);                  //将数组元素送入文件流中i++;             }fclose(fp1);                            //关闭文件流printf("\n\n系统初始化成功,按任意键退出后,再重新进入!\n");getch();exit(1);}else{i=0;while(!feof(fp)&&i<8)                   //判断是否读完密码文件pwd[i++]=(getw(fp)^strt);           //从文件流中读出字符赋给数组pwd[i]='\0';if(i>=8) i--;while(pwd[i]!=-1&&i>=0)i--;pwd[i]='\0';                            //将数组最后一位设定为字符串的结束符strcpy(password,pwd);                   //将数组pwd中的数据复制到数组password中}
}void delemp()
{int findok=0;EMP *emp1,*emp2;char name[10],choice;system("cls");              //对屏幕清屏printf("\n输入要删除的员工姓名:");scanf("%s",name);emp1=emp_first;emp2=emp1;while(emp1){if(strcmp(emp1->name,name)==0){findok=1;system("cls");printf("员工:%s的信息如下:\n",emp1->name);bound('_',40);printf("工号:%d\n",emp1->num);printf("职务:%s\n",emp1->duty);printf("姓名:%s\n",emp1->name);printf("性别:%s\n",emp1->sex);printf("年龄:%d\n",emp1->age);printf("文化程度:%s\n",emp1->edu);printf("工资:%d\n",emp1->salary);printf("办公电话:%s\n",emp1->tel_office);printf("家庭电话:%s\n",emp1->tel_home);printf("移动电话:%s\n",emp1->mobile);printf("QQ号码:%s\n",emp1->qq);printf("住址:%\n",emp1->address);bound('_',40);printf("您真的要删除该员工吗?(y/n)");fflush(stdin);          //清除缓冲区choice=getchar();if(choice!='y' && choice!='Y'){return;}if(emp1==emp_first){emp_first=emp1->next;}else{emp2->next=emp1->next;}printf("员工%s已被删除",emp1->name);getch();free(emp1);gsave=1;savedata();             //保存数据return;                           }  else{        emp2=emp1;emp1=emp1->next;}}    if(!findok){bound('_',40);printf("\n没有找到姓名是:%s的信息!\n",name);  //没找到信息后的提示getch();           } return;
}void displayemp(EMP *emp,char *field,char *name)
{if(emp){printf("\n%s:%s信息如下:\n",field,name);bound('_',30); printf("工号:%d\n",emp->num);printf("职务:%s\n",emp->duty);printf("姓名:%s\n",emp->name);printf("性别:%s\n",emp->sex);printf("年龄:%d\n",emp->age);printf("文化程度:%s\n",emp->edu);printf("工资:%d\n",emp->salary);printf("办公电话:%s\n",emp->tel_office);printf("家庭电话:%s\n",emp->tel_home);printf("移动电话:%s\n",emp->mobile);printf("QQ号码:%s\n",emp->qq);printf("住址:%s\n",emp->address);bound('_',30);      }else {bound('_',40);printf("资料库中没有%s为:%s的员工!请重新确认!",field,name);}return;
}/**
* 按照姓名查找员工信息
*/
EMP *findname(char *name)
{EMP *emp1;emp1=emp_first;while(emp1){if(strcmp(name,emp1->name)==0)      //比较输入的姓名和链表中的记载姓名是否相同{return emp1;}emp1=emp1->next;          }    return NULL;
}/**
* 按照员工号查询
*/
EMP *findnum(int num)                   //声明一个结构体指针
{EMP *emp1;emp1=emp_first;while(emp1){if(num==emp1->num)  return emp1;emp1=emp1->next;           }  return NULL;
}
/**
* 按照通讯号码查询员工信息
*/
EMP *findtelephone(char *name)
{EMP *emp1;emp1=emp_first;while(emp1){if((strcmp(name,emp1->tel_office)==0)||(strcmp(name,emp1->tel_home)==0)||(strcmp(name,emp1->mobile)==0))        //使用逻辑或判断通讯号码return emp1;emp1=emp1->next;}  return NULL;
}/**
* 按照员工QQ号查询员工信息
*/
EMP *findqq(char *name)
{EMP *emp1;emp1=emp_first;while(emp1){if(strcmp(name,emp1->qq)==0)  return emp1;emp1=emp1->next;           }  return NULL;
}/**
* 查询员工信息
*/
void findemp()
{int choice,ret=0,num;char str[13];EMP *emp1;system("cls");do{printf("\t查询员工信息\n");bound('_',30);printf("\t1.按姓名查询\n");printf("\t2.按工号查询\n");printf("\t3.按电话查询\n");printf("\t4.按QQ号查询\n");printf("\t0.返回主菜单\n");bound('_',30);printf("\n请选择菜单:");do{fflush(stdin);choice=getchar();system("cls");switch(choice){case '1':printf("\n输入要查询的员工姓名:");scanf("%s",str);emp1=findname(str);displayemp(emp1,"姓名",str);getch();break; case '2':printf("\n请输入要查询的员工的工号"); scanf("%d",&num); emp1=findnum(num);itoa(num,str,10);displayemp(emp1,"工号",str);getch();break;case '3':printf("\n输入要查询员工的电话:");scanf("%s",str);emp1=findtelephone(str); displayemp(emp1,"电话",str);getch();break;case '4':printf("\n输入要查询的员工的QQ号:");scanf("%s",str);emp1=findqq(str);displayemp(emp1,"QQ号码",str);getch();break;case '0':ret=1;break;          }                         }while(choice<'0'||choice>'4');system("cls");if(ret) break;}while(1);
}void listemp()
{EMP *emp1;printf("\n资料库中的员工信息列表\n");bound('_',40);emp1=emp_first;while(emp1) {printf("工号:%d\n",emp1->num);printf("职务:%s\n",emp1->duty);printf("姓名:%s\n",emp1->name);printf("性别:%s\n",emp1->sex);printf("年龄:%d\n",emp1->age);printf("文化程度:%s\n",emp1->edu);printf("工资:%d\n",emp1->salary);printf("办公电话:%s\n",emp1->tel_office);printf("家庭电话:%s\n",emp1->tel_home);printf("移动电话:%s\n",emp1->mobile);printf("QQ号码:%s\n",emp1->qq);printf("住址:%s\n",emp1->address);  bound('_',40);emp1=emp1->next;      }    printf("\n显示完毕,按任意键退出!\n");getch();return;
}/*检测登录密码*/
void login()
{int i,n=3;char pwd[9];do{printf("请输入密码:");for(i=0;i<8 && ((pwd[i]=getch())!=13);i++)putch('*');pwd[i]='\0';if(!strcmp(pwd,password)){printf("\n密码错误,请重新输入!\n");getch();system("cls");n--;}elsebreak;} while(n>0);                       //密码输入三次的控制if(!n){printf("请退出,你已输入三次错误密码!");getch();exit(1);}
}void menu()
{char choice;system("cls");do{printf("\n\t\t\t\t 企业员工管理系统\n\n");printf("\t\t\t-------------------------------------\n");printf("\t\t\t|\t\t\t\t    |\n");printf("\t\t\t|  \t1、输入员工信息\t\t    |\n");printf("\t\t\t|\t\t\t\t    |\n");printf("\t\t\t|  \t2、查询员工信息\t\t    |\n");printf("\t\t\t|\t\t\t\t    |\n");printf("\t\t\t|  \t3、显示员工信息\t\t    |\n");printf("\t\t\t|\t\t\t\t    |\n");printf("\t\t\t|  \t4、修改员工信息\t\t    |\n");printf("\t\t\t|\t\t\t\t    |\n");printf("\t\t\t|  \t5、删除员工信息\t\t    |\n");printf("\t\t\t|\t\t\t\t    |\n");printf("\t\t\t|  \t6、统计员工信息\t\t    |\n");printf("\t\t\t|\t\t\t\t    |\n");printf("\t\t\t|  \t7、重置系统密码\t\t    |\n");printf("\t\t\t|\t\t\t\t    |\n");printf("\t\t\t|  \t0、退出系统\t\t    |\n");printf("\t\t\t|\t\t\t\t    |\n");printf("\t\t\t-------------------------------------\n");printf("\n\t\t\t请选择您需要的操作:");do{fflush(stdin);choice=getchar();system("cls");switch(choice){case '1':addemp();        //调用员工信息添加函数break;case '2':if(gfirst){printf("系统信息中无员工信息,请先添加员工信息!\n");getch();break;          }  findemp();       //调用员工信息查找函数break;case '3':if(gfirst){printf("系统信息中无员工信息,请先添加员工信息!\n");getch();break;       }listemp();       //员工列表函数break;case '4':if(gfirst){printf("系统信息中无员工信息,请先添加员工信息!\n");getch();break;       }modifyemp();     //员工信息修改函数break;case '5':if(gfirst){printf("系统信息中无员工信息,请先添加员工信息!\n");getch();break;       }delemp();        //删除员工信息的函数break;case '6':if(gfirst){printf("系统信息中无员工信息,请先添加员工信息!\n");getch();break;       }summaryemp();     //统计函数break; case '7':resetpwd();      //重置系统的函数break;case '0':savedata();      //保存数据的函数exit(0);default:printf("请输入0~7之间的数字");getch();menu();}                             } while(choice<'0'||choice>'7');  system("cls");}while(1);
}int modi_salary(int salary)
{int newsalary;printf("原来的工资数为:%d",salary);printf("新的工资数:");scanf("%d",&newsalary);    return(newsalary);
}int modi_age(int age)
{int newage;printf("原来的年龄为:%d",age);printf("新的年龄:");scanf("%d",&newage);    return(newage);
}char *modi_field(char *field,char *content,int len)
{char *str;str=malloc(sizeof(char)*len);if(str==NULL){printf("内存分配失败,按任意键退出!");getch();return NULL;             }printf("原来%s为:%s\n",field,content);printf("修改为(内容不要超过%d个字符!):",len);scanf("%s",str);     return str;
}void modifyemp()
{EMP *emp1;char name[10],*newcontent;int choice;printf("\n请输入您要修改的员工的姓名:");scanf("%s",&name);emp1=findname(name);displayemp(emp1,"姓名",name);if(emp1){printf("\n 请输入你要修改的内容选项!\n");bound('_',40);printf("1.修改职务                2.修改年龄\n");printf("3.修改文化程度            4.修改工资\n");printf("5.修改办公室电话          6.修改家庭电话\n");printf("7.修改移动电话            8.修改QQ号码 \n");printf("9.修改住址                0.返回\n  ");bound('_',40);do{fflush(stdin);         //清除缓冲区choice=getchar();switch(choice)         //操作选择函数{case '1':newcontent=modi_field("职务",emp1->duty,10);  //调用修改函数修改基本信息if(newcontent!=NULL){strcpy(emp1->duty,newcontent);free(newcontent);                    } break;case '2':emp1->age=modi_age(emp1->age);break;case '3':newcontent=modi_field("文化程度",emp1->edu,10);if(newcontent!=NULL){strcpy(emp1->edu,newcontent);         //获取新信息内容free(newcontent);                    } break;case '4':emp1->salary=modi_salary(emp1->salary);break;case '5':newcontent=modi_field("办公室电话",emp1->tel_office,13);if(newcontent!=NULL){strcpy(emp1->tel_office,newcontent);free(newcontent);                    } break;case '6':newcontent=modi_field("家庭电话",emp1->tel_home,13);if(newcontent!=NULL){strcpy(emp1->tel_home,newcontent);free(newcontent);                    } break;case '7':newcontent=modi_field("移动电话",emp1->mobile,12);if(newcontent!=NULL){strcpy(emp1->mobile,newcontent);free(newcontent);                    } break;case '8':newcontent=modi_field("QQ号码",emp1->qq,10);if(newcontent==NULL){strcpy(emp1->qq,newcontent);free(newcontent);                    } break;  case '9':newcontent=modi_field("住址",emp1->address,30);if(newcontent!=NULL){strcpy(emp1->address,newcontent);free(newcontent);                 //释放内存空间} break;     case '0':return;             }             }while(choice<'0' || choice>'9');gsave=1;savedata();                                    //保存修改的数据信息printf("\n修改完毕,按任意键退出!\n");getch();}  return;
}/*读取数据*/
void readdata(void)
{FILE *fp;EMP *emp1;if((fp=fopen("employee.dat","rb"))==NULL){gfirst=1;return;                                        }     while(!feof(fp)){emp1=(EMP *)malloc(sizeof(EMP));if(emp1==NULL){printf("内存分配失败!\n");getch();return;              }          fread(emp1,sizeof(EMP),1,fp);if(feof(fp))  break;if(emp_first==NULL){emp_first=emp1;emp_end=emp1;                   }else{emp_end->next=emp1;emp_end=emp1;   }emp_end->next=NULL;}gfirst=0;fclose(fp);
}void resetpwd()
{char pwd[9],pwd1[9],ch;int i;FILE *fp1;system("cls");printf("\n请输入旧密码:\n");for(i=0;i<8 && ((pwd[i]=getch())!=13);i++)putch('*');pwd[i]='\0';if(strcmp(password,pwd)){printf("\n密码错误,请按任意键退出!\n");       //比较旧密码,判断用户权限getch();return;             }   do{printf("\n设置新密码,请不要超过8位:");for(i=0;i<8&&((pwd[i]=getch())!=13);i++)putch('*');printf("\n再确认一次密码:");for(i=0;i<8&&((pwd1[i]=getch())!=13);i++) putch('*');                             //屏幕中输出提示字符pwd[i]='\0';  pwd1[i]='\0';if(strcmp(pwd,pwd1)!=0)printf("\n两次密码输入不一致,请重新输入!\n\n");else break;}while(1);if((fp1=fopen("config.bat","wb"))==NULL)        //打开密码文件{printf("\n系统创建失败,请按任意键退出!");getch();exit(1);}i=0;while(pwd[i]){putw(pwd[i],fp1);i++;}fclose(fp1);                                    //关闭文件流printf("\n密码修改成功,按任意键退出!\n");getch();return;
}void savedata()
{FILE *fp;EMP *emp1;if(gsave==0) return;if((fp=fopen("employee.dat","wb"))==NULL){printf("打开文件employee.dat出错!\n");getch();return;}emp1=emp_first;while(emp1){fwrite(emp1,sizeof(EMP),1,fp);emp1=emp1->next;}gsave=0;fclose(fp);
}void summaryemp()
{EMP *emp1;int sum=0,num=0,man=0,woman=0;emp1=emp_first;while(emp1){num++;sum+=emp1->salary;char strw[2];strncpy(strw,emp1->sex,2);if((strcmp(strw,"ma")==0)||(strcmp(emp1->sex,"男")==0)) man++;else woman++;emp1=emp1->next;}printf("\n下面是相关员工的统计信息!\n");bound('_',40);printf("员工总数是:%d\n",num);printf("员工的工资总数是:%d\n",sum);printf("男员工数为:%d\n",man);printf("女员工数为:%d\n",woman);bound('_',40);printf("按任意键退出!\n");getch();return;
}int main(void)
{system("color f0\n");        //白底黑字emp_first=emp_end=NULL;gsave=gfirst=0;checkfirst();login();readdata();menu();system("PAUSE");return 0;
}

企业员工管理系统开发相关推荐

  1. [附源码]java毕业设计企业员工管理系统

    项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...

  2. JAVA毕业设计HTML5企业员工管理系统计算机源码+lw文档+系统+调试部署+数据库

    JAVA毕业设计HTML5企业员工管理系统计算机源码+lw文档+系统+调试部署+数据库 JAVA毕业设计HTML5企业员工管理系统计算机源码+lw文档+系统+调试部署+数据库 本源码技术栈: 项目架构 ...

  3. HTML5期末大作业:管理系统网站设计——蓝色OA企业员工管理系统(10页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源

    HTML5期末大作业:管理系统网站设计--蓝色OA企业员工管理系统(10页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码 常 ...

  4. java计算机毕业设计企业员工管理系统源码+程序+lw文档+mysql数据库

    java计算机毕业设计企业员工管理系统源码+程序+lw文档+mysql数据库 java计算机毕业设计企业员工管理系统源码+程序+lw文档+mysql数据库 本源码技术栈: 项目架构:B/S架构 开发语 ...

  5. 视频教程-C#WinForm工业企业销售管理系统开发-C#

    C#WinForm工业企业销售管理系统开发 二十多年的企业管理软件开发经历,熟知管理软件的整个开发流程,熟练掌握VFP语言,掌握VB语言,了解JAVA.asp.net.CSS.HTML/HTML5等语 ...

  6. Springboot企业员工管理系统52y0w计算机毕业设计-课程设计-期末作业-毕设程序代做

    Springboot企业员工管理系统52y0w计算机毕业设计-课程设计-期末作业-毕设程序代做 [免费赠送源码]Springboot企业员工管理系统52y0w计算机毕业设计-课程设计-期末作业-毕设程 ...

  7. [附源码]java毕业设计生产型企业员工管理系统

    项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...

  8. java计算机毕业设计HTML5企业员工管理系统MyBatis+系统+LW文档+源码+调试部署

    java计算机毕业设计HTML5企业员工管理系统MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计HTML5企业员工管理系统MyBatis+系统+LW文档+源码+调试部署 本源码技 ...

  9. java计算机毕业设计HTML5企业员工管理系统源码+mysql数据库+系统+lw文档+部署

    java计算机毕业设计HTML5企业员工管理系统源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计HTML5企业员工管理系统源码+mysql数据库+系统+lw文档+部署 本源码技术栈 ...

最新文章

  1. BASH命令和SHELL脚本学习
  2. python程序结构有哪几种_三、python程序结构之分支结构
  3. spark源码编译记录
  4. 自然语言处理太难?按这个方式走,就是砍瓜切菜!
  5. Windows导出所有计划任务方法
  6. 悲观锁 引起死锁_悲观锁定时如何避免可怕的死锁-以及Java 8的一些用法!
  7. mysql set语句_mysql--乱码解决(6)
  8. python建立py文件夹过程_Pycharm创建python文件自动添加日期作者等信息(步骤详解)...
  9. IT人必去的几大网站,国内外知名IT网站罗列!
  10. 蓝桥杯——阿尔法乘积
  11. python常见的数据结构
  12. python排序算法的时间复杂度_Python算法的时间复杂度和空间复杂度(实例解析)
  13. linux系统移植和根文件系统制作
  14. 温度转换问题——从C到Python
  15. 缅怀:腾讯游戏毛星云(浅墨)突然离世
  16. VMware12安装centOS8(vm虚拟机安装centos8教程)
  17. 高通apq8098平台sd卡总结
  18. 这个案例你可以直接拿去用。
  19. 极光推送报错time_to_live value should be a non-negative integertime_to_live value should be a non-negativ
  20. 规划云:GIS相关模块

热门文章

  1. 大规模场景下 kubernetes 集群的性能优化
  2. Spark运行模式Standalone 模式
  3. 登录界面输入密码键盘不响应_为什么计算机响应错误的密码和正确的密码需要更长的时间?...
  4. 判断两数是否可以除尽
  5. 用Microsoft Edge打开非安全连接
  6. 小学生计算机信息教学计划表,小学信息技术教学计划(多篇).doc
  7. Flutter TextField详解
  8. Mysql查询原理、计算属性理解
  9. 制作自定义pfx证书(数字签名)
  10. 基于GEC6818的智能家居系统