c语言课程设计人员管理系统.docx
《c语言课程设计人员管理系统.docx》由会员分享,可在线阅读,更多相关《c语言课程设计人员管理系统.docx(23页珍藏版)》请在冰豆网上搜索。
c语言课程设计人员管理系统
SANY标准化小组#QS8QHH-HHGX8Q8-GNHHJ8-HHMHGN#
c语言课程设计人员管理系统
内蒙古科技大学
本科生课程设计说明书
题目:
C语言课程设计
——人员管理系统
学生姓名:
武飞
学号:
专业:
计算机科学与技术
班级:
2013-3
指导教师:
王丽颖
内蒙古科技大学课程设计任务书
课程名称
C语言课程设计
设计题目
人员管理系统
指导教师
王丽颖
时间
—
一、教学要求
1.巩固和加深学生对C语言课程的基本知识的理解和掌握
2.掌握C语言编程和程序调试的基本技能
3.利用C语言进行基本的软件设计
4.掌握书写程序设计说明文档的能力
5.提高运用C语言解决实际问题的能力
二、设计资料及参数
每个学生在教师提供的课程设计题目中任意选择一题,独立完成,题目选定后不可更换。
人员管理系统
现有一批人员的数椐,要求输入计算机并存放在内存中,然后增加若干个新人员的记录,并可输出人员清单,实现文件存盘和读入文件进行修改的功能。
人员的基本信息包括姓名,性别,年龄,身份证号和简历(80个字符以内)。
要求设计菜单来调用其各功能模块:
新建文件、打开文件
输入记录、输出记录
查询记录(至少具有两种查询方式,例如以姓名查询和以身份证号查询)
修改、插入和删除记录
保存文件、退出
三、设计要求及成果
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];
新成员信息*\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");ame,st[i].sex,st[i].year,st[i].num,st[i].jian);
}
}
3.1查找模块设计
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.2
保存及读取模块设计
voidxieru(stust[],intn)
{
FILE*fp;
if((fp=fopen("","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("","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<>新人员信息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);新成员信息*\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("输入你要查询的身份证号:
");
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");
system("pause");
return;
}
}
printf("未找到!
");
printf("\n--------------------------------------------------------------------\n");
system("pause");
}
intcharu(stust[],intn)
{
inti=n-1;
system("cls");
printf("\t\t***********************************\n");
printf("\t\t*5.插入信息*\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");
system("pause");
returni;
}
voidxiugai(stust[],intn)
{
intx;
system("cls");
printf("\t\t***********************************\n");
printf("\t\t*4.修改信息*\n");
printf("\t\t***********************************\n");
print(st,n);
printf("\n请输入要修改的信息编号:
");
scanf("%d",&x);
printf("请输入姓名:
\n");
scanf("%s",&st[x-1].name);
printf("请输入性别(w/m):
\n");
scanf("%c",&st[x-1].sex);
printf("请输入年龄:
\n");
scanf("%d",&st[x-1].year);
printf("请输入身份证号:
\n");
scanf("%s",&st[x-1].num);
printf("请输入简历:
\n");
scanf("%s",&st[x-1].jian);
printf("\n编号%d数据修改成功!
\n",x);
printf("\n--------------------------------------------------------------------\n");
system("pause");
}
voidshanchu(stust[],intn)
{