📄 prisoner.c
字号:
}
p->next=NULL;
fclose(fp);
system("cls");
printf("\t\t请输入你要查找并删除的劳教人员的号码:");
scanf("%s",number1);
p=head;
while(p!=NULL)
{
if(strcmp(p->number,number1)==0)
{
flag=1;
printf("\t\t找到了,按任意键进行删除...\n\t\t按n或N退回主菜单");
printf("\n_______________________________________________________________\n");
printf("号码:%s\t\t姓名: %s\t\t性别:%s\n出狱时间: %s\t入狱时间: %s\t类型:%s\n",p->number,
p->name,p->sex,p->intime,p->outtime,p->style);
printf("_______________________________________________________________\n");
c=getch();
while(c=='n'||c=='N')
goto loop;
if(p==head)
{ head=head->next;printf("\n\t\t删除成功!按任意键退回主菜单。");}
else
{ q->next=p->next;printf("\n\t\t删除成功!按任意键退回主菜单。");}
break;
}
q=p;
p=p->next;
}
if(!flag)
printf("\t\t没找你所要删除的资料,请按任意键退出。");
else
{
fp=fopen("prisoner","wb");
while(head!=NULL)
{
fseek(fp,1L*sizeof(prisoner),1);
fwrite(head,sizeof(prisoner),1,fp);
head=head->next;
}
}
getch();
loop:fclose(fp);
}
void scanall()
{
FILE *fp;
int i=0,j=0,sum=0;
char c;
prisoner *head,*p,*q;
fp=fopen("prisoner","rb");
if(fp==NULL)
{
system("cls");printf("文件打开错误!");
getch();
fclose(fp);
return;
}
head=p=q=(prisoner*)malloc(sizeof(prisoner));
fread(p,sizeof(prisoner),1,fp);
while(!feof(fp))
{
q=p;
p=(prisoner*)malloc(sizeof(prisoner));
fread(p,sizeof(prisoner),1,fp);
q->next=p;
}
p->next=NULL;
fclose(fp);
system("cls");
printf("\n\n\t\t以下是本系统所有劳教人员的信息:\n\n\n");
p=head;
while(p!=NULL)
{sum++;p=p->next;}
p=head;
while(p!=NULL)
{
j++;
if(p->number[0]<='9'&&p->number[0]>='0')//解决输出乱码问题
{
printf("_______________________________________________________________\n");
printf("号码:%s\t\t姓名: %s\t\t性别:%s\n出狱时间: %s\t入狱时间: %s\t类型:%s\n",p->number,
p->name,p->sex,p->intime,p->outtime,p->style);
printf("_______________________________________________________________\n");
printf("\n\n");
}
p=p->next;
}
printf("若浏览完毕请按任意键退回主菜单,按降序排列浏览点“d”键,按升序浏览点“r”。");
c=getch();
if(c=='r'||c=='R'||c=='d'||c=='D')
sort(c);
fclose(fp);
}
void code()//登陆界面
{
char code[12]={"123"},icode[12];
FILE *fp;
system("cls");
printf("\n\n\n\n\n\n\n\n\t 欢迎查询劳教人员的资料,首先请输入你的登陆帐号:\n\n\n\t\t登陆帐号:");
scanf("%s",icode);
fp=fopen("code.txt","rb");
if(fp==NULL)
{system("cls");printf("错误!");
getch();
fclose(fp);return;}
else
while(!feof(fp))
{
fread(code,sizeof(code),1,fp);
if(strcmp(code,icode)==0)
break;
else {printf("\t 你登陆的帐号有误,恕不能登陆\n\n\n\n\n");exit(0);}
}
}
void codechange()//登录号码修改
{
char c;
char code[12]={"123"},icode[12];
FILE *fp;
system("cls");
printf("请输入原来的登陆帐号:\n");
scanf("%s",icode);
fp=fopen("code.txt","rb");
if(fp==NULL)
{system("cls");printf("文件打开错误!");
getch();
fclose(fp);return;}
else
while(!feof(fp))
{
fread(code,sizeof(code),1,fp);
if(strcmp(code,icode)==0)
{printf("你输入的登陆帐号正确,请继续");break;}
else {printf("你输入的登陆帐号有误,请按任意键退回主菜单");getch();goto loop;}
}
printf("\n确定要更改登陆帐号吗?(不确定请点击n键或N键,确定请按其它任意键)!\n");
c=getch();
if(c=='n'||c=='N')
goto loop;
else
fp=fopen("code.txt","rb");
if(fp==NULL) fp=fopen("code.txt","wb");
else{fclose(fp);fp=fopen("code.txt","wb");}
{printf("请修改,帐号长度最高只到12位\n新帐号:");}
koop:scanf("%s",icode);
printf("请再次输入\n新帐号:");
scanf("%s",code);
if(strcmp(code,icode)==0)
{fseek(fp,-1L*sizeof(code),1);fwrite(code,sizeof(code),1,fp);
printf("登陆帐号修改成功,请按任意键返回主界面。");getch();}
if(strcmp(code,icode)<0||strcmp(code,icode)>0)
{system("cls");printf("\t\t两次输入不一样,请再次输入\n新帐号:");
goto koop;}
loop:fclose(fp);
}
void menu()
{
char ans;
while(1)
{
system("cls");
printf("# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n");
printf("\n");
printf(" 监狱劳教人员信息管理系统 \n");
printf("\n");
printf(" 欢迎使用... \n");
printf("\n");
printf("\n");
printf(" 0.【添加新劳教人员】 1.【查询劳教人员的资料】 \n");
printf(" \n");
printf(" 2.【删除劳教人员的资料】 3.【浏览全体劳教人员的资料】 \n");
printf(" \n");
printf(" 4.【修改登陆帐号】 5.【退出管理系统 】 \n");
printf("\n");
printf("\n");
printf("\n");
printf("# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n");
printf("\n 你要做什么?请选择(1. 2. 3. 4. 5):");
ans=getch();
if(ans<='5'&&ans>='0')
{
switch(ans)
{
case '0':add();break;
case '1':consult();break;
case '2':delet();break;
case '3':scanall();break;
case '4':codechange();break;
case '5':goodbye();exit(0);
}
}
else {printf("\n 选项只能是“1”,“2”,“3”,“4”,“5”\n\t\t按任意键继续");ans=getch();}
}
}
void goodbye()//退出界面
{
system("cls");
printf("*****************************************************************************\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf(" ********************************************************* \n");
printf(" 谢谢使用,希望你对我们提供的信息感到满意。请按任意键退出 \n");
printf(" ********************************************************* \n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("*****************************************************************************\n");
printf("\n\n\n\n\n");
}
int judge(char p[])
{
FILE *fp;
prisoner consultprisoner;
int flag=0;
fp=fopen("prisoner","rb");
if(fp==NULL)
{
system("cls");
printf("文件打开错误!");
getch();
fclose(fp);
return;
}
else
while(!feof(fp))
{
fread(&consultprisoner,sizeof(prisoner),1,fp);
if(strcmp(consultprisoner.number,p)==0)
flag=1;
}
if((p[0]>'9'||p[0]<'0')||(p[1]>'9'||p[1]<'0')||(p[2]>'9'||p[2]<'0'))//保证号码输入格式正确
flag=1;
return(flag);
fclose(fp);
}
int judge1(char p[])//判断添加资料中出现的日期格式是否出错问题
{
int i,flag=0;
for(i=0;i<=3;i++)
if(p[i]<'0'||p[i]>'9')//判断年份的格式
flag=1;
if(p[i++]!='.')//判断年份与月份之间有无'.'
flag=1;
for(;i<=6;i++)
if(p[i]<'0'||p[i]>'9')//判断月份格式
flag=1;
if(p[i++]!='.')//判断月份与日子之间有无'.'
flag=1;
for(;i<=9;i++)//判断日子的格式
if(p[i]<'0'||p[i]>'9')
flag=1;
return(flag);
}
int judge2(char p[])//判断添加资料中性别格式是否出错问题
{
int flag=1;
if(strcmp(p,"M")==0||strcmp(p,"F")==0)
flag=0;
return(flag);
}
int judge3(char p[])//判断添加资料中出现的犯人罪行程度格式是否出错问题
{
int flag=1;
if(strcmp(p,"M")==0||strcmp(p,"H")==0||strcmp(p,"L")==0)
flag=0;
return(flag);
}
void sort(char c)//升序或降序
{
FILE *fp;
int i=0,Sum,sum=0,j=0,k;
char str[100][12],temp[12],(*pstr)[12];
prisoner *head,*p,*q;
pstr=str;
fp=fopen("prisoner","rb");
if(fp==NULL)
{
system("cls");printf("文件打开错误!");
getch();
fclose(fp);
return;
}
head=p=q=(prisoner*)malloc(sizeof(prisoner));
fread(p,sizeof(prisoner),1,fp);
while(!feof(fp))
{
q=p;
p=(prisoner*)malloc(sizeof(prisoner));
fread(p,sizeof(prisoner),1,fp);
q->next=p;
}
p->next=NULL;
fclose(fp);
system("cls");
p=head;
while(p!=NULL)
{sum++;p=p->next;}//计算所有记录条数
p=head;
while(p!=NULL)
{
if(p->number[0]<='9'&&p->number[0]>='0')//解决输出乱码问题
{
strcpy(*(pstr+i),p->number);
i++;
}
p=p->next;
}
p=head;
Sum=i;//得出正常记录条数
for(i=0;i<Sum-1;i++)
{k=i;
for(j=i+1;j<Sum;j++)
{if(strcmp(*(pstr+i),*(pstr+j))>0)
k=j;
if(k!=i)
{
strcpy(temp,*(pstr+i));
strcpy(*(pstr+i),*(pstr+k));
strcpy(*(pstr+k),temp);
}
}
}
if(c=='r'||c=='R')//升序排列
for(i=0;i<Sum;i++)
{
while(p!=NULL)
{
if(strcmp(p->number,*(pstr+i))==0)//同值输出
{
printf("_______________________________________________________________\n");
printf("号码:%s\t\t姓名: %s\t\t性别:%s\n出狱时间: %s\t入狱时间: %s\t类型:%s\n",p->number,
p->name,p->sex,p->intime,p->outtime,p->style);
printf("_______________________________________________________________\n");
printf("\n\n");
}
p=p->next;
}
p=head;
}
if(c=='d'||c=='D')//降序排列
for(i=Sum-1;i>=0;i--)
{
while(p!=NULL)
{
if(strcmp(p->number,*(pstr+i))==0)//同值输出
{
printf("_______________________________________________________________\n");
printf("号码:%s\t\t姓名: %s\t\t性别:%s\n出狱时间: %s\t入狱时间: %s\t类型:%s\n",p->number,
p->name,p->sex,p->intime,p->outtime,p->style);
printf("_______________________________________________________________\n");
printf("\n\n");
}
p=p->next;
}
p=head;
}
printf("浏览完毕请按任意键退出。");
getch();
fclose(fp);
}
int judge4(char p[])//中途退出判断
{
int flag=0;
if(p[0]=='-')
flag=1;
return(flag);
}
void cal(char *p,char *q)//计算犯人的囚禁时间
{
int i,j,years=0,months=0,days=0,n=1;
for(i=3;i>=0;i--)
{
years+=n*(*(p+i)-*(q+i));
n*=10;
}
months+=10*(*(p+5)-*(q+5));
months+=(*(p+6)-*(q+6));
days+=10*(*(p+8)-*(q+8));
days+=(*(p+9)-*(q+9));
printf("\n负号为倒减");
printf("\n该劳教人员服刑时间为%d年,%d月,%d日。\n点任意键退出",years,months,days);
getch();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -