c语言课程设计报告人员管理系统.docx
- 文档编号:16079699
- 上传时间:2023-07-10
- 格式:DOCX
- 页数:32
- 大小:143.68KB
c语言课程设计报告人员管理系统.docx
《c语言课程设计报告人员管理系统.docx》由会员分享,可在线阅读,更多相关《c语言课程设计报告人员管理系统.docx(32页珍藏版)》请在冰点文库上搜索。
c语言课程设计报告人员管理系统
科技大学
本科生课程设计说明书
题目:
C语言课程设计
——人员管理系统
学生:
武飞
学号:
1376807331
专业:
计算机科学与技术
班级:
2013-3
指导教师:
王丽颖
科技大学课程设计任务书
课程名称
C语言课程设计
设计题目
人员管理系统
指导教师
王丽颖
时间
2014.12.31—2014.1.4
一、教学要求
1.巩固和加深学生对C语言课程的基本知识的理解和掌握
2.掌握C语言编程和程序调试的基本技能
3.利用C语言进行基本的软件设计
4.掌握书写程序设计说明文档的能力
5.提高运用C语言解决实际问题的能力
二、设计资料及参数
每个学生在教师提供的课程设计题目中任意选择一题,独立完成,题目选定后不可更换。
人员管理系统
现有一批人员的数椐,要求输入计算机并存放在存中,然后增加若干个新人员的记录,并可输出人员清单,实现文件存盘和读入文件进行修改的功能。
人员的基本信息包括,性别,年龄,号和简历(80个字符以)。
要求设计菜单来调用其各功能模块:
v新建文件、打开文件
v输入记录、输出记录
v查询记录(至少具有两种查询方式,例如以查询和以号查询)
v修改、插入和删除记录
v保存文件、退出
三、设计要求及成果
1.分析课程设计题目的功能需求(可选用数组或链表实现,可多人(最多3人)协作完成一个题目)
2.写出详细设计说明(至少包括功能实现分析和模块流程图)
3.编写程序代码,调试程序使其能正确运行(代码书写要规,标示符要见名知意,要有必要的注释,每人至少3个函数,每人至少200行代码,不包括注释和花括号)
4.设计完成的软件要便于操作和使用
5.设计完成后提交课程设计报告(请严格按照模板进行排版)
四、进度安排
第一天 选择课程设计题目,分析课题的要求
第二天 编程
第三天 编程及调试
第四天 写课程设计报告
第五天 提交课程设计报告(打印稿及电子稿)
五、评分标准
1.根据平时上机考勤、表现和进度,教师将每天点名和检查
2.根据课程设计完成情况,必须有可运行的软件。
3.根据课程设计报告的质量,如有雷同,则所有雷同的所有人均判为不及格。
第一章需求分析
1.1引言
随着管理人数的增加,手动管理人员将会显得不方便。
这时就需要使用软件来实施人性化的管理。
1.2任务概述
做一个程序对人员信息实现:
新建文件、打开文件、输入记录、输出记录、查询记录、
修改、插入和删除记录、保存文件、退出功能
1.3数据描述
●采用结构体来储存人员信息。
●人员信息包括、性别、年龄、号、个人简历。
●长度输入时不能超过10。
●性别输入时只能输入时一个字符w/m。
●长度输入时不能超过20。
●个人简历长度输入时不能超过120。
1.4功能需求
●新建文件、打开文件
●输入记录、输出记录
●查询记录(至少具有两种查询方式,例如以查询和以号查询)
●修改、插入和删除记录
●保存文件、退出
第二章概要设计
2.1总体设计
2.2数据类型设计(或数据结构设计)
typedefstructstudent
{
charname[M];//
charsex;//性别
intyear;//年龄
charnum[20];//号
charjian[120];//个人简历
}stu;//结构体储存
2.3接口设计
表2.1:
函数列表
函数名
函数格式
函数功能
menu
intmenu(void)
用户菜单
read
intread(stust[])
添加人员信息
xieru
voidxieru(stust[],intn)
写信息到文件
duqu
intduqu(stust[]);
从文件读取信息
voidprint(stust[],intn)
输出信息到屏幕
shenfenzheng
voidshenfenzheng(stust[],intn)
按查找信息
xingming
voidxingming(stust[],intn)
按查找
xiugai
voidxiugai(stust[],intn)
修改信息
charu
intcharu(stust[],intn)
插入信息
shanchu
voidshanchu(stust[],intn)
删除信息
2.4运行界面设计
第三章详细设计
3.1输入模块设计
intread(stust[])
{
inti=-1;
system("cls");
printf("\t\t***********************************\n");
printf("\t\t*1.更新成员信息*\n");
printf("\t\t***********************************\n");
do{
i++;
printf("请输入:
\n");
scanf("%s",&st[i].name);
if(atoi(st[i].name)>=0)
{
printf("请输入性别(w/m):
\n");
scanf("%c",&st[i].sex);
printf("请输入年龄:
\n");
scanf("%d",&st[i].year);
printf("请输入号:
\n");
scanf("%s",&st[i].num);
printf("请输入简历:
\n");
结束
scanf("%s",&st[i].jian);
printf("\n编号%d数据添加成功!
\n",i+1);
printf("输入为负数结束输入!
\n");
printf("\n");
}
elsebreak;
}while(st[i].num>0);
printf("\n--------------------------------------------------------------------\n");
printf("数据更新成功!
\n");
system("pause");//按任意键继续
returni;
}
3.2输出模块设计
voidprint(stust[],intn)
{
inti;
system("cls");//清屏
printf("\n--------------------------------------------------------------------\n");
printf("编号\t\t性别\t年龄\t号\t\t简介\n");
for(i=0;i {printf("%d\t%s\t%c\t%d\t%-24s%s\n",i+1,st[i].name,st[i].sex,st[i].year,st[i].num,st[i].jian); } } 3.3查找模块设计 voidshenfenzheng(stust[],intn) { charx[20]; inti; system("cls"); printf("\t\t***********************************\n"); printf("\t\t*2.号查找*\n"); printf("\t\t***********************************\n"); printf("输入你要查询的号: "); scanf("%s",x); for(i=0;i { if(strcmp(st[i].num,x)==0) { printf("\t性别\t年龄\t号\t\t简介\n"); printf("%s\t%c\t%d\t%s\t%s\n",st[i].name,st[i].sex,st[i].year,st[i].num,st[i].jian); printf("\n--------------------------------------------------------------------\n"); system("pause"); return; } } printf("未找到! "); printf("\n--------------------------------------------------------------------\n"); system("pause"); } voidxingming(stust[],intn) { charx[10]; inti; system("cls"); printf("\t\t***********************************\n"); printf("\t\t*3.查找*\n"); printf("\t\t***********************************\n"); printf("输入你要查询的: "); scanf("%s",x); for(i=0;i { if(strcmp(st[i].name,x)==0) { printf("\t性别\t年龄\t号\t\t简介\n"); printf("%s\t%c\t%d\t%s\t%s\n",st[i].name,st[i].sex,st[i].year,st[i].num,st[i].jian); printf("\n--------------------------------------------------------------------\n"); printf("按键返回! "); getchar();/*按任意健*/ getchar(); return; } } printf("未找到! "); printf("\n--------------------------------------------------------------------\n"); system("pause"); } 3.4 保存及读取模块设计 voidxieru(stust[],intn) { FILE*fp; if((fp=fopen("ren.txt","w"))==NULL) { printf("保存文件失败! \n"); return; } fwrite(st,sizeof(stu),n,fp); printf("保存成功! \n"); fclose(fp); system("pause"); } intduqu(stust[]) { FILE*fp; 打开成功 读取文件 Y N inti; if((fp=fopen("ren.txt","r"))==NULL) { printf("文件不存在! 打开失败! \n"); return0; } for(i=0;! feof(fp);i++) { fread(&st[i],sizeof(stu),1,fp); } fclose(fp); 返回 printf("读取成功! \n"); system("pause"); returni-1; } 第四章测试分析 4.1测试程序执行情况 第五章用户手册(可选) 5.1使用说明 运行程序会显示菜单根据菜单输入编号实现相应功能; 1.更新人员信息 2.号查找 3.查找 4.修改信息 5.插入信息 6.删除信息 7.输出信息 8.保存文件 9.读取文件 0.退出 5.2运行说明 只有退出程序时。 保存文件。 下次运行按读取。 才能读取成功! 更新人员信息会覆盖到当前的人员信息。 需要注意。 第六章课程设计总结 全部模块化设计。 未定义全局变量做干扰。 采用结构体。 不足之处,长度未做限定,有些不足。 需要改善的有数据存储方式。 改成链式存可能会更佳。 还可以进一步优化程序使其实现分级菜单。 实现真正意义上的新建文件,读取文件。 所遇到的问题是如何给每个数据的储存文件取不同名字。 如何把每个文件名读取进来。 通这次的课程设计,我们对C语言这门课程有了深一步的理解。 它是计算机程序设计的重要理论技术基础,在我们计算机专业的学习中占据十分重要的地位,同时也使我们知道要学习这门课程,仅学习书本上的知识是不够的,还要有较高的实践能力。 因为我们学习知识就是为了实践,而只有实践多编写程序才能更好的理解与掌握书本上的东西。 通过本课题,进一步熟悉了C语言的基本东西。 我们还要学会分析题目的已知与未知,学会中合起来考虑问题,在逐步的展开思想,特别是碰到大问题时要细细的分解成为许多小的问题来解决。 同时我还学到了课外的知识,碰到难题是不要逃避,而是要迎难而上,反复的实验调试结果后,再错的基础上做修改。 谈到错是成功之母,说明我们在莫一件事上要多次吸取经验教训。 这次课程设计,让我对于以往上课不理解、不太清楚的问题,通过亲身实践弄懂了许多,同时因为程序是在老师及同学的帮主下完成的,当中有很多程序都是几个同学一起讨论出来的,让我体会到了集体的力量是无限的,当然更让我坚定了以后要好好掌握C语言这一门课程的决心! 附录: 程序代码 #include #include #include #defineN30//人数 #defineM10//名字长度 typedefstructstudent { charname[M]; charsex; intyear; charnum[20]; charjian[120]; }stu; intmenu(void);//用户菜单 intread(stust[]);//添加人员信息 voidxieru(stust[],intn);//写入信息到文件 intduqu(stust[]);//从文件读取信息 voidprint(stust[],intn);//输出信息 voidshenfenzheng(stust[],intn);//按查找信息 voidxingming(stust[],intn);//按查找 voidxiugai(stust[],intn);//修改信息 intcharu(stust[],intn);//插入信息 voidshanchu(stust[],intn);//删除信息 main() { inta,n; sturen[N]; system("color0A");//修改颜色 while (1) { system("cls");//清屏 printf("\n"); printf("\n"); printf("\n"); printf("\t******************人员管理系统*******************\n"); printf("\t**\n"); printf("\t*1.更新人员信息2.号查找3.查找*\n"); printf("\t*4.修改信息5.插入信息6.删除信息*\n"); printf("\t*7.输出信息8.保存文件9.读取文件*\n"); printf("\t*0.退出*\n"); printf("\t*************************************************\n"); a=menu(); switch(a) { case1: n=read(ren); break; case2: shenfenzheng(ren,n); break; case3: xingming(ren,n); break; case4: xiugai(ren,n); break; case5: n=charu(ren,n); break; case6: shanchu(ren,n); n--; break; case7: print(ren,n); printf("\n--------------------------------------------------------------------\n"); system("pause"); break; case8: xieru(ren,n); break; case9: n=duqu(ren); break; case0: system("cls"); printf("\n\n\n"); printf("\t**************************************************\n"); printf("\t**\n"); printf("\t**\n"); printf("\t*使用! *\n"); printf("\t**\n"); printf("\t**\n"); printf("\t**************************************************\n"); exit(0);//exit(code)当code为0时正常退出。 非0时出现某种错误后退 default: printf("输入错误! 请输入0-9的数字! \n"); system("pause"); break; } } return0; } intmenu(void)//用户菜单 { inta; printf("\n\t输入你的选择(0-9): []\b\b"); scanf("%d",&a); returna; } voidxieru(stust[],intn) { FILE*fp; if((fp=fopen("ren.txt","w"))==NULL) { printf("保存文件失败! \n"); return; } fwrite(st,sizeof(stu),n,fp); printf("保存成功! \n"); fclose(fp); system("pause"); } intduqu(stust[]) { FILE*fp; inti; if((fp=fopen("ren.txt","r"))==NULL) { printf("文件不存在! 打开失败! \n"); return0; } for(i=0;! feof(fp);i++) { fread(&st[i],sizeof(stu),1,fp); } fclose(fp); printf("读取成功! \n"); system("pause"); returni-1; } intread(stust[]) { inti=-1; system("cls"); printf("\t\t***********************************\n"); printf("\t\t*1.更新成员信息*\n"); printf("\t\t***********************************\n"); do{ i++; printf("请输入: \n"); scanf("%s",&st[i].name); if(atoi(st[i].name)>=0) { printf("请输入性别(w/m): \n"); scanf("%c",&st[i].sex); printf("请输入年龄: \n"); scanf("%d",&st[i].year); printf("请输入号: \n"); scanf("%s",&st[i].num); printf("请输入简历: \n"); scanf("%s",&st[i].jian); printf("\n编号%d数据添加成功! \n",i+1); printf("输入为负数结束输入! \n"); printf("\n"); } else break; }while(st[i].num>0); printf("\n--------------------------------------------------------------------\n"); printf("数据更新成功! \n"); system("pause"); returni; } voidprint(stust[],intn) { inti; system("cls"); printf("\n--------------------------------------------------------------------\n"); printf("编号\t\t性别\t年龄\t号\t\t简介\n"); for(i=0;i { printf("%d\t%s\t%c\t%d\t%-24s%s\n",i+1,st[i].name,st[i].sex,st[i].year,st[i].num,st[i].jian); } } voidshenfenzheng(stust[],intn) { charx[20]; inti; system("cls"); printf("\t\t***********************************\n"); printf("\t\t*2.号查找*\n"); printf("\t\t***********************************\n"); printf("输入你要查询的号: ")
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 报告 人员 管理 系统