C语言课设之人事管理系统

合集下载

人事管理系统c课程设计

人事管理系统c课程设计

人事管理系统c 课程设计一、课程目标知识目标:1. 让学生理解人事管理系统的基本概念,掌握其功能模块和操作流程。

2. 使学生掌握数据库管理的基本方法,能够运用SQL语句进行数据查询、插入、修改和删除。

3. 帮助学生了解人力资源管理的基本原则,结合实际案例进行分析。

技能目标:1. 培养学生运用C语言编写简单的人事管理系统功能模块的能力。

2. 培养学生具备数据库设计和操作的能力,能够根据实际需求创建数据库表、编写SQL语句。

3. 提高学生的团队协作能力,通过分组讨论、协作完成项目任务。

情感态度价值观目标:1. 培养学生对待人事管理系统开发的认真态度,注重程序规范和代码质量。

2. 培养学生对人力资源管理的兴趣,激发学生探讨实际问题的热情。

3. 引导学生树立正确的职业观,认识到人事管理系统在企业管理中的重要作用。

课程性质分析:本课程为实践性较强的课程,旨在让学生在掌握基本理论知识的基础上,通过实际操作,提高解决实际问题的能力。

学生特点分析:学生具备一定的C语言基础和数据库知识,但对人事管理系统的整体架构和实际应用尚不了解,需要通过本课程的学习,逐步提高。

教学要求:1. 结合实际案例,注重理论知识与实际操作相结合,提高学生的实践能力。

2. 采用任务驱动教学法,激发学生的学习兴趣,引导学生主动探索。

3. 强化团队合作,培养学生的沟通能力和协作精神。

二、教学内容1. 人事管理系统概述- 了解人事管理系统的基本概念、发展历程和实际应用场景。

- 分析人事管理系统的功能模块和业务流程。

2. 数据库基础- 复习数据库的基本概念,如表、字段、记录等。

- 掌握SQL语句的基本操作,包括数据查询、插入、修改和删除。

3. C语言编程实践- 运用C语言编写人事管理系统中的功能模块,如员工信息录入、查询、修改等。

- 学习如何使用C语言调用数据库接口,实现数据存取。

4. 人力资源管理基础知识- 了解人力资源管理的基本原则、方法和技巧。

人事管理c语言课程设计

人事管理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语言设计的人事管理系统源码

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语言人事管理系统设计

C语言人事管理系统设计

设计题目:人事管理系统设计目录:1.设计任务---------------------------------------------------------------------------------------------12.正文-----------------------------------------------------------------------------------------------------------2(1).系统模块图------------------------------------------------------------------------------------------3 (2).模块说明---------------------------------------------------------------------------------------------3 (3).用户使用说明---------------------------------------------------------------------------------------3 (4).测试结果---------------------------------------------------------------------------------------------33.设计小结--------------------------------------------------------------------------------------------------94.附录-----------------------------------------------------------------------------------------------------------10一.设计任务1、需求分析:人事档案信息采用文件存储,因而要提供文件的输入输出操作;根据学院人事的变动情况,添加删除记录,因而要提供文件的添加删除操作;根据编号和姓名进项查询,所以要提供文件的查找操作;高级编辑功能,就是提供文件的修改操作;统计功能要提供统计操作;排序功能要提供用排序算法对文件记录的排序;另外还要提供键盘式选择菜单以实现功能选择。

C#课程设计简单人事管理系统的设计与实现

C#课程设计简单人事管理系统的设计与实现

工具:NUnit、MSTest等
目的:验证代码逻辑的正确性
方法:编写测试用例,执行测试
结果:输出测试报告,分析测试结果
集成测试
目的:验证系统各模块之间的接口和交互是否正常
测试内容:功能测试、性能测试、安全性测试、兼容性测试等
测试工具:JUnit、NUnit、Selenium等
测试方法:黑盒测试、白盒测试、灰盒测试
数据库设计:使用SQL Server数据库,设计人员调动表、调动申请表、调动审批表等
用户界面设计:使用Windows Forms设计用户界面,实现人员调动的管理功能
工资信息管理的实现
工资信息管理模块的功能:包括工资信息的录入、修改、查询、删除等操作
工资信息的数据结构:包括员工编号、姓名、职位、基本工资、奖金、津贴、扣款等字段
功能模块:清晰划分,易于查找
交互体验:流畅自然,易于使用
逻辑设计
界面设计:使用C#的Windows Forms进行界面设计,包括登录界面、主界面、员工信息界面等
系统功能:包括员工信息管理、考勤管理、薪资管理等
数据库设计:使用SQL Server数据库,包括员工表、考勤表、薪资表等
业务逻辑:使用C#的if-else、switch-case等逻辑语句进行业务处理,包括员工信息的增删改查、考勤信息的记录和统计、薪资的计算和发放等
员工信息导出:将员工信息导出为Excel、PDF等格式的文件
员工信息备份:定期备份员工信息,防止数据丢失
部门信息管理的实现
部门信息管理模块的功能:添加、修改、删除、查询部门信息
实现方式:使用C#语言编写代码,使用数据库存储部门信息
数据库设计:创建部门表,包含部门ID、部门名称、部门负责人等信息

人事管理系统c课程设计

人事管理系统c课程设计

人事管理系统c 课程设计一、课程目标知识目标:1. 让学生理解人事管理系统的基本概念和功能,掌握系统设计的基本原理;2. 使学生掌握数据库管理、数据查询和更新等基本操作;3. 帮助学生了解我国企事业单位人事管理的相关规定和流程。

技能目标:1. 培养学生运用所学知识设计简单的人事管理系统,具备实际操作能力;2. 提高学生分析问题、解决问题的能力,能够根据实际需求进行系统优化;3. 培养学生团队协作和沟通能力,能在项目中进行有效分工与合作。

情感态度价值观目标:1. 培养学生热爱祖国、热爱人民,树立为人民服务的意识;2. 培养学生具备责任心和敬业精神,养成良好的工作态度;3. 引导学生认识到信息技术在企事业单位人事管理中的重要作用,激发学生深入学习信息技术的兴趣。

课程性质分析:本课程为人事管理系统设计,结合信息技术和企事业单位实际需求,具有较强的实践性和应用性。

学生特点分析:学生为高年级学生,具备一定的信息技术基础和编程能力,对实际应用有较高的兴趣。

教学要求:1. 结合课本内容,注重理论与实践相结合,提高学生的实际操作能力;2. 重视团队协作,培养学生的沟通能力和协作精神;3. 关注学生情感态度价值观的培养,使学生在学习过程中形成正确的价值观。

二、教学内容1. 人事管理系统概述- 了解人事管理系统的定义、功能和发展历程;- 掌握人事管理系统在企事业单位中的应用。

2. 数据库管理基础- 学习数据库的基本概念、设计原则和SQL语言;- 掌握人事管理系统数据库的建立、维护和查询方法。

3. 人事管理系统模块设计- 分析人事管理系统的主要模块及其功能;- 学习系统设计的基本流程和方法,包括需求分析、模块划分、界面设计等。

4. 系统实现与测试- 掌握人事管理系统的编程实现,运用所学编程语言进行开发;- 学习系统测试方法,确保系统稳定可靠。

5. 企事业单位人事管理规范- 了解我国企事业单位人事管理的相关规定和流程;- 掌握人事管理系统在实际应用中的注意事项。

人事管理系统c课程设计

人事管理系统c课程设计

人事管理系统c 课程设计一、教学目标本课程旨在通过学习人事管理系统C的相关知识,使学生掌握以下知识目标:1.理解人事管理系统C的基本概念和组成部分;2.掌握人事管理系统C的主要功能和操作方法;3.了解人事管理系统C在现代企业管理中的应用和意义。

同时,通过实践操作和案例分析,培养学生以下技能目标:1.能够熟练操作人事管理系统C进行日常的人事管理;2.能够根据企业实际情况,进行人事管理系统的配置和优化;3.能够运用人事管理系统C进行人力资源数据的分析和决策。

在教学过程中,注重培养学生的情感态度和价值观,使学生:1.认识到人事管理系统C在提高企业效率和降低成本方面的重要性;2.培养学生对新技术的敏感度和积极学习的态度;3.培养学生团队合作和解决问题的能力。

二、教学内容本课程的教学内容主要包括以下几个部分:1.人事管理系统C的基本概念和组成部分;2.人事管理系统C的主要功能和操作方法;3.人事管理系统C在现代企业管理中的应用和意义;4.人事管理系统C的配置和优化方法;5.人事管理系统C的数据分析和决策应用。

教学过程中,将结合具体教材和案例,进行详细的讲解和操作演示,确保学生能够全面掌握相关知识。

三、教学方法为了提高教学效果和学生的参与度,本课程将采用多种教学方法:1.讲授法:通过讲解和案例分析,使学生掌握人事管理系统C的基本概念和主要功能;2.讨论法:通过小组讨论和分享,培养学生的思考和解决问题的能力;3.实验法:通过实际操作和模拟实验,使学生熟练掌握人事管理系统C的操作方法;4.案例分析法:通过分析真实案例,使学生了解人事管理系统C在实际企业管理中的应用。

四、教学资源为了支持本课程的教学,将准备以下教学资源:1.教材:选择适合的教材,为学生提供全面的知识体系;2.参考书:提供相关的参考书籍,丰富学生的知识视野;3.多媒体资料:制作教学PPT和视频资料,提高学生的学习兴趣;4.实验设备:准备计算机和相关设备,为学生提供实际操作的机会。

人事档案管理系统_c语言

人事档案管理系统_c语言

《C语言程序设计》课程设计人事档案管理系统指导教师:李耀成设计者:刘玉成、孙涛、马新涌、郭恒阳专业班级:机电081设计时间:2009年11月人事档案管理系统一、需求分析电脑已经深入到我们日常工作和生活的方方面面,比如文字处理、信息管理、辅助设计、图形图像处理、教育培训以及游戏娱乐等。

Windows系统的推出使电脑从高雅的学术殿堂走入了寻常百姓家,各行各业的人们无须经过特别的训练就能够使用电脑完成许许多多复杂的工作。

然而,虽然现在世界上已经充满了多如牛毛的各种软件,但它们依然不能满足用户的各种特殊需要,人们还不得不开发适合自己特殊需求的软件。

随着企事业单位的发展,人员会越来越多,少则几十人、多则上万人。

例如一个企业分很多部门,每个部门又分为许多科或室等,而其下又分为各级领导和员工。

用笔和纸传统的手工管理档案,这中管理方式存在着不易更新、不易存放、不安全、容易丢失、难以备份等重大缺陷,管理起来效率低下而且很可能造成管理上的混乱。

而自己建立简单的电子文档对信息管理进行管理虽然克服了以上的缺点,但查询效率较低,特别是当数据量十分庞大时,劣势尤其明显。

因此开发一个既可以存储信息,又可以进行更新、查询、管理等功能,同时价格又能为广大消费者接受的多功能电子人事信息管理系统就显得十分必要。

本实验的读者对象为研发中心领导和主管技术人员以及项目设计和开发人员。

二、系统框图三、任务分工高玉峰负责:输入模块,显示模块,删除模块。

祝令瑞负责:存储模块查询模块、读取模块统计模块、退出模块。

四、系统的软硬件环境1、硬件环境: CPU 2.4GHz 256M内存 80G硬盘。

2、软件环境:turboc2.0 UCDOS5.0 操作系统 WindowsXp。

五、设计分析人事档案管理系统功能:程序设计一般由两部分组成:算法和数据结构,合理地选择和实现一个数据结构和处理这些数据结构具有同样的重要性。

在人事管理过程中,由于预计记录对于一个单位的学生数或人事数来说太大,操作除了能够增加、删除、保存等外,更多的情况是查询,且能够实现快速查询。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C语言课程设计——人事管理系统题目要求:人事管理管理系统[要求]某高校主要人员有:在职人员(行政人员、教师、一般员工)、退休人员与临时工。

现在,需要存储这些人员得人事档案信息:编号、姓名、性别、年龄、职务、职称、政治面貌、最高学历、任职时间、来院时间、人员类别。

其中,人员编号唯一,不能重复。

(1)添加删除功能:能根据学院人事得变动情况,添加删除记录;(2)查询功能:能根据编号与姓名进行查询;(3)编辑功能(高级):根据查询对相应得记录进行修改,并存储;(4)统计功能:能根据多种参数进行人员得统计(在职人数、党员人数、女工人数、高学历高职称人数(硕士学位以上或者副教授以上)),统计要求同时显示被统计者得信息;(5)排序功能:按照年龄、来院时间进行排序;(6)保存功能:能对输入得数据进行相应得存储;一、需求分析:根据题目要求,职工信息就是存放在文件中得,所以应该提供相应得文件得输入输出得功能,在程序中应该有添加删除,查询,编辑,统计,排序,保存等程序实现相应得操作,另外菜单式得选择方式选择程序得功能也就是必须需得。

另外程序中要求存储得模块,采用得方式均为将原文件中得所有数据读入内存,在内存中处理之后以覆盖得方式写入文件存贮,这样得方法在一定程度上提高了对数据处理得灵活性,较容易理解,但存在处理中遇到以外情况而丢失数据得风险,另外当文件中得数据量很大时,这种方法也存在一定得难度,在本程序中将N定为100,基本上能满足要求;二、总体设计:根据以上需求分析,将程序分成以下几个模块:1、新建数据文件(build new data);2、添加记录(add data);3、删除记录(delete data);4、按工号搜索(search bynumber);5、按姓名搜索(search by name);6、浏览全部数据(browseall);7、修改数据(modify thedata);8、排序功能(orderthe volume);9、统计功能(dataa volume);系统功能模块图如下:三、详细设计;1、主函数:〈1〉需求分析:为使系统执行完每部分功能后能够方便得回到系统主界面,main()函数设计得较简单,只包含一个menu()函数,其余得全部功能都通过menu()函数调用来实现,并通过menu()函数得递归调用实现返回主界面得功能。

main()函数定义如下:main(){menu();}而menu()定义如下:〈2〉流程图:menu(){int n,w1;do{printf("\n\t\t\t\tMENU\n");printf("\t\t0\tbuildnew data\n\n");printf("\t\t1\tdelete data\n\n");printf("\t\t2\tadd data\n\n");printf("\t\t3\tsearch by number\n\n");printf("\t\t4\tsearchby name\n\n");printf("\t\t5\tbrowseall\n\n");printf("\t\t6\tmodifythe data\n\n");printf("\t\t7\torderthe volume\n\n");printf("\t\t8\tdata a volume\n\n");printf("\t\t9\texit\n\n");printf("\tpleasechoice and enter a number []\b\b");scanf("%d",&n);if(n<0||n>8){w1=1;getchar();}else w1=0;}while(w1==1);switch(n){case 0:build();break; /*********调用新建数据文件函数*******/case 1:del();break;/*********调用删除数据函数***********/ case 2:add();break; /*********调用添加数据函数***********/case3:snum();break; /*********调用按工号搜索函数*********/case 4:sname();break; /*********调用按姓名搜索函数*********/case 5:browse();break;/*********调用浏览数据函数************/case 6:modify();break; /*********调用修改数据函数************/case7:order();break;/*********调用排序函数函数************/ case 8:data();break;/*********调用统计函数****************/case9:exit(0); /*********退出*************************/default:{printf("inputerror!! please input a number between 0and 8");menu();} }}2、各功能模块设计:(1)、新建数据文件模块:<1>、数据结构;瞧各个数据信息,编号、姓名、性别、年龄、职务、职称、政治面貌、最高学历、任职时间、来院时间、人员类别,均为字符串类型,在文件中以文本形式存放,每条记录对应一个人员得信息,可以方便信息得管理;而数据读进内存中时,可以以结构体得形式,每一个结构体包含了一个人员得全部信息,多得人员得信息组成了一个结构体数组。

定义如下:struct worker{char num[11];char name[10];char sex[2];char age[3];charzhiwu[15];char zhicheng[15];char zhengzhi[15];char xueli[15];char renzhisj[8];char laiyansj[8];char leibie[15];}wk[N],s;其中N就是宏定义形式定义得字符,临时定义为100,wk[N],为存放人员信息得结构体数组,而S为临时得结构体,用来保存信息处理过程中得临时数据。

〈2〉、流程图如下:〈3〉、程序:build(){inti,m,k,p;FILE *fp;if((fp=fopen("worker00、txt","w"))==NULL){printf("can not build file\n");printf_back();}printf("how many workersdo youwant toinput(0-%d)?:",N);scanf("%d",&m);k=m;for(i=0;i<k;i++){printf("\nInput%dthworker record、\n",i+1);input(i);}for(p=0;p<=i;p++)if((fprintf(fp,"%s\t%s\t%1s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",wk[p]、num,wk[p]、name,wk[p]、sex,wk[p]、age,wk[p]、zhiwu,wk[p]、ﻭzhicheng,wk[p]、zhengzhi,wk[p]、xueli,wk[p]、renzhisj,wk[p]、laiyansj,wk[p]、leibie))!=1)printf("cannot write the data\n\n");fclose(fp);printf_back();}(2)、追加模块:〈1〉[需求分析]该模块得功能就是拥护需要增加新得员工记录,从键盘输入并逐条写入到原来得文件中去,其中输入号码就是要防止号码重复,重复时报告错误,重新输入。

为方便用户管理与查瞧,该模块采用得方式就是用先把原来文件中得数据读入内存,保存在内存中,然后在内存中得数据后面增加新得数据,操作完成后用写得方式打开文件,用覆盖得方式写入。

〈2〉流程图:〈3〉程序:add(){int i,m,n,k,p;FILE *fp;n=load();if(n==-1)menu();printf("how many workers doyou want to add(0-%d)?:[]\b\b\b",N-n);scanf("%d",&m);k=m+n;for(i=n+1;i<=k;i++){printf("\nInput%dth worker record、\n",i-n+1);input(i);}if((fp=fopen("worker00、txt","w"))==NULL)/*******将数据保存到文件********/{printf("can notopen file\n");printf_back();}for(p=0;p<k;p++)fprintf(fp,"%s\t%s\t%1s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",wk[p]、nu m,wk[p]、name,wk[p]、sex,wk[p]、age,wk[p]、zhiwu,wk[p]、zhicheng,wk[p]、zhengzhi,wk[p]、xueli,wk[p]、renzhisj,wk[p]、laiyansj,wk[p]、leibie);fclose(fp);printf_back();}(3)修改模块:〈1〉[需求分析:]该模块得功能就是显示所有信息,考虑到记录较多,采用分屏显示,显示完所有得记录后,由用户输入需要修改得人员得号码,查找成功后,显示查找结果,并询问拥护修改人员得哪部分记录,根据用户选择修改相应得信息,然后保存修改后得结果;〈2〉流程图〈3〉程序;modify(){int i,n,k,p,w0=1,w1,w2=0;FILE*fp;n=load();do{k=-1;printf_face();for(i=0;i<=n;i++){if((i!=0)&&(i%10==0)){printf("\n\nRemember the No、which need modify、\npress any key tocontinue、、、");getch();puts("\n\n");}printf_one(i);}do{printf("\n\nEnterNO、that youwanttomodify!\n\t\tNO、[]\b\b");scanf("%s",s、num);for(i=0;i<n;i++)if(strcmp(s、num,wk[i]、num)==0);{k=i;s=wk[i];}if(k==-1)printf("\n\nNO exit !please again");}while(k==-1);printf_face();printf_one(k);w1=modify_data(k);if(w1==1){printf("\nsuccessful!!\n\nDo yuowant to modify another?\n\n\t\t1\tYes\n\n\t\t2\tBack with save\n\t[]\b\b");scanf("%d",&w0);w2=1;}else{w0=0;if(w2==1)ﻩwk[k]=s;}wk[k]=s;if(w0!=1&&w2==1){fp=fopen("worker00、txt","w");{for(p=0;p<=n;p++)fprintf(fp,"%s\t%s\t%1s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",wk[p]、num,wk[p]、name,wk[p]、sex,wk[p]、age,wk[p]、zhiwu,wk[p]、ﻭzhicheng,wk[p]、zhengzhi,wk[p]、xueli,wk[p]、renzhisj,wk[p]、laiyansj,wk[p]、leibie);}fclose(fp);}}while(w0==1);menu();}修改数据函数如下:modify_data(int i){intc,w1;do{printf("\nmodify by=>\n\n\t\t1\tNO、\n\t\t2\tname\n\t\t3\tsex\n\t\t4\tage\n\t\t5\tzhiwu\n\t\t6\tzhicheng\n\t\t7\tzhengzhimianmao\n\t\t8\txueli\n\t\t9\trenzhishijian\n\t\t10\tlaiyu anshijian\n\t\t11\trenyuanleibie\n\n\t\t\t[]\b\b");scanf("%d",&c);if(c>11||c<1)printf("choice error!please choose again!");getchar();}while(c>11||c<1);do{switch(c){case 1:printf("theold number is%s,",wk[i]、num);input_num(i,i-1);break; case 2:printf("theold nameis%s,enter the new name:",wk[i]、name);sc anf("%s",wk[i]、name);break;case3:printf("theold sex is%s,enterthe new sex:",wk[i]、sex);scanf("%1s",wk[i]、sex);break;case 4:printf("the oldage is%s,enter the new age:",wk[i]、age);scanf("%s",wk[i]、age);break;case 5:printf("the old zhiwu is%s,enterthe new zhiwu:",wk[i]、zhiwu);sc anf("%s",wk[i]、zhiwu);break;case 6:printf("the old zhicheng is %s,enter thenew zhicheng:",wk[i]、zhich eng);scanf("%s",wk[i]、zhicheng);break;case 7:printf("the old zhengzhimianmao is %s,enter the newzhengzhimiainmao:",wk[i]、zhengzhi);scanf("%s",wkﻭ[i]、zhengzhi);break;case 8:printf("the old zuigaoxueli is %s,enterthe new zuigaoxueli:",wk[i]、xueli);scanf("%s",wk[i]、xueli);break;case9:printf("the old renzhishijian is%s,enter thenew renzhishijian:",wk[i]、renzhisj);scanf("%s",wk[i]、renzhisj);break;case 10:printf("the oldlaiyuanshijian is %s,enter thenew laiyuansh ijian:",wk[i]、laiyansj);scanf("%s",wk[i]、laiyansj);break;case11:printf("the old renyuanleibie is %s,enterthe new renyuanleibie:",wk[i]、leibie);scanf("%s",wk[i]、leibie);break;}printf("now:\n\n");printf_face();printf_one(i);printf("\nare you sure?\n\n\t\t1\tsure\n\t\t2\tNo and remodify\n\t\t3\tback withoutsavein thistime\n\t\t\t[]\b\b\b");scanf("%d",&w1);}while(w1==2);return(w1);}(4)删除模块:〈1〉[需求分析]:该模块得运行方式与修改模块类似,首先分屏显示所有人员得记录,显示完所有得记录后,由用户输入要删除得人员得号码,根据号码查找相应得记录并将结果显示出来,经用户确认后删除,删除得方法就是将文件中得数据读入内存,赋给相应得结构体,并将结构体数组中将删除得后面得数据赋给前一个结构体,然后将相应数据写入文件并保存;〈2〉流程图:Y〈3〉程序;del(){char c;int i,j,n,k,m,w0=1,w1=0,w2=0;FILE*fpt;n=load();do{k=-1;printf_face();for(i=0;i<=n;i++){if((i!=0)&&(i%10==0)){printf("\n\nRememberthe No、which need delete、\npress any keytocontinue、、、");getch();printf("\n\n");}printf_one(i);}do{printf("\n\nEnter NO、that youwantto delete!\n\t\tNO、[ ]\b\b");scanf("%s",s、num);for(i=0;i<=n;i++)if(strcmp(s、num,wk[i]、num)==0);{k=i;s=wk[i];}if(k==-1)printf("\n\nNO exit ! please again");}while(k==-1);printf_face();printf_one(k);printf("are you sure to deletethedata? \t[y/n]\n\t\t[]\b\b");scanf("%1s",&c);if(c=='y'){for(j=i;j<=n;j++)wk[j]=wk[j+1];w1=1;}else menu();if(w1==1){printf("\nsuccessful!!\n\nDoyuo wantto delete another?\n\n\t\t1\tYes\n\n\t\t2\tBack with save\n\t[]\b\b");scanf("%d",&w0);w2=1;}if(w0!=1&&w2==1){fpt=fopen("worker00、txt","w");for(m=0;m<n;m++)fprintf(fpt,"%s\t%s\t%1s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",wk[m]、num,wk[m]、name,wk[m]、sex,wk[m]、age,wk[m]、zhiwu,wk[m]、zhicheng,wk[m]、zhengzhi,wk[m]、xueli,wk[m]、renzhisj,wk[m]、laiyansj,wk[m]、leibie);fclose(fpt);} }while(w0==1);menu();}(5)、按号码搜索:〈1〉[需求分析]:该模块得功能就是按照输入得人员得号码查找对应得记录,并将其显示,查找成功以后,增加删除与修改等功能,其中删除与修改功能可以通过调用相应得函数来实现。

相关文档
最新文档