高校人事管理系统C++代码
高校教师人事管理系统(c和链表)

高校教师人事管理系统(c和链表)#include "stdio.h"#include "stdlib.h"#include "string.h"#define FORMAT printf("编号姓名性别出生日期(格式:2010 08 01) 参加工作时间工资学院职称学位\n ");#define LEN sizeof(struct teacher)struct teacher *creat(void);void print(struct teacher *head);void save(struct teacher *head);struct teacher *read(void);struct teacher *add(void);struct teacher *array(struct teacher *head);struct teacher *del();struct teacher *modify();void find();void statistics();struct date{int year,month,day;};typedef struct teacher //编号、姓名、性别、出生日期、参加工作时间、工资、学院、职称(助教、讲师、副教授、教授)、学位(学士、硕士、博士){long number;int salary;char name[20], sex[10], date_time[20], college[20],title[20], degree[20] ;struct date birth;struct teacher *next;}TE;int n=0,m=0,n_1=0; //n:记录教师数目;m和n_1都是记录读取文件中的教师数目;TE * creat(void) //函数功能:创建teacher信息{TE *head=NULL, *p1=NULL, *p2=NULL;p1=p2=(TE *)malloc(LEN);printf("请输入教师信息:\n");FORMAT;scanf("%ld%s%s%d%d%d%s%d%s%s%s",&p1->number,p1->name, p1->sex, &p1->birth.year,&p1->birth.month,&p1->birth.day,&p1->date_time, &p1->salary, p1->college, p1->title, p1->degree);while(p1->number!=0){n+=1;if(n == 1) head=p1;else p2->next=p1;p2=p1;p1=(TE *)malloc(LEN);scanf("%ld%s%s%d%d%d%s%d%s%s%s",&p1->number,p1->name, p1->sex, &p1->birth.year,&p1->birth.month,&p1->birth.day,&p1->date_time, &p1->salary, p1->college, p1->title, p1->degree);//printf("OK!\n");}p2->next=NULL;free(p1);return(head);}void print(TE *head) //函数功能:输出信息{TE *p1=head;printf("共有教师 %d 名\n",m);FORMAT;if(head!=NULL)do{printf("%ld\t%s\t%s\t%d_%d_%d\t%s\t%d\t%s\t%s\t%s\n", p1->number, p1->name, p1->sex,p1->birth.year,p1->birth.month,p1->birth.day,&p1->date_time, &p1->salary, p1->college, p1->title, p1->degree);p1=p1->next;}while(p1!=NULL);}TE *del() //函数功能:删除信息{long can_num;TE *head,*p1,*p2;p1=p2=head=read();print(head);printf("请输入要删除的教师编号\n");scanf("%ld",&can_num);while(p1->number != can_num && p1->next !=NULL) { p2=p1; p1=p1->next; } //找出p1指向的节点if(p1->number == can_num){if(p1==head) head=p1->next;else p2->next=p1->next;printf("del: %ld\n",can_num);n--;printf("还有教师%d位\n",n);}else printf("没有你要查找的教师!\n");save(head);return(head);}void find() //函数功能:查找{int select;long find_num;charfind_name[20],find_time[20],find_college[20],find_title[20];TE *p1,*p2,*head;p1=p2=head=read();print(head);printf("按下列选项查询教师信息\n");printf("1.编号 2.姓名 3.参加工作时间 4.学院 5.职称 \n 请选择:");scanf("%d",&select);if(select==1){printf("请输入编号:");scanf("%ld",&find_num);while(p1->number != find_num && p1->next !=NULL){ p2=p1; p1=p1->next; }if(p1->number == find_num ){FORMAT;printf("%ld %s %s %d %d %d %s %d %s % s %s\n",p1->number, p1->name, p1->sex,p1->birth.year,p1->birth.month,p1->birth.day,&p1->date_time, &p1->salary, p1->college, p1->title, p1->degree);}else printf("没有要查找的教师信息!!\n");}if(select==2){printf("请输入姓名:");scanf("%s",find_name);while(strcmp(p1->name,find_name)!=0 && p1->next !=NULL ){ p2=p1; p1=p1->next; }if(strcmp(p1->name,find_name)==0){FORMAT;printf("%ld %s %s %d %d %d %s %d %s % s %s\n",p1->number, p1->name, p1->sex,p1->birth.year,p1->birth.month,p1->birth.day,&p1->date_time, &p1->salary, p1->college, p1->title, p1->degree);}else printf("没有要查找的教师信息!!\n");}if(select==3){int n_n=0;printf("请输入参加工作时间:");scanf("%s",find_time);while(p1 != NULL){if(strcmp(p1->date_time,find_time)==0){if(n_n ==0) FORMAT;printf("%ld %s %s %d %d %d %s %d %s % s %s\n",p1->number, p1->name, p1->sex,p1->birth.year,p1->birth.month,p1->birth.day,&p1->date_time, &p1->salary, p1->college, p1->title, p1->degree);n_n++;}p1=p1->next;}if(n_n == 0) printf("没有要查找的教师信息!!\n");}if(select==4){int n_n=0;printf("学院:");scanf("%s",find_college);while(p1 != NULL ){if(strcmp(p1->college,find_college)==0 ){if(n_n ==0) FORMAT;printf("%ld %s %s %d %d %d %s %d %s % s %s\n",p1->number, p1->name, p1->sex,p1->birth.year,p1->birth.month,p1->birth.day,&p1->date_time, &p1->salary, p1->college, p1->title, p1->degree);n_n++;}p2=p1; p1=p1->next;}if(n_n == 0) printf("没有要查找的教师信息!!\n");}if(select==5){int n_n=0;printf("职称:");scanf("%s",find_title);while(p1!=NULL ){if(strcmp(p1->title,find_title) ==0 ){if(n_n ==0) FORMAT;printf("%ld %s %s %d %d %d %s %d %s % s %s\n",p1->number, p1->name, p1->sex,p1->birth.year,p1->birth.month,p1->birth.day,&p1->date_time, &p1->salary, p1->college, p1->title, p1->degree);n_n++;}p2=p1; p1=p1->next;}if(n_n == 0) printf("没有要查找的教师信息!!\n");}}void statistics() //函数功能:统计{int birth_num=0,sum=0,title_num[4]={0},de_num[3]={0};float proport=0;TE *head,*p1,*p2;p1=head=read();print(p1);while(p1 != NULL){if(p1->birth.year >= 1980) birth_num++;p2=p1; p1=p1->next; sum++;}proport=(float)birth_num*100/sum;printf("\n1980后教师共有 %d 位,80后教师占教师总数的比率是:%4.2f \n",birth_num,proport);sum=0;p1=head;while(p1 != NULL){if(strcmp(p1->title,"助教")==0) title_num[0]++;if(strcmp(p1->title,"讲师")==0) title_num[1]++;if(strcmp(p1->title,"副教授")==0) title_num[2]++;if(strcmp(p1->title,"教授")==0) title_num[3]++;p2=p1; p1=p1->next; sum++;}for(int i=0; i<4 ;i++) sum+=title_num[i] ;proport=(float)(title_num[2]+title_num[3])/sum;printf("\n助教%d位、讲师%d位、副教授%d位、教授%d位。
c语言设计的人事管理系统源码

#include<iostream.h>#include<string.h>#include<iomanip.h>#include<fstream.h>#include<stdio.h>#include<stdlib.h>#include<conio.h>int k=1,i; //定义一个标志变量class birthday{ //定义出生年月日类public:int year;int month;int day;};class people{ //声明人员基类,以后在这个基础上派生出其它类public:people(){}virtual void enter(); //虚基函数,搭成一个框架,以后在此基础上扩充virtual void display();virtual int get_no(){return number;}virtual char * get_name(){return name;}virtual void change_infor(){} //信息修改函数virtual void readfile(){} //从文件中读virtual void write(){} //将信息写入文件people operator = (people p1); //运算符重载int operator == (people p1);virtual ~people(){};protected:char name[12];int number;char sex;birthday bir;char id[15];};people people::operator =(people p1)//定义运算符重载{strcpy(name,); number=p1.number; sex=p1.sex; bir.day=p1.bir.day;bir.month=p1.bir.month; bir.year=p1.bir.year;strcpy(id,p1.id);return p1;}int people::operator ==(people p1){if(id==p1.id) return 1;else return 0;}void people::enter(){ //定义信息输入函数cout<<"输入姓名:"; cin>>name;cout<<"输入编号:"; cin>>number;cout<<"输入性别:"; cin>>sex;cout<<"生日是(年月日):"; cin>>bir.year>>bir.month>>bir.day;cout<<"身份证号:";cin>>id;}void people::display(){ //定义信息显示函数cout<<setw(8)<<"姓名"<<setw(8)<<"编号"<<setw(8)<<"性别"<<setw(8)<<"出生日期"<<setw(8)<<"身份证号"<<endl;cout<<setw(8)<<name<<setw(8)<<number<<setw(8)<<sex<<setw(8)<<bir.year<<setw(8)<<bir.mo nth<<setw(8)<<bir.day<<setw(8)<<id<<endl;}class student:virtual public people{ //以公有方式派生出学生类protected:char classnumber[20];public:student(){}virtual void enter(){people::enter();cout<<"输入班级名称:";cin>>classnumber;}virtual void display();virtual void readfile();virtual void write();virtual void change_infor();virtual ~student(){};};class teacher:virtual public people{ //以公有方式派生出老师类protected:char principalship[16];char department[16];public:teacher(){}virtual void enter(){people::enter();cout<<"输入老师的职务:";cin>>principalship;cout<<"\n 输入老师所在的部门:";cin>>department;}virtual void display();virtual void readfile();virtual void write();virtual void change_infor();virtual ~teacher(){}};//class graduate:virtual public student{ //以公有方式派生出研究生类protected:char subject[16];teacher adviser;public:graduate(){};virtual void enter(){student::enter();cout<<"输入研究生的专业:";cin>>subject;cout<<"输入导师的情况:"<<endl;adviser.enter();}virtual void display();virtual void readfile();virtual void write();virtual void change_infor();virtual ~graduate(){};};class teacher_asistant:public teacher,public graduate{ //以公有方式派生出助教类public:teacher_asistant(){};virtual void enter(){graduate::enter();cout<<"请输入助教生所在职务:";cin>>principalship;cout<<"请输入所在部门:";cin>>department;}virtual void display();virtual void readfile();virtual void write();virtual void change_infor();virtual ~teacher_asistant(){}};void student::display(){ //定义派生类学生的信息显示函数cout<<setw(8)<<"姓名"<<setw(8)<<"编号"<<setw(5)<<"性别"<<setw(12)<<"出生日期"<<setw(12)<<"身份证号"<<setw(12)<<"班级名称"<<endl;cout<<setw(8)<<name<<setw(8)<<number<<setw(5)<<sex<<setw(4)<<bir.year<<setw(4)<<bir.mo nth<<setw(4)<<bir.day<<setw(10)<<id<<setw(12)<<classnumber<<endl;}void student::write(){ //定义派生类学生的信息写入文件函数student stu;char ch;ofstream myfile("student.txt",ios::app);do{stu.enter();myfile.write((char *)&stu,sizeof(stu));cout<<"还需要输入下个学生的信息吗(y/n):";cin>>ch;}while(ch=='y'||ch=='Y');myfile.close();}void student::readfile(){ //定义派生类学生的读文件函数ifstream myfile("student.txt",ios::nocreate);while(myfile){student stu;if(myfile.read((char*)&stu,sizeof(stu))){if(stu.number!=-1) //删除一个学生的信息,通过不显示来定义删除stu.display();}}myfile.close();}void student::change_infor(){ //定义派生类学生的信息修改函数student stu;int num,p;cout<<"请输入你要修改或者删除的学生的编号:";cin>>num;fstream myfile("student.txt",ios::in|ios::out);while(myfile.good()){myfile.read((char*)&stu,sizeof(stu));if(num==stu.number){myfile.seekg(-sizeof(stu),ios::cur);cout<<"你是要修改还是要删除该学生的记录(1:删除2:修改):";cin>>p;if(p==1){stu.number=-1;break;}else {cout<<"请输入新的信息"<<endl;stu.enter();break;}}}myfile.write((char *)&stu,sizeof(stu));myfile.close();}void teacher::display(){cout<<setw(8)<<"姓名"<<setw(8)<<"编号"<<setw(5)<<"性别"<<setw(12)<<"出生日期"<<setw(12)<<"身份证号"<<setw(10)<<"职务"<<setw(10)<<"部门"<<endl;cout<<setw(8)<<name<<setw(8)<<number<<setw(5)<<sex<<setw(4)<<bir.year<<setw(4)<<bir.mo nth<<setw(4)<<bir.day<<setw(12)<<id<<setw(10)<<principalship<<setw(10)<<department<<endl ;}void teacher::readfile(){ifstream myfile("teacher.txt",ios::nocreate);while(myfile){people *p;teacher tec;p=&tec;if(myfile.read((char*)&tec,sizeof(tec))){if(tec.number!=-1)p->display();}}myfile.close();}//void teacher::write(){teacher tec;char ch;ofstream myfile("teacher.txt",ios::app);do{tec.enter();myfile.write((char *)&tec,sizeof(tec));cout<<"还需要输入下个学生的信息吗(y/n):";cin>>ch;}while(ch=='y'||ch=='Y');myfile.close();}void teacher::change_infor(){teacher tec;int num,p;cout<<"请输入你要修改或者删除的老师的编号:";cin>>num;fstream myfile("teacher.txt",ios::in|ios::out);while(myfile.good()){myfile.read((char*)&tec,sizeof(tec));if(num==tec.number){myfile.seekg(-sizeof(tec),ios::cur);cout<<"你是要修改还是要删除该老师的记录(1:删除2:修改):";cin>>p;if(p==1){tec.number=-1;break;}else {cout<<"请输入新的信息"<<endl;tec.enter();break;}}}myfile.write((char *)&tec,sizeof(tec));myfile.close();}void graduate::display(){cout<<setw(8)<<"姓名"<<setw(8)<<"编号"<<setw(5)<<"性别"<<setw(12)<<"出生日期"<<setw(8)<<"身份证号"<<setw(8)<<"班级名称"<<setw(10)<<"专业"<<endl;cout<<setw(8)<<name<<setw(8)<<number<<setw(5)<<sex<<setw(4)<<bir.year<<setw(4)<<bir.mo nth<<setw(4)<<bir.day<<setw(8)<<id<<setw(8)<<classnumber<<setw(10)<<subject<<endl;cout<<"他的导师的情况是:"<<endl;adviser.display();}void graduate::readfile(){ifstream myfile("graduate.txt",ios::nocreate);while(myfile){people *p;graduate gra;p=&gra;if(myfile.read((char*)&gra,sizeof(gra))){if(gra.number!=-1)p->display();}}myfile.close();}void graduate::write(){graduate gra;char ch;ofstream myfile("graduate.txt",ios::app);do{gra.enter();myfile.write((char *)&gra,sizeof(gra));cout<<"还需要输入下个研究生的信息吗(y/n):";cin>>ch;}while(ch=='y'||ch=='Y');myfile.close();}void graduate::change_infor(){graduate gra;int num,p;cout<<"请输入你要修改或者删除的研究生的编号:";cin>>num;fstream myfile("graduate.txt",ios::in|ios::out);while(myfile.good()){myfile.read((char*)&gra,sizeof(gra));if(num==gra.number){myfile.seekg(-sizeof(gra),ios::cur);cout<<"你是要修改还是要删除该研究生的记录(1:删除2:修改):";cin>>p;if(p==1){gra.number=-1;break;}else {cout<<"请输入新的信息"<<endl;gra.enter();break;}}}myfile.write((char *)&gra,sizeof(gra));myfile.close();}void teacher_asistant::display(){cout<<setw(8)<<"姓名"<<setw(8)<<"编号"<<setw(5)<<"性别"<<setw(12)<<"出生日期"<<setw(12)<<"身份证号"<<setw(8)<<"班级名称"<<setw(10)<<"专业"<<setw(10)<<"职务"<<setw(10)<<"部门"<<endl;cout<<setw(8)<<name<<setw(8)<<number<<setw(5)<<sex<<setw(4)<<bir.year<<setw(4)<<bir.mo nth<<setw(4)<<bir.day<<setw(8)<<id<<setw(8)<<classnumber<<setw(10)<<subject<<setw(10)<< principalship<<setw(10)<<department<<endl;cout<<"他的导师的情况是:"<<endl;adviser.display();}void teacher_asistant::readfile(){ifstream myfile("tec_asistant.txt",ios::nocreate);while(myfile){people *p;teacher_asistant tec_asis;p=&tec_asis;if(myfile.read((char*)&tec_asis,sizeof(tec_asis))){if(tec_asis.number!=-1)p->display();}}myfile.close();}void teacher_asistant::write(){teacher_asistant tec_asis;char ch;ofstream myfile("tec_asistant.txt",ios::app);do{tec_asis.enter();myfile.write((char *)&tec_asis,sizeof(tec_asis));cout<<"还需要输入下个助教生的信息吗(y/n):";cin>>ch;}while(ch=='y'||ch=='Y');myfile.close();}//void teacher_asistant::change_infor(){teacher_asistant tec_asis;int num,p;cout<<"请输入你要修改或者删除的助教生的编号:";cin>>num;fstream myfile("tec_asistant.txt",ios::in|ios::out);while(myfile.good()){myfile.read((char*)&tec_asis,sizeof(tec_asis));if(num==tec_asis.number){myfile.seekg(-sizeof(tec_asis),ios::cur);cout<<"你是要修改还是要删除该助教生的记录(1:删除2:修改):";cin>>p;if(p==1){tec_asis.number=-1;break;}else {cout<<"请输入新的信息"<<endl;tec_asis.enter();break;}}}myfile.write((char *)&tec_asis,sizeof(tec_asis));myfile.close();}void menu(){cout<<"\n\n\t\t**************************************************"<<endl;cout<<"\t\t*\t 人事管理系统\t *"<<endl;cout<<"\t\t*------------------------------------------------*"<<endl;cout<<" \t\t* 1.请输入人事信息 2.显示人事信息*"<<endl;cout<<" \t\t* 3.对信息的修改或删除 4.返回主菜单0.退出*"<<endl;cout<<"\t\t**************************************************"<<endl;cout<<" \t\t\t\t请选择操作(0=======4) "<<endl;cout<<"\t\t\t\t 请选择:";}void select(){people *pt;student st; teacher te; graduate gr; teacher_asistant t_a;if(i==1) pt=&st;else if(i==2) pt=&gr;else if(i==3) pt=&te;else if(i==4) pt=&t_a;do{int ch;cin>>ch;switch(ch){case 0:exit(0);case 1:pt->write();cout<<"你还想进行何种操作:";break;case 2:pt->readfile();cout<<"你还想进行何种操作:";break;case 3:pt->change_infor();cout<<"你还想进行何种操作:";break;case 4:k=0;break;default:cout<<"你的选择错误,请重新选择:";break;}}while(k);}void main(){b:cout<<"\n\n\t\t***************************************************"<<endl;cout<<"\t\t*\t 人事管理系统\t *"<<endl;cout<<"\t\t*-----------------------------------------------------*"<<endl;cout<<"\t\t* 1:学生*"<<endl;cout<<"\t\t* 2:研究生*"<<endl;cout<<"\t\t* 3:教师*"<<endl;cout<<"\t\t* 4:助教*"<<endl;cout<<"\t\t* 0:退出*"<<endl;cout<<"***************************************************"<<endl;cout<<"请选择(0---4):";cin>>i;switch(i){case 0:cout<<"你已经退出系统";getch();exit(0);case 1:{system("cls");menu();select();break;}case 2:{system("cls");menu();select();break;}case 3:{system("cls");menu();select();break;}case 4:{system("cls");menu();select();break;}default :cout<<"你的选择有误,请重新选择:";break;}if(k==0)k=1;system("cls");goto b;}。
C语言-人事管理系统

人事管理管理系统[要求]某高校主要人员有:在职人员(行政人员、教师、一般员工)、退休人员和临时工。
现在,需要存储这些人员的人事档案信息:编号、姓名、性别、年龄、职务、职称、政治面貌、最高学历、任职时间、来院时间、人员类别。
其中,人员编号唯一,不能重复。
(1)添加删除功能:能根据学院人事的变动情况,添加删除记录;(2)查询功能:能根据编号和姓名进行查询;(3)编辑功能(高级):根据查询对相应的记录进行修改,并存储;(4)统计功能:能根据多种参数进行人员的统计(在职人数、党员人数、女工人数、高学历高职称人数(硕士学位以上或者副教授以上)),统计要求同时显示被统计者的信息;(5)排序功能:按照年龄、来院时间进行排序;(6)保存功能:能对输入的数据进行相应的存储;一、需求分析:根据题目要求,职工信息是存放在文件中的,所以应该提供相应的文件的输入输出的功能,在程序中应该有添加删除,查询,编辑,统计,排序,保存等程序实现相应的操作,另外菜单式的选择方式选择程序的功能也是必须需的。
另外程序中要求存储的模块,采用的方式均为将原文件中的所有数据读入内存,在内存中处理之后以覆盖的方式写入文件中重新储存,这样的方法容易理解、容易编写,但当文件中的数据量很大时,这种方法也存在一定的难度,在本程序中将N定为100,也即最多可储存的职工人数为100;二、总体设计:根据以上需求分析,将程序分成以下几个模块:1、新建档案信息;2、删除信息;3、追加信息;4、搜索查找信息(按姓名或者编号搜索);5、浏览全部信息;6、修改信息;7、信息排序;8、信息统计;三、详细设计;1、主函数:〈1〉需求分析:为使系统执行完每部分功能后能够方便的回到系统主界面,main()函数设计的很简单,只包含一个menu()函数,其余的全部功能都通过menu()函数调用来实现,并通过menu()函数的递归调用实现返回主界面的功能。
main()函数定义如下:main(){menu();}而menu()定义如下:〈2〉流程图:void menu(){int n,w1;do{printf("\n\t\t\t\t菜\t单\n");printf("\n\t\t0\t新建档案信息\n\n");printf("\t\t1\t删除信息\n\n");printf("\t\t2\t追加信息\n\n");printf("\t\t3\t搜索查找信息\n\n");printf("\t\t4\t浏览所有信息\n\n");printf("\t\t5\t修改信息\n\n");printf("\t\t6\t信息排序\n\n");printf("\t\t7\t信息统计\n\n");printf("\t\t8\t离开\n\n");printf("\t\t请选择您要进行的操作 [ ]\b\b"); /**显示一系列功能并提示选择**/scanf("%d",&n);if(n<0||n>8){w1=1;getchar();}else w1=0;}while(w1==1); /**输入n并判断是否属于0到8**/switch(n){case 0:build();break;case 1:del();break;case 2:add();break;case 3:search();break;case 4:browse();break;case 5:modify();break;case 6:order();break;case 7:data();break;case 8:exit(0);default:{printf("输入错误!请重新输入");menu();}/**根据n的值调用各功能函数**/}}2、各功能模块设计:(1)、新建档案信息模块:<1>、数据结构;看各个数据信息,编号、姓名、性别、年龄、职务、职称、政治面貌、最高学历、任职时间、来院时间、人员类别,均为字符串类型,在文件中以文本形式存放,每条记录对应一个人员的信息,可以方便信息的管理;而数据读进内存中时,可以以结构体的形式,每一个结构体包含了一个人员的全部信息,多的人员的信息组成了一个结构体数组。
高校人事管理系统课程设计C++版

一.需求分析1.目的与意义、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、2.系统流程图二.总体设计1.系统功能分析执行程序后,按界面的显示,选择1—8种操作。
选1,增加人员资料,资料包括编号、职工类别、姓名、性别、年龄、来院时间、职务、职称、党派、学历。
选2,删除人员信息。
选3,修改人员信息,可以选择要修改的内容。
选4,查询人员信息,可按编号或姓名查询。
选5,数据存盘。
选6,数据装入。
选7,显示所有信息。
选8,退出。
2.系统功能模块划分与设计三.详细设计1.源程序代码#include<>#include<>#include<>#include<>class person{private:int no;...\n";}void save()面设计cout<<"**"<<endl;cout<<" 高校人事管理系统"<<endl;cout<<" "<<endl;cout<<" 1---增加人员资料"<<endl;cout<<" 2---删除人员信息"<<endl;cout<<" 3---修改人员信息"<<endl;cout<<" 4---查询人员信息"<<endl;cout<<" 5---数据存盘"<<endl;cout<<" 6---数据装入"<<endl;cout<<" 7---显示所有信息"<<endl;cout<<" 8---退出(1-8):"<<endl;cout<<"**"<<endl;cout<<"**"<<endl;2.各功能模块实现添加功能void add()编号查询bool find1(){int id;person *ahead=myfirst;person *follow=ahead;cout<<"请输入编号:"<<endl;cin>>id;cout<<"****"<<endl;if(ahead==NULL){cout<<"无人员信息!"<<endl;return false;}else{while(ahead!=NULL){if(ahead->getnum()==id){printf1(ahead);return true;}else{follow=ahead;ahead=ahead->getnext();}}cout<<"无此人信息:"<<endl;return false;}}2.按姓名查询bool find2( ){char nm[20];person *ahead=myfirst;person *follow=ahead;cout<<"输入姓名";cin>>nm;cout<<"****"<<endl;if(ahead==NULL){cout<<"无人员信息"<<endl;return false;}else{while(ahead!=NULL){if(strcmp(ahead->getname(),nm)==0){printf1(ahead);return true;}else{follow=ahead;ahead=ahead->getnext();}}cout<<"查无此人:"<<endl;return false;}}数据存盘功能void save(){ofstream fperson;("",ios::out);person *p=myfirst;while(p){fperson<<p->getnum()<<"\t"<<p->gettype()<<"\t"<<p->getname()<<"\t"<<p->ge tsex()<<"\t"<<p->getage()<<"\t"<<p->gettime()<<"\t"<<p->getpos()<<"\t"<<p->gettec hpos()<<"\t"<<p->getparty()<<"\t"<<p->getstudy();fperson<<endl;p=p->getnext();}();cout<<"保存数据已经完成"<<endl;}数据装入功能void load(){int nnum,nage;charntype[20],nname[20],nsex[20],ntime[20],npos[20],ntechpos[20],nparty[20],nstudy[2 0];ifstream fperson;("",ios::in);while()){fperson>>nnum>>ntype>>nname>>nsex>>nage>>ntime>>npos>>ntechpos>>np arty>>nstudy;insertatlast(nnum,ntype,nname,nsex,nage,ntime,npos,ntechpos,nparty,nstudy);}();cout<<"\n人员和相关数据已经装入.....\n";}显示功能void printf(){person *ahead=myfirst;cout<<"编号---姓名---性别---年龄---职工类型---职务---职称---学历---政治面貌---来院时间\n"<<endl;while(ahead!=NULL){ cout<<setiosflags(ios::left)<<setw(4)<<ahead->getnum()<<setiosflags(ios::left)<<set w(6)<<ahead->getname() ;cout<<setiosflags(ios::left)<<setw(5)<<ahead->getsex()<<setiosflags(ios::left)<<setw( 4)<<ahead->getage() ;cout<<setiosflags(ios::left)<<setw(10)<<ahead->gettype()<<seti osflags(ios::left)<<setw(6)<<ahead->getpos() ;cout<<setiosflags(ios::left)<<setw(6)<<ahead->gettechpos()<<setiosflags(ios::left)<<s etw(6)<<ahead->getstudy();cout<<setiosflags(ios::left)<<setw(9)<<ahead->getparty()<<setiosflags(ios::left)<<set w(12)<<ahead->gettime()<<endl;ahead=ahead->getnext();}}五.系统调试1.没有调用#include<>导致strcpy()操作不合法。
人事管理系统C语言课程设计报告

C语言课程设计综合实习报告题目:人事管理系统姓名:李晋林班学号:191102院(系):计算机学院专业:计算机科学与技术指导教师:何兴恒2010年8月人事管理系统【设计目的】某高校主要人员有:在职人员(行政人员、教师、一般员工)、退休人员及临时工。
现在需要储存这些人员的人事档案信息,内容包括编号、姓名、年龄、职务、职称、政治面貌、最高学历、任职时间、来院时间、人员类别。
其中,人员编号唯一,不能重复。
设计人事管理系统满足以下功能:添加删除功能:能根据学院人事的变动情况,添加删除记录。
(1)查询功能:能根据编号和姓名进行查询。
(2)编辑功能(高级):根据查询对相应的记录进行修改并记录。
(3)统计功能:能根据多种参数进行人员的统计(在职人数、党员人数、女工人数,高学历高职称人数),统计要求同时显示被统计着的信息。
(4)(5)排序功能:按照年龄、来院时间进行排序。
(5)(6)保存功能:能对输入的数据进行相应的存储。
【设计思路】根据题目要求,应当把图书信息用结构体形式输入,再定义一个全局变量和文件指针进行整个程序的运行,然后把图书信息送到文件中去,所以应该提供下个结构体和文件的输入等操作:在程序中需要实现图书信息录入,浏览,查询,删除和修改等功能的操作,所以需要建立相应的模块来实现:另外还需提供选择菜单实现功能,在运行时达到所要求的目的。
【总体设计】【分块设计】图1—3输入模块流程图图1—4借阅函数流程图图1—5修改、删除、追加模块流程图【程序源代码】#include<stdio.h>#include<string.h>#include<conio.h>#include<stdlib.h>#include<ctype.h>#define STACK_INIT_SIZE 10#define OK 1#define TRUE 1#define FALSE 0#define ERROR 0struct student{int carnum;char lendbook[10];}student[1000];struct book{int booknum;char bookname[10];char bookcreat[10];int turefalse;}book[1000];struct car{int carnum;char studentname[10];int studentclass;}car[100];huanbook(){FILE *fp,*fp2;int i,n;int carnum;char lendbook[10];printf("请你输入你的卡号\n");scanf("%d",&carnum);fp=fopen("car.txt","r");for(i=0;fread(&car[i],sizeof(struct car),1,fp)!=0;i++){if(car[i].carnum==carnum){n=i;fclose(fp);printf("请输入你要还的书的名字\n");scanf("%s",lendbook);fp=fopen("record.txt","r");for(i=0;fread(&student[i],sizeof(struct student),1,fp)!=0;i++){if(strcmp(student[i].lendbook,lendbook)==0){fclose(fp);fp=fopen("record.txt","r");fp2=fopen("bookl.txt","w");for(i=0;fread(&student[i],sizeof(struct student),1,fp)!=0;i++){if(strcmp(student[i].lendbook,lendbook)==0){continue;}fwrite(&student[i],sizeof(struct student),1,fp2);}fclose(fp);fclose(fp2);fp=fopen("record.txt","w");fp2=fopen("bookl.txt","r");for(i=0;fread(&student[i],sizeof(struct student),1,fp2)!=0;i++){fwrite(&student[i],sizeof(struct student),1,fp);}fclose(fp);fclose(fp2);fopen("bookl.txt","w");fclose(fp2);fp=fopen("book.txt","r");fp2=fopen("bookl.txt","w");for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++){if(i==n){book[i].turefalse=1;fwrite(&book[i],sizeof(struct book),1,fp2);continue;}fwrite(&book[i],sizeof(struct book),1,fp2);}fclose(fp);fclose(fp2);fp=fopen("book.txt","w");fp2=fopen("bookl.txt","r");for(i=0;fread(&book[i],sizeof(struct book),1,fp2)!=0;i++){fwrite(&book[i],sizeof(struct book),1,fp);}fclose(fp);fclose(fp2);fopen("bookl.txt","w");fclose(fp2);printf("还书完毕,按任意键返回\n");getch();return 1;}}printf("你没有借过这样的书,任意键返回\n");fclose(fp);getch();return 0;}}printf("系统没这样的卡,按任意键返回\n");fclose(fp);getch();}void findbook(){FILE *fp;char bookname[10];int i;fp=fopen("book.txt","r");printf("请输入你要查找的书名\n");scanf("%s",bookname);for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++){if(strcmp(bookname,book[i].bookname)==0){if(book[i].turefalse==1){printf("这本书的详细资料是:%d %s %s 此书现在无人借阅\n按任意键返回\n",book[i].booknum,book[i].bookname,book[i].bookcreat);}else {printf("这本书已经有人借出\n");fclose(fp);return (0);}fclose(fp);return FALSE;}}printf("没有你要查询的书籍\n");fclose(fp);return FALSE;}void findbook1(){FILE *fp;char bookcreat[10];int ture,i;fp=fopen("book.txt","r");printf("请输入你要查找的作者名\n");scanf("%s",bookcreat);for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++){if(strcmp(bookcreat,book[i].bookcreat)==0){if(book[i].turefalse==1){printf("这本书的详细资料是:%d %s %s 此书现在无人借阅\n按任意键返回\n",book[i].booknum,book[i].bookname,book[i].bookcreat);}else {printf("这本书已经有人借出\n");fclose(fp);return 0;}fclose(fp);return FALSE;}}printf("没有你要查询的书籍\n");fclose(fp);return FALSE;}void lendcount(){FILE *fp;int i,n=0;fp=fopen("record.txt","r");for(i=0;fread(&student[i],sizeof(struct student),1,fp)!=0;i++){printf("卡号:%d 借出的书籍:%s \n",student[i].carnum,student[i].lendbook);n=n+1;}fclose(fp);printf("目前共有%d本书借出\n",n);printf("按任意键\n");getch();return n;}void chabook(){char ch5;do{printf("---------------欢迎进入图书查询系统!--------------\n");printf(" 1:<按书名查找>\n");printf(" 2:<按作者查找>\n");printf(" 0:<返回>\n");printf("请输入0--2,其他输入为非法输入!\n");scanf("%s",&ch5);switch(ch5){case '1':findbook();getch();break;case '2':findbook1();getch();break;case '0':break;default:printf("无此操作\n");getch();break;}}while(ch5!='0');return FALSE;}void lendbook(){FILE *fp,*fp2;int i,n;int carnum;printf("请你输入你的卡号:\n");scanf("%d",&carnum);fp=fopen("car.txt","r");for(i=0;fread(&car[i],sizeof(struct car),1,fp)!=0;i++){if(car[i].carnum==carnum){n=i;fclose(fp);printf("请输入你要借阅的书的名字\n");scanf("%s",student[n].lendbook);fp=fopen("book.txt","r");for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++){if(strcmp(book[i].bookname,student[n].lendbook)==0){if(book[i].turefalse==0) {printf("对不起,此书有人借出,请借其他书\n");fclose(fp);getch();return;}elsefclose(fp);fp=fopen("record.txt","a+");student[n].carnum=carnum;fwrite(&student[n],sizeof(struct student),1,fp);fclose(fp);fp=fopen("book.txt","r");fp2=fopen("bookl.txt","w");for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++){if(strcmp(book[i].bookname,student[n].lendbook)==0){book[i].turefalse=0;fwrite(&book[i],sizeof(struct book),1,fp2);continue;}fwrite(&book[i],sizeof(struct book),1,fp2);}fclose(fp);fclose(fp2);fp=fopen("book.txt","w");fp2=fopen("bookl.txt","r");for(i=0;fread(&book[i],sizeof(struct book),1,fp2)!=0;i++){fwrite(&book[i],sizeof(struct book),1,fp);}fclose(fp);fclose(fp2);fopen("bookl.txt","w");fclose(fp2);printf("借书完毕,请按任意键返回\n");getch();return;}}printf("这样的书不存,请任意键返回\n");fclose(fp);getch();return;}}printf("你的卡号不存在,请申请卡号,按任意键返回\n");fclose(fp);getch();}void carcount(){FILE *fp;int i,n=0;fp=fopen("car.txt","r");for(i=0;fread(&car[i],sizeof(struct car),1,fp)!=0;i++){printf("第%d张卡<卡号:%d 姓名:%s 班级:%d>\n",i+1,car[i].carnum,car[i].studentname,car[i].studentclass);n=n+1;}fclose(fp);printf("目前共有%d本书\n",n);printf("按任意键\n");getch();}void delcar(){FILE *fp,*fp2;int i;int carnum;char choice;fp=fopen("car.txt","r");fp2=fopen("bookl.txt","w");printf("请输入你要删除的卡号\n");printf("如果你输入的卡号存在,系统自动删除该信息!如果不存在,系统不做任何改动\n");scanf("%d",&carnum);for(i=0;fread(&car[i],sizeof(struct car),1,fp)!=0;i++){if(car[i].carnum!=carnum){fwrite(&car[i],sizeof(struct car),1,fp2);}}fclose(fp);fclose(fp2);printf("是否真的要删除该卡?删除后该书籍的所有信息将无法恢复《Y/N》\n");scanf("%s",&choice);if(choice=='y'||choice=='Y'){fp=fopen("car.txt","w");fp2=fopen("bookl.txt","r");for(i=0;fread(&car[i],sizeof(struct car),1,fp2)!=0;i++){fwrite(&car[i],sizeof(struct car),1,fp);}fclose(fp);fclose(fp2);fp2=fopen("bookl.txt","w");fclose(fp2);printf("按任意键返回\n");getch();return;}else{printf("按任意键返回\n");getch();return;}}void addcar(){FILE *fp;int i=0;fp=fopen("car.txt","a+");printf("请你输入卡号\n");scanf("%d",&car[i].carnum);printf("请你输入学生姓名\n");scanf("%s",car[i].studentname);printf("请你输入班级\n"); scanf("%d",&car[i].studentclass); fwrite(&car[i],sizeof(struct car),1,fp);fclose(fp);printf("输入完毕,任意键返回\n");getch();}void addbook(){FILE *fp;int i=0;char choice='y';fp=fopen("book.txt","a+");while(choice=='y'||choice=='Y'){printf("请你输入书的序号\n");scanf("%d",&book[i].booknum);printf("请你输入书名\n");scanf("%s",book[i].bookname);printf("请你输入书的作者\n");scanf("%s",book[i].bookcreat);printf("请你设定书的状态(请设为1或0,1代表书还没人借,0表示书已经借出,设其他值)\n");scanf("%d",&book[i].turefalse);fwrite(&book[i],sizeof(struct book),1,fp);printf("是否要输入下本书\n");scanf("%s",&choice);}fclose(fp);}void bookcount(){FILE *fp;int i,n=0;fp=fopen("book.txt","r");for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++){if(book[i].booknum!=0&&strlen(book[i].bookname)!=0&&strlen(book[i].bookcreat)!=0){printf("第%d本书<序号:%d 书名:%s 作者:%s 状态:%d>\n",i+1,book[i].booknum,book[i].bookname,book[i].bookcreat,book[i].turefalse);n=n+1;}}fclose(fp);printf("目前共有%d本书\n",n);printf("按任意键\n");}void delbook(){FILE *fp,*fp2;int i;char bookname[10],choice;fp=fopen("book.txt","r");fp2=fopen("bookl.txt","w");printf("请输入你要删除的书名\n");printf("如果你输入的书名存在,系统自动删除该信息!如果不存在,系统不做任何改动\n");scanf("%s",bookname);for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++){if(strcmp(bookname,book[i].bookname)!=0){fwrite(&book[i],sizeof(struct book),1,fp2);}}fclose(fp);fclose(fp2);printf("是否真的要删除该书籍?删除后该书籍的所有信息将无法恢复《Y/N》\n");scanf("%s",&choice);if(choice=='y'||choice=='Y'){fp=fopen("book.txt","w");fp2=fopen("bookl.txt","r");for(i=0;fread(&book[i],sizeof(struct book),1,fp2)!=0;i++){fwrite(&book[i],sizeof(struct book),1,fp);}fclose(fp);fclose(fp2);fp2=fopen("bookl.txt","w");fclose(fp2);printf("按任意键返回\n");getch();return;}else{printf("按任意键返回\n");getch();return;}}main(){char ch1,ch2,ch3,ch5;do{printf("\t\t请你选择操作类型:\n");printf(" 1:<查阅图书>\n");printf(" 2: <借阅图书>\n");printf(" 3:<管理系统>\n");printf(" 4:<还书>\n");printf(" 0:<退出>\n");printf("请输入0--4\n");scanf("%s",&ch1);switch(ch1){case '1':chabook();break;case '2':lendbook();;break;case '3':{do{printf("---------------欢迎进入管理系统!--------------\n");printf(" 1:<增加图书>\n");printf(" 2:<删除图书>\n");printf(" 3:<书籍统计>\n");printf(" 4:<学生管理系统>\n");printf(" 0:<返回>\n");printf("请输入0--4,其他输入非法!\n");scanf("%s",&ch2);switch(ch2){case '1':addbook(); break;case '2':delbook();break;case '3':bookcount();getch();break;case '4':{do{printf("---------------欢迎进入学生管理系统!--------------\n");printf(" 1:<申请新卡>\n");printf(" 2:<删除卡号>\n");printf(" 3:<借书统计>\n");printf(" 4:<卡号统计>\n");printf(" 0:<返回>\n");printf("请输入0--4,其他输入非法!\n");scanf("%s",&ch3);switch(ch3){case '1':addcar();break;case '2':delcar();break;case '3':lendcount();break;case '4':carcount();break;case '0':break;default:printf("无此操作\n");getch();break;}}while(ch3!='0');}break;case '0':break;default:printf("无此操作\n");getch();break;}}while(ch2!='0');}break;case '4':huanbook();break;case '0':break;default:printf("无此操作\n");getch();break;}}while(ch1!='0');}【设计体会】通过为期8次课的课程设计,对《C语言课程设计》这门课程有了更深一步的了解。
高校人事管理系统程序设计源代码

目录新建一个头文件类,名字为:,再建一个源文件,名字随意,代码按顺序粘贴进去即可运行。
错误!未定义书签。
? 头文件:错误!未定义书签。
? 源文件:错误!未定义书签。
新建一个头文件类,名字为:,再建一个源文件,名字随意,代码按顺序粘贴进去即可运行。
头文件:#include <iostream>#include <fstream>using namespace std;dd(n1);i1++;}else if(b==2) dd(n2);i2++;}else if(b==3) dd(n3);i3++;}else if(b==4) dd(n4);i4++;}else if(b==5){break;}else{cout<<"输入有误!请重试!"<<endl;cout<<endl;system ("pause");system ("cls");continue;}}}ave(file);file<<endl;file<<i2<<endl; ave(file); file<<endl;file<<i3<<endl; ave(file); file<<endl;file<<i4<<endl; ave(file);();}Oxz; ead(file);}file>>i2; Ojs;ead(file);}file>>i3; Oyb;ead(file);}file>>i4; Otx;ead(file);}();}Oxz==g){h=g-1;xz[h].show();z=1;editPer(g,z); Ojs==g){h=g-1;js[h].show();z=2;editPer(g,z); Oyb==g){h=g-1;yb[h].show();z=3;editPer(g,z); Otx==g){h=g-1;tx[h].show();z=4;editPer(g,z); ame,nam)==0) {xz[t].show();x=1;editPer(xz[t].NOxz,x); Oxz,x);ame,nam)==0){js[t].show();x=2;editPer(js[t].NOjs,x); Ojs,x);ame,nam)==0){yb[t].show();x=3;editPer(yb[t].NOyb,x); Oyb,x);ame,nam)==0){tx[t].show();x=4;editPer(tx[t].NOtx,x); Otx,x);dd(n1);cout<<endl<<"是否保存(y/n)"<<endl;cin>>su2;if(su2=='y'||su2=='Y'){FileSave();}else break;}if(z==2)js[n2].add(n2);cout<<endl<<"是否保存(y/n)"<<endl; cin>>su2;if(su2=='y'||su2=='Y'){FileSave();}else break;}if(z==3){yb[n3].add(n3);cout<<endl<<"是否保存(y/n)"<<endl; cin>>su2;if(su2=='y'||su2=='Y'){FileSave();}else break;}if(z==4)tx[n4].add(n4);cout<<endl<<"是否保存(y/n)"<<endl;cin>>su2;if(su2=='y'||su2=='Y'){FileSave();}else break;}}else break;break;}}Oxz--; Ojs--; Oyb--; Otx--;职人员 2.党员 3.女性人员 4.高学历高职称人员"<<endl;int r;cin>>r;if(r==1){z=i1+i2+i3;cout<<"在职人员数:"<<z<<endl; }else if(r==2){for(i=0;i<i1;i++){if(strcmp(xz[i].zzmm ,"党员")==0) g++;}for(i=0;i<i2;i++){if(strcmp(js[i].zzmm,"党员")==0) g++;}for(i=0;i<i3;i++){if(strcmp(yb[i].zzmm,"党员")==0) g++;}for(i=0;i<i4;i++){if(strcmp(tx[i].zzmm,"党员")==0) g++;}cout<<"党员数:"<<g<<endl; }else if(r==3){for(i=0;i<i1;i++){if(strcmp(xz[i].sex,"女")==0)g++;}for(i=0;i<i2;i++){if(strcmp(js[i].sex,"女")==0)g++;}for(i=0;i<i3;i++){if(strcmp(yb[i].sex,"女")==0)g++;}for(i=0;i<i4;i++){if(strcmp(tx[i].sex,"女")==0)g++;}cout<<"女性人员数:"<<g<<endl; }else if(r==4){int g=0,h=0,c=0;for(i=0;i<i1;i++){if(strcmp(xz[i].zgxl,"大学")==0)g++;}for(i=0;i<i2;i++){if(strcmp(js[i].zgxl,"大学")==0)g++;}for(i=0;i<i3;i++){if(strcmp(yb[i].zgxl,"大学")==0) g++;}for(i=0;i<i4;i++){if(strcmp(tx[i].zgxl,"大学")==0) g++;}for(i=0;i<i1;i++){if(strcmp(xz[i].zgxl,"高中")==0) h++;}for(i=0;i<i2;i++){if(strcmp(js[i].zgxl,"高中")==0) h++;}for(i=0;i<i3;i++){if(strcmp(yb[i].zgxl,"高中")==0) h++;for(i=0;i<i4;i++){if(strcmp(tx[i].zgxl,"高中")==0) h++;}for(i=0;i<i1;i++){if(strcmp(xz[i].zgxl,"初中")==0) h++;}for(i=0;i<i2;i++){if(strcmp(js[i].zgxl,"初中")==0) h++;}for(i=0;i<i3;i++){if(strcmp(yb[i].zgxl,"初中")==0) h++;}for(i=0;i<i4;i++)if(strcmp(tx[i].zgxl,"初中")==0)h++;}cout<<"大学人数:"<<g<<" 高中人数:"<<h<<" 初中人数:"<<c<<endl; }else{cout<<"统计的类型错误!"<<endl;system("PAUSE");}cout<<"是否继续人事统计:Y继续、其他退出"<<endl;char x;cin>>x;if(x!='y' && x!='Y')break;}}。
学校人事管理系统 c语言编写

学校人事管理系统注:开始输入的管理员的姓名和学号是,xx 2013#include 〈stdio。
h>#include <stdlib.h〉#include <windows.h〉typedef struct teacher{char name[20];char sex[20];char birth[20];char post[20];//职称int age;char timein[20];//入校时间}teac;teac tea[1000];int count = 0,flag1 = 0;char str[20],Administrator[20]= ”xx”,accounts[20]= ”2013";void enter();//进入void init();//初始化void scan();//查看void find();//查找void change();//修改void sum();//统计void del();//删除void add();//添加void rank();//排序void save();//保存void copy(teac *t1,teac *t2);//赋值void main(){int m;enter();init();while (1){system("cls");//清屏printf(”\n\n*********学校人事管理系统*********”);printf(”\n________________________________________________\n");printf(”\n*1.查看职工信息表\n”);printf("\n*2。
查找职工\n");printf("\n*3.修改职工信息\n");printf("\n*4。
统计同一类型职工的人数\n");printf("\n*5。
高校人事管理系统C 程序设计源代码

目录新建一个头文件类,名字为:,再建一个源文件,名字随意,代码按顺序粘贴进去即可运行。
头文件:#include <iostream>#include <fstream>using namespace std;dd(n1);i1++;}else if(b==2)dd(n2);i2++;}else if(b==3)dd(n3);i3++;}else if(b==4)dd(n4);i4++;}else if(b==5){FileSave();break;}else{cout<<"输入有误!请重试!"<<endl;cout<<endl;system ("pause");system ("cls");continue;}}}ave(file);file<<endl;file<<i2<<endl;ave(file);file<<endl;file<<i3<<endl;ave(file);file<<endl;file<<i4<<endl;ave(file);file<<endl;();}Oxz;ead(file);}file>>i2;Ojs;ead(file);}file>>i3;Oyb;ead(file);}file>>i4;Otx;ead(file);}();}Oxz==g){h=g-1;xz[h].show();z=1;editPer(g,z);Ojs==g){h=g-1;js[h].show();z=2;editPer(g,z);Oyb==g){h=g-1;yb[h].show();z=3;editPer(g,z);Otx==g){h=g-1;tx[h].show();z=4;editPer(g,z);ame,nam)==0){xz[t].show();x=1;editPer(xz[t].NOxz,x);Oxz,x);ame,nam)==0){js[t].show();x=2;editPer(js[t].NOjs,x);Ojs,x);ame,nam)==0){yb[t].show();x=3;editPer(yb[t].NOyb,x);Oyb,x);ame,nam)==0){tx[t].show();x=4;editPer(tx[t].NOtx,x);Otx,x);dd(n1);cout<<endl<<"是否保存(y/n)"<<endl;cin>>su2;if(su2=='y'||su2=='Y'){FileSave();}else break;}if(z==2){js[n2].add(n2);cout<<endl<<"是否保存(y/n)"<<endl;cin>>su2;if(su2=='y'||su2=='Y'){FileSave();}else break;}if(z==3){yb[n3].add(n3);cout<<endl<<"是否保存(y/n)"<<endl;cin>>su2;if(su2=='y'||su2=='Y'){FileSave();}else break;}if(z==4){tx[n4].add(n4);cout<<endl<<"是否保存(y/n)"<<endl;cin>>su2;if(su2=='y'||su2=='Y'){FileSave();}else break;}}else break;break;}}Oxz--;Ojs--;Oyb--;Otx--;职人员 2.党员 3.女性人员 4.高学历高职称人员"<<endl;int r;cin>>r;if(r==1){z=i1+i2+i3;cout<<"在职人员数:"<<z<<endl;}else if(r==2){for(i=0;i<i1;i++){if(strcmp(xz[i].zzmm ,"党员")==0)g++;}for(i=0;i<i2;i++){if(strcmp(js[i].zzmm,"党员")==0)g++;}for(i=0;i<i3;i++){g++;}for(i=0;i<i4;i++){if(strcmp(tx[i].zzmm,"党员")==0) g++;}cout<<"党员数:"<<g<<endl;}else if(r==3){for(i=0;i<i1;i++){if(strcmp(xz[i].sex,"女")==0)g++;}for(i=0;i<i2;i++){if(strcmp(js[i].sex,"女")==0)g++;}for(i=0;i<i3;i++){if(strcmp(yb[i].sex,"女")==0)g++;}for(i=0;i<i4;i++){if(strcmp(tx[i].sex,"女")==0)g++;}cout<<"女性人员数:"<<g<<endl; }else if(r==4){int g=0,h=0,c=0;for(i=0;i<i1;i++){if(strcmp(xz[i].zgxl,"大学")==0)g++;}for(i=0;i<i2;i++){g++;}for(i=0;i<i3;i++){if(strcmp(yb[i].zgxl,"大学")==0) g++;}for(i=0;i<i4;i++){if(strcmp(tx[i].zgxl,"大学")==0) g++;}for(i=0;i<i1;i++){if(strcmp(xz[i].zgxl,"高中")==0) h++;}for(i=0;i<i2;i++){if(strcmp(js[i].zgxl,"高中")==0) h++;}for(i=0;i<i3;i++){if(strcmp(yb[i].zgxl,"高中")==0) h++;}for(i=0;i<i4;i++){if(strcmp(tx[i].zgxl,"高中")==0) h++;}for(i=0;i<i1;i++){if(strcmp(xz[i].zgxl,"初中")==0) h++;}for(i=0;i<i2;i++){if(strcmp(js[i].zgxl,"初中")==0) h++;}for(i=0;i<i3;i++){if(strcmp(yb[i].zgxl,"初中")==0)h++;}for(i=0;i<i4;i++){if(strcmp(tx[i].zgxl,"初中")==0)h++;}cout<<"大学人数:"<<g<<" 高中人数:"<<h<<" 初中人数:"<<c<<endl; }else{cout<<"统计的类型错误!"<<endl;system("PAUSE");}cout<<"是否继续人事统计:Y继续、其他退出"<<endl;char x;cin>>x;if(x!='y' && x!='Y')break;}}。
c语言课程设计人事管理系统

湘南学院C语言课程设计课程:人事管理系统姓名:学号:系别:计算机科学与技术专业:计算机科学与技术级别:时间:2012年6月5日目录1…………………………………………………成员分工表2…………………………………………………系统功能分析3…………………………………………………函数简介4…………………………………………………系统流程图5…………………………………………………原代码6…………………………………………………各成员总结成员分工表一、系统功能分析人事管理系统的主要任务是对人事档案进行整理,使得能方便快捷地对人事档案进行查询、统计、更新,并且能按一定要求输出报表。
通过该系统,使企业的人事管理工作系统化、规范化、自动化,从而提高企业人事管理的效率。
本系统分为如下的几大模块:档案查询,输入新员工的信息,删除员工信息和浏览员工信息。
其中的主要模块包括:1、主界面模块该模块提供管理系统的主界面,是主系统的唯一入口,该界面提供用户登陆和新用户的注册。
2、查询模块该模块提供查询符合某一条件的人事档案的界面,其中包括两种查询方式,一种是按姓名查找,另一种是按职工号查找。
3、输\插入模块该模块主要功能是输入新员工的信息。
4、删除模块该模块主要是删除员工的信息。
5、浏览模块该模块提供全部人事档案的界面。
6、退出系统二、函数简介该系统运用了三个结构体数组和10个函数,结构体数组包括:denglu数组、yuefen1数组和worker数组,denglu 数组中有两个元素:用户名username[10]和密码key[5];yuefen1数组中只有一个元素:月份,而worker数组中包含有二十个元素:职工号gonghao,姓名xingming[20],应发工资yfgz,实发工资sf,电费df,税金sj,性别sex[4],职位position[10],部门department[10],工作时间wokestate[20],联系电话tel[13],身份证号shenfenzheng[20],银行卡号kahao[10],QQ 号码qq[10],年龄age,邮箱email[20],政治面貌plotical[10],籍贯jiguan[40],婚否ifmarry[5],住址address[40],实发工资sfgz。
C语言课程设计报告—人事管理系统1

人事管理系统前言:现代计算机技术的发展为人们的学习、生活、工作提供了很大的帮助, 各行各业都需要特定计算系统的运用, 我们需要了解这些系统是怎么样为我们服务以及他们是怎样编辑出来的。
我们需要学习C语言编程, 根据课堂讲授内容, 做相应的自主练习, 消化课堂所讲解的内容;通过调试典型例题或习题积累调试C程序的经验;通过完成辅导教材中的编程题, 逐渐培养编程能力、用计算机解决实际问题的能力, 能够按照要求编辑一些基本的程序, 提高自己的思维能力。
题目:(1)某高校主要人员有: 在职人员(行政人员、教师、一般员工)、退休人员及临时工。
现在需要储存这些人员的人事档案信息, 内容包括编号、姓名、年龄、职务、职称、政治面貌、最高学历、任职时间、来院时间、人员类别。
其中, 人员编号唯一, 不能重复。
(2)添加删除功能:能根据学院人事的变动情况, 添加删除记录。
(3)查询功能: 能根据编号和姓名进行查询。
(4)编辑功能(高级): 根据查询对相应的记录进行修改并记录。
(5)统计功能:能根据多种参数进行人员的统计(在职人数、党员人数、女工人数, 高学历高职称人数), 统计要求同时显示被统计着的信息。
排序功能: 按照年龄、来院时间进行排序。
保存功能: 能对输入的数据进行相应的存储。
分析:我们编辑的程序要能够满足题目的要求, 可以进行这么多的功能的计算!但是在开始我们运行使用程序的时候必须要知道我们要运用这些功能中的哪一个!这就要求我们可以程序中任意选择我们所需要的功能!很显然我们要编辑存储人员的信息自然要运用到文件!而人员的信息必须要以结构体的形式来表示才能够方便我们提取信息!我们选择了要运行的功能分支之后!这些功能是以主函数以外的被调函数!当有需要时被调函数还可以调用其他的被吊函数!例如我们题目中的统计和查询功能, 就可以用这种方式来编辑程序!方便清楚!设计:很显然主程序要用到SWICTH函数, 这样可以选择要运行的那个功能的函数来执行, 而其他的功能函数则不必运行!三、解题思路1.定义结构struct staff{char num[10];char name[20];char sex[10];int age;char title[20];char p_landscape[30];char Qualifications[30];int Service_time;char come_time[30];char category[30];}staff[100];2.主程序进入主菜单函数void main(){menu();}/*******************主菜单函数**********************/void menu(){char w0;do{system("cls");fflush(stdin); /*清除缓冲区输入*/puts("***********************高校人事管理系统**********************\n\n");puts("\t\t\t\t1)增加人员信息\n"); puts("\t\t\t\t2)删除人员信息 \n"); puts("\t\t\t\t3)查询人员信息\n"); puts("\t\t\t\t4)修改人员信息\n"); puts("\t\t\t\t5)统计人员信息\n"); puts("\t\t\t\t6)对人员排序\n");puts("\t\t\t\t7)保存人员信息\n"); puts("\t\t\t\t8)浏览人员信息\n"); puts("\t\t\t\t9)退出\n");printf("\t\t\t\t 请选择 [ ]\b\b"); w0=getchar();}while(w0<'1'||w0>'9'); switch(w0-48){case 1:add();break;case 2:delete_data();break;case 3:search();break;case 4:modify();break; case 5:stastic();break;case 6:sort();break;case 7:save();break;case 8:browse();break;case 9:break;} }(1)查询功能int search_data()/*{int i,flag; char s[30],w0;system("cls");/*清屏*/ n=load(); do{fflush(stdin); /*清除缓冲区输入*/printf(" 通过1)编号 2)姓名 [ ]\b\b"); w0=getchar(); }while(w0<'1'||w0>'2'); if(w0=='1'){/*按编号查找*/ flag=0;puts("输入人员编号:"); scanf("%s",s); for(i=0;i<n;i++){if(strcmp(s,staff[i].num)==0){printf_face();printf_one(staff[i]); flag=1;break;} else continue; }if(flag==0)puts("该人员不存在!"); }else {/*按姓名查找*/ flag=0;puts("输入人员姓名:"); scanf("%s",s); for(i=0;i<n;i++){if(strcmp(s,staff[i].name)==0){printf_face();printf_one(staff[i]);flag=1;break;}else continue;}if(flag==0) puts("该人员不存在!");}return i;void search(){int k;char w1;loop: k=search_data();do{fflush(stdin); /*清除缓冲区输入*/printf("1)回主菜单 2)退出 3)继续查询 [ ]\b\b"); w1=getchar();}while(w1<'1'||w1>'3');if(w1=='1')menu();else if(w1=='2')exit(0);void add(){char w0,w1;loop: system("cls");puts("请输入编号(如001):");scanf("%s",s.num);if(test(s.num))goto loop;/*编号重复*/puts("请输入姓名:");scanf("%s",);puts("请输入性别(男,女):");scanf("%s",s.sex);puts("请输入年龄:");scanf("%d",&s.age);puts("请输入职务(教授副教授讲师助教学生后勤人员):");scanf("%s",s.duty);puts("请输入职称 (无初级高级 ):");scanf("%s",s.title);puts("请输入政治面貌( 党员非党员 ):");scanf("%s",s.p_landscape);puts("请输入最高学历(小学初中高中大学硕士学位更高):");scanf("%s",s.Qualifications);puts("请输入任职时间:");scanf("%d",&s.Service_time);puts("请输入来院时间(如20050101):");scanf("%s",e_time);puts("请输入人员类别(行政人员教师一般员工退休人员临时工):");scanf("%s",s.category);do{fflush(stdin); /*清除缓冲区输入*/printf("是否保存?1)是 2)否 [ ]\b\b");w0=getchar();}while(w0<'1'||w0>'2');switch(w0){case 1:save(s);break;case 2:break;}do{fflush(stdin); /*清除缓冲区输入*/printf("1)继续增加人员信息 2)回主菜单 3)退出 [ ]\b\b");w1=getchar();}while(w1<'1'||w1>'3');if(w1=='1')goto loop;else if(w1=='2')menu();else exit(0);}(3)保存信息void save(){char w0;save_all();printf("所有信息已保存!\n");do{fflush(stdin); /*清除缓冲区输入*/printf("1) 回主菜单 2) 退出 [ ]\b\b");w0=getchar();}while(w0<'1'||w0>'2');if(w0=='1')menu();else exit(0);}void save_all()/*保存所有数据函数*/{int i;FILE *fp;if((fp=fopen("text.txt","wb"))==NULL){printf("无法打开文件!");exit(0);}for(i=0;i<n;i++){if(staff[i].age!=0)fprintf(fp,"%s %s %s %d %s %s %s %s %d %s %s\n",staff[i].num,staff[i].name, staff[i].sex,staff[i].age,staff[i].duty,staff[i].title,staff[i].p_landscape,sta ff[i].Qualifications,staff[i].Service_time,staff[i].come_time,staff[i].category );else continue;}fclose(fp);}(4)删除人员void delete_data(){int k; char w0,w1;loop: k=search_data();if(k<n){do{fflush(stdin); /*清除缓冲区输入*/printf("确认要删除该人员信息? 1)是 2)否 [ ]\b\b");w0=getchar();}while(w0<'1'||w0>'2');if(w0=='1'){staff[k].age=0;save_all();puts("该人员信息已被删除!");} } do{fflush(stdin); /*清除缓冲区输入*/printf("1)继续删除数据 2)回主菜单 3)退出w1=getchar();}while(w1<'1'||w1>'3'); if(w1=='1') goto loop; else if(w1=='2')menu(); else exit(0); }(5)修改人员信息 void modify() {int k=0,w0,g; char h[30],w1,w2; loop: g=search_data(); if(g<n){ do{puts("\t\t\t 修改: 1)编号"); puts("\t\t\t 2)姓名"); puts("\t\t\t 3)性别"); puts("\t\t\t 4)年龄"); puts("\t\t\t 5)职务"); puts("\t\t\t 6)职称"); puts("\t\t\t 7)政治面貌"); puts("\t\t\t 8)最高学历"); puts("\t\t\t 9)任职时间"); puts("\t\t\t 10)来院时间"); puts("\t\t\t 11)人员类别"); printf(" 请选择 : [ ]\b\b"); scanf("%d",&w0);}while(w0<1||w0>11); switch(w0){case 1:puts("请输入新编号:");scanf("%s",h);strcpy(staff[g].num,h);break; case 2:puts("请输入姓名:");scanf("%s",h);strcpy(staff[g].name,h);break; case 3:puts("请输入性别:");scanf("%s",h);strcpy(staff[g].sex,h);break; case 4:puts("请输入年龄:");scanf("%d",&k);staff[g].age=k;break; case 5:puts("请输入职务:");scanf("%s",h);strcpy(staff[g].duty,h);break; case 6:puts("请输入职称:");scanf("%s",h);strcpy(staff[g].title,h);break;scanf("%s",h);strcpy(staff[g].p_landscape,h);break;case 8:puts("请输入最高学历:");scanf("%s",h);strcpy(staff[g].Qualifications,h);break;case 9:puts("请输入任职时间:");scanf("%d",&k);staff[g].Service_time=k;break;case 10:puts("请输入来院时间:");scanf("%s",h);strcpy(staff[g].come_time,h);break;case 11:puts("请输入人员类别:");scanf("%s",h);strcpy(staff[g].category,h);break;}do{fflush(stdin); /*清除缓冲区输入*/printf("是否保存?1)保存 2)否[ ]\b\b");w1=getchar();}while(w1<'1'||w1>'2');if(w1=='1'){save_all(); puts("保存修改成功!");}}do{fflush(stdin); /*清除缓冲区输入*/printf("1)继续修改 2)回主菜单 3)退出[ ]\b\b");w2=getchar();}while(w2<'1'||w2>'3');if(w2=='1')goto loop;else if(w2=='2')menu();else exit(0);}(6)统计人员信息void stastic(){int i,count;char w0,w1;n=load();if(n==0){puts("没有数据!");getchar();menu();}loop: system("cls");do{fflush(stdin); /*清除缓冲区输入*/printf("通过1)在职人员 2)党员\n");printf(" 3)女工人数 4)最高学历 [ ]\b\b");w0=getchar();}while(w0<'1'||w0>'4');if(w0=='1'){/*统计在职人员*/printf_face();for(i=0,count=0;i<n&&staff[i].age;i++)if(strcmp(staff[i].category,"退休人员")!=0&&strcmp(staff[i].category,"临时工")!=0){count++; printf_one(staff[i]);} printf("\t\t\t\t 共有%d 条记录",count); }else if(w0=='2'){/*统计党员*/ printf_face();for(i=0,count=0;i<n;i++)if(strcmp(staff[i].p_landscape,"党员count++; printf_one(staff[i]);} printf("\t\t\t\t 共有%d 条记录",count);}else if(w0=='3'){/*统计女工人员*/ printf_face();for(i=0,count=0;i<n;i++)if(strcmp(staff[i].sex,"女")==0){count++; printf_one(staff[i]);}printf("\t\t\t\t 共有%d 条记录",count);}else {/*统计高学历人员*/printf_face();for(i=0,count=0;i<n;i++)if(strcmp(staff[i].Qualifications,"硕士学位")==0||strcmp(staff[i].Qualifications,"更高")==0){count++; printf_one(staff[i]);} printf("\t\t\t\t 共有%d 条记录",count);} do{fflush(stdin); /*清除缓冲区输入*/printf("\n1)继续统计 2)回主菜单 3)退出 [ ]\b\b"); w1=getchar();}while(w1<'1'||w1>'3'); if(w1=='1') goto loop; else if(w1=='2')menu(); else exit(0); }(6) 排序功能void sort() {int i,j;char w0,w1; struct staff s1; loop: n=load();system("cls"); do{fflush(stdin); /*清除缓冲区输入*/printf("通过 1)年龄 2)来院时间w0=getchar();}while(w0<'1'||w0>'2');if(w0=='1'){/*按年龄排序*/for(i=0;i<n-1;i++)/*选择法排序*/for(j=i+1;j<n;j++)if(staff[i].age>staff[j].age){s1=staff[i];staff[i]=staff[j];staff[j]=s1;}}else {/*按来院时间排序*/for(i=0;i<n-1;i++)/*选择法排序*/for(j=i+1;j<n;j++)if(strcmp(staff[i].come_time,staff[j].come_time)>0){s1=staff[i];staff[i]=staff[j];staff[j]=s1;}}printf_face();for(i=0;i<n;i++) /*显示排序结果*/printf_one(staff[i]);do{fflush(stdin); /*清除缓冲区输入*/printf("\n1)回主菜单 2)继续排序 3)退出[ ]\b\b");w1=getchar();}while(w1<'1'||w1>'3');if(w1=='1') menu();else if(w1=='2')goto loop;else exit(0);}四、运行与测试报告*********************************高校人事管理系统******************************1)增加人员信息2)删除人员信息3)查询人员信息4)修改人员信息5)统计人员信息6)对人员排序7)保存人员信息8)浏览人员信息9)退出请选择【 1】请输入编号(如001):20071003335请输入姓名:majianbo请输入性别(男,女):nan请输入年龄:20请输入职务(教授副教授讲师助教学生后勤人员): jiaoshou请输入职称 (无初级高级 ):gaoji请输入政治面貌( 党员非党员 ):danyuan请输入最高学历(小学初中高中大学硕士学位更高): shuoshi请输入任职时间:20070901请输入来院时间(如20050101):20070901请输入人员类别(行政人员教师一般员工退休人员临时工): jiaoshi是否保存?1)是 2)否 [1]该信息已成功保存!1)继续增加人员信息 2)回主菜单 3)退出 [ ]程序:#include<stdlib.h>#include <stdio.h>#include <string.h>struct staff/*定义结构体*/{char num[10];/*编号*/char name[20];/*姓名*/char sex[10];/*性别*/int age;/*年龄*/char duty[20];/*职务*/char title[20];/*职称*/char p_landscape[30];/*政治面貌*/char Qualifications[30];/*学历*/int Service_time;/*任职时间*/char come_time[30];/*来院时间*/char category[30];/*人员类别*/}staff[100];struct staff s;int n;void menu();void printf_face()/*显示数据结构项目函数*/{printf("编号姓名性别年龄职务职称政治面貌学历任职时间来院时间人员类别\n");}void printf_one(struct staff p)/*输出单个数据函数*/{printf("%-4s%-7s%-5s%-3d%-7s%-5s%-8s%-12s%-5d%-12s%-3s\n",p.num,,p.se x,p.age,p.duty,p.title,p.p_landscape,p.Qualifications,p.Service_time,e_tim e,p.category);}int load()/*加载函数*/{int i=0;FILE *fp;if((fp=fopen("text.txt","rb"))==NULL){return 0; exit(0);}for(i=0;!feof(fp);i++){ /*输出数据到结构体*/fscanf(fp,"%s %s %s %d %s %s %s %s %d %s %s\n",staff[i].num,staff[i].name,staff [i].sex,&staff[i].age,staff[i].duty,staff[i].title,staff[i].p_landscape,staff[i ].Qualifications,&staff[i].Service_time,staff[i].come_time,staff[i].category);} fclose(fp);return i;}int search_data()/*查找单个数据函数*/{int i,flag;char s[30],w0;system("cls");/*清屏*/n=load();do{fflush(stdin); /*清除缓冲区输入*/printf(" 通过1)编号 2)姓名 [ ]\b\b");w0=getchar(); }while(w0<'1'||w0>'2');if(w0=='1'){/*按编号查找*/flag=0;puts("输入人员编号:");scanf("%s",s);for(i=0;i<n;i++){if(strcmp(s,staff[i].num)==0){printf_face();printf_one(staff[i]);flag=1;break;}else continue;}if(flag==0)puts("该人员不存在!");}else {/*按姓名查找*/flag=0;puts("输入人员姓名:");scanf("%s",s);for(i=0;i<n;i++){if(strcmp(s,staff[i].name)==0){printf_face();printf_one(staff[i]);flag=1;break;}else continue;}if(flag==0) puts("该人员不存在!");}return i;}void save_all()/*保存所有数据函数*/{int i;FILE *fp;if((fp=fopen("text.txt","wb"))==NULL){printf("无法打开文件!");exit(0);}for(i=0;i<n;i++){if(staff[i].age!=0)fprintf(fp,"%s %s %s %d %s %s %s %s %d %s %s\n",staff[i].num,staff[i].name, staff[i].sex,staff[i].age,staff[i].duty,staff[i].title,staff[i].p_landscape,sta ff[i].Qualifications,staff[i].Service_time,staff[i].come_time,staff[i].category );else continue;}fclose(fp);}int test(char h[10])/*检查编号是否重复*/{int i;n=load();for(i=0;i<n;i++)if(strcmp(h,staff[i].num)==0){puts("输入的编号有重复!请重新输入编号!");system("pause");return 1;}return 0;}void single_save(struct staff p)/*保存单个数据函数*/{FILE *fp;if((fp=fopen("text.txt","ab+"))==NULL){printf("无法打开文件!");exit(0);}fprintf(fp,"%s %s %s %d %s %s %s %s %d %s %s\n",p.num,,p.sex,p.age,p.duty ,p.title,p.p_landscape,p.Qualifications,p.Service_time,e_time,p.category);printf("该信息已成功保存!\n");fclose(fp);}/*********************************修改模块**********************************/ void modify(){int k=0,w0,g;char h[30],w1,w2;loop: g=search_data();if(g<n){do{puts("\t\t\t修改: 1)编号");puts("\t\t\t 2)姓名");puts("\t\t\t 3)性别");puts("\t\t\t 4)年龄");puts("\t\t\t 5)职务");puts("\t\t\t 6)职称");puts("\t\t\t 7)政治面貌");puts("\t\t\t 8)最高学历");puts("\t\t\t 9)任职时间");puts("\t\t\t 10)来院时间");puts("\t\t\t 11)人员类别");printf(" 请选择 : [ ]\b\b");scanf("%d",&w0);}while(w0<1||w0>11);switch(w0){case 1:puts("请输入新编号:");scanf("%s",h);strcpy(staff[g].num,h);break;case 2:puts("请输入姓名:");scanf("%s",h);strcpy(staff[g].name,h);break;case 3:puts("请输入性别:");scanf("%s",h);strcpy(staff[g].sex,h);break;case 4:puts("请输入年龄:");scanf("%d",&k);staff[g].age=k;break;case 5:puts("请输入职务:");scanf("%s",h);strcpy(staff[g].duty,h);break;case 6:puts("请输入职称:");scanf("%s",h);strcpy(staff[g].title,h);break;case 7:puts("请输入政治面貌:");scanf("%s",h);strcpy(staff[g].p_landscape,h);break;case 8:puts("请输入最高学历:");scanf("%s",h);strcpy(staff[g].Qualifications,h);break;case 9:puts("请输入任职时间:");scanf("%d",&k);staff[g].Service_time=k;break;case 10:puts("请输入来院时间:");scanf("%s",h);strcpy(staff[g].come_time,h);break;case 11:puts("请输入人员类别:");scanf("%s",h);strcpy(staff[g].category,h);break;}do{fflush(stdin); /*清除缓冲区输入*/printf("是否保存?1)保存 2)否[ ]\b\b");w1=getchar();}while(w1<'1'||w1>'2');if(w1=='1'){save_all(); puts("保存修改成功!");}}do{fflush(stdin); /*清除缓冲区输入*/printf("1)继续修改 2)回主菜单 3)退出[ ]\b\b");w2=getchar();}while(w2<'1'||w2>'3');if(w2=='1')goto loop;else if(w2=='2')menu();else exit(0);}/************************保存模块******************************/void save(){char w0;save_all();printf("所有信息已保存!\n");do{fflush(stdin); /*清除缓冲区输入*/printf("1) 回主菜单 2) 退出 [ ]\b\b");w0=getchar();}while(w0<'1'||w0>'2');if(w0=='1')menu();else exit(0);}/*************************查找模块*****************************/ void search(){int k;char w1;loop: k=search_data();do{fflush(stdin); /*清除缓冲区输入*/printf("1)回主菜单 2)退出 3)继续查询 [ ]\b\b");w1=getchar();}while(w1<'1'||w1>'3');if(w1=='1')menu();else if(w1=='2')exit(0);else goto loop;}/***************************增加模块*****************************/ void add(){char w0,w1;loop: system("cls");puts("请输入编号(如001):");scanf("%s",s.num);if(test(s.num))goto loop;/*编号重复*/puts("请输入姓名:");scanf("%s",);puts("请输入性别(男,女):");scanf("%s",s.sex);puts("请输入年龄:");scanf("%d",&s.age);puts("请输入职务(教授副教授讲师助教学生后勤人员):");scanf("%s",s.duty);puts("请输入职称 (无初级高级 ):");scanf("%s",s.title);puts("请输入政治面貌( 党员非党员 ):");scanf("%s",s.p_landscape);puts("请输入最高学历(小学初中高中大学硕士学位更高):");scanf("%s",s.Qualifications);puts("请输入任职时间:");scanf("%d",&s.Service_time);puts("请输入来院时间(如20050101):");scanf("%s",e_time);puts("请输入人员类别(行政人员教师一般员工退休人员临时工):");scanf("%s",s.category);do{fflush(stdin); /*清除缓冲区输入*/printf("是否保存?1)是 2)否 [ ]\b\b");w0=getchar();}while(w0<'1'||w0>'2');switch(w0-48){case 1:single_save(s);break;case 2:break;}do{fflush(stdin); /*清除缓冲区输入*/printf("1)继续增加人员信息 2)回主菜单 3)退出 [ ]\b\b");w1=getchar();}while(w1<'1'||w1>'3');if(w1=='1')goto loop;else if(w1=='2')menu();else exit(0);}/*******************************删除模块*****************************/void delete_data(){int k; char w0,w1;loop: k=search_data();if(k<n){do{fflush(stdin); /*清除缓冲区输入*/printf("确认要删除该人员信息? 1)是 2)否 [ ]\b\b");w0=getchar();}while(w0<'1'||w0>'2');if(w0=='1'){staff[k].age=0;save_all();puts("该人员信息已被删除!");}}do{fflush(stdin); /*清除缓冲区输入*/printf("1)继续删除数据 2)回主菜单 3)退出 [ ]\b\b");w1=getchar();}while(w1<'1'||w1>'3');if(w1=='1') goto loop;else if(w1=='2')menu();else exit(0);}/********************************统计模块*******************************/void stastic(){int i,count;char w0,w1;n=load();if(n==0){puts("没有数据!");getchar();menu();}loop: system("cls");do{fflush(stdin); /*清除缓冲区输入*/printf("通过1)在职人员 2)党员\n");printf(" 3)女工人数 4)最高学历 [ ]\b\b");w0=getchar();}while(w0<'1'||w0>'4');if(w0=='1'){/*统计在职人员*/printf_face();for(i=0,count=0;i<n&&staff[i].age;i++)if(strcmp(staff[i].category,"退休人员")!=0&&strcmp(staff[i].category,"临时工")!=0){count++; printf_one(staff[i]);}printf("\t\t\t\t共有%d条记录",count);}else if(w0=='2'){/*统计党员*/printf_face();for(i=0,count=0;i<n;i++)if(strcmp(staff[i].p_landscape,"党员")==0){count++; printf_one(staff[i]);}printf("\t\t\t\t共有%d条记录",count);}else if(w0=='3'){/*统计女工人员*/printf_face();for(i=0,count=0;i<n;i++)if(strcmp(staff[i].sex,"女")==0){count++; printf_one(staff[i]);}printf("\t\t\t\t共有%d条记录",count);}else {/*统计高学历人员*/printf_face();for(i=0,count=0;i<n;i++)if(strcmp(staff[i].Qualifications,"硕士学位")==0||strcmp(staff[i].Qualifications,"更高")==0){count++; printf_one(staff[i]);}printf("\t\t\t\t共有%d条记录",count);}do{fflush(stdin); /*清除缓冲区输入*/printf("\n1)继续统计 2)回主菜单 3)退出 [ ]\b\b");w1=getchar();}while(w1<'1'||w1>'3');if(w1=='1') goto loop;else if(w1=='2')menu();else exit(0);}/*******************************排序模块***********************************/ void sort(){int i,j;char w0,w1;struct staff s1;loop: n=load();system("cls");do{fflush(stdin); /*清除缓冲区输入*/printf("通过 1)年龄 2)来院时间 [ ]\b\b");w0=getchar();}while(w0<'1'||w0>'2');if(w0=='1'){/*按年龄排序*/for(i=0;i<n-1;i++)/*选择法排序*/for(j=i+1;j<n;j++)if(staff[i].age>staff[j].age){s1=staff[i];staff[i]=staff[j];staff[j]=s1;}}else {/*按来院时间排序*/for(i=0;i<n-1;i++)/*选择法排序*/for(j=i+1;j<n;j++)if(strcmp(staff[i].come_time,staff[j].come_time)>0){s1=staff[i];staff[i]=staff[j];staff[j]=s1;}}printf_face();for(i=0;i<n;i++) /*显示排序结果*/printf_one(staff[i]);do{fflush(stdin); /*清除缓冲区输入*/printf("\n1)回主菜单 2)继续排序 3)退出[ ]\b\b");w1=getchar();}while(w1<'1'||w1>'3');if(w1=='1') menu();else if(w1=='2')goto loop;else exit(0);}/********************************浏览模块**************************************/void browse(){int i;char w0;n=load();system("cls");printf_face();for(i=0;i<n ;i++)printf_one(staff[i]);printf("\t\t\t\t共有%d条人员记录\n",n);do{fflush(stdin); /*清除缓冲区输入*/printf(" 1)回主菜单 2)退出 [ ]\b\b");w0=getchar();}while(w0<'1'||w0>'2');if(w0=='1') menu();if(w0=='2') exit(0);}/********************************主菜单函数*************************************/void menu(){char w0;do{system("cls");fflush(stdin); /*清除缓冲区输入*/puts("*********************************高校人事管理系统*******************************\n\n");puts("\t\t\t\t1)增加人员信息\n");puts("\t\t\t\t2)删除人员信息 \n");puts("\t\t\t\t3)查询人员信息\n");puts("\t\t\t\t4)修改人员信息\n");puts("\t\t\t\t5)统计人员信息\n");puts("\t\t\t\t6)对人员排序\n");puts("\t\t\t\t7)保存人员信息\n");puts("\t\t\t\t8)浏览人员信息\n");puts("\t\t\t\t9)退出\n");printf("\t\t\t\t请选择 [ ]\b\b");w0=getchar();}while(w0<'1'||w0>'9');switch(w0-48){case 1:add();break;case 2:delete_data();break;case 3:search();break;case 4:modify();break;case 5:stastic();break;case 6:sort();break;case 7:save();break;case 8:browse();break;case 9:break;}}/***********************************主函数****************************************/void main(){menu();}。
c语言课程设计之人事管理系统

C语言课程设计之人事管理系统简介人事管理系统是一种用于管理组织内人员信息和管理人力资源的系统。
在本文档中,我们将介绍一个使用C语言编写的简单人事管理系统。
该系统可以实现员工信息的添加、删除、修改和查询,以及一些基本的人事管理功能。
功能模块1. 员工信息管理模块•添加员工信息:包括姓名、工号、职位、部门等基本信息。
•删除员工信息:根据工号删除指定员工的信息。
•修改员工信息:根据工号修改指定员工的信息。
•查询员工信息:可以根据姓名、工号等条件查询员工的信息。
2. 薪资管理模块•发放工资:根据员工的工作时长、加班情况等计算工资并发放。
•调整薪资:可以根据员工表现调整薪资水平。
3. 考勤管理模块•打卡记录:记录员工的上下班打卡情况。
•考勤统计:统计员工的出勤情况,包括迟到、早退、旷工等信息。
系统设计1. 数据结构•员工信息结构体:包括姓名、工号、职位、部门等信息。
•薪资结构体:包括基本工资、加班工资等信息。
•考勤记录结构体:包括打卡时间、出勤情况等信息。
2. 功能实现•员工信息管理:使用链表或数组存储员工信息,实现增删改查操作。
•薪资管理:根据员工的工作情况计算薪资并更新薪资信息。
•考勤管理:记录员工的打卡信息并统计考勤情况。
系统实现1. 界面设计•采用控制台界面,通过菜单选择实现各项功能。
•显示员工信息列表、薪资管理界面和考勤记录界面。
2. 代码实现•使用C语言实现各个功能模块,包括管理员工信息、计算薪资、记录考勤等。
•采用函数封装、模块化设计,提高代码的可读性和可维护性。
测试与验证1. 单元测试•对每个功能模块进行单元测试,确保功能的正确性。
•模拟各种情况,包括正常情况和异常情况。
2. 系统测试•综合测试所有功能模块,验证系统的完整性和稳定性。
•模拟真实使用情况,检查系统的性能和可靠性。
总结通过本文档的介绍,我们了解了一个简单的C语言编写的人事管理系统的设计思路和实现方法。
人事管理系统是组织管理中的重要系统之一,对于提高工作效率和管理人力资源具有重要意义。
C 课设高校人员信息管理系统附全部代码

《基于C++的面向对象程序设计实例》课程设计报告报告题目:高校人员信息管理系统作者所在系部:计算机科学与工程系作者所在专业:计算机科学与技术作者所在班级:作者姓名:指导教师姓名:完成时间:2010年6月《基于C++的面向对象程序设计实例》任务书一.目的与要求1、目的(1)要求学生能够熟练掌握C++语言的基本知识和技能。
(2)基本掌握面向对象程序设计的基本思路和方法。
(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。
2、基本要求(1)要求利用面向对象的方法以及C++的编程思想来完成系统的设计。
(2)在系统的设计中,要求运用面向对象的机制(继承、派生及多态性)来实现系统功能,并且要建立清晰的类层次关系。
(3)在系统设计中要分析和定义各个类,每个类中要有各自的数据成员和成员函数。
(4)主函数中提供菜单选项,并给出足够的选择信息以及提示信息。
(5)程序具有一定的健壮性,不会因为用户的输入错误引起程序运行错误而中断执行。
对输入值的类型、大小范围、字符串的长度等,进行正确性检查,对不合法的输入值给出出错信息,指出错误类型,等待重新输入。
3、创新要求在基本要求达到后,可根据实际情况进行创新设计,如根据查找结果进行修改的功能及设计出比较友好的界面等。
二.验收方式完成设计内容之后,即可开始验收。
验收时,首先由学生简要说明所做题目的思路、设计结构及实现过程,然后运行程序并进行测试,对输出结果作出解释,同时认真回答教师提出的问题。
三.课设报告在完成验收之后,提交课设报告。
其中报告中需包括系统设计要求,设计思路,系统功能模块图,系统流程图,类的层次图(包括类成员列表),调试过程,关键程序代码,总结,参考书目等。
另外,课设报告要严格遵守模板文件的格式要求,思路清晰,内容详实丰富。
四.成绩评定课设总成绩=验收成绩(50%)+课程设计报告成绩(30%)+程序源代码(10%)+课设态度、考勤与遵守教学制度情况(10%)五.说明1、每位同学在以下的题目中任选一个来完成。
高校人事管理系统 (C++)

(5)完成类中各个成员函数的定义;
(6)完成系统的应用模块;
(7)功能调试;
(8)完成系统总结报告以及系统使用说明书。
1.
题目需求:
(1)添加删除功能:能根据学院人事的变动情况,添加删除记录;
(2)查询功能:能根据编号和姓名进行查询;
(3)编辑功能(高级):根据查询对相应的记录进行修改,并存储;
(2)基本掌握面向对象程序设计的基本思路和方法;
(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。
2、基本要求:
(1)要求利用面向对象的方法以及C++的编程思想来完成系统的设计;
(2)要求在设计的过程中,建立清晰的类层次;
(3)在系统中至少要定义四个类,每个类中要有各自的属性和方法;
8.知道一些基本的优化规则,如函数只能做一件事、越小越好、基类要足够的抽象,最好使用组合而不是继承,减少依赖性等等。
9.在程序设计中要与别人合作,把自己的糟粕去掉,吸取别人程序中的精华,与其他同学讨论。
10.编写中要先写好一个功能后马上调试,及时发现问题,及时解决问题,而不是系统写完后再慢慢调试,那样问题会很多,调好这里后那里又出现问题,我们初学者还有很多细节不会注意,这种方法有助于我更快的编写出系统,减少编写时间,把更多的时间留下来完善程序。
{year=y;}
void Time::setMonth(int m)
{month=m;}
void Time::setDay(int d)
{day=d;}
bool Time::judgeLeapYear()
{
bool flag=true;
flag=((year%4==0) && (year%100!=0) || (year%400==0));
高校人事管理系统

高校人事管理系统5、1源程序#include <fstream.h>//全局变量(代码表)char *Type[]={"行政人员","教师","一般员工","退休人员","返聘人员","临时工"}; char *Sex[]={"男","女"};char *Pos[]={"无","科级","处级","地级"};char *TechPos[]={"无","初级","中级","高级"};char *Party[]={"群众","中共党员","民主党派"};char *Study[]={"小学","初中","高中","大专","大学","硕士","博士"};class Date //日期类{private:int y,m,d;public:friend ostream& operator<<(ostream& os,Date& day);friend istream& operator>>(istream& is,Date& day);};ostream& operator<<(ostream& os,Date& day){os<<day.y<<"/"<<day.m<<"/"<<day.d;return os;}istream& operator>>(istream& is,Date& day){is>>day.y>>day.m>>day.d;return is;}class Person //人员类{private:int No; //编号int Type; //职工分类char Name[20];//姓名int Sex; //性别int Age; //年龄Date D1; //参加工作时间Date D2; //来院时间int Pos; //职务int TechPos; //职称int Party; //政治面貌int Study; //学历Person *next;public:Person(){next=0;}void Print(); //输出1个职工信息friend istream& operator>>(istream& is,Person &p); //重载">>",人员信息输入. friend class College;};void Person::Print(){cout<<No<<","<<::Type[Type]<<","<<Name<<","<<::Sex[Sex]<<","<<Age<<","<<D1<<","<<D2<<","<<::Pos[Pos]<<","<<::TechPos[TechPos]<<","<<::Party[Party]<<","<<::Study[Study]<<endl;}istream& operator>>(istream& is,Person &p){cout<<"编号:"; cin>>p.No;cout<<"职工分类[0-行政人员,1-教师,2-一般员工,3-退休人员,4-返聘人员,5-临时工]:"; cin>>p.Type;cout<<"姓名:"; cin>>;cout<<"性别[0-男,1-女]:"; cin>>p.Sex;cout<<"年龄:"; cin>>p.Age;cout<<"参加工作时间:"; cin>>p.D1;cout<<"来院时间:"; cin>>p.D2;cout<<"职务[0-无,1-科级,2-处级,3-地级]:";cin>>p.Pos;cout<<"职称[0-无,1-初级,2-中级,3-高级]:";cin>>p.TechPos;cout<<"政治面貌[0-群众,1-中共党员,2-民主党派]:"; cin>>p.Party;cout<<"学历[0-小学,1-初中,2-高中,3-大专,4-大学,5-硕士,6-博士]:";cin>>p.Study;return is;}class College //大学类{private:Person *PL; //职工链表void Clear(); //清除所有的职工结点(仅保留头结点) int Find(int ID,Person **p1,Person **p2); //查找职工结点public:College(); //构造~College(); //析构void Add(); //增加职工void Delete(); //删除职工void Modify(); //修改职工void Print(); //输出职工信息void Stat(); //综合统计void Save(); //职工信息存盘void Load(); //职工信息装入};College::College() //构造函数(创建1个头结点的链表) {Person *p=new Person;p->next=0;PL=p;cout<<"自动装入数据...\n";Load();}College::~College() //析构函数(仅保留1个头结点){Person *p=PL;while(p) //逐个删除结点,包括头结点{PL=p->next;delete p;p=PL;}PL=0;}void College::Add() //增加职工{cout<<"\n** 增加职工**\n";//创建新结点Person *pa=new Person;cin>>*pa;pa->next=0;//查找尾结点Person *p=PL;while(p->next)p=p->next;//连接p->next=pa;}void College::Clear() //清除所有的职工结点(仅保留头结点){Person *p=PL->next;while(p){PL->next=p->next;delete p;p=PL->next;}}//查找职工结点(返回1-找到,0-未找到.结点指针由p1返回,p2为前看指针) int College::Find(int ID,Person **p1,Person **p2){*p1=PL->next;*p2=PL;while(*p1){if((*p1)->No==ID)break; //找到else{*p2=*p1; //继续查找*p1=(*p1)->next;}}return *p1?1:0;}void College::Delete() //删除职工{cout<<"\n** 删除职工**\n";int No;Person *p1,*p2;cout<<"编号:"; cin>>No;if(!Find(No,&p1,&p2)){cout<<"指定的人员没有找到!\n";}else{p2->next=p1->next; //连接delete p1;cout<<"正确删除!\n";}}void College::Modify() //修改职工{cout<<"\n** 修改职工**\n";int No;Person *p1,*p2;cout<<"编号:"; cin>>No;if(!Find(No,&p1,&p2)){cout<<"指定的人员没有找到!\n";}else{p1->Print(); //输出原来的职工信息(做提示)cin>>*p1; //输入新的职工信息(更新)cout<<"修改完成!\n";}}void College::Print() //输出职工信息{cout<<"\n** 职工信息表**\n";cout<<"编号职工分类姓名性别年龄参加工作时间来院时间职务职称政治面貌学历\n";Person *p=PL->next;if(!p){cout<<"无职工记录!\n";return;}while(p) //遍历链表,输出职工信息{p->Print();p=p->next;}}void College::Stat() //综合统计{cout<<"\n** 综合统计**\n";int n1,n2,n3,n4;//n1-在职,n2-党员,n3-女工,n4-高职称或高学历(博士) n1=n2=n3=n4=0;Person *p=PL->next;while(p){if(p->Type!=3&&p->Type!=4&&p->Type!=5)n1++; //在职计数if(p->Party==1)n2++; //党员计数if(p->Sex==1)n3++; //女教工计数if(p->Study==6||p->TechPos==3)n4++; //高级职称/高学历计数p=p->next;}//统计数据输出cout<<"在职人员人数:"<<n1<<endl;cout<<"中共党员人数:"<<n2<<endl;cout<<"女工人数:"<<n3<<endl;cout<<"高学历/高职称人数:"<<n4<<endl;}void College::Save() //职工信息存盘{ofstream f("Person.dat",ios::out|ios::binary); //打开文件//遍历输出至文件Person *p=PL->next;while(p){f.write((char *)p,sizeof(Person));p=p->next;}f.close(); //关闭文件cout<<"职工信息已经保存在Person.dat.\n";}void College::Load() //职工信息装入{//清除现有结点(保留头结点)Clear();//打开文件ifstream f("Person.dat",ios::in|ios::binary);//建立结点,读数据Person *p=PL; //尾结点指针while(1){Person *pa=new Person; //建立新结点f.read((char *)pa,sizeof(Person)); //读入数据if(f){p->next=pa; //连接新结点p=pa; //更新尾结点指针}else{delete pa;break;}}//关闭文件f.close();}void main(){char ch;College c; //定义大学对象//显示主菜单,接受选择,并分支调用大学类的相应功能的成员函数do{cout<<"\n☆☆高校人事管理系统☆☆\n";cout<<"1-增加职工\n";cout<<"2-删除职工\n";cout<<"3-修改职工\n";cout<<"4-输出职工信息\n";cout<<"5-综合统计\n";cout<<"6-数据存盘\n";cout<<"7-数据装入\n";cout<<"8-退出\t请选择(1-8):";cin>>ch;switch(ch){case '1': c.Add(); break;case '2': c.Delete();break;case '3': c.Modify();break;case '4': c.Print(); break;case '5': c.Stat(); break;case '6': c.Save(); break;case '7': c.Load(); break;}}while(ch!='8');}5、2数据文件Person.dat:(Person类数据作为记录的二进制格式文件)class Person //人员类{private:int No; //编号int Type; //职工分类char Name[20];//姓名int Sex; //性别int Age; //年龄Date D1; //参加工作时间Date D2; //来院时间int Pos; //职务int TechPos; //职称int Party; //政治面貌int Study; //学历Person *next;public:Person(){next=0;}void Print(); //输出1个职工信息friend istream& operator>>(istream& is,Person &p); //重载">>",人员信息输入. friend class College;};5、3运行结果参考自动装入数据...☆☆高校人事管理系统☆☆1-增加职工2-删除职工3-修改职工4-输出职工信息5-综合统计6-数据存盘7-数据装入8-退出请选择(1-8):4** 职工信息表**编号职工分类姓名性别年龄参加工作时间来院时间职务职称政治面貌学历1,教师,wu,男,36,1993/5/1,2003/3/1,无,高级,群众,硕士2,教师,liu,男,22,2003/7/1,2003/7/1,无,无,群众,大学3,行政人员,tao,男,40,1984/7/1,1998/7/1,科级,高级,中共党员,大学4,教师,luo,男,25,1993/7/1,1993/7/1,无,初级,群众,硕士5,教师,he,女,22,2003/7/1,2003/7/1,无,无,群众,大学6,返聘人员,lin,男,65,1958/7/1,1958/7/1,处级,高级,中共党员,大学7,教师,zhao,女,22,2003/7/1,2003/7/1,无,无,群众,大学8,教师,quan,女,30,1998/7/1,1998/7/1,地级,中级,群众,大学☆☆高校人事管理系统☆☆1-增加职工2-删除职工3-修改职工4-输出职工信息5-综合统计6-数据存盘7-数据装入8-退出请选择(1-8):5** 综合统计**在职人员人数:7中共党员人数:2女工人数:3高学历/高职称人数:3☆☆高校人事管理系统☆☆1-增加职工2-删除职工3-修改职工4-输出职工信息5-综合统计6-数据存盘7-数据装入8-退出请选择(1-8):8 Press any key to continue。
高校人事管理系统 (C++)

一、设计内容与设计要求1。
课程设计目的:面向对象程序设计课程设计是集中实践性环节之一,是学习完《面向对象程序设计》课程后进行的一次全面的综合练习。
要求学生达到熟练掌握C++语言的基本知识和技能;基本掌握面向对象程序设计的思想和方法;能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题,从而提高动手编程解决实际问题的能力。
2.课题题目1)公司库存管理系统2)高校学籍管理系统3)高校工资管理系统4)高校人事管理系统5)通讯录程序设计6)学生成绩管理系统7)图书管理系统8)文本编辑器的设计与实现9)学生考勤管理系统10)公司人员管理系统3.设计要求:⑴设计课题题目:每位同学根据自己学号除以9所得的余数加一选择相应题号的课题。
换题者不记成绩。
(课题10只做为参考课题)⑵根据自己对应的课题完成以下主要工作:①完成系统需求分析:包括系统设计目的与意义;系统功能需求(系统流程图);输入输出的要求。
②完成系统总体设计:包括系统功能分析;系统功能模块划分与设计(系统功能模块图)。
③完成系统详细设计:包括数据库需求分析;数据库概念结构设计(E-R图);数据库逻辑结构设计;类层次图;界面设计与各功能模块实现.④系统调试:调试出现的主要问题,编译语法错误及修改,重点是运行逻辑问题修改和调整。
⑤使用说明书及编程体会:说明如何使用你编写的程序,详细列出每一步的操作步骤。
⑥关键源程序(带注释)⑶按规定格式完成课程设计报告,将其打印稿(A4纸)上交给老师存档.⑷不得抄袭他人程序、课程设计报告,每个人应体现自己的个性设计。
二、进度安排第 18 周星期一 8:00—-12:00星期二 8:00——12:00星期四 8:00——12:00第 19 周星期一 8:00--12:00星期二 14:30-—18:30星期三 8:00——12:00三、参考书籍1。
《C++程序设计课程设计》刘振安编著 TP312C5632.《C++ Builder和Delphi课程设计与系统开发案例》伍俊良清华大学出版社7-302-06072—X3。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include<iostream>#include<string>#include<fstream>powered by #include<iomanip>using namespace std;class employee{protected:int number;char name[20];char sex[6];char workplace[20];char place[20];char nation[6];char birth[20];char party[10];char id[20];float score[5];public:Employee *nest;Employee(){}~Employee(){}char* getname(){ return name; }int getnumber(){ return number; }double getscore(int i){ return score[i];}float get(){ return(score[0]+ score[1]+ score[2]+ score[3]+ score[4]);} void input(){int e=1;cout<<“\t\t\t按提示输入 :”<<endl ;cout<<“\t\t输入工号 :”;cin>>workplace ;do{cout<< “\t\t输入性别 :” ;cin>>sex ;if(strcmp(sex,“man”)==0 || strcmp(sex,“woman”)==0){cout<<“\t\t输入籍贯:”;cin >>place;cout<<“\t\t输入民族:”;cin >>nation;cout<<“\t\t输入生日:”;cin >>birth;cout<<“\t\t输入政治面貌:”;cin >>party;cout<<“\t\t输入身份证号:”;cin >>id;cout<<“\t\t输入工作时间:”;cin >>score[0];cout<<“\t\t输入缺勤次数:”;cin >>score[1];cout<<“\t\t输入业绩总评成绩:”;cin >>score[2];cout<<“\t\t输入跳动工作次数:”;cin >>score[3];cout<<“\t\t输入目前工资:”;cin >>score[4];e=0;}else{cout<<“\t\t\t无此类型性别!重新输入!”<<endl ;e=1 ;}}while(e) ;return ;}void input(ifstream & is){is>>number>>name>>sex>>place>>nation>>birth>>party>>id >>score[0]>> score[1]>> score[2]>> score[3]>> score[4]; is.get();}void output(){cout<<“职工基本信息如下:”<<endl;cout<<“工号:”<<number<<“姓名:”<<name<<“性别:”<<sex<<“籍贯:”<<place<<“民族:”<<nation<<“工作单位:”<<workplace<<“生日:”<<birth<<“政治面貌:”<<party<<endl<<“身份证号:”<<id<<“工作时间:”<<score[0]<<“缺勤次数:”<< score[1]<<“业绩总评成绩:”<<score[2]<<“调动工作次数:”<<score[3]<<“目前工资:”<<score[4]<<endl;}void output(ofstream & os){os<<setw(6)<<number<<setw(15)<<name<<setw(6)<<sex<<setw(20)<<place<<setw(6)<<nation<<setw(20)<<workplace<<setw(20)<<birth<<setw(20)<<party<<setw(20)<<id<<setw(6)<<score[0]<<setw(6)<< score[1]<<setw(6)<< score[2]<<setw(6)<< score[3]<<setw(6)<< score[4]<<endl;}};class company{Public:company(){head=new Employee;head->next=NULL;key=0;} ~company(){delete head;}void input();void mend();void del();int find(Employee**p,int num,char *pn=“^”) ;void found();void show();void save();void begin();void clear;char mainmenu();int getkey(){return key;}void setkey(int k)(key=k;)Employee *head;int key;};Void company::input(){Employee *p,*p2=NULL;P=head;int n;while(p->next)p=p->next;while(n){p2=new Employee;p2->input();p->next=p2;p2->next=NULL;p=p->next;company::setkey(1);cout<<”\t\t\t按1继续,按0返回:”;cin>>n;}}int company::find(Employee **p1,int num,char *pn){Employee *p;p=head;while(p->next){(*p1)=p;if((p->next)->getnumber()==num!strcmp((p->next)->getname(),pn)) return 1;p=p->next;}return 0;}void company::found(){Employee *p;int num=-1,n=9;char name[20]=”^”;{cout<<”\t\t1:按工号查找,2:按姓名查找:”;cin>>n;}while(n<1||n>2);if(n==1){cout<<”\t\t\t输入工号:”;cin>>num;}if(n==2){cout<<”\t\t\t输入姓名:”;cin>>name;}if(!find(&p,num,name)){cout<<”\t\t找不到你要查找的内容!”<<endl;return;}(p->next)->output();}V oid company::del(){Employee *p,*p2;int num;cout<<”\t\t\t输入工号:”;cin>>num;if(!find(&p,num,”^”)){cout<<”\t\t找不到你要删除的内容!”<<endl;return;}(p->next)->output();p2=p->next;p->next=p2->next;delete p2;company::setkey(1);}void company::show(){Employee::*p;p=head;while(p->next){(p->next)->output();p=p->next;}}void company::mend(){Employee *p;int num=-1,n;char name[20]=”^”;do{cout<<”\t\t1:按工号修改,2:按姓名修改:”;cin>>n;}while(n<1||n>2);if(n==1){cout<<”\t\t\t输入工号:”;cin>>num;}if(n==2){cout<<”\t\t\t输入姓名:”;cin>>num;}if(!find(&p,num,name)){cout<<”\t\t找不到你要修改的内容!”<<endl;return;}(p->next)->output();(p->next)->input();Company::setkey(1);}void company::save(){Employee *p;p=head;ofstream os(“Employee.txt”,ios::out);if(company::getkey()==1){while(p->next){(p->next)->output(os);p=p->next;}}cout<<”\t\t\t文件已保存!”<<endl ;company ::setkey(0) ;}void company ::begin(){Employee *p,*p2 ;p=head;clear();long t;ifstream is(“Employee.txt”,ios::in);if(!is){ofstream os(”Employee.txt”,ios::out);os.close();return;}int num=-1;while(1){num=-1;t=is.tellg();is>>num;is.seekg(t);if(num<0){is.close();return;}p2=new Employee;p2->input(is);p2->next=p2;p2->next=NULL;p=p->next;}}void company::clear(){Employee *p,*p2;P=head->next;while(p){p2=p;p=p->next;delete p2;}}char company::mainmenu(){char n[6];cout<<”\n\n ☆☆☆☆欢迎进入内蒙古医院人事管理系统☆☆☆☆”<<endl<<endl <<”****************************”<<endl<<”****************************”<<endl<<”** 1: 录入职工信息**”<<endl<<”** 2: 显示职工信息**”<<endl<<”** 3: 查找职工信息**”<<endl<<”** 4: 删除职工信息**”<<endl<<”** 5: 修改职工信息**”<<endl<<”** 6: 保存职工信息**”<<endl<<”** 0: 退出系统**”<<endl<<”****************************”<<endl<<”****************************”<<endl<<“请选择:”;cin>n;return n[0];}void main(){company pp;int k=1;char n;pp.begin();while(k==1){n=pp.mainmenu();switch(n){case’1’:pp.input();break;case’2’:pp.show();break;case’3’:pp.found();break;case’4’:pp.del();break;case’5’:pp.mend();break;case’6’:pp.save();break;case’0’:if(pp.getkey()==1){cout<<”\t\t\t是否保存?1:保存0:不保存:”;cin>.k;if(k==1)pp.save();}pp.clear();k=0;break;}}}。