1、青岛理工大学C 语言程序设计 题目 职工考勤管理程序 指导教师: 姓名: 学号: 班级: 专业: 计算机工程 地点: 计算机工程学院机房 时间: 2014.6.30 至 2014.7.4 一、内容此系统以对职工考勤为背景,提供对职工信息、上下班时间的录入、显示、查询、删除等功能。具体功能实现如下:1、 职工信息新建:实现职工工号、姓名、顺序号、上下班时间的录入功能,并能将其以文件形式加以保存。2、 考勤信息浏览:实现对全体职工所投的的考勤信息的浏览功能。3、 查询功能:实现按工号或姓名查询职工一周的上下班时间的功能。4、 删除功能:实现对职工考勤信息的删除管理。5、 系统以菜单方式工作,界面清
2、晰,易于操作。二、上机环境操作系统:windows xp/8.1开发工具:vc6.0三、函数调用关系图四、各函数功能说明对每个函数功能加以说明,说明该函数主要实现了什么内容。例如:1 main() 主函数2. void input(); 录入函数3. void display(); 显示函数4. void search0(); 查找函数5. void del(); 删除函数五、算法描述或流程图(或者进行描述,或者绘出流程图,例子见主函数录入函数 input()显示函数 display()查询函数 search0()删除函数 del()下)主函数 欢迎界面程序主菜单输入要选择的选项前的序号,给
3、x 赋值 Switch()Case 条件Case1 Case2 Case3 Case4 Case5 DefultInput() Display() Search0() Del() Exit()录入函数定义局部变量 i,x打开文件 打不开文件(x!=n)Do-while 循环Scanf 输入职工信息进入结构Fwrite 把输入的职工信息写入文件 输入结束标记 x(是 n 就结束,否则继续输入) ,判断是否跳出循环输出“打不开文件”显示函数定义局部变量 i打开文件 Fseek 查询文件的末尾,计算 nRewind 将指针指向文件开头i#include#include#include /头文件声明#
4、define N 50void input();void display();void search();void del(); /定义函数struct worker /结构体变量声明char no10;char name10;int number;char go14;char back14;struct worker flN; /定义结构体数组int n;int main()int x;char ch;doprintf(“nttt=nttttnnnn“);printf(“ 欢迎使用职工考勤管理系统 nn“);printf(“n 编程者: nnn“);printf(“ *按任意键继续*nnn“
5、);ch=getch();while(!ch);system(“cls“);dohaha:printf(“ -n“);printf(“ 菜单 n“);printf(“ _nn“);printf(“tttt1.录入职工考勤信息n“);printf(“tttt2.显示职工考勤信息n“);printf(“tttt3.查找职工考勤信息n“);printf(“tttt4.删除职工考勤信息n“);printf(“tttt5.退出并保存n“);printf(“请输入要选择选项前的序号:“);scanf(“%d“,getchar();system(“cls“);switch(x)case 1:input();
6、break;case 2:display();break;case 3:search();break;case 4:del();break;case 5:exit(0);default:goto haha;while(1);return 0; void input() /录入函数int i=0;char ch;FILE *fp; /定义 FLIe 文件操作指针if(fp=fopen(“C:职工考勤信息管理 .txt“,“ab+“)=NULL)if(fp=fopen(“C:职工考勤信息管理 .txt“,“wb+“)=NULL) printf(“不能建立文件!n“);exit(0);printf(
7、“nttt 输入职工考勤信息 nn“);doprintf(“ 输入格式: 职工号t 姓名t 顺序数t 上班时间t 下班时间n“);printf(“考勤信息录入:“);scanf(“%s%s%d%s%s“,fli.no,fli.name,fwrite( /将结构体数组内容内容写到文件中printf(“按回车键继续输入,按 N 停止输入:n“);printf(“n“);getchar();ch=getch();i+;while(ch!=nfclose(fp);n=i;system(“cls“);void display() /显示函数int i;char ch;FILE *fp;if(fp=fop
8、en(“C:职工考勤信息管理 .txt“,“rb+“)=NULL)printf(“不能打开文件!n“);exit(1); fseek(fp,0,2); /将文件指针移到文件尾n=ftell(fp)/sizeof(struct worker);doprintf(“n“);printf(“ttt 考勤信息 n“);printf(“ttt nn“);printf(“tt 职工号t 姓名t 顺序数t 上班时间t 下班时间n“);rewind(fp);for(i=0;i不能创建文件n“);exit(0);fseek(fp,0,2);n=ftell(fp)/sizeof(struct worker);fc
9、lose(fp);fp=fopen(“C:职工考勤信息管理.txt“,“wb“);printf(“n“);printf(“ttt 考勤信息删除n“);printf(“tttnn“);printf(“ttt1.按职工号删除n“);printf(“ttt2.按姓名删除n“);printf(“ttt3.按上班时间删除n“);printf(“ttt4.按下班时间删除n“);printf(“ttt 选择功能选项(输入功能前的数字) nn“);printf(“nttt“);scanf(“%d“, getchar(); /存放回车符printf(“请输入删除职工的具体条件:“);scanf(“%s“,m);
10、 /输入的具体条件存入 m 数组getchar();system(“cls“);printf(“ttt n“);printf(“ 职工信息删除成功n“);printf(“ttt n“);printf(“其他职工信息有:n“);printf(“ttt n“);printf(“t=n“);printf(“t 职工号t 姓名t 顺序数t 上班时间t 下班时间n “);for(i=0;in;i+)switch(l)case 1: strcpy(st,fli.no);break;case 2: strcpy(st,fli.name);break;case 3: strcpy(st,fli.go);break;case 4: strcpy(st,fli.back);break;default:printf(“ 选择错误 n“);break;if(strcmp(m,st)!=0) /查找到要删除的信息j=i;fwrite( /不要删除的信息写回文件printf(“tt%st%st%dt%st%sn“,flj.no,flj.name,flj.number,flj.go,flj.back);/能帮助观察是否已经删掉了要删的信息printf(“t=n“);fclose(fp);getchar(); /存放回车符system(“cls“);