⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 prisoner.c

📁 监狱里的劳教人员数量相当大
💻 C
📖 第 1 页 / 共 2 页
字号:
			}
			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 + -