职工信息管理C语言

数据结构:

struct staff{
	int num; // 职工号 
	char name[9]; // 姓名 
	char date[10]; // 出生年月 
	int age; // 年龄 
	char qua[9];//qualification学历
	float sal;//salary
	char ads[99];//address
	long phone;
}stf[99];

代码:

//职工号 姓名 出生年月 年龄 学历 工资 住址 电话
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define STF stf[i].num,stf[i].name,stf[i].date,stf[i].age,stf[i].qua,stf[i].sal,stf[i].ads,stf[i].phone
#define LEN sizeof(struct staff)
struct staff{
	int num; // 职工号 
	char name[9]; // 姓名 
	char date[10]; // 出生年月 
	int age; // 年龄 
	char qua[9];//qualification学历
	float sal;//salary
	char ads[99];//address
	long phone;
}stf[99];
void menu();//菜单 
void in();//录入 
void browse();//浏览 
void search();//查询 
void _delete();//删除 
void modify();//修改 
int main()
{
	int select;
	system("color f0");//白底黑字 
	while(true)
	{
		system("cls");
		menu();
		scanf("%d",&select);
		switch(select)
		{
			case 1:in();break;
			case 2:browse();break;
			case 3:search();break;
			case 4:_delete();break;
			case 5:modify();break;
			case 0:exit(0);break;
		}
	}
	return 0;
}
void menu() 
{
	puts("\t职工信息管理系统\n"); 
	puts("\t1.信息录入"); 
	puts("\t2.信息浏览"); 
	puts("\t3.信息查询"); 
	puts("\t4.信息删除"); 
	puts("\t5.信息修改"); 
	puts("\t0.退出"); 
}
void in()
{
	FILE *fp;
	int n=0;
	if((fp=fopen("a.txt","a+"))==NULL){
		puts("error");
		return;
	}
	while(!feof(fp)){
		if((fread(&stf[n],LEN,1,fp)))
			n++;
	}
	puts("职工号:");
	scanf("%d",&stf[n].num);
	for(int i=0;i<n;i++){
		if(stf[n].num==stf[i].num){
			puts("存在");
			fclose(fp); 
			return; 
		}
	}
	puts("姓名");
	scanf("%s",stf[n].name);
	puts("出生年月");
	scanf("%s",stf[n].date);
	puts("年龄");
	scanf("%d",&stf[n].age);
	puts("学历");
	scanf("%s",stf[n].qua);
	puts("工资");
	scanf("%f",&stf[n].sal);
	puts("住址");
	scanf("%s",stf[n].ads);
	puts("电话");
	scanf("%ld",&stf[n].phone);
	fwrite(&stf[n],LEN,1,fp);
	fclose(fp);
} 
void browse()
{
	FILE *fp;
	int n=0;
	if((fp=fopen("a.txt","r"))==NULL){
		puts("error");
		return;
	}
	while(!feof(fp)){
		if((fread(&stf[n],LEN,1,fp)))
			n++;
	}
	puts("职工号 姓名 出生年月 年龄 学历 工资 住址 电话");
	if(n==0)
	{
		puts("无信息");
		system("pause");
		return;
	}
	for (int i=0;i<n;i++){
		printf("%-6d %s %s %d %s %.2f %s %ld\n",STF);
	}
	system("pause");
}
void search()
{
	FILE *fp;
	int n=0;
	if((fp=fopen("a.txt","r"))==NULL){
		puts("error");
		return;
	}
	while(!feof(fp)){
		if((fread(&stf[n],LEN,1,fp)))
			n++;
	}
	fclose(fp); 
	char dx[99];
	puts("输入查找的职工号或者姓名:"); 
	scanf("%s",dx);
	for(int i=0;i<n;i++)
	{
		if(atoi(dx)==stf[i].num || strcmp(dx,stf[i].name)==0){
			printf("%-9d %s %s %d %s %.2f %s %ld\n",STF);
			system("pause");return;
		}
	}
	puts("不存在");system("pause");
	
}
void _delete()
{
	FILE *fp;
	int n=0;
	if((fp=fopen("a.txt","r"))==NULL){
		puts("error");
		return;
	}
	while(!feof(fp)){
		if((fread(&stf[n],LEN,1,fp)))
			n++;
	}
	fclose(fp);
	char dx[99];
	puts("输入删除的职工号或者姓名:"); 
	scanf("%s",dx);
	for(int i=0;i<n;i++)
	{
		if(atoi(dx)==stf[i].num || strcmp(dx,stf[i].name)==0){
			for(int j=i;i<n-1;i++)
				stf[i]=stf[i+1];
			n--;
			puts("ok");
		}
	}
	if((fp=fopen("a.txt","w"))==NULL)
	{
		puts("error");
		return;
	}
	for(int i=0;i<n;i++){
		fwrite(&stf[i],LEN,1,fp);
	}
	fclose(fp);
	system("pause");
} 
void modify()
{
	FILE *fp;
	int n=0;
	if((fp=fopen("a.txt","r"))==NULL){
		puts("error");
		return;
	}
	while(!feof(fp)){
		if((fread(&stf[n],LEN,1,fp)))
			n++;
	}
	fclose(fp);
	char dx[99];
	puts("输入修改的职工号:"); 
	scanf("%s",dx);
	getchar();
	for(int i=0;i<n;i++)
	{
		if(atoi(dx)==stf[i].num){ 
			puts("你要修改什么:");
			puts("职工号 姓名 出生年月 年龄 学历 工资 住址 电话");
			char  d[9];
			scanf("%s",d);
			getchar();
			if(strcmp(d,"职工号")==0)
				scanf("%d",&stf[i].num);
			else if(strcmp("姓名",d)==0)
				scanf("%s",stf[i].name);
			else if(strcmp("出生年月",d)==0)
				scanf("%s",stf[i].date);
			else if(strcmp("年龄",d)==0)
				scanf("%d",&stf[i].age);
			else if(strcmp("学历",d)==0)
				scanf("%s",stf[i].qua);
			else if(strcmp("工资",d)==0)
				scanf("%f",&stf[i].name);
			else if(strcmp("住址",d)==0)
				scanf("%s",stf[i].ads);
			else if(strcmp("电话",d)==0)
				scanf("%ld",&stf[i].phone);
			else{
				puts("输入错误");system("pause");return ;
			}
		}
	}	
	if((fp=fopen("a.txt","w"))==NULL)
	{
		puts("error");
		return;
	}
	for(int i=0;i<n;i++){
		fwrite(&stf[i],LEN,1,fp);
	}
	fclose(fp);
	system("pause");
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值