临沂网站开发公司电话,做网站流量点击分析的软件,安卓系统开发工具,阿里云虚拟主机怎么做网站《C员工工资管理系统源代码》由会员分享#xff0c;可在线阅读#xff0c;更多相关《C员工工资管理系统源代码(17页珍藏版)》请在人人文库网上搜索。1、include #include #include #include #include #include using namespace std;#define NULL 0#define LEN sizeof(struct …《C员工工资管理系统源代码》由会员分享可在线阅读更多相关《C员工工资管理系统源代码(17页珍藏版)》请在人人文库网上搜索。1、include #include #include #include #include #include using namespace std;#define NULL 0#define LEN sizeof(struct student) int const N20;void Menu(); void Pass();int n0; /定义一个全局变量统计职工人数 /-定义一个职工信息的结构体struct student char nameN; /用来存放姓名char sexN; /用来存放性别long id; /用来存放编号float paid3; /用来存放工资int total; 。2、/用来存放总工资struct student *next;/-职工类class Information public:Information() ; /构造函数. Information() ; /析构函数. student *creat(); /建立链表void output(student *head); /显示职工信息int count(student *head); /定义函数count()统计职工总数student *insert(student*head); /指针函数*insert()用来添加职工信息.student *cancel(student *head,long id);。3、 /指针函数*cancel()用来删除职工信息.student *find(student *head,long id); /指针函数*find()用来查找职工信息.student *modify(student *head,long id); /指针函数*modife()用来修改职工的信息.void paixu(student *head); /定义paixu()函数将职工的总额从大到小排列并输出void average(student *head); /定义职工工资平均值的函数void save(student *head); /保存文件信息student *Read(); /读取文件信息。4、private:student *p1,*p2,*p3,*head,st; ;Information:Information() cout-n; cout-n; cout建立链表信息student *Information:creat(void) /定义一个指向struct student的结构体指针函数*creat()用来录入职工信息. char chN;n0; /用来存放职工姓名 p1p2(student *)malloc(LEN);/调用malloc()函数用来开辟一个新的存储单元 cout-ch;headNULL; /给指针head赋初值while (strcmp(ch,#)!。5、0) /调用字符比较函数strcmp()用来判断是否继续输入p1(student *)malloc(LEN); /调用malloc()函数用来开辟一个新的存储单元strcpy(p1-name,ch); /将循环结构前面输入的姓名复制到结构体名为p1的数组name中coutp1-sex;coutp1-id;while(p1-id)id)100000) /判断输入的编号是否有效(100000个)cout0p1-id; coutp1-paid0;while(p1-paid0)paid0)100000) /判断输入的分数是否有效(0 0p1-paid0; coutp1-paid1;while(p。6、1-paid1)paid1)100000) /判断输入的分数是否有效(0 0p1-paid1; coutp1-paid2;while(p1-paid2)paid2)100000) /判断输入的分数是否有效(0 0p1-paid2; p1-totalp1-paid0p1-paid1p1-paid2; /计算总额 if(n0)headp1; /如果是输入第一组职工信息就将指针p1赋给指针headelse p2-nextp1; /否则将p1赋给p2所指结构体的next指针p2p1; /将指针p1赋给指针p2n; /将职工人数n的值加1coutch; /将输入的姓名存放到字符数组c。7、h中p2-nextNULL; /将p2所指结构体的next指针重新赋空值return (head);/将输入的第一组职工信息返回/-定义output()函数将职工的信息从头指针所指内容开始输出void Information:output(student *head) system(cls);if(headNULL) coutidnamesexpaid0paid1paid2totalnext; /将下一组职工信息的next指针赋给pwhile(p1!NULL); /若指针p非空则继续,目的是把所有的职工信息都传给指针p然后输出./-统计职工人数的函数int Information:cou。8、nt(struct student *head) /定义函数count()统计职工总数if(headNULL)return(0); /若指针head为空返回值为0else return(1count(head-next); /函数的递归调用/-添加职工的成绩的函数student *Information:insert( student *head) /插入新结点定义一个指向struct student的结构体指针函数*insert()用来添加职工信息.system(cls);cout-np1-id;while(p1-id)id)100000)cout0p1-id; /将输入的编号存放到p1。9、所指结构体的数组id中 coutp1-name; /将输入的姓名存放到结构体名为p1的数组name中coutp1-sex; coutp1-paid0;while(p1-paid0)paid0)100000)cout0p1-paid0; /将输入的基本工资存放到p1所指结构体的数组paid中coutp1-paid1;while(p1-paid1)paid1)100000)cout0p1-paid1; /将输入的加班工资存放到p1所指结构体的数组paid中coutp1-paid2;while(p1-paid2)paid2)100000)cout0p1-paid2; /将输入的其他奖金存放到p1所指。10、结构体的数组paid中 p1-totalp1-paid0p1-paid1p1-paid2;/计算总分 p2head; /将头指针赋给p2if(headNULL) /若没调用次函数以前的头指针head为空headp1;p1-nextNULL; /则将p1赋给头指针head并将p1所指结构体成员指针next赋空值else while(p1-idp2-id)(p2-next!NULL)p3p2; /p3指向原p2指向的结点p2p2-next; /p2后移一个结点if(p1-idid)if(headp2)p1-nexthead;headp1; /插入到第一个结点之前else。11、 p3-nextp1;p1-nextp2; /插入到p3所指结点之后elsep2-nextp1;p1-nextNULL; /插入到尾结点之后n; /将职工人数加1cout-删除职工信息student *Information:cancel(student *head,long id) /定义一个指向struct student的结构体指针函数*delete()用来删除考生信息. system(cls);if(headNULL) /若调用次函数以前的头指针head为空 return(head);elsep1head; /否则将头指针赋给p1while(id!p1-idp1-ne。12、xt!NULL) /寻找要删除的结点当p1所指的职工编号不是输入的职工编号并且p1所指的next指针不为空p2p1;p1p1-next; /p2指向原p1指向的结点p1后移一个结点if(idp1-id) /如果输入的职工编号是p1所指的职工编号/结点找到后删除if(p1head) headp1-next; /如果head指针和p1指针相等则将下一个结点赋给指针head else p2-nextp1-next; /否则将p1所指结点赋给p2所指结点将要删除的职工信息跳过去cout-nidp1-next!NULL)/寻找结点当p1所指的职工编号不是输入的职工编号并且p1所指的ne。13、xt指针不为空p1p1-next; /p2指向原p1指向的结点p1后移一个结点 if(idp1-id) /如果要查找的职工编号是p1所指的职工编号coutidnamesexpaid0paid1paid2totalp1-id;while(p1-id)id)100000)cout0p1-id; /将输入的编号存放到p1所指结构体的数组id中 coutp1-name; /将输入的姓名存放到结构体名为p1的数组name中coutp1-sex; coutp1-paid0;while(p1-paid0)paid0)100000)cout0p1-paid0; /将输入的基本工资存放到p1所指结构体的数组。14、paid中coutp1-paid1;while(p1-paid1)paid1)100000)cout0p1-paid1; /将输入的加班工资存放到p1所指结构体的数组paid中coutp1-paid2;while(p1-paid2)paid2)100000)cout0p1-paid2; /将输入的其他奖金存放到p1所指结构体的数组paid中 p1-totalp1-paid0p1-paid1p1-paid2; /计算总分 else cout查找职工信息student *Information:find(student *head,long id) /定义一个指向struct student。15、的结构体指针函数*find()用来查找职工信息.system(cls);if(headNULL) /若调用次函数以前的头指针head为空coutidp1-next!NULL)/寻找结点当p1所指的职工编号不是输入的职工编号并且p1所指的next指针不为空p1p1-next; /p2指向原p1指向的结点p1后移一个结点if(idp1-id) /如果要查找的职工编号是p1所指的职工编号coutidnamesexpaid0paid1paid2totalnext;for(k0;ktotaltotal)p2pk;pkpj;pjp2; /从大到小排列的指针 for(i0;iidname。16、sexpaid0paid1paid2total求各工资的平均值的函数void Information:average(student *head)int k,m;float arg10,arg20,arg30;if(headNULL)/如果头指针是空则继续coutpaid0;arg2p1-paid1;arg3p1-paid2;p1p1-next;arg1/m;arg2/m;arg3/m;cout保存函数.void Information:save(student *head)system(cls);ofstream out(data.txt,ios:out);outna。17、meidsexpaid0paid1paid2totalnext; /读取文件的信息student *Information:Read() system(cls);int i0;p1p2( student *)malloc(LEN);headNULL; ifstream in(data.txt,ios:in);ini;if(i0)cout0;i-) p1(student *)malloc(LEN);inst.namest.idst.sexst.paid0st.paid1st.paid2st.total;strcpy(p1-name,st.name);p1-idst.id;strcp。18、y(p1-sex,st.sex);p1-paid0st.paid0;p1-paid1st.paid1;p1-paid2st.paid2;p1-totalst.total;if(n0)headp1; /如果是输入第一组职工信息就将指针p1赋给指针headelse p2-nextp1; /否则将p1赋给p2所指结构体的next指针p2p1; /将指针p1赋给指针p2n; /将n的值加1/显示读入数据coutnameidsex paid0 paid1 paid2 totalnextNULL;in.close();return (head);/-菜单void Menu()Infor。19、mation person;student *headNULL; int choice;long i; headperson.Read();do coutchoice;while(choice9)coutchoice; /headperson.Read(); switch(choice)case 1:headperson.creat(); break;case 2: /headperson.Read(); person.output(head); break;case 3: /headperson.Read(); person.paixu(head); person.average。20、(head); couti;while(i100000)couti; person.find(head,i); break;case 5: /headperson.Read(); headperson.insert(head);person.output(head);break;case 6:/headperson.Read(); couti;while(i100000)couti; headperson.cancel(head,i);person.output(head);break;case 7: /headperson.Read(); couti;while(i100000)c。21、outi; person.modify(head,i); break;case 8: cout管理员登陆void Pass()char UserName30;char Passward20;int i0;coutUserName;while (strcmp(UserName,1)!0)if(i3) exit(0); /超过4次则登陆失败退出系统i;coutUserName;coutPassward;while(strcmp(Passward,1)!0)if(i3)exit(0); /超过4次则登陆失败退出系统i;coutPassward;cout主函数.int main(void) /设置背景色和字体颜色system(PAUSE); /系统暂停system(cls); /系统清屏Pass();system(PAUSE);system(cls);Menu();return 0;。