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 + -
显示快捷键?