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[]);
从文件读取信息
print
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("输入你要查询的号:
")