c语言课程设计人员管理系统Word文件下载.docx
《c语言课程设计人员管理系统Word文件下载.docx》由会员分享,可在线阅读,更多相关《c语言课程设计人员管理系统Word文件下载.docx(29页珍藏版)》请在冰豆网上搜索。
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输入模块设计
inti=-1;
system("
cls"
);
printf("
\t\t***********************************\n"
);
printf("
\t\t*1.更新成员信息*\n"
do{
i++;
printf("
请输入姓名:
\n"
scanf("
%s"
&
st[i].name);
if(atoi(st[i].name)>
=0)
{
请输入性别(w/m):
%c"
st[i].sex);
printf("
请输入年龄:
scanf("
%d"
st[i].year);
请输入身份证号:
st[i].num);
请输入简历:
st[i].jian);
\n编号%d数据添加成功!
i+1);
输入姓名为负数结束输入!
);
}
elsebreak;
}while(st[i].num>
0);
\n--------------------------------------------------------------------\n"
数据更新成功!
system("
pause"
//按任意键继续
returni;
}
3.2输出模块设计
inti;
system("
//清屏
编号\t姓名\t性别\t年龄\t身份证号\t\t简介\n"
for(i=0;
i<
n;
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查找模块设计
charx[20];
\t\t*2.身份证号查找*\n"
输入你要查询的身份证号:
"
scanf("
x);
{
if(strcmp(st[i].num,x)==0)
姓名\t性别\t年龄\t身份证号\t\t简介\n"
%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);
system("
return;
未找到!
charx[10];
\t\t*3.姓名查找*\n"
输入你要查询的姓名:
scanf("
for(i=0;
if(strcmp(st[i].name,x)==0)
%s\t%c\t%d\t%s\t%s\n"
按键返回!
getchar();
/*按任意健*/
3.4
保存及读取模块设计
FILE*fp;
if((fp=fopen("
ren.txt"
"
w"
))==NULL)
保存文件失败!
return;
}
fwrite(st,sizeof(stu),n,fp);
保存成功!
fclose(fp);
intduqu(stust[])
r"
文件不存在!
打开失败!
return0;
!
feof(fp);
fread(&
st[i],sizeof(stu),1,fp);
读取成功!
returni-1;
第四章测试分析
4.1测试程序执行情况
第五章用户手册(可选)
5.1使用说明
运行程序会显示菜单根据菜单输入编号实现相应功能;
1.更新人员信息
2.身份证号查找
3.姓名查找
4.修改信息
5.插入信息
6.删除信息
7.输出信息
8.保存文件
9.读取文件
0.退出
5.2运行说明
只有退出程序时。
保存文件。
下次运行按读取。
才能读取成功!
更新人员信息会覆盖到当前的人员信息。
需要注意。
第六章课程设计总结
全部模块化设计。
未定义全局变量做干扰。
采用结构体。
不足之处,身份证长度未做限定,有些不足。
需要改善的有数据存储方式。
改成链式存可能会更佳。
还可以进一步优化程序使其实现分级菜单。
实现真正意义上的新建文件,读取文件。
所遇到的问题是如何给每个数据的储存文件取不同名字。
如何把每个文件名读取进来。
通这次的课程设计,我们对C语言这门课程有了深一步的理解。
它是计算机程序设计的重要理论技术基础,在我们计算机专业的学习中占据十分重要的地位,同时也使我们知道要学习这门课程,仅学习书本上的知识是不够的,还要有较高的实践能力。
因为我们学习知识就是为了实践,而只有实践多编写程序才能更好的理解与掌握书本上的东西。
通过本课题,进一步熟悉了C语言的基本东西。
我们还要学会分析题目的已知与未知,学会中合起来考虑问题,在逐步的展开思想,特别是碰到大问题时要细细的分解成为许多小的问题来解决。
同时我还学到了课外的知识,碰到难题是不要逃避,而是要迎难而上,反复的实验调试结果后,再错的基础上做修改。
谈到错是成功之母,说明我们在莫一件事上要多次吸取经验教训。
这次课程设计,让我对于以往上课不理解、不太清楚的问题,通过亲身实践弄懂了许多,同时因为程序是在老师及同学的帮主下完成的,当中有很多程序都是几个同学一起讨论出来的,让我体会到了集体的力量是无限的,当然更让我坚定了以后要好好掌握C语言这一门课程的决心!
附录:
程序代码
#include<
stdio.h>
stdlib.h>
string.h>
//字符串操作
#defineN30//人数
#defineM10//名字长度
}stu;
intmenu(void);
//用户菜单
intread(stust[]);
//添加人员信息
voidxieru(stust[],intn);
//写入信息到文件
//从文件读取信息
voidprint(stust[],intn);
//输出信息
voidshenfenzheng(stust[],intn);
//按身份证查找信息
voidxingming(stust[],intn);
//按姓名查找
voidxiugai(stust[],intn);
//修改信息
intcharu(stust[],intn);
//插入信息
voidshanchu(stust[],intn);
//删除信息
main()
inta,n;
sturen[N];
color0A"
//修改颜色
while
(1)
system("
//清屏
\t******************人员管理系统*******************\n"
\t**\n"
\t*1.更新人员信息2.身份证号查找3.姓名查找*\n"
\t*4.修改信息5.插入信息6.删除信息*\n"
\t*7.输出信息8.保存文件9.读取文件*\n"
\t*0.退出*\n"
\t*************************************************\n"
a=menu();
switch(a)
case1:
n=read(ren);
break;
case2:
shenfenzheng(ren,n);
case3:
xingming(ren,n);
case4:
xiugai(ren,n);
case5:
n=charu(ren,n);
case6:
shanchu(ren,n);
n--;
case7:
print(ren,n);
system("
case8:
xieru(ren,n);
case9:
n=duqu(ren);
case0:
system("
\n\n\n"
\t**************************************************\n"
\t*谢谢使用!
*\n"
exit(0);
//exit(code)当code为0时正常退出。
非0时出现某种错误后退
default:
输入错误!
请输入0-9的数字!
return0;
intmenu(void)//用户菜单
inta;
\n\t输入你的选择(0-9):
[]\b\b"
a);
returna;
}
intduqu(stust[])
fread(&
inti=-1;
else
输入你