收藏 分享(赏)

人力资源-2022C语言课程设计人员管理系统.docx

上传人:Koalabear 文档编号:16927992 上传时间:2023-10-02 格式:DOCX 页数:41 大小:85.27KB
下载 相关 举报
人力资源-2022C语言课程设计人员管理系统.docx_第1页
第1页 / 共41页
人力资源-2022C语言课程设计人员管理系统.docx_第2页
第2页 / 共41页
人力资源-2022C语言课程设计人员管理系统.docx_第3页
第3页 / 共41页
人力资源-2022C语言课程设计人员管理系统.docx_第4页
第4页 / 共41页
人力资源-2022C语言课程设计人员管理系统.docx_第5页
第5页 / 共41页
亲,该文档总共41页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、内蒙古科技大学课程设计论文内蒙古科技大学本科生课程设计说明书题 目:C语言课程设计 人员管理系统学生姓名: 学 号:专 业: 班 级: 指导教师: 日 期: 24内蒙古科技大学课程设计任务书课程名称C语言课程设计设计题目人员管理系统指导教师时间一、教学要求1. 巩固和加深学生对C语言课程的基本知识的理解和掌握2. 掌握C语言编程和程序调试的基本技能3. 利用C语言进行基本的软件设计4. 掌握书写程序设计说明文档的能力5. 提高运用C语言解决实际问题的能力二、设计资料及参数每个学生在教师提供的课程设计题目中任意选择一题,独立完成,题目选定后不可更换。人员管理系统现有一批人员的数椐,要求输入计算机

2、并存放在内存中,然后增加若干个新人员的记录,并可输出人员清单,实现文件存盘和读入文件进行修改的功能。人员的基本信息包括姓名,性别,年龄,身份证号和简历(80个字符以内)。要求设计菜单来调用其各功能模块:v 新建文件、打开文件v 输入记录、输出记录v 查询记录(至少具有两种查询方式,例如以姓名查询和以身份证号查询)v 修改、插入和删除记录v 保存文件、退出三、设计要求及成果1. 分析课程设计题目的功能需求(可选用数组或链表实现,可多人(最多3人)协作完成一个题目)2. 写出详细设计说明(至少包括功能实现分析和模块流程图)3. 编写程序代码,调试程序使其能正确运行(代码书写要规范,标示符要见名知意

3、,要有必要的注释,每人至少500行代码,不包括注释和花括号)4. 设计完成的软件要便于操作和使用5. 设计完成后提交课程设计报告(请严格按照模板进行排版)四、进度安排第一天 选择课程设计题目,分析课题的要求第二天 编程第三天 编程及调试第四天 写课程设计报告第五天 提交课程设计报告(打印稿及电子稿)五、评分标准1. 根据平时上机考勤、表现和进度,教师将每天点名和检查2. 根据课程设计完成情况,必须有可运行的软件。3. 根据课程设计报告的质量,如有雷同,则所有雷同的所有人均判为不及格。六、建议参考资料1C语言程序设计,谭浩强,清华大学出版社2C语言程序设计课程设计,刘振安,机械工业出版社目 录内

4、蒙古科技大学课程设计任务书II目 录III第一章 需求分析41.1引言41.2任务概述41.3数据描述41.4功能需求41.5任务计划5第二章概要设计62.1总体设计62.2数据类型设计(或数据结构设计)62.3接口设计62.4运行界面设计7第三章详细设计113.1输入模块设计113.2输出模块设计123.3查找模块设计133.4修改模块设计153.5删除模块设计183.6保存及读取模块设计21第四章测试分析224.1测试程序执行情况224.2出现的问题和解决的方法22第五章用户手册(可选)235.1使用说明235.2运行说明23第六章课程设计总结24附录:程序代码25参考文献40致谢40第一

5、章 需求分析1.1 引言将人员信息进行统一的管理,方便进行查找,并进行修改。一个简易的人员信息管理系统可以解决一些简单的问题1.2 任务概述1.能查看所有人员信息2.能增加人员信息,增加的简历字数不大于80字,性别为男女、身份证号不多于18位3.能查找人员4.能修改人员信息5.能删除人员信息6.能保存人员信息7.能退出1.3 数据描述char name60;char sex2;int age;char IDnumber18;char resume80;人员信息用结构体记录,包括姓名(字符数组)、性别(字符数组)、年龄(整形)、身份证号(字符数组)、简历(字符数组)1.4 功能需求1.能查看所有

6、人员信息2.能增加人员信息3.能查找人员4.能修改人员信息5.能删除人员信息6.能保存人员信息7.能退出1.5 任务计划1.先编出主函数2.各各功能分成一个一个的子函数进行编辑3.最后进行整合第二章 概要设计2.1 总体设计1.确定界面,使用户可选择操作项目(1)查看人员信息、(2)增加人员信息、(3)查找人员、(4)修改人员信息、(5)删除记录、(6)保存数据、(7)关于作者、(8)退出系统)2.查看功能:输出已经保存的数据3.增加人员信息功能:使用结构体,要求用户输入姓名、性别、年龄、身份证号、个人简历,并写入文件4. 查找人员功能:使用户输入姓名、身份证号其中一项可以进行查找5. 修改人

7、员信息功能:使用户输入姓名、身份证号其中一项可以进行查找,并进行修改6.删除记录功能: 使用户输入姓名、身份证号其中一项可以进行查找,并进行删除7.保存数据功能:将增加的数据保存到文档中8. 关于作者功能:输出作者信息9.退出系统:将文件关闭,退出程序2.2 数据类型设计(或数据结构设计)char name60;char sex2;int age;char IDnumber18;char resume80;人员信息用结构体记录,包括姓名(字符数组)、性别(字符数组)、年龄(整形)、身份证号(字符数组)、简历(字符数组)2.3 接口设计 函数名函数格式函数功能fh()void fh();输出字符

8、串:=按Enter键返回主菜单shouye()void shouye();输出首页select()void select();查看人员信息add()void add();增加人员信息chazhao()void chazhao();查找人员findname()void findname();通过名字查找人员信息findIDnumber()void findIDnumber();通过身份证号查找人员信息change()void change();更改人员信息changebyname()void changebyname();通过查找名字更改人员信息changebyIDnumber()void ch

9、angebyIDnumber();通过查找身份证号更改人员信息del()void del();删除人员信息delbyname()void delbyname();通过查找名字删除人员信息delbyIDnumber()void delbyIDnumber();通过查找身份证号删除人员信息save()void save();保存数据writer()void writer();编者信息dq(struct student st)int dq(struct student st);读取数据bc(struct student *st)void bc(struct student *st);保存数据2.4

10、运行界面设计1.初始界面2.查看界面3.增加界面4.查找界面5.修改界面6.删除界面7.保存界面8.作者界面9.退出界面第三章 详细设计3.1 输入模块设计void add()/增加人员信息 int numberTemp=0;int i=0;struct student temp;printf(请输入要增加的人员信息数量:);scanf(%d,&numberTemp);for(i=0;inumberTemp;i+) printf(输入第%d个人员信息n,i+1); printf(姓名:); scanf(%s,temp.name); printf(性别:); scanf(%s,temp.sex)

11、; printf(年龄:); scanf(%d,&temp.age); printf(身份证号:); scanf(%s,temp.IDnumber); printf(简历:); scanf(%s,temp.resume); stNumber+=temp; /将刚添加的写入到数组 bc(&temp); /将刚添加的写入到文件 printf(添加成功n);3.2 输出模块设计void select() int i=0;printf(以下是全部人员信息n);printf(t姓名t性别t年龄t身份证号t简历n);for(i=0;iNumber;i+) printf(t%st%st%dt%st%sn,s

12、ti.name,sti.sex,sti.age,sti.IDnumber,sti.resume);3.3 查找模块设计void chazhao()/查找人员 int n=0;printf(1 按姓名查找n);printf(2 按身份证号查找n);scanf(%d,&n); switch(n) case 1: findname();break;case 2: findIDnumber();break;default: printf(输入有误,结束!n);break;void findname()/按姓名查找 char name7;int i=0;printf(请输入要查找的人员姓名:);scan

13、f(%s,name);system(cls);printf(t姓名t性别t年龄t身份证号t简历n);for (i=0;iNumber;i+) if (strcmp(name,sti.name)=0) printf(t%st%st%dt%st%sn,sti.name,sti.sex,sti.age,sti.IDnumber,sti.resume); void findIDnumber()/按身份证号查找 char IDnumber18;int i=0;printf(请输入要查找人员的身份证号:);scanf(%s,IDnumber);system(cls);printf(t姓名t性别t年龄t身份

14、证号t简历n);for (i=0;iNumber;i+) if (strcmp(IDnumber,sti.IDnumber)=0) printf(t%st%st%dt%st%sn,sti.name,sti.sex,sti.age,sti.IDnumber,sti.resume);3.4 修改模块设计void change() int way=0;printf(请选择修改查找方式n);printf(1 通过姓名查找修改n);printf(2 通过身份证号查找修改n);scanf(%d,&way);switch(way)case 1: changebyname();break;case 2: ch

15、angebyIDnumber();break; default: printf(输入有误,结束!n);break;void changebyname()FILE *fp=NULL;char name60;int i=0;int changeIndex=0; int index=0;printf(请输入要修改的人员姓名:n);scanf(%s,name);for (i=0;iNumber;i+)if (strcmp(name,sti.name)=0) changeIndex=i+1; break;if(!changeIndex) return; changeIndex-;printf(t姓名t性

16、别t年龄t身份证号t简历n);printf(t%st%st%dt%st%sn,stchangeIndex.name,stchangeIndex.sex,stchangeIndex.age,stchangeIndex.IDnumber,stchangeIndex.resume);printf(请重新输入该人员信息);printf(姓名:);scanf(%s,stchangeIndex.name);printf(性别:);scanf(%s,stchangeIndex.sex);printf(年龄:);scanf(%d,&stchangeIndex.age);printf(身份证号:);scanf(

17、%s,stchangeIndex.IDnumber);printf(简历:);scanf(%s,stchangeIndex.resume);fp=fopen(C:/student.dat,wb);for (i=0;iNumber;i+)fwrite(&sti,sizeof(struct student),1,fp);fclose(fp);void changebyIDnumber()FILE *fp=NULL;char IDnumber18;int i=0;int changeIndex=0;int index=0;printf(请输入要修改的人员身份证号:n);scanf(%s,IDnumb

18、er);for (i=0;iNumber;i+) if (strcmp(IDnumber,sti.IDnumber)=0) changeIndex=i+1; break;if(!changeIndex) return; changeIndex-;printf(t姓名t性别t年龄t身份证号t简历n);printf(t%st%st%dt%st%sn,stchangeIndex.name,stchangeIndex.sex,stchangeIndex.age,stchangeIndex.IDnumber,stchangeIndex.resume);printf(请重新输入该人员信息);printf(

19、姓名:);scanf(%s,stchangeIndex.name);printf(性别:);scanf(%s,stchangeIndex.sex);printf(年龄:);scanf(%d,&stchangeIndex.age);printf(身份证号:);scanf(%s,stchangeIndex.IDnumber);printf(简历:);scanf(%s,stchangeIndex.resume); fp=fopen(C:/student.dat,wb);for (i=0;i修改成功n);3.5删除模块设计void del()/删除 int n=0;printf(1 按姓名删除n);p

20、rintf(2 按身份证号删除n);scanf(%d,&n);switch(n) case 1: delbyname(); break; case 2: delbyIDnumber(); break;void delbyname()/按姓名删除 FILE *fp=NULL;char name60;int i=0;int j=0;printf(请输入要删除的人员的名字:);scanf(%s,name);for(i=0;iNumber;i+) if (strcmp(name,sti.name)=0) /如果查找到就删除 for (j=i;jNumber-1;j+) stj=stj+1; Numbe

21、r-; /将剩余数据写入文件 重新一写的方式打开文件 把以前的数据擦除了 fp=fopen(C:/student.dat,wb); for (i=0;iNumber;i+) fwrite(&sti,sizeof(struct student),1,fp); fclose(fp); printf(删除成功;n);void delbyIDnumber()/按学号删除 FILE *fp=NULL;char IDnumber60;int i=0;int j=0;printf(请输入要删除的人员的身份证号:);scanf(%s,IDnumber);for(i=0;iNumber;i+) if (strc

22、mp(IDnumber,sti.IDnumber)=0) /如果查找到就删除 for (j=i;jNumber-1;j+) stj=stj+1; Number-; /将剩余数据写入文件 重新一写的方式打开文件 把以前的数据擦除了fp=fopen(C:/student.dat,wb);for (i=0;iNumber;i+) fwrite(&sti,sizeof(struct student),1,fp); fclose(fp);printf(删除成功;n);3.6保存及读取模块设计int dq(struct student st)/读取 FILE *fp=NULL; int i=0; fp=f

23、open(C:/student.dat,rb); while(fread(&sti,sizeof(struct student),1,fp) i+; fclose(fp); return i;void bc(struct student *st)/保存 FILE *fp=NULL; fp=fopen(C:/student.dat,ab+); fwrite(st,sizeof(struct student),1,fp); fclose(fp);第四章 测试分析4.1 测试程序执行情况能按照正确操作实现已加入的各个功能。程序无大错。4.2 出现的问题和解决的方法1.文件的打开储存出现了问题,通过问

24、老师和查书找出了问题的解决方法2.出现了死循环,问同学找出咯问题的所在第五章 用户手册(可选)5.1 使用说明按提示输入就行,但是应注意信息的输入是有条件的,性别的输入只有两种情况,简历不能多于80字5.2 运行说明按提示输入即可第六章 课程设计总结1.主函数的思路清晰2.结构简单3.但是在查找是会出现一些问题,如果两个人重名将会输出两个人的名字4.下次再做的时候一定要将各各情况都考虑清楚编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第41页 共41页附录:程序代码#include#include #include struct student char name60; c

25、har sex2; int age; char IDnumber18; char resume80;void fh();void shouye();void select();void add();void chazhao();void findname();void findIDnumber();void change();void changebyname();void changebyIDnumber();void del();void delbyname();void delbyIDnumber();void save();void writer();int dq(struct stu

26、dent st);void bc(struct student *st);struct student st300;int Number=0;int main() int choose=0; FILE *fp=NULL; char yesorno; if(fp=fopen(C:/student.dat,rb)=NULL) printf(n=提示:文件不存在,是否要创建一个?(y/n)n); scanf(%c,&yesorno); if(yesorno=y|yesorno=Y) fp=fopen(C:/student.dat,wb); fclose(fp); else exit(0); else

27、 Number=dq(st);system(cls); while(true)shouye();printf(tt=请选择:);scanf(%d,&choose);system(cls);switch(choose) case 1: select();fh();/查看人员信息break;case 2: add();fh();break;case 3: chazhao();fh();/ 查找break;case 4: change();fh();break;case 5: del();fh();break; case 6: save();fh();break; case 7: writer();

28、fh();break;case 8: exit(0);fh();break;default: break;fflush(stdin);getchar();system(cls); shouye(); return 0;void fh()printf(t=按Enter键返回主菜单n);int dq(struct student st) FILE *fp=NULL; int i=0; fp=fopen(C:/student.dat,rb); while(fread(&sti,sizeof(struct student),1,fp) i+; fclose(fp); return i;void sho

29、uye() printf(t*n);printf(t* *n);printf(t* 人员管理系统 *n); printf(t* *n);printf(t* 1 查看所有人员信息 *n);printf(t* 2 增加人员信息 *n);printf(t* 3 查找人员 *n); printf(t* 4 修改人员信息 *n); printf(t* 5 删除记录 *n);printf(t* 6 保存数据 *n); printf(t* 7 关于作者 *n);printf(t* 8 退出系统 *n); printf(t* *n); printf(t* *n);printf(t*n);void bc(str

30、uct student *st) FILE *fp=NULL; fp=fopen(C:/student.dat,ab+); fwrite(st,sizeof(struct student),1,fp); fclose(fp);void add()/增加人员信息 int numberTemp=0;int i=0;struct student temp;printf(请输入要增加的人员信息数量:);scanf(%d,&numberTemp);for(i=0;inumberTemp;i+) printf(输入第%d个人员信息n,i+1); printf(姓名:); scanf(%s,temp.nam

31、e); printf(性别:); scanf(%s,temp.sex); printf(年龄:); scanf(%d,&temp.age); printf(身份证号:); scanf(%s,temp.IDnumber); printf(简历:); scanf(%s,temp.resume); stNumber+=temp; /将刚添加的写入到数组 bc(&temp); /将刚添加的写入到文件 printf(添加成功n);void select() int i=0;printf(以下是全部人员信息n);printf(t姓名t性别t年龄t身份证号t简历n);for(i=0;iNumber;i+)

32、printf(t%st%st%dt%st%sn,sti.name,sti.sex,sti.age,sti.IDnumber,sti.resume);void chazhao()/查找人员 int n=0;printf(1 按姓名查找n);printf(2 按身份证号查找n);scanf(%d,&n); switch(n) case 1: findname();break;case 2: findIDnumber();break;default: printf(输入有误,结束!n);break;void findname()/按姓名查找 char name7;int i=0;printf(请输入

33、要查找的人员姓名:);scanf(%s,name);system(cls);printf(t姓名t性别t年龄t身份证号t简历n);for (i=0;iNumber;i+) if (strcmp(name,sti.name)=0) printf(t%st%st%dt%st%sn,sti.name,sti.sex,sti.age,sti.IDnumber,sti.resume); void findIDnumber()/按身份证号查找 char IDnumber18;int i=0;printf(请输入要查找人员的身份证号:);scanf(%s,IDnumber);system(cls);prin

34、tf(t姓名t性别t年龄t身份证号t简历n);for (i=0;iNumber;i+) if (strcmp(IDnumber,sti.IDnumber)=0) printf(t%st%st%dt%st%sn,sti.name,sti.sex,sti.age,sti.IDnumber,sti.resume);void change() int way=0;printf(请选择修改查找方式n);printf(1 通过姓名查找修改n);printf(2 通过身份证号查找修改n);scanf(%d,&way);switch(way)case 1: changebyname();break;case 2: changebyIDnumber();break; default: printf(输入有误,结束!n);break;void changebyname()FILE *fp=NULL;char name60;int i=0;int changeIndex=0; int index=0;printf(请输入要修改的人员姓名:n);scanf(%s,name);for (i=0;iNumber;i+)if (strcmp(name,sti.name)=0) changeIndex=i+1; break;if(!changeIndex) return; chan

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 经管营销 > 人力资源

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:文库网官方知乎号:文库网

经营许可证编号: 粤ICP备2021046453号世界地图

文库网官网©版权所有2025营业执照举报