kechengsheji.cpp

来自「C语言相关程序」· C++ 代码 · 共 198 行

CPP
198
字号
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<iostream.h>
#include<iomanip.h>
#define TRUE 1

struct personnel
{
	char name[40];
	int agnumb;
	double height;
	char SEX[5];
	char IDENTIFIER[25];
	char BIRTHDAY[50];
	char ADDRESS[50];
	int AGE;
};
FILE *fptr;
struct personnel agent[50];
int n=0;
char numstr[40];

main()
{
	void newname(void);//录入
	void listall(void);//输出
	void wfile(void);//写入文件
	void rfile(void);//统计
	void modify(void);//修改
	void enquiry(void);//查询
	char ch;
	cout<<"                                 老年人管理系统                       "<<endl;
	while(TRUE)
	{
		
		cout<<"n:录入 l:输出  w:写入文件  r:统计  m: 修改  e:查询"<<endl;
		ch=getchar(); 
		switch(ch)
		{
		case'n':
		case'N':
			newname(); break;
		case'l':
		case'L':
			listall(); break;
		case'w':
		case'W':
			wfile();   break;
        case'r':
		case'R':
			rfile();   break;
		case'm':
		case'M':
			modify();	break;
		case'e':
		case'E':
			enquiry();	break;
		defulat:
		puts("\n ENTER only selections listed");
		}
	}
}
//name函数用来增加一个新人员记录。
void newname(void)
{
	cout<<"Record "<<(n+1)<<endl;
	cout<<"输入名字:";
	cin>>agent[n].name;
    cout<<"输入编号 (三位数):";
	cin>>numstr;
	agent[n].agnumb=atoi(numstr);
	cout<<"输入身高:";
    cin>>numstr;
	agent[n].height=atof(numstr);
	cout<<"输入性别:";
	cin>>agent[n].SEX;
	cout<<"输入身份证编号:";
	cin>>agent[n].IDENTIFIER;
	cout<<"输入生日:";
	cin>>agent[n].BIRTHDAY;
	cout<<"输入地址:";
	cin>>agent[n].ADDRESS;	
	cout<<"输入年龄";
	cin>>numstr;
	agent[n].AGE=atoi(numstr);
	n++;
}
//list函数用来输出全部人员的记录。
void listall(void)
{
	int j;
	if(n<1)
		cout<<endl;
		cout<<"Empety list.";
		cout<<endl;
	for(j=0;j<n;j++)
	{
		printf("Record number %d:\n",j+1);	
		printf("Name:%s\n",agent[j].name);
		printf("Agent number:%03d\n",agent[j].agnumb);
		printf("Height:%4.2f\n",agent[j].height);
		printf("SEX:%s\n",agent[j].SEX);		
		printf("IDENTIFIER:%s\n",agent[j].IDENTIFIER);	
		printf("BIRTHDAY:%s\n",agent[j].BIRTHDAY);	
		printf("ADDRESS:%s\n",agent[j].ADDRESS);	
		printf("AGE:%d\n",agent[j].AGE);
	}
}
//wfile函数用来将全部人员记录写到磁盘文件agents.rec中.
void wfile(void)
{
	FILE *fptr;
	if(n<1)
	{
		printf("\n Can't write empty list.\n");
		return;
	}
	if ((fptr=fopen("agents.rec","wb"))==NULL)
	{
		printf("\nCan't open file agents.rec\n");
	}
		else
	{
	fwrite(agent,sizeof(agent[0]),n,fptr);
	fclose(fptr);
	printf("\nFile of %d records written.\n",n);
	}
}
//rfile函数用来从agents.rec函数中将人员记录到数组agent中.
void rfile(void)
{
	FILE *fptr;
	if((fptr=fopen("agents.rec","rb"))==NULL)
		printf("\nCan't open file agents.rec\n");
	else
	{
		while(fread(&agent[n],sizeof(agent[n]),1,fptr)==1)
		n++;
		fclose(fptr);
		printf("\nFile read.total agents is now %d. ",n);
	}
}
void modify(void)//修改
{
	int i;
	cout<<"please input the record number:";
	cin>>i;
	i--;
	cout<<"输入名字:";
	cin>>agent[i].name;
    cout<<"输入编号 (三位数):";
	cin>>numstr;
	agent[i].agnumb=atoi(numstr);
	cout<<"输入身高:";
    cin>>numstr;
	agent[i].height=atof(numstr);
	cout<<"输入性别:";
	cin>>agent[i].SEX;
	cout<<"输入身份证编号:";
	cin>>agent[i].IDENTIFIER;
	cout<<"输入生日:";
	cin>>agent[i].BIRTHDAY;
	cout<<"输入地址:";
	cin>>agent[i].ADDRESS;	
	cout<<"输入年龄";
	cin>>numstr;
	agent[i].AGE=atoi(numstr);
}
void enquiry(void)// 查询
{
	int recno;
	long int offset;
	if((fptr=fopen("agents.rec","rb"))==NULL)
	{
		printf("can't open file agents.rec");
		exit(0);
	}
	printf("enter record number:");
	scanf("%d",&recno);
	offset=(recno-1)*sizeof(agent);
	if(fseek(fptr,offset,0)!=0)
	{
		printf("can't move pointer there.");
		exit(0);
	}
	fread(&agent,sizeof(agent),1,fptr);
	printf("\n Name:%s\n",agent[recno].name);
	printf("\n number:%03d\n",agent[recno].agnumb);
	printf("\n Height:%4.2f\n",agent[recno].height);
	printf("\n SEX:%s\n",agent[recno].SEX);		
	printf("\n IDENTIFIER:%s\n",agent[recno].IDENTIFIER);	
	printf("\n BIRTHDAY:%s\n",agent[recno].BIRTHDAY);	
	printf("\n ADDRESS:%s\n",agent[recno].ADDRESS);	
	printf("\n AGE:%03d\n",agent[recno].AGE);
	fclose(fptr);
	
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?