收藏 分销(赏)

C语言课程设计人员管理系统.docx

上传人:二*** 文档编号:4516086 上传时间:2024-09-26 格式:DOCX 页数:39 大小:88KB
下载 相关 举报
C语言课程设计人员管理系统.docx_第1页
第1页 / 共39页
亲,该文档总共39页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、内蒙古科技大学课程设计论文内蒙古科技大学本科生课程设计说明书题 目:C语言课程设计 人员管理系统学生姓名: 学 号:专 业: 班 级: 指导教师: 日 期: 39内蒙古科技大学课程设计任务书课程名称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. 根据课程设计报告的质量,如有雷同,那么所有雷同的所有人均判为不及格。六、建议参考资料1?C语言程序设计?,谭浩强,清华大学出版社2?C语言程序设计课程设计?,刘振安,机械工业出版社目 录内蒙古科技大学课程设计

4、任务书II目 录III第一章 需求分析4引言4任务概述4数据描述4功能需求4任务方案5第二章概要设计6总体设计6数据类型设计或数据结构设计6接口设计6运行界面设计7第三章详细设计11输入模块设计11输出模块设计12查找模块设计13修改模块设计15删除模块设计18保存及读取模块设计21第四章测试分析22测试程序执行情况22出现的问题和解决的方法22第五章用户手册可选23使用说明23运行说明23第六章课程设计总结24附录:程序代码25参考文献40致谢40第一章 需求分析1.1 引言将人员信息进行统一的管理,方便进行查找,并进行修改。一个简易的人员信息管理系统可以解决一些简单的问题1.2 任务概述查

5、看所有人员信息2.能增加人员信息,增加的简历字数不大于80字,性别为男女、身份证号不多于18位1.3 数据描述char name60;char sex2;int age;char IDnumber18;char resume80;人员信息用结构体记录,包括姓名字符数组、性别字符数组、年龄整形、身份证号字符数组、简历字符数组1.4 功能需求查看所有人员信息退出1.5 任务方案1.先编出主函数2.各各功能分成一个一个的子函数进行编辑3.最后进行整合第二章 概要设计2.1 总体设计1.确定界面,使用户可选择操作工程1查看人员信息、2增加人员信息、3查找人员、4修改人员信息、5删除记录、6保存数据、7

6、关于作者、8退出系统2.查看功能:输出已经保存的数据3.增加人员信息功能:使用结构体,要求用户输入姓名、性别、年龄、身份证号、个人简历,并写入文件4. 查找人员功能:使用户输入姓名、身份证号其中一项可以进行查找5. 修改人员信息功能:使用户输入姓名、身份证号其中一项可以进行查找,并进行修改6.删除记录功能: 使用户输入姓名、身份证号其中一项可以进行查找,并进行删除7.保存数据功能:将增加的数据保存到文档中8. 关于作者功能:输出作者信息9.退出系统:将文件关闭,退出程序2.2 数据类型设计或数据结构设计char name60;char sex2;int age;char IDnumber18;

7、char resume80;人员信息用结构体记录,包括姓名字符数组、性别字符数组、年龄整形、身份证号字符数组、简历字符数组2.3 接口设计 函数名函数格式函数功能fh()void fh();输出字符串:=按Enter键返回主菜单shouye()void shouye();输出首页select()void select();查看人员信息add()void add();增加人员信息chazhao()void chazhao();查找人员findname()void findname();通过名字查找人员信息findIDnumber()void findIDnumber();通过身份证号查找人员信息

8、change()void change();更改人员信息changebyname()void changebyname();通过查找名字更改人员信息changebyIDnumber()void changebyIDnumber();通过查找身份证号更改人员信息del()void del();删除人员信息delbyname()void delbyname();通过查找名字删除人员信息delbyIDnumber()void delbyIDnumber();通过查找身份证号删除人员信息save()void save();保存数据writer()void writer();编者信息dq(struct

9、student st)int dq(struct student st);读取数据bc(struct student *st)void bc(struct student *st);保存数据2.4 运行界面设计3.增加界面第三章 详细设计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(姓名:); s

10、canf(%s,temp.name); 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);3.2 输出模块设计void select() int i=0;printf(以下是全部人员信息n);printf(t姓名t性别t年龄t身份证号

11、t简历n);for(i=0;iNumber;i+) printf(t%st%st%dt%st%sn,sti.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()

12、/按姓名查找 char name7;int i=0;printf(请输入要查找的人员姓名:);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(请输入要查找人员的身份证号:)

13、;scanf(%s,IDnumber);system(cls);printf(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);3.4 修改模块设计void change() int way=0;printf(请选择修改查找方式n);printf(1 通过姓名查找修改n);printf(2 通过身份证号查找修改n);scanf(%d,&way)

14、;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

15、;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(姓名:);scanf(%s,stchangeIndex.name);printf(性别:);scanf(%s,stchangeIndex.sex);printf(年龄:

16、);scanf(%d,&stchangeIndex.age);printf(身份证号:);scanf(%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;

17、int index=0;printf(请输入要修改的人员身份证号:n);scanf(%s,IDnumber);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.IDnumb

18、er,stchangeIndex.resume);printf(请重新输入该人员信息);printf(姓名:);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

19、);删除模块设计void del()/删除 int n=0;printf(1 按姓名删除n);printf(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) /

20、如果查找到就删除 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);void delbyIDnumber()/按学号删除 FILE *fp=NULL;char IDnumber60;int i=0;int j=0;printf(请输入要删除的人员的身份证号:)

21、;scanf(%s,IDnumber);for(i=0;iNumber;i+) if (strcmp(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);保存及读取模块设计int dq(struc

22、t 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 bc(struct student *st)/保存 FILE *fp=NULL; fp=fopen(C:/student.dat,ab+); fwrite(st,sizeof(struct student),1,fp); fclose(fp);第四章 测试分析4.1 测试程序执行情况能按照正确操作实现已参加

23、的各个功能。程序无大错。4.2 出现的问题和解决的方法1.文件的翻开储存出现了问题,通过问老师和查书找出了问题的解决方法2.出现了死循环,问同学找出咯问题的所在第五章 用户手册可选5.1 使用说明按提示输入就行,但是应注意信息的输入是有条件的,性别的输入只有两种情况,简历不能多于80字5.2 运行说明按提示输入即可第六章 课程设计总结1.主函数的思路清晰3.但是在查找是会出现一些问题,如果两个人重名将会输出两个人的名字附录:程序代码#include#include #include struct student char name60; char sex2; int age; char IDn

24、umber18; 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 student st);void bc(struct stu

25、dent *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 Number=dq(st);system(cls);

26、 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();fh();break;case 8: exit(0);

27、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 shouye() printf(t*n);printf(t*

28、 *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(struct student *st) FILE *fp=N

29、ULL; 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.name); printf(性别:); scanf(%s,t

30、emp.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+) printf(t%st%st%dt%st%sn,sti

31、.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(请输入要查找的人员姓名:);scanf(%s,name);s

32、ystem(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身份证号t简历n);for

33、(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

34、; 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性别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(性

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服