设计内容与要求
1.内容描述:
对职工信息进行管理,职工信息包括工号、姓名、性别、年龄、学历、工资、住址、电话(职工号不重复)
2.基本要求:
(1) 系统以菜单的方式工作。
(2) 职工信息录入功能(职工信息用文件保存)。
(3) 输出职工信息、浏览职工信息功能。
(4) 查询和排序功能:(至少一种查询方式),如按工资查询、按学历查询。
(5) 职工信息删除、修改功能(任选项)。
3.源码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
struct worker
{
char ID[20];//工号
char name[20];//姓名
char sex[5];//性别
char age[20];//生日
char edu[20];//学历
char position[20];//职务
char wage[10];//工资
char address[100];//住址
char tel[15];//电话
}work[1000];
int n ;
//文件读写模块
void read()//读入数据,用于文件描述符对应的文件中读取数据
{
FILE *fp; //FILE *fp;变量类型声明。声明 fp 是 FILE型指针,用于指向 FILE类型(文件结构)文件流指针
//文件流 -- 排成一队,有先后次序的输入(或输出)一串数据,驻留并通过输入输出缓冲区,进出程序。如同水流般地流入或流出。它来自文件或写入文件。
int i = 0;
if( (fp = fopen("d:\\date.txt","r")) == NULL ) fopen意义是在当前目录下打开文件,只允许进行“读”操作,并使fp指向该文件。
{
printf("请在d盘根目录下新建一个文本文件,文件名为date\n\n\n");
system("pause");
system("cls");
return ;
}
fscanf(fp,"%d\n",&n); //从一个流中执行格式化输入,fscanf遇到空格和换行时结束,注意空格时也结束。
// 第一个参数是文件指针,指向要从该文件中将数据读出,第二个参数是格式字符串,
//就像scanf("%s %s\n"); 的一样,第三个参数是输入列表,会将文件中的数据保存到输入列表中去。
while(i < n)
{
fscanf(fp,"%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n",work[i].ID,work[i].name,work[i].sex,work[i].age,work[i].edu,work[i].position,work[i].wage,work[i].address,work[i].tel);
i ++;
}
fclose(fp); 如果流成功关闭,fclose 返回 0, 而o则是退出的意思,即回到职工信息管理系统选项界面。
}
void write()//写入数据
{
FILE *fp;
int i = 0;
if( (fp = fopen("d:\\date.txt","w")) == NULL )
{
printf("无法打开文件!\n");
return ;
}
fprintf(fp,"%d\n",n); //fprintf(文件指针,格式字符串,输出列表);
while(i < n)
{
fprintf(fp,"%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n",work[i].ID,work[i].name,work[i].sex,work[i].age,work[i].edu,work[i].position,work[i].wage,work[i].address,work[i].tel);
i ++;
}
fclose(fp);
}
//输入模块
void input()// 从键盘输入
{
int i;
int flag;//标记工号是否已存在
char c;//指令Y?N
read();//输入数据前先将文件中原有的数据读入
do
{
flag = 0;
printf("\t\t请输入职工的工号: \n\t\t");
scanf("%s",work[n].ID);
for(i = 0 ; i < n ; i ++)
{
if(strcmp(work[i].ID,work[n].ID) == 0)
{
flag = 1;