📄 prisoner.c
字号:
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
typedef struct prisonerlist//建立监狱管理系统的数据库
{
char number[12];//号码
char name[12];//姓名
char sex[10];//性别
char intime[12];//出狱时间
char outtime[12];//入狱时间
char style[12];//犯罪类型
struct prisonerlist *next;
}prisoner;
void add();//实现增加新犯人的资料
void consult();//实现查询犯人的资料
void delet();//实现删除犯人的资料的主界面
void scanall();//浏览本系统所有犯人的资料
void consultnumber();//以号码为索引点查询
void consultname();//以名字为索引点查询
void consultintime();//以出狱时间为索引点查询
void consultouttime();//以入狱时间为索引点查询
void consultstyle();//以犯罪类型为索引点查询
void code();//实现系统登入的帐号
void codechange();//帐号修改功能
void menu();//系统的主菜单
void goodbye();//退出系统
int judge(char p[]);//添加犯人资料的时候判断是否号码重号
int judge1(char p[]);//判断添加资料中出现的日期格式是否出错问题
int judge2(char p[]);//判断添加资料中出现的性别格式是否出错问题
int judge3(char p[]);//判断添加资料中出现的犯人罪行程度格式是否出错问题
int judge4(char p[]);//按-中途退出
void sort(char c);//按号码升序浏览
void cal(char *p,char *q);//计算犯人的囚禁时间
main()
{
printf("\n\n\n\n\n\n\n\n 本劳教人员信息管理系统,试验阶段,有不完善之处,还请颜老师以及各位同学不吝赐教。\n\n\n\t\t接下来请按任意键进入... ...");
getch();
code();
menu();
}
void add()//实现资料添加
{
int flag=1,i=0;
char c;
FILE *fp;
prisoner consultprisoner;
system("cls");
fp=fopen("prisoner","rb");
while(flag)
{
if(fp==NULL)
fp=fopen("prisoner","wb");
else
{
fclose(fp);
fp=fopen("prisoner","ab");
}
printf("\t\t\t输入新犯人的号码:");//输入新犯人的号码
look1: scanf("%s",&consultprisoner.number);//look1指向点
if(judge4(consultprisoner.number))//按-键中途退出
goto look;
if(judge(consultprisoner.number))//判断号码是否与已存在的号码耦合,以及号码格式是否正确
{
system("cls");
system("cls");printf("\t\t你所写的号码已存在或输入格式不符,请再次输入!\n\t\t\t\t");
goto look1;
}
//////////////////////////////////////////////////////////////////////////////////////////
printf("\n\t\t\t输入新犯人的姓名:");//输入新犯人的姓名
scanf("%s",&consultprisoner.name);
if(judge4(consultprisoner.name))//按Enter键中途退出
goto look;
//////////////////////////////////////////////////////////////////////////////////////////
printf("\n\t\t\t输入新犯人的性别:");//输入新犯人的性别
look4: scanf("%s",&consultprisoner.sex);//look4指向点
if(judge4(consultprisoner.sex))//按-键中途退出
goto look;
if(judge2(consultprisoner.sex))//判断性别格式是否正确
{
system("cls");printf("\t\t你所写格式不对(格式应为女:F,男:M),请再次输入!\n\t\t\t\t");
goto look4;
}
//////////////////////////////////////////////////////////////////////////////////////////
printf("\n\t\t\t输入新犯人的入狱时间:");//输入新犯人的入狱时间
look2: scanf("%s",&consultprisoner.intime);//look2指向点
if(judge4(consultprisoner.intime))//按-键中途退出
goto look;
if(judge1(consultprisoner.intime))//判断号码是否与已存在的号码耦合,以及号码格式是否正确
{
system("cls");printf("\t\t你所写的日期不符和格式(格式应为****.**.**),请再次输入!\n\t\t\t\t");
goto look2;
}
//////////////////////////////////////////////////////////////////////////////////////////
printf("\n\t\t\t输入新犯人的出狱时间:");//输入新犯人的出狱时间
look3: scanf("%s",&consultprisoner.outtime);//look3指向点
if(judge4(consultprisoner.outtime))//按-键中途退出
goto look;
if(judge1(consultprisoner.outtime))//判断号码是否与已存在的号码耦合,以及号码格式是否正确
{
system("cls");printf("\t\t你所写的日期不符和格式(格式应为****.**.**),请再次输入!\n\t\t\t\t");
goto look3;
}
//////////////////////////////////////////////////////////////////////////////////////////
printf("\n\t\t\t输入新犯人的类型:");//输入新犯人的类型
look5: scanf("%s",&consultprisoner.style);//look5指向点
if(judge4(consultprisoner.style))//按-键中途退出
goto look;
if(judge3(consultprisoner.style))//判断罪行程度格式是否正确
{
system("cls");printf("\t\t你所写格式不对(格式应为重型:F,轻型:L,普通:M),请再次输入!\n\t\t\t\t");
goto look5;
}
//////////////////////////////////////////////////////////////////////////////////////////
fwrite(&consultprisoner,sizeof(prisoner),1,fp);//保存
i++;
system("cls");
printf("\n\n\n\n\n\t你已经添加了%d个新劳教人员的资料,是否继续增加其他劳教人员的信息?(y/n)",i);
if((c=getch())=='n'||c=='N')
flag=0;
system("cls");
fclose(fp);
}
printf("\t 你一共添加了%d个新劳教人员的资料,现在请按任意键返回主菜单。",i);
getch();
look:system("cls");//look指向点
}
void consult()////查询界面
{
char bns;
int flag=1;
while(flag)
{
system("cls");
printf("————————————————————————————————————————\n");
printf("# 0.【以号码查找】 1.【以姓名查找】 #\n");
printf("# 2.【以入狱时间查找】 3.【以出狱时间查找】 #\n");
printf("# 4.【以犯罪性质查找】 5.【退出】 #\n");
printf("————————————————————————————————————————\n");
printf("\t请选择你要以什么为查找点(0. 1. 2. 3. 4),还是退回主界面?(5):");
bns=getch();
switch(bns)
{
case'0':consultnumber();break;
case'1':consultname();break;
case'2':consultintime();break;
case'3':consultouttime();break;
case'4':consultstyle();break;
case'5':flag=0;
}
}
}
void consultnumber()//以号码查询
{
FILE *fp;
prisoner consultprisoner;
char number1[12],c;
int flag=0,i=0;
system("cls");
printf("\t\t请输入你要查找的劳教人员的号码:\n");
scanf("%s",number1);
printf("\t\t你要查找的劳教人员的号码为%s现在查找:\n",number1);
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,number1)==0)
{
system("cls");printf("\t\t找到相应劳教人员的资料:\n");
printf("--------------------------------------------------------------\n");
printf("号码:%s\n姓名:%s\n性别:%s\n出狱时间:%s\n入狱时间:%s\n类型:%s\n",
consultprisoner.number,consultprisoner.name,consultprisoner.sex,
consultprisoner.intime,consultprisoner.outtime,consultprisoner.style);
i++;
flag=1;
printf("\n\t查看完毕请按任意键返回查询界面,(点“g”可以进一步查看其服刑时间)。");//进一步查询劳教人员服刑时间
c=getch();
if(c=='g'||c=='G')
cal(consultprisoner.outtime,consultprisoner.intime);
}
}
if(flag==0)
{
system("cls");
printf("\t\t找不到相应的劳教人员的资料!\n");
printf("\t\t查找完毕.\n");
getch();
}
fclose(fp);
}
void consultname()//以名字查询
{
FILE *fp;
prisoner consultprisoner;
char number1[12],c;
int flag=0,i=0;
system("cls");
printf("\t\t请输入你要查找的劳教人员的姓名:\n");
scanf("%s",number1);
printf("\t\t你要查找的劳教人员的姓名为%s现在查找:\n",number1);
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.name,number1)==0)
{
system("cls");printf("\t\t找到相应劳教人员的资料%d:\n",i+1);
printf("--------------------------------------------------------------\n");
printf("号码:%s\n姓名:%s\n性别:%s\n出狱时间:%s\n入狱时间:%s\n类型:%s\n",
consultprisoner.number,consultprisoner.name,consultprisoner.sex,consultprisoner.intime,
consultprisoner.outtime,consultprisoner.style);
i++;
flag=1;
printf("\n\t查看完毕请按任意键返回查询界面,(点“g”可以进一步查看其服刑时间)。");//进一步查询劳教人员服刑时间
c=getch();
if(c=='g'||c=='G')
cal(consultprisoner.outtime,consultprisoner.intime);
}
}
if(flag==0)
{
system("cls");
printf("\t\t找不到相应的劳教人员的资料!\n");
printf("\t\t查找完毕.\n");
getch();
}
fclose(fp);
}
void consultintime()//以入狱时间查询
{
FILE *fp;
prisoner consultprisoner;
char number1[12],c;
int flag=0,i=0;
system("cls");
printf("\t\t请输入你要查找的劳教人员的入狱时间(例如:1999.12.14):\n");
scanf("%s",number1);
printf("\t\t你要查找的劳教人员的出狱时间为%s现在查找:\n",number1);
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.intime,number1)==0)
{
system("cls");printf("\t\t找到相应劳教人员的资料%d\n",i+1);
printf("--------------------------------------------------------------\n");
printf("号码:%s\n姓名:%s\n性别:%s\n出狱时间:%s\n入狱时间:%s\n类型:%s\n",
consultprisoner.number,consultprisoner.name,consultprisoner.sex,
consultprisoner.intime,consultprisoner.outtime,consultprisoner.style);
i++;
flag=1;
printf("\n\t查看完毕请按任意键返回查询界面,(点“g”可以进一步查看其服刑时间)。");//进一步查询劳教人员服刑时间
c=getch();
if(c=='g'||c=='G')
cal(consultprisoner.outtime,consultprisoner.intime);
}
}
if(flag==0)
{
system("cls");
printf("\t\t找不到相应的劳教人员的资料!\n");
printf("\t\t查找完毕.\n");
getch();
}
fclose(fp);
}
void consultouttime()//以出狱时间查询查询
{
FILE *fp;
prisoner consultprisoner;
char number1[12],c;
int flag=0,i=0;
system("cls");
printf("\t\t请输入你要查找的劳教人员的出狱时间(例如:2000.12.12):\n");
scanf("%s",number1);
printf("\t\t你要查找的劳教人员的出狱时间为%s现在查找:\n",number1);
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.outtime,number1)==0)
{
system("cls");printf("\t\t找到相应劳教人员的资料%d:\n",i+1);
printf("--------------------------------------------------------------\n");
printf("号码:%s\n姓名:%s\n性别:%s\n出狱时间:%s\n入狱时间:%s\n类型:%s\n",consultprisoner.number,
consultprisoner.name,consultprisoner.sex,consultprisoner.intime,consultprisoner.outtime,consultprisoner.style);
i++;
flag=1;
printf("\n\t查看完毕请按任意键返回查询界面,(点“g”可以进一步查看其服刑时间)。");//进一步查询劳教人员服刑时间
c=getch();
if(c=='g'||c=='G')
cal(consultprisoner.outtime,consultprisoner.intime);
}
}
if(flag==0)
{
system("cls");
printf("\t\t找不到相应的劳教人员的资料!\n");
printf("\t\t查找完毕.\n");
getch();
}
fclose(fp);
}
void consultstyle()//以犯罪性质查询
{
FILE *fp;
prisoner consultprisoner;
char number1[12],c;
int flag=0,i=0;
system("cls");
printf("\t 请输入你要查找的劳教人员的类型(例如:重刑:H、轻刑:L、普通:M,也就三种。):\n");
scanf("%s",number1);
printf("\t\t你要查找的劳教人员的类型为%s现在查找:\n",number1);
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.style,number1)==0)
{
system("cls");printf("\t\t找到相应劳教人员的资料%d:\n",i+1);
printf("--------------------------------------------------------------\n");
printf("号码:%s\n姓名:%s\n性别:%s\n出狱时间:%s\n入狱时间:%s\n类型:%s\n",
consultprisoner.number,consultprisoner.name,
consultprisoner.sex,consultprisoner.intime,consultprisoner.outtime,consultprisoner.style);
i++;
flag=1;
printf("\n\t查看完毕请按任意键返回查询界面,(点“g”可以进一步查看其服刑时间)。");//进一步查询劳教人员服刑时间
c=getch();
if(c=='g'||c=='G')
cal(consultprisoner.outtime,consultprisoner.intime);
}
}
if(flag==0)
{
system("cls");
printf("\t\t找不到相应的劳教人员的资料!\n");
printf("\t\t查找完毕.\n");
getch();
}
fclose(fp);
}
void delet()//删除
{
FILE *fp;
char c;
prisoner *head,*p,*q;
char number1[20];
int flag=0;
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;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -