C语言程序设计职工管理系统.docx
《C语言程序设计职工管理系统.docx》由会员分享,可在线阅读,更多相关《C语言程序设计职工管理系统.docx(17页珍藏版)》请在冰豆网上搜索。
C语言程序设计职工管理系统
C语言程序设计大作业
职工信息管理系统
2012/1/1
组内合作
组长:
组内成员:
C语言程序大作业报告
1. 设计目的(需求分析)
此程序的主要功能就是在用户输入一个目标文件名,在运行目录下建立相应的文件夹来储存职工信息,然后由用户输入职工信息,之后支持职工信息的新建添加、查询、修改、删除、显示输出的功能。
2. 总体设计(流程图)
开始
用户输入文件名
建立文件夹
用户输入职工信息
用户输入功能选项
1
2
0
退出
结束
5
输出
用户输入添加职工信息
输入要查找的职工名
有?
是
否
输出信息
输出提示
3. 详细设计
主函数中运用的函数及其功能:
creat();建立文件夹;
由用户输入文件名,在运行目录下建立文件夹;
Build();新添加信息;
output();显示所有记录;
search();职工信息信息查找;
由用户输入要查找的职工名,进行查询;
Delete();删除职工信息;
Change();修改职工信息;
输入职工名,找到后并修改,再把修改后的信息保存起来!
用户输入新学生的信息;
4. 调试与测试:
程序的编写过程中,出现的主要问题是各个分函数的相互联系不能很好的处理;部分函数缺少参数;exe文件显示结构混乱;刚开始有点忙乱于文件的使用,后来在复习书本、网上查询、组员一起讨论,在经过多次修改后得以有所解决。
5. 源程序清单和执行结果:
#include
#include
structinfo
{
charname[8];
charnum[8];
chartel[15];
charaddr[50];
};
charfilename[20];
FILE*fp;
voidcreat();
voidoutput();
voidsearch();
voidbuild();
voidchange();
voiddelete();
main()
{
intm;
printf("");
printf("--------------------------------------------------------------------------\n");
printf("职工信息管理系统\n");
printf("--------------------------------------------------------------------------\n");
creat();
while
(1)
{
printf("---------------------------------\n");
printf("职工信息管理系统\n");
printf("||=============================||\n");
printf("||1.职工信息的新建||\n");
printf("||2.职工信息的查询||\n");
printf("||3.职工信息的修改||\n");
printf("||4.职工信息的删除||\n");
printf("||5.职工信息的输出||\n");
printf("||0.退出职工信息管理系统||\n");
printf("||=============================||\n");
printf("请选择操作0-5\n\n");
scanf("%d",&m);
if(m>=0&&m<=5)
{
switch(m)
{
case1:
build();/*新建立*/
break;
case2:
search();/*查询*/
break;
case3:
change();/*修改*/
break;
case4:
delete();/*删除*/
break;
case5:
output();/*输出*/
break;
case0:
exit();
}
printf("\n\n操作完毕,请再次选择!
");
}
else
printf("\n\n选择错误,请再次选择!
");
}
}
/*开始定义函数*/
voidcreat()/*信息簿的建立及保存函数*/
{
structinfoone;
printf("\n请输入职工信息簿名:
");
scanf("%s",filename);
if((fp=fopen(filename,"w"))==NULL)
{
printf("\n不能建立信息簿!
");
exit();
}
fprintf(fp,"%-10s%-10s%-20s%-50s\n","姓名","工号","电话号码","住址");
printf("\n请输入姓名、工号、电话号码及住址(相邻两信息之间用空格分开并以0结束)\n");
scanf("%s",one.name);
while(strcmp(one.name,"0"))
{
scanf("%s%s%s",one.num,one.tel,one.addr);
fprintf(fp,"%-10s%-10s%-20s%-50s\n",one.name,one.num,one.tel,one.addr);
scanf("%s",one.name);
}
fclose(fp);
}
voidoutput()/*输出*/
{
structinfoone;
if((fp=fopen(filename,"r"))==NULL)
{
printf("\n不能打开信息簿!
");
exit();
}
printf("\n\n%20s\n","职工信息簿");
while(!
feof(fp))
{
fscanf(fp,"%s%s%s%s\n",one.name,one.num,one.tel,one.addr);
printf("%-10s%-10s%-20s%-50s",one.name,one.num,one.tel,one.addr);
}
fclose(fp);
}
voidbuild()/*新建并保存*/
{
structinfoone;
if((fp=fopen(filename,"a"))==NULL)
{
printf("\n不能打开职工信息簿!
");
exit();
}
printf("\n请输入添加的姓名、工号、电话号码及住址\n");
scanf("%s%s%s%s",one.name,one.num,one.tel,one.addr);
fprintf(fp,"%-10s%-10s%-20s%-50s\n",one.name,one.num,one.tel,one.addr);
fclose(fp);
}
voidsearch()/*查找信息*/
{
intk=0;
charnamekey[8];
structinfoone;
printf("\n请输入姓名:
");
scanf("%s",namekey);
if((fp=fopen(filename,"rb"))==NULL)
{
printf("\n不能打开职工信息簿!
");
exit();
}
while(!
feof(fp))
{
fscanf(fp,"%s%s%s%s\n",one.name,one.num,one.tel,one.addr);
if(!
strcmp(namekey,one.name))
{
printf("\n\n已查到,记录为:
");
printf("\n%-10s%-10s%-18s%-50s",one.name,one.num,one.tel,one.addr);
k=1;
}
}
if(!
k)
printf("\n\n对不起,信息簿中没有此人的记录。
");
fclose(fp);
}
voidchange()/*找到并修改*/
{
intk=0;
longoffset;
charnamekey[8];
structinfoone;
printf("\n请输入姓名:
");
scanf("%s",namekey);
if((fp=fopen(filename,"r+"))==NULL)
{
printf("\n不能打开职工信息簿!
");
exit();
}
while(!
feof(fp))
{
offset=ftell(fp);
fscanf(fp,"%s%s%s%s\n",one.name,one.num,one.tel,one.addr);
if(!
strcmp(namekey,one.name))
{
k=1;
break;
}
}
if(k)
{
printf("\n已查到,记录为:
");
printf("\n%-10s%-10s%-18s%-50s",one.name,one.num,one.tel,one.addr);
printf("\n请输入新姓名、工号、电话号码及住址:
");
scanf("%s%s%s%s",one.name,one.num,one.tel,one.addr);
fseek(fp,offset,SEEK_SET);
printf("%ld",ftell(fp));
fprintf(fp,"%-10s%-10s%-20s%-50s\n",one.name,one.num,one.tel,one.addr);
}
else
printf("\n对不起,信息簿中没有此人的记录。
");
fclose(fp);
}
voiddelete()/*找到并删除*/
{
intm,k=0;
longoffset1;
charnamekey[8];
structinfoone;
printf("\n请输入姓名:
");
scanf("%s",namekey);
if((fp=fopen(filename,"r+"))==NULL)
{
printf("\n不能打开职工信息簿!
");
exit();
}
while(!
feof(fp))
{
offset1=ftell(fp);
fscanf(fp,"%s%s%s%s\n",one.name,one.num,one.tel,one.addr);
if(!
strcmp(namekey,one.name))
{
k=1;
break;
}
}
if(k)
{
printf("\n已查到,记录为");
printf("\n%-10s%-10s%-18s%-50s",one.name,one.num,one.tel,one.addr);
printf("\n确实要删除,按1;不删除,按0:
");
scanf("%d",&m);
if(m)
{
fseek(fp,offset1,SEEK_SET);
fprintf(fp,"%-10s%-10s%-20s%-50s\n","","","","");
}
}
else
printf("\n对不起,信息簿中没有此人的记录。
");
fclose(fp);
此系统由
--------------------------------------------------------------------------
职工信息管理系统
--------------------------------------------------------------------------
请输入职工信息簿名:
职工信息簿1
请输入姓名、工号、电话号码及住址(相邻两信息之间用空格分开并以0结束)
城0000118安康
睿0000218大理
0
---------------------------------
职工信息管理系统
||=============================||
||1.职工信息的新建||
||2.职工信息的查询||
||3.职工信息的修改||
||4.职工信息的删除||
||5.职工信息的输出||
||0.退出职工信息管理系统||
||=============================||
请选择操作0-5
1
请输入添加的姓名、工号、电话号码及住址
娇0000118汉中
操作完毕,请再次选择!
---------------------------------
职工信息管理系统
||=============================||
||1.职工信息的新建||
||2.职工信息的查询||
||3.职工信息的修改||
||4.职工信息的删除||
||5.职工信息的输出||
||0.退出职工信息管理系统||
||=============================||
请选择操作0-5
2
请输入姓名:
娇
已查到,记录为:
娇0000118921汉中
操作完毕,请再次选择!
---------------------------------
职工信息管理系统
||=============================||
||1.职工信息的新建||
||2.职工信息的查询||
||3.职工信息的修改||
||4.职工信息的删除||
||5.职工信息的输出||
||0.退出职工信息管理系统||
||=============================||
请选择操作0-5
3
请输入姓名:
成
对不起,信息簿中没有此人的记录。
操作完毕,请再次选择!
---------------------------------
职工信息管理系统
||=============================||
||1.职工信息的新建||
||2.职工信息的查询||
||3.职工信息的修改||
||4.职工信息的删除||
||5.职工信息的输出||
||0.退出职工信息管理系统||
||=============================||
请选择操作0-5
城
请输入姓名:
已查到,记录为:
城0000118安康
请输入新姓名、工号、电话号码及住址:
成0000118安康
92
操作完毕,请再次选择!
---------------------------------
职工信息管理系统
||=============================||
||1.职工信息的新建||
||2.职工信息的查询||
||3.职工信息的修改||
||4.职工信息的删除||
||5.职工信息的输出||
||0.退出职工信息管理系统||
||=============================||
请选择操作0-5
4
请输入姓名:
成
已查到,记录为
成0000118安康
确实要删除,按1;不删除,按0:
1
操作完毕,请再次选择!
---------------------------------
职工信息管理系统
||=============================||
||1.职工信息的新建||
||2.职工信息的查询||
||3.职工信息的修改||
||4.职工信息的删除||
||5.职工信息的输出||
||0.退出职工信息管理系统||
||=============================||
请选择操作0-5
5
职工信息簿
姓名工号电话号码住址
睿0000218大理
娇0000118汉中
操作完毕,请再次选择!
---------------------------------
职工信息管理系统
||=============================||
||1.职工信息的新建||
||2.职工信息的查询||
||3.职工信息的修改||
||4.职工信息的删除||
||5.职工信息的输出||
||0.退出职工信息管理系统||
||=============================||
请选择操作0-5
0
Pressanykeytocontinue