人事管理系统C语言
人事综合管理系统C语言
人事管理管理系统[要求](1)某高校关键人员有: 在职人员(行政人员、老师、通常职员)、退休人员和临时工。
现在, 需要存放这些人员人事档案信息: 编号、姓名、性别、年纪、职务、职称、政治面貌、最高学历、任职时间、来院时间、人员类别。
其中, 人员编号唯一, 不能反复。
(2)添加删除功效:能依据学院人事变动情况, 添加删除统计;(3)查询功效: 能依据编号和姓名进行查询;(4)编辑功效(高级): 依据查询对对应统计进行修改, 并存放;(5)统计功效:能依据多个参数进行人员统计(在职人数、党员人数、女工人数、高学历高职称人数(硕士学位以上或副教授以上)), 统计要求同时显示被统计者信息;(6)排序功效: 根据年纪、来院时间进行排序;保留功效: 能对输入数据进行对应存放;需求分析:依据题目要求, 职员信息是存放在文件中, 所以应该提供对应文件输入输出功效, 在程序中应该有添加删除, 查询, 编辑, 统计, 排序, 保留等程序实现对应操作, 另外菜单式选择方法选择程序功效也是必需需。
另外程序中要求存放模块, 采取方法均为将原文件中全部数据读入内存, 在内存中处理以后以覆盖方法写入文件中重新储存, 这么方法轻易了解、轻易编写, 但当文件中数据量很大时, 这种方法也存在一定难度, 在本程序中将N定为100, 也即最多可储存职员人数为100;总体设计:1、依据以上需求分析, 将程序分成以下多个模块:2、新建档案信息;3、删除信息;4、追加信息;5、搜索查找信息(按姓名或编号搜索);6、浏览全部信息;7、修改信息;8、信息排序;9、信息统计;二、具体设计;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人事管理系统
C人事管理系统简介C人事管理系统是一个基于C语言开发的员工管理系统,旨在帮助企业高效地管理员工和人力资源。
该系统可以实现员工信息的录入、查询、修改和删除等功能,同时还支持部门管理、岗位管理、薪资管理等人力资源管理功能。
通过C人事管理系统,企业可以更好地管理员工信息,实现人事管理的科学化和规范化。
功能模块C人事管理系统包含以下主要功能模块:1.员工管理模块:用于员工信息的录入、查询、修改和删除。
2.部门管理模块:用于部门信息的录入、查询、修改和删除。
3.岗位管理模块:用于岗位信息的录入、查询、修改和删除。
4.薪资管理模块:用于员工薪资信息的录入、查询、修改和计算。
使用说明系统安装1.确保已经安装了C编译器,比如GCC。
2.下载C人事管理系统的源代码文件。
3.打开命令行界面,进入源代码所在目录。
4.在命令行中输入如下命令进行编译:gcc main.c -o HRMS。
5.编译成功后,将会生成可执行文件HRMS。
系统初始化1.双击可执行文件HRMS或在命令行中输入./HRMS 启动系统。
员工管理1.进入员工管理模块后,可以选择添加员工、查询员工、修改员工或删除员工。
2.输入员工的基本信息,包括姓名、性别、年龄、所属部门和岗位。
确认后信息将保存在系统中。
3.查询员工时,可以按照员工编号、姓名、部门或岗位等条件进行查询。
4.修改员工信息时,输入员工编号,然后修改相应的信息。
5.删除员工时,输入员工编号,系统将会删除该员工的信息。
部门管理1.进入部门管理模块后,可以选择添加部门、查询部门、修改部门或删除部门。
2.输入部门的名称和描述,确认后部门信息将保存在系统中。
3.查询部门时,可以按照部门名称进行查询。
4.修改部门信息时,输入部门名称,然后修改相应的信息。
5.删除部门时,输入部门名称,系统将会删除该部门的信息。
岗位管理1.进入岗位管理模块后,可以选择添加岗位、查询岗位、修改岗位或删除岗位。
2.输入岗位的名称和描述,确认后岗位信息将保存在系统中。
人事管理c语言课程设计
人事管理c语言课程设计一、教学目标本课程旨在通过学习人事管理系统C语言编程,让学生掌握C语言的基本语法、数据结构、算法及面向对象编程思想,培养学生具备运用C语言解决实际问题的能力。
具体目标如下:1.知识目标:–掌握C语言的基本语法和编程规范;–理解并运用数据结构、算法解决编程问题;–学习面向对象编程,了解类和对象的概念及应用。
2.技能目标:–能够运用C语言编写简单的程序,解决实际问题;–熟练使用C语言开发工具,如编译器、调试器等;–掌握C语言编程的基本技巧,提高编程效率。
3.情感态度价值观目标:–培养学生的编程兴趣,激发创新精神;–培养学生团队合作、自主学习的良好学习态度;–使学生认识到计算机编程在现代社会的重要性,提高学生的信息素养。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构、算法及面向对象编程。
具体安排如下:1.C语言基本语法:–变量、数据类型、运算符;–控制语句、函数、数组和字符串;–指针、结构体、共用体和位字段。
2.数据结构:–线性表、栈和队列;–链表、树和图。
–排序和查找算法;–递归算法;–动态规划算法。
3.面向对象编程:–类和对象的概念及创建;–继承、封装和多态;–常用类库和接口。
三、教学方法本课程采用讲授法、讨论法、案例分析法和实验法等多种教学方法,以激发学生的学习兴趣和主动性。
1.讲授法:教师讲解C语言的基本语法、数据结构、算法及面向对象编程的概念和原理,引导学生掌握编程知识。
2.讨论法:学生分组讨论编程问题,培养学生的团队合作精神和沟通能力。
3.案例分析法:通过分析实际案例,让学生了解编程在实际应用中的重要性,提高学生的信息素养。
4.实验法:安排实验室实践环节,让学生动手编写代码,培养学生的编程能力和实践能力。
四、教学资源本课程所需教学资源包括教材、参考书、多媒体资料和实验设备。
1.教材:选用权威、实用的C语言编程教材,如《C程序设计语言》等。
2.参考书:提供相关领域的经典著作和优秀教材,如《C Primer Plus》等。
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.设计任务---------------------------------------------------------------------------------------------12.正文-----------------------------------------------------------------------------------------------------------2(1).系统模块图------------------------------------------------------------------------------------------3 (2).模块说明---------------------------------------------------------------------------------------------3 (3).用户使用说明---------------------------------------------------------------------------------------3 (4).测试结果---------------------------------------------------------------------------------------------33.设计小结--------------------------------------------------------------------------------------------------94.附录-----------------------------------------------------------------------------------------------------------10一.设计任务1、需求分析:人事档案信息采用文件存储,因而要提供文件的输入输出操作;根据学院人事的变动情况,添加删除记录,因而要提供文件的添加删除操作;根据编号和姓名进项查询,所以要提供文件的查找操作;高级编辑功能,就是提供文件的修改操作;统计功能要提供统计操作;排序功能要提供用排序算法对文件记录的排序;另外还要提供键盘式选择菜单以实现功能选择。
人事档案管理系统_c语言
人事档案管理系统_c语言人事档案管理系统是一种用于管理和维护组织内员工档案的软件系统。
随着企业的发展和人力资源管理的进步,人事档案管理系统已经成为企业管理不可或缺的一部分。
本文将介绍一个C语言实现的人事档案管理系统,包括系统设计和功能。
一、系统设计1.系统结构人事档案管理系统主要由以下几个组成部分:• 用户界面模块:用于管理和维护档案等信息与操作。
• 数据库模块:用于存储和管理各类档案资料等数据。
• 后台模块:用于管理人事档案管理系统的整体运作和处理。
2.系统功能设计人事档案管理系统主要功能包括以下几个方面:(1)用户登录,实现用户身份验证和权限管理;(2)新增、编辑、删除、查询员工等记录,实现简单员工档案的管理。
(3)工资信息管理,包括薪资发放、薪资统计等功能。
(4)请假管理,包括请假类型、请假时间、请假理由等。
(5)培训管理,包括员工培训计划、培训内容、培训结果等方面的管理。
(6)人事报表生成与查询,包括人事统计分析、人力资源计划等多个方面的管理。
二、C语言实现1.系统架构首先,需要确定系统的核心模块和需求,例如文件管理、用户管理、员工管理、考勤管理等。
然后,可以使用C语言中的结构体和函数对这些核心模块进行设计和实现。
2.模块设计(1)文件管理文件管理模块用于管理人事档案管理系统的数据文件,包括打开、创建、保存、修改、删除等功能。
由于数据是非常重要的,所以应该对其进行备份和恢复操作。
(2)用户管理用户管理模块用于管理人事档案管理系统的用户信息,包括用户的姓名、密码、权限等。
通过用户管理模块,可以对不同的用户进行身份验证和权限管理。
(3)员工管理员工管理模块用于管理和维护员工的档案信息,包括员工姓名、工号、部门、职位、工资、请假信息等。
通过员工管理模块,可以方便地查询和管理员工的信息。
(4)考勤管理考勤管理模块用于管理员工的考勤信息,包括上班打卡、下班打卡等。
通过考勤管理模块,可以方便地查询和管理员工的请假、加班、旷工等信息。
人事管理管理系统—C语言课程设计
人事管理管理系统[要求]某高校主要人员有:在职人员(行政人员、教师、一般员工)、退休人员和临时工。
现在,需要存储这些人员的人事档案信息:编号、姓名、性别、年龄、职务、职称、政治面貌、最高学历、任职时间、来院时间、人员类别。
其中,人员编号唯一,不能重复。
(1)添加删除功能:能根据学院人事的变动情况,添加删除记录;(2)查询功能:能根据编号和姓名进行查询;(3)编辑功能(高级):根据查询对相应的记录进行修改,并存储;(4)统计功能:能根据多种参数进行人员的统计(在职人数、党员人数、女工人数、高学历高职称人数(硕士学位以上或者副教授以上)),统计要求同时显示被统计者的信息;(5)排序功能:按照年龄、来院时间进行排序;(6)保存功能:能对输入的数据进行相应的存储;一.需求分析:根据题目要求,人事信息是存放在文件中的,所以应该提供相应的文件的输入输出的功能,在程序中应该有添加删除,查询,编辑,统计,排序,保存等程序实现相应的操作,另外菜单式的选择方式选择程序的功能也是必须需的。
另外程序中要求存储的模块,采用的方式均为将原文件中的所有数据读入内存,在内存中处理之后以覆盖的方式写入文件中重新储存,这样的方法容易理解、容易编写,但当文件中的数据量很大时,这种方法也存在一定的难度,在本程序中将RS定为100,也即最多可储存的职工人数为100;二总体设计:根据以上需求分析,将程序分成以下几个模块:1浏览:****浏览文件(0)2 删除****删除记录(1)3查询****按名称查询(2)****按编号查询(3)4 编辑****查询名称编辑信息(4)****查询编号编辑信息(5)5 统计****统计在职人数(6)****统计党员人数(7)****统计女工人数(8)****统计硕士以上学历人数(9)****统计副教授以上职称人数(10)6 排序****按年龄进行排序(11)****按来院时间进行排序(12)7 保存****将输入的记录进行保存(13)三详细设计;1、主函数:主函数设计的比较简单,只提供输入、处理和输出部分的函数调用。
用c语言编写企业人事管理信息系统
企业人事管理信息系统(两种方法)方法一#include "stdio.h"#include "stdlib.h"#include "string.h"struct date{int year,month,day;};typedef struct manrecord{int id;char name[20];char sex[10];char dept[20];struct date worktime;struct manrecord *next;}Elemtype;Elemtype *init(){Elemtype *h;h=(Elemtype *)malloc(sizeof(Elemtype));if (h==NULL){printf("内存空间不足!\n");return NULL;}else{h->next=NULL;return h;}}void term( Elemtype *h){Elemtype *p,*q;p=h;while (p!=NULL){q=p;p=p->next;free(q);}}Elemtype * isidExist(Elemtype *h,int id){Elemtype *p;p=h->next;while (p!=NULL)if (p->id==id)return p;elsep=p->next;return NULL;}void inputStaff(Elemtype *h){Elemtype *p;int id;while (1){printf("输入员工编号(小于等于0,则结束输入):");scanf("%d",&id);if (id<=0){printf("数据输入结束。
\n");break;}p=(Elemtype *)malloc(sizeof(Elemtype));if (p==NULL){printf("内存空间不足,输入结束。
C语言人事档案管理系统
#include <stdio.h>#include <string.h>#include <stdlib.h>#define N 10struct worker{char num[20]; //员工编号char name[20]; //员工名称char sex;//员工性别int age;//员工年龄char remark[20];//员工备注} stu[10];void input()//员工基本信息录入{int i=0;FILE *fp; //文献指针for(i=0;i<N;i++) //录入信息{printf("\n请输入第%d个员工旳基本信息:\n",i+1); printf("员工编号: ");scanf("%s",stu[i].num);printf("员工名称: ");scanf("%s",stu[i].name);fflush(stdin);printf("员工性别: ");scanf("%c",&stu[i].sex);printf("员工年龄:");scanf("%d",&stu[i].age);printf("备注: ");scanf("%s",stu[i].remark);}if((fp=fopen("worker-massge","wb"))==NULL) //判断文献打开与否成功{printf("文献打开失败");exit(0);}for(i=0;i<N;i++){if(fwrite(&stu[i],sizeof(struct worker),1,fp)!=1)printf("file writer error\n");}fclose(fp);}void show(int j)//显示员工信息{int i;FILE *fp;if((fp=fopen("worker-massge","rb"))==NULL)//判断文献打开与否成功{printf("文献打开失败");exit(0);}for(i=0;i<j;i++)fread(&stu[i],sizeof(struct worker),1,fp); /*读磁盘文献*/printf("\n***********员工基本信息表*************\n"); //显示员工信息printf("编号\t名称\t性别\t年龄\t备注\n");for(i=0;stu[i].age!=-1&&i<N;i++){printf("\n%s\t%s\t%c\t%d\t%s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].remark); }}void search()//按照员工名称进行查询{int a,i,g,e;char d,r[20],c[20];FILE *fp;if((fp=fopen("worker-massge","rb"))==NULL)//判断文献打开与否成功{printf("文献打开失败");return;}for(i=0;i<N;i++)fread(&stu[i],sizeof(struct worker),1,fp); /*读磁盘文献*/fclose(fp);while(g){printf("***********请选择查询方式***************\n");printf(" 1,姓名2,序号3,性别4,年龄\n ");printf("****************************************\n");scanf("%d",&a);switch(a){case 1:printf("请输入姓名:");scanf("%s",r);printf("姓名序号性别年龄备注\n ");for(i=0;i<N;i++){if(strcmp(stu[i].name,r)==0)printf("\n%s\t%s\t%c\t%d\t%s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].remark);}break;case 2:printf("请输序号:");scanf("%s",&c);printf("姓名序号性别年龄备注\n ");for(i=0;i<N;i++){if(strcmp(c,stu[i].num)==0)printf("\n%s\t%s\t%c\t%d\t%s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].remark);}break;case 3:printf("请输性别:");getchar();scanf("%c",&d);printf("姓名序号性别年龄备注\n ");for(i=0;i<N;i++){if(stu[i].sex==d)printf("\n%s\t%s\t%c\t%d\t%s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].remark);}break;case 4:printf("请输年龄:");scanf("%d",&e);printf("姓名序号性别年龄备注\n ");for(i=0;i<10;i++){if(stu[i].age==e)printf("\n%s\t%s\t%c\t%d\t%s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].remark);}break;default :printf("错误");break;} printf("-----__与否继续查询(是按1/否按0):");scanf("%d",&g);}}void change(int k)//修改员工信息{int i;FILE *fp;char listname[20];char password[10];do{printf("请输入修改密码\n");scanf("%s",password);if((strcmp(password,"0819")!=0)){printf("密码错误,不能修改\n");continue;}break;}while(1);printf("密码对旳,可以修改\n");if((fp=fopen("worker-massge","rb"))==NULL){ printf("文献打开失败");return ;}for(i=0;i<k;i++)fread(&stu[i],sizeof(struct worker),1,fp); /*读磁盘文献*/printf("\n\n-----------------员工信息表------------------\n\n");printf("编号\t姓名\t性别\t年龄\t备注\n");for(i=0;i<k;i++){printf("%s\t%s\t%c\t%d\t%s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].remark); }printf("请输入要更改旳员工旳编号:");scanf("%s",listname);for(i=0;i<k;i++){if(strcmp(listname,stu[i].num)==0)break;}if(i<k) //修改员工信息{printf("\n请修改员工旳信息:\n");printf("员工编号: ");scanf("%s",stu[i].num);printf("员工姓名: ");scanf("%s",stu[i].name);fflush(stdin);printf("员工性别: ");scanf("%c",&stu[i].sex);printf("员工年龄: ");scanf("%d",&stu[i].age);printf("员工备注: ");scanf("%s",&stu[i].remark);}else{printf("对不起,你请输入员工编号是错误旳或没有此编号");return ;}//if((fp=fopen("worker-massge","wb"))==NULL){printf("文献打开失败");exit(0);}for(i=0;i<k;i++) //往文献里写修改旳数据{if(fwrite(&stu[i],sizeof(struct worker),1,fp)!=1)printf("file writer error\n");}fclose(fp);}int del() //员工信息删除{int i,j,k=0;FILE *fp;char listname[20];printf("请输入要删除旳员工旳编号:");scanf("%s",listname);if((fp=fopen("worker-massge","rb"))==NULL) {printf("文献打开失败");return 0; ;}for(i=0;i<N;i++)fread(&stu[i],sizeof(struct worker),1,fp); /*读磁盘文献*/ fclose(fp);for(i=0;i<N;i++){if(strcmp(listname,stu[i].num)==0){k=1;break;}}if(k==1) //修改员工信息{for(j=i;j<N-1;j++){stu[j]=stu[j+1];}}else{printf("对不起,你请输入员工编号是错误旳或没有此编号");return 0;}strcpy(stu[j].num,"000");stu[j].age=-1;//往文献里写if((fp=fopen("worker-massge","wb"))==NULL) {printf("文献打开失败");return 0;}for(i=0;i<N-1;i++) //往文献里写修改旳数据{if(fwrite(&stu[i],sizeof(struct worker),1,fp)!=1) printf("file writer error\n");}fclose(fp);return N-1;}void save(int j) //保存员工信息{ FILE *fp;int i;if((fp=fopen("worker-massge","wb"))==NULL) {printf("文献打开失败");exit(0);}for(i=0;i<j;i++){if(fwrite(&stu[i],sizeof(struct worker),1,fp)!=1) printf("file writer error\n");}printf("保存成功\n");fclose(fp);}void main(){char choice; //输入数值,拟定选项.char password[10];do{printf("请输入进入人事档案管理系统旳密码\n"); scanf("%s",password);if((strcmp(password,"0819")!=0)){printf("密码错误,不能进入主界面\n"); continue;}break;}while (1);{printf("密码对旳,可以进入人事档案管理系统\n");}while(choice!=0){printf("********************人事档案管理系统*********************\n");printf(" 1.输入员工基本信息& 2.显示员工基本信息\n");printf(" 3.保存员工基本信息& 4.删除员工基本信息\n");printf(" 5.修改员工基本信息(要输入密码) & 6.查询员工基本信息\n");printf(" 0.退出系统\n");printf("*********************************************************\n");printf("请选择以上目录(0-6)\n");scanf("%d",&choice);switch (choice){case 1:input();//输入员工信息break;case 2:show(N);//显示员工信息break;case 3:save(N); //保存员工信息break;case 4:del();//删除员工信息break;case 6:search();//查询员工break;case 5:change(N);//修改改员工信息break;}}}。
人事管理系统c语言版
⼈事管理系统c语⾔版int menu(){printf("请按提⽰输⼊完毕操作!\n");printf("1.查询员⼯信息\n");printf("2.统计员⼯数量\n");printf("3.录⼊员⼯信息\n");printf("4.删除员⼯信息\n");printf("5.按id排序全部员⼯\n");printf("6.打印全部员⼯信息\n");printf("7.退出系统\n");return 0;}如menu()函数所看到的,该系统⼀共同拥有7个功能#include <stdio.h>#include <stdlib.h>#include <string.h>struct emp{int id;char name[50];struct emp * next;// struct emp * prev;};struct emp * initList();struct emp * addListTailNode(struct emp * head);struct emp * deleteListNode(struct emp * head,int id);struct emp * searchEmp(struct emp * head,int id);int printList(struct emp * l);int printNode(struct emp * p);struct emp * sortList(struct emp * head);int getListLen(struct emp * head);int writeToDisk(struct emp * head);struct emp * readFromDisk();int menu();int usage(struct emp * head);#include "emp.h"int main(){struct emp * head;head=readFromDisk();usage(head);return 0;}struct emp * initList(){struct emp * head;head=(struct emp *)malloc(sizeof(struct emp));head->next=NULL;return head;}struct emp * addListTailNode(struct emp * head){int id;char name[50];struct emp * p, * last , * check;last = head;while(last->next!=NULL){last=last->next;}printf("依次输⼊:员⼯id号,姓名!\n");scanf("%d%s",&id,&name);check = head;while(check!=last){ //遍历check=check->next;if(id==check->id){printf("加⼊�失败!员⼯id号反复!\n");return head;}}p=(struct emp *)malloc(sizeof(struct emp));p->id=id;strcpy(p->name,name);//last->next=p;last=p;p->next=NULL;printf("%s员⼯信息已加⼊�!\n",p->name);return head;}struct emp * deleteListNode(struct emp * head,int id){struct emp * p,* q;p = head->next;while(p!=NULL){if(p->next->id==id){break;}p=p->next;}if(head->next==NULL){printf("书籍信息为空!删除失败!\n");}else{q = p->next;p->next = q->next;printf("%s书籍信息被删除!\n",q->name);free(q);}return head;}struct emp * searchEmp(struct emp * head,int id){//查询,返回节点信息 struct emp * p;p = head->next;while(p!=NULL){if(p->id==id){break;}p=p->next;}return p;}int printNode(struct emp * p){//打印节点信息if(p!=NULL){printf("员⼯id: %d 员⼯姓名:%s\n",p->id,p->name);}else{printf("系统内⽆该员⼯信息!\n");}return 0;}int printList(struct emp * head){ //打印整条链表struct emp * p;p = head->next;while(p!=NULL){printNode(p);p=p->next;}return 0;}struct emp * sortList(struct emp * head){//排序struct emp * p,* q;int temp_id;char temp_name[50];for(p=head->next;p!=NULL;p=p->next){for(q=p->next;q!=NULL;q=q->next){if(p->id>q->id){temp_id = q->id;q->id = p->id;p->id = temp_id;//strcpy(temp_name,q->name);strcpy(q->name,p->name);strcpy(p->name,temp_name);}}}return head;}int getListLen(struct emp * head){int len=0;struct emp * p;p=head->next;while(p!=NULL){len++;p=p->next;}return len;}int writeToDisk(struct emp * head){FILE * fp;struct emp * p;if((fp = fopen("D:\\emp.hhtx", "w")) == 0){printf("写⼊失败……!\n");return 0;}//p=head->next;while(p!=NULL){fwrite(p,sizeof(struct emp),1,fp);printf("%d %s\n",p->id,p->name);p=p->next;}fclose(fp);return 0;}struct emp * readFromDisk(){FILE * fp;struct emp * head,* last,* p,* temp;head = initList();if((fp = fopen("D:\\emp.hhtx", "r")) == 0){printf("载⼊失败……未找到存档数据!\n\n"); return head;}//last = head;p=(struct emp *)malloc(sizeof(struct emp)); while(p!=NULL){p=(struct emp *)malloc(sizeof(struct emp)); fread(p,sizeof(struct emp),1,fp);printf("读取数据: %d %s\n",p->id,p->name); //last->next=p;last=p;p=p->next;}fclose(fp);printf("系统数据初始化完毕!");return head;}int menu(){printf("请按提⽰输⼊完毕操作!\n");printf("1.查询员⼯信息\n");printf("2.统计员⼯数量\n");printf("3.录⼊员⼯信息\n");printf("4.删除员⼯信息\n");printf("5.按id排序全部员⼯\n");printf("6.打印全部员⼯信息\n");printf("7.退出系统\n");return 0;}int usage(struct emp * head){int x,id;struct emp * p;menu();while(1){printf("请输⼊序列号:");scanf("%d",&x);switch(x){case 1:printf("输⼊所要查询的员⼯的id号:");scanf("%d",&id);p = searchEmp(head,id);printNode(p);printf("---------------------------------\n");break;case 2:printf("系统中⼀共存在%d个员⼯\n",getListLen(head)); break;case 3:head=addListTailNode(head);printf("---------------------------------\n");break;case 4:printf("输⼊所要删除的员⼯的id号:");scanf("%d",&id);head=deleteListNode(head,id);printf("---------------------------------\n");break;case 5:printf("排序開始……\n");head=sortList(head);printf("排序已完毕!\n");printf("---------------------------------\n");break;case 6:printList(head);printf("---------------------------------\n");break;case 7:writeToDisk(head);printf("保存完毕……\n");printf("已退出系统!\n");printf("---------------------------------\n");return 0;default:return 0;}}return 0;}。
c语言员工人事档案管理系统
c语⾔员⼯⼈事档案管理系统⼀、设计内容与设计要求1.设计内容1)问题描述:对⼀个有N个员⼯的公司,通过该系统实现对员⼯学⽣的基本信息进⾏录⼊、显⽰、修改、删除、保存等操作的管理。
2) 功能要求:1、本系统采⽤⼀个包含N个数据的结构体数组,每个数据的结构应当包括:序号、姓名、性别、年龄、备注等。
2、本系统显⽰这样的菜单:请选择系统功能项:1.员⼯基本信息录⼊2.员⼯基本信息显⽰c.员⼯基本信息保存d.员⼯基本信息删除e.员⼯基本信息修改(要求先输⼊密码)f.员⼯基本信息查询1.按序号查询2.按姓名查询3.按性别查询4.按年龄查询g. 退出系统3、执⾏⼀个具体的功能之后,程序将重新显⽰菜单。
4、将员⼯基本信息保存到⽂件中。
5、进⼊系统之前要先输⼊密码。
1、源程序清单(带注释)#include#include#includestruct student //定义结构类型,类型名为student{char name[10]; //name为学⽣姓名int num; //num为学⽣学号float score[4]; //score为学⽣成绩}stur[10];void luru() //成绩录⼊{for(i=1;i<=10;i++){printf("请输⼊第%d个学⽣的姓名:\n",i);scanf("%s",stur[i].name);printf("请输⼊该学⽣的学号:");scanf("%d",&stur[i].num);printf("请输⼊该学⽣的数学成绩:");scanf("%f",&stur[i].score[0]);printf("英语成绩:");scanf("%f",&stur[i].score[1]);printf("语⽂成绩:");scanf("%f",&stur[i].score[2]);printf("政治成绩:");scanf("%f",&stur[i].score[3]);}printf("学⽣成绩录⼊完毕!");printf("\n");}void xianshi() //成绩显⽰{int i;printf("姓名学号数学英语语⽂政治\n"); for(i=0;i<10;i++){printf("%s %d %.2f %.2f %.2f %.2f\n",stur[i].name,stur[i].num,stur[i].score[0],stur[i].score[1],stur[i].score[2],stu r[i].score[3]); }printf("学⽣成绩显⽰完毕!");printf("\n");}void baocun() //成绩保存{int i;FILE *out;if((out=fopen("student.txt","wb"))==NULL)printf("⽆法打开⽂件\n");exit(0) ;}fprintf(out,"%-10s%-10d%-10s%-10s%-10s%-10s\n","姓名","学号","数学","英语","语⽂","政治"); for(i=0;i<10;i++)fprintf(out,"%-10d%-10s%-10d%-10d%-10d%-10d\n",stur[i].num,stur[i].name,stur[i].score[0],stur[i].score[1],stur[i].score[2],stur[i] .score[3]);close(out);printf("学⽣成绩保存完毕!");printf("\n");}void paixu() //成绩排序{int a[10];int i,j,t;int M[4];{printf("请输⼊10个学⽣的数学成绩:\n");for(i=0;i<10;i++)scanf("%d",&a[i]);printf("\n");for(j=0;j<9;j++)for(i=0;i<9-j;i++)if(a[i]>a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}}printf("该10个学⽣的%d成绩由低到⾼为:\n"); for(i=0;i<10;i++)printf("%d",a[i]);printf("\n");return(M);}void xiugai() // 成绩修改int i,j;char str1[10];printf("请输⼊密码:");scanf("%s",str1);if(strcmp(str1,"123456")!=0)printf("\t请重新输⼊密码!");if(strcmp(str1,"abcdef")==0){printf("请输⼊要修改成绩学⽣学号:"); scanf("%d",&j);for(i=0;i<10;i++){if(stur[i].num==j)break;}printf("输⼊数学成绩:");scanf("%f",&stur[i].score);printf("输⼊英语成绩:");scanf("%f",&stur[i].score);printf("输⼊语⽂成绩:");scanf("%f",&stur[i].score);printf("输⼊政治成绩:");scanf("%f",&stur[i].score);}}void shuxue() //数学成绩统计{float max=0;float average1(float a[10],int n);float score[10],aver1;int i;printf("请输⼊10个学⽣的数学成绩:\n"); for(i=0;i<10;i++)scanf("%f",&score[i]);printf("\n");aver1=average1(score,10);printf("max=%5.2f\n10个学⽣数学的平均分:%.2f\n",max,aver1); } float average1(float a[10],int n){int i;float max=0;float aver1,sum=a[0];max=a[0];for(i=1;i{if(a[i]>max)max=a[i];else ;sum=sum+a[i];}aver1=sum/n;return(aver1);}void yingyu() //英语成绩统计{float max=0;float average2(float a[10],int n);float score[10],aver2;int i;printf("请输⼊10个学⽣的英语成绩:\n");for(i=0;i<10;i++)scanf("%f",&score[i]);printf("\n");aver2=average2(score,10);printf("max=%5.2f\n10个学⽣的英语平均分:%.2f\n",max,aver2); } float average2(float a[10],int n){int i;float max=0;float aver2,sum=a[0];max=a[0];for(i=1;i{if(a[i]>max)max=a[i];else ;sum=sum+a[i];}aver2=sum/n;return(aver2);}void yuwen() //语⽂成绩统计{float max=0;float average3(float a[10],int n);float score[10],aver3;int i;printf("请输⼊10个学⽣的语⽂成绩:\n");for(i=0;i<10;i++)scanf("%f",&score[i]);printf("\n");aver3=average3(score,10);printf("max=%5.2f\n10个学⽣的语⽂平均分:%.2f\n",max,aver3); } float average3(float a[10],int n){int i;float max=0;float aver3,sum=a[0];max=a[0];for(i=1;i{if(a[i]>max)max=a[i];else ;sum=sum+a[i];}aver3=sum/n;return(aver3);}void zhengzhi() //政治成绩统计{float max=0;float average4(float a[10],int n);float score[10],aver4;int i;printf("请输⼊10个学⽣的政治成绩:\n");for(i=0;i<10;i++)scanf("%f",&score[i]);printf("\n");aver4=average4(score,10);printf("max=%5.2f\n10个学⽣政治的平均分:%.2f\n",max,aver4); } float average4(float a[10],int n){int i;float max=0;float aver4,sum=a[0];max=a[0];for(i=1;i{if(a[i]>max)max=a[i];else ;sum=sum+a[i];}aver4=sum/n;return(aver4);}void main(){while(1){printf("***********管理系统**********\n"); printf(" 1 成绩录⼊ \n"); printf(" 2 成绩显⽰ \n");printf(" 3 成绩保存 \n");printf(" 4 成绩排序 \n");printf(" 5 成绩修改 \n");printf(" 6 数学平均成绩 \n");printf(" 7 英语平均成绩 \n");printf(" 8语⽂平均成绩 \n");printf(" 9政治平均成绩 \n");printf(" 0 退出系统 \n");scanf("%d",&choice);switch(choice){case 1:luru();break;case 2:xianshi(); break;case 3:baocun(); break;case 4:paixu();break;case 5:xiugai();break;case 6:shuxue(); break;case 7:yingyu(); break;case 8:yuwen(); break;zhengzhi(); break; case 0:exit(0);break; }}}。
基于C的企业人事管理系统设计与优化
基于C的企业人事管理系统设计与优化一、引言企业人事管理系统是企业内部管理的重要组成部分,它涉及到员工信息管理、薪资福利管理、考勤管理、绩效评估等多个方面。
为了提高企业的管理效率和员工的工作体验,设计一个高效稳定的企业人事管理系统至关重要。
本文将基于C语言,探讨企业人事管理系统的设计与优化。
二、系统需求分析在设计企业人事管理系统之前,首先需要进行系统需求分析。
根据企业规模和特点,确定系统所需功能模块,包括但不限于员工信息管理、薪资福利管理、考勤管理、绩效评估等。
同时,还需要考虑系统的安全性、稳定性和扩展性等方面的需求。
三、系统设计与架构1. 数据库设计在设计企业人事管理系统时,数据库设计是至关重要的一环。
需要合理设计数据库表结构,确保数据存储的有效性和完整性。
可以采用关系型数据库或者NoSQL数据库来存储员工信息、薪资数据等。
2. 模块设计根据系统需求分析的结果,将系统划分为不同的功能模块,每个模块负责处理特定的任务。
比如员工信息管理模块负责员工档案的录入和查询,薪资福利管理模块负责薪资计算和福利发放等。
3. 界面设计界面设计直接影响用户体验,需要简洁明了、操作便捷。
可以采用C语言中的图形库或者GUI库来实现系统界面,提高用户交互体验。
四、系统实现与优化1. C语言编程实现使用C语言编程实现企业人事管理系统,可以充分发挥C语言在系统编程方面的优势。
通过良好的代码结构和逻辑设计,实现系统功能模块之间的协同工作。
2. 系统优化在实现过程中,需要不断对系统进行优化。
可以通过代码优化、算法优化等手段提高系统的运行效率和响应速度。
同时,还可以引入缓存机制、异步处理等技术来提升系统性能。
五、安全性与稳定性保障1. 数据安全企业人事管理涉及大量敏感信息,如员工个人信息、薪资数据等,需要加强数据加密和权限控制,确保数据安全不被泄露。
2. 系统稳定性为了保障系统稳定运行,需要进行充分测试和异常处理。
及时发现并解决潜在问题,确保系统能够长时间稳定运行。
c语言人事管理系统
一、内容(标题:宋体,粗体,四号字)本程序主要实现了对高校人事的管理。
其不仅可以对人员的新建、添加、删除的基本操作,还可以进行查询编辑、以不同的方式排序等操作。
进行操作时,只要输入相对应的数字或信息即可。
二、上机环境操作系统:win 7\.windows Xp开发工具:VC6.0三、函数调用关系图四、各函数功能说明1. void add(); 新建\添加2. void del(); 删除3. void sear_edit(); 查询编辑4. void scan(); 浏览5. void order(); 排序6. void old_order(); 年龄排序7. void comingtime_order(); 来院时间排序8. void main() 主函数五、算法描述或流程图0.main ( )函数1.add ( )函数2.del ()函数3.sear_edit( )函数4.scan ()函数5.order ( )函数6.exit ()函数六、程序运行效果图0.main ()函数1.添加函数exit ()exit ()退出2.浏览3.查询编辑4.删除5.排序6.删后浏览七、总结一星期的C语言课程设计结束了,在这八天的时间里,我自己独立完成了一个程序从构思结构,到编写代码,然后上机调试运行的过程,感觉自己收获很大。
通过解决一个又一个的问题,熟悉了C语言的应用,对计算机语言应用的理解又深了一层,在老师的指导下,学会了模块设计的方法,用流程图表示算法,掌握了用C语言进行程序设计的能力。
在设计过程中,我理解了对于一个较大的程序,不可能一次编写出一个较大的系统,通常要采取自顶向下的设计思想,先设计主函数,再通过完善一个个的功能模块来完成程序的设计过程,在设计过程中要充分理解整个程序的设计思路,采用逐步细化的方式来完成整个程序。
使各个模块能够很好地兼容在一起,并进行运行测试,程序能够无错误的运行。
之后,优化界面和显示,使人能够轻松愉悦地操作。
C语言下的企业级人事管理系统设计与开发
C语言下的企业级人事管理系统设计与开发一、引言在当今信息化时代,企业管理系统已经成为企业管理的重要工具之一。
人事管理系统作为其中的一个重要组成部分,对于企业的人力资源管理起着至关重要的作用。
本文将介绍如何利用C语言设计和开发一个企业级人事管理系统,以满足企业对于人力资源管理的需求。
二、系统需求分析在设计和开发企业级人事管理系统之前,首先需要进行系统需求分析。
根据企业的实际需求,人事管理系统应该包括员工信息管理、薪资管理、考勤管理、绩效考核等功能模块。
同时,系统需要具备良好的用户界面和操作体验,方便企业管理员和员工进行操作。
三、系统设计1. 数据库设计在设计人事管理系统时,需要首先设计数据库结构。
数据库中应该包括员工信息表、薪资信息表、考勤信息表、绩效考核表等。
通过合理的数据库设计,可以提高系统的数据存储效率和查询速度。
2. 模块设计根据系统需求分析,可以将人事管理系统划分为多个功能模块,如员工信息管理模块、薪资管理模块、考勤管理模块、绩效考核模块等。
每个模块应该具有清晰的功能界面和相应的操作流程。
3. 界面设计良好的界面设计是提高用户体验的关键。
在设计界面时,应该注重界面布局的合理性和操作按钮的易用性。
同时,界面风格应该符合企业的整体风格,提升企业形象。
四、系统开发1. 环境搭建在进行系统开发之前,需要搭建相应的开发环境。
可以选择合适的集成开发环境(IDE),如Dev-C++、Code::Blocks等。
同时,需要安装相应的数据库管理系统(DBMS),如MySQL、SQLite等。
2. 编码实现根据系统设计所确定的功能模块和界面设计,开始进行编码实现。
在编码过程中,需要遵循良好的编程规范和代码风格,确保代码的可读性和可维护性。
3. 调试测试完成编码后,需要进行系统调试和测试。
通过测试可以发现并解决程序中存在的bug和逻辑错误,确保系统的稳定性和可靠性。
五、系统部署与维护1. 系统部署在完成开发和测试后,可以将人事管理系统部署到企业内部服务器或云服务器上。
利用C实现的人力资源管理系统开发与改进
利用C实现的人力资源管理系统开发与改进人力资源管理系统是企业管理中不可或缺的一部分,它涵盖了员工信息管理、招聘流程、绩效考核、薪酬福利等多个方面。
利用C语言实现人力资源管理系统,可以为企业提供高效、稳定的管理工具。
本文将探讨利用C实现的人力资源管理系统的开发过程以及如何进行改进,以满足不断变化的企业需求。
1. 人力资源管理系统的基本功能人力资源管理系统的基本功能包括但不限于员工信息管理、招聘管理、绩效考核、薪酬福利管理等。
在利用C语言开发人力资源管理系统时,首先需要明确这些基本功能,并设计相应的数据结构和算法来实现这些功能。
1.1 员工信息管理员工信息管理是人力资源管理系统中最基础也是最重要的功能之一。
通过该功能,可以对员工的基本信息进行录入、查询、修改和删除。
在C语言中,可以利用结构体来存储员工信息,使用链表或数组来组织员工数据,实现对员工信息的增删改查操作。
1.2 招聘管理招聘管理模块主要包括发布招聘信息、简历筛选、面试安排等功能。
在C语言中,可以设计相应的函数来处理招聘流程中的各个环节,实现招聘需求与候选人信息的匹配。
1.3 绩效考核绩效考核是评估员工工作表现的重要手段,通过绩效考核可以激励员工提高工作效率。
在C语言中,可以设计评分标准和算法来进行绩效评定,并生成相应的报表进行展示和分析。
1.4 薪酬福利管理薪酬福利管理涉及到员工薪资结构、福利待遇等方面。
在C语言中,可以设计算法来计算员工薪资,并实现福利发放等功能,保障员工权益。
2. 利用C语言开发人力资源管理系统的优势相比其他编程语言,为什么选择C语言来开发人力资源管理系统呢?C语言有着以下几点优势:高效性:C语言是一种高效的编程语言,能够快速处理大量数据和复杂逻辑。
跨平台性:C语言具有较好的跨平台性,可以在不同操作系统上运行。
灵活性:C语言具有较高的灵活性,可以根据需求进行自定义开发。
稳定性:C语言编写的程序通常稳定性较高,不易出现崩溃和错误。
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语言编写的人事管理系统的设计思路和实现方法。
人事管理系统是组织管理中的重要系统之一,对于提高工作效率和管理人力资源具有重要意义。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
人事管理系统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;。