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

📄 prisoner.c

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