1、C语言程序设计职工管理系统C语言程序设计大作业职工信息管理系统2012/1/1组内合作组长: 组内成员: C语言程序大作业报告1. 设计目的(需求分析)此程序的主要功能就是在用户输入一个目标文件名,在运行目录下建立相应的文件夹来储存职工信息,然后由用户输入职工信息,之后支持职工信息的新建添加、查询、修改、删除、显示输出的功能。2. 总体设计(流程图)开始用户输入文件名建立文件夹用户输入职工信息用户输入功能选项120退出结束5输出用户输入添加职工信息输入要查找的职工名有?是否输出信息输出提示3. 详细设计主函数中运用的函数及其功能:creat(); 建立文件夹;由用户输入文件名,在运行目录下建立
2、文件夹;Build(); 新添加信息;output(); 显示所有记录;search(); 职工信息信息查找;由用户输入要查找的职工名,进行查询;Delete(); 删除职工信息;Change(); 修改职工信息;输入职工名,找到后并修改,再把修改后的信息保存起来!用户输入新学生的信息;4. 调试与测试:程序的编写过程中,出现的主要问题是各个分函数的相互联系不能很好的处理;部分函数缺少参数;exe文件显示结构混乱;刚开始有点忙乱于文件的使用,后来在复习书本、网上查询、组员一起讨论,在经过多次修改后得以有所解决。5. 源程序清单和执行结果:#include#includestruct info
3、char name8; char num8; char tel15; char addr50;char filename20;FILE *fp;void creat();void output();void search();void build();void change();void delete();main() int m; printf( ); printf( -n); printf( 职工信息管理系统 n); printf( -n); creat(); while(1) printf( -n); printf( 职工信息管理系统 n); printf( |=|n); printf(
4、 | 1.职工信息的新建 |n); printf( | 2.职工信息的查询 |n); printf( | 3.职工信息的修改 |n); printf( | 4.职工信息的删除 |n); printf( | 5.职工信息的输出 |n); printf( | 0.退出职工信息管理系统 |n); printf( |=|n); printf( 请选择操作0-5 nn); scanf(%d,&m); if(m=0&m=5) switch(m) case 1: build();/*新建立*/ break; case 2: search();/*查询*/ break; case 3: change();/*
5、修改*/ break; case 4: delete();/*删除*/ break; case 5: output();/*输出*/ break; case 0: exit(); printf(nn操作完毕,请再次选择!); else printf(nn选择错误,请再次选择!); /*开始定义函数*/void creat()/*信息簿的建立及保存函数*/ struct info one; printf(n请输入职工信息簿名:); scanf(%s,filename); if(fp=fopen(filename,w)=NULL) printf(n不能建立信息簿!); exit(); fprint
6、f(fp,%-10s%-10s%-20s%-50sn,姓名,工号,电话号码,住址); 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%-50sn,one.name,one.num,one.tel,one.addr); scanf(%s,one.name); fclose(fp);void output()/*输出*/ struc
7、t info one; if(fp=fopen(filename,r)=NULL) printf(n不能打开信息簿!); exit(); printf(nn%20sn,职工信息簿); while(!feof(fp) fscanf(fp,%s%s%s%sn,one.name,one.num,one.tel,one.addr); printf(%-10s%-10s%-20s%-50s,one.name,one.num,one.tel,one.addr); fclose(fp);void build()/*新建并保存*/ struct info one; if(fp=fopen(filename,a
8、)=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%-50sn,one.name,one.num,one.tel,one.addr); fclose(fp);void search()/*查找信息*/ int k=0; char namekey8; struct info one; printf(n请输入姓名:); scanf(%s,namekey); if
9、(fp=fopen(filename,rb)=NULL) printf(n不能打开职工信息簿!); exit(); while(!feof(fp) fscanf(fp,%s%s%s%sn,one.name,one.num,one.tel,one.addr); if(!strcmp(namekey,one.name) printf(nn已查到,记录为:); printf(n%-10s%-10s%-18s%-50s,one.name,one.num,one.tel,one.addr); k=1; if(!k) printf(nn对不起,信息簿中没有此人的记录。); fclose(fp);void
10、change()/*找到并修改*/ int k=0; long offset; char namekey8; struct info one; 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%sn,one.name,one.num,one.tel,one.addr); if(!strcmp(namekey,one.name) k=1; break; i
11、f(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%-50sn,one.name,one.num,one.tel,one.addr); else printf(n
12、对不起,信息簿中没有此人的记录。); fclose(fp);void delete()/*找到并删除*/ int m,k=0; long offset1; char namekey8; struct info one; 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%sn,one.name,one.num,one.tel,one.addr); if(
13、!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%-50sn,); else printf(n对不起,信息簿中没有此人的记录。);fclose(fp);此系统由 - 职工信息管理系统 -请输入
14、职工信息簿名:职工信息簿1请输入姓名、工号、电话号码及住址(相邻两信息之间用空格分开并以0结束)城 00001 18 安康睿 00002 18 大理0 - 职工信息管理系统 |=| | 1.职工信息的新建 | | 2.职工信息的查询 | | 3.职工信息的修改 | | 4.职工信息的删除 | | 5.职工信息的输出 | | 0.退出职工信息管理系统 | |=| 请选择操作0-51请输入添加的姓名、工号、电话号码及住址娇 00001 18 汉中操作完毕,请再次选择! - 职工信息管理系统 |=| | 1.职工信息的新建 | | 2.职工信息的查询 | | 3.职工信息的修改 | | 4.职工信息
15、的删除 | | 5.职工信息的输出 | | 0.退出职工信息管理系统 | |=| 请选择操作0-52请输入姓名: 娇已查到,记录为:娇 00001 189 21 汉中操作完毕,请再次选择! - 职工信息管理系统 |=| | 1.职工信息的新建 | | 2.职工信息的查询 | | 3.职工信息的修改 | | 4.职工信息的删除 | | 5.职工信息的输出 | | 0.退出职工信息管理系统 | |=| 请选择操作0-53请输入姓名: 成对不起,信息簿中没有此人的记录。操作完毕,请再次选择! - 职工信息管理系统 |=| | 1.职工信息的新建 | | 2.职工信息的查询 | | 3.职工信息的修改
16、 | | 4.职工信息的删除 | | 5.职工信息的输出 | | 0.退出职工信息管理系统 | |=| 请选择操作0-5城请输入姓名:已查到,记录为:城 00001 18 安康请输入新姓名、工号、电话号码及住址: 成 00001 18 安康92操作完毕,请再次选择! - 职工信息管理系统 |=| | 1.职工信息的新建 | | 2.职工信息的查询 | | 3.职工信息的修改 | | 4.职工信息的删除 | | 5.职工信息的输出 | | 0.退出职工信息管理系统 | |=| 请选择操作0-54请输入姓名: 成已查到,记录为成 00001 18 安康确实要删除,按1;不删除,按0:1操作完毕,请
17、再次选择! - 职工信息管理系统 |=| | 1.职工信息的新建 | | 2.职工信息的查询 | | 3.职工信息的修改 | | 4.职工信息的删除 | | 5.职工信息的输出 | | 0.退出职工信息管理系统 | |=| 请选择操作0-55 职工信息簿姓名 工号 电话号码 住址 睿 00002 18 大理 娇 00001 18 汉中操作完毕,请再次选择! - 职工信息管理系统 |=| | 1.职工信息的新建 | | 2.职工信息的查询 | | 3.职工信息的修改 | | 4.职工信息的删除 | | 5.职工信息的输出 | | 0.退出职工信息管理系统 | |=| 请选择操作0-50 Press any key to continue
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1