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

📄 shebeiguanli.c

📁 它是大一时用C语言编写的一个设备管理系统。实现的功能从注册新用户
💻 C
📖 第 1 页 / 共 2 页
字号:
#include <string.h>               //头文件
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

int m;
void zhuce_new();void denglu();  void jiemian();//函数声明
void  xiugai();  void insert();  void delet();     
void print_infor();  void print_all();  
void search();       void tongji();


//全局结构体数组
struct eq_infor                         //设备信息
{
	long num;                           //编号
	char name[20];                      //名称
	char sort[20];                      //类别
	char date[20];                      //购买日期
	char repairmen[20];                 //维护人
	char lab[20];                       //实验室
	char discount[20];                  //折旧率
	char factory[20];                   //生产商
	char tel[20];                       //故障维护电话
	char posun[20];                     //直接写破损耙费
	char yisun[20];                     //直接写遗损处理
}infor[100],del[1];    //infor[100]存放用户输入的数据
                    //del存放修改的数据

struct zhuce        //用户名和密码
{
	char name[20];
	char password[20];
}zhuce[100],check,ce,cha;    //注册用户用和登陆时验证用



main()   //主函数 
{
	int i;   
	printf("\n\n****@@@@****@@@@  欢迎登陆实验设备管理系统  @@@@****@@@@****\n\n");
	printf("\n        1 新用户注册                 2 登陆管理系统\n\n");
	printf("\n                      0 退出系统 \n\n");
    printf("\n\n****@@@@****@@@@  欢迎登陆实验设备管理系统  @@@@****@@@@****\n");
	printf("\n----请您输入需要服务的序号:\n");
	scanf("%d",&i);
	if(i<0||i>2)
	{
		printf("\n----您的输入不正确,请重新输入!\n");
		printf("\n----请您输入需要服务的序号:\n");
		scanf("%d",&i);
	}
	switch(i)
	{
	case 1:  zhuce_new(); break;//注册
	case 2: system("cls"); denglu();    break;//登陆
	case 0: exit(0);
	}
}



void zhuce_new()                 //注册新用户
{
  char password[20];             //接收用户密码
  int i=0,j=0,n;
  FILE *fp;
  printf("请输入你的用户名(长度必须在20个字符以内):\n");
  scanf("%s",check.name);
  fp=fopen("stu_list.txt","ab+");  //打开存放注册的数据的文本
  for(i=0;;i++)
  {
   fread(&zhuce[i],sizeof(struct zhuce),1,fp); //读文件
   if(strcmp(check.name,zhuce[i].name)==0)//检查用户名是否已存在
   {
	do
	{
       printf("\n该用户名已存存在,请重新输入:\n");
       scanf("%s",check.name);
	}while(strcmp(check.name,zhuce[i].name)==0);
   }
  if(feof(fp)) break;        //文件关闭,跳出循环
  }
  fclose(fp);	
		
  while((strlen(check.name)>20))        //用户名不要过长
  {
   printf("\n你所输入的用户名过长,重新输入:\n");
   scanf("%s",check.name);
   n=1;
  }
  while((strlen(check.name)==0))        //用户名不能为空
  {
   printf("\n用户名不能为空,请重新输入:\n");
   scanf("%s",check.name);
   n=1;
  }
  if(n!=1)
  {
   printf("请输入你的密码(长度在20个字符以内):\n");
   scanf("%s",check.password);
   printf("请在次输入你的密码:\n");
   scanf("%s",password);
  }
  while(strcmp(check.password,password)!=0)     //检查两次输入的密码是否相同
  {
   printf("\n你所输入的密码不一致,请重新输入你的密码:\n");
   scanf("%s",check.password);
   printf("\n请确认你的密码:\n");
   scanf("%s",password);
  }
   if(strcmp(check.password,password)==0)         //两次密码相同,注册成功
   {
   printf("\n注册成功!\n");                    
   fp=fopen("stu_list.txt","ab");       //打开文件      
   fwrite(&check,sizeof(struct zhuce),1,fp);  //写进文件
   fclose(fp);        //关闭文件
   printf("\n请选择你所需要的服务:1.进入管理系统  0.退出系统\n");
   scanf("%d",&j);               
   getchar();
  switch(j)
  {
   case 1 :jiemian();break;       //界面函数
   case 0 :exit(0);break;         //退出系统
  } 
  }
}


void denglu()               //登陆函数
{

	int i=0,j;
	FILE*fp;           //定义指针
    do
{
    printf("\n请输入用户名:\n");
	scanf("%s",cha.name);	
	printf("\n请输入密码:\n");
    scanf("%s",cha.password);
	fp=fopen("stu_list.txt","rb");        //打开存放注册的数据文本
	rewind(fp);
    
   do
   {
	  fread(&zhuce[i],sizeof(struct zhuce),1,fp);
      if(strcmp(zhuce[i].name,cha.name)==0&&strcmp(zhuce[i].password,cha.password)==0) 
	  {                        //检查用户名和密码是否正确
	  i=0;system("cls");jiemian();break;//成功登陆就进入界面管理系统
	  }  
	  else i=1;
   }while(!feof(fp));
   if(i==1) 
   {
       printf("\n你输入的用户名或密码有误\n\n");
       printf("\n1:重新登陆     2:注册新用户\n");//登陆不成功,提供重新登陆
   do                                            //和注册新用户
   {
	   scanf("%d",&j);
	   getchar();
       if(j==1) i=1;
	   else if(j==2) 
	   {
		   system("cls");     //空屏幕
		   zhuce_new();       //注册新用户
	   }
	        else printf("\n你选择有误 请重新输入:\n");
   }while(j>2);
   }
}while(i==1);
   fclose(fp);    //关闭文件
}

void jiemian()     //界面函数      
{
	int i;
	printf("\n\n****@@@@****@@@@  欢迎登陆实验设备管理系统  @@@@****@@@@****\n\n\n\n");
    printf("\n     1 修改密码           2 设备信息的录入 \n");
    printf("\n     3 设备信息的修改     4 设备信息的分类统计\n");
    printf("\n     5 设备信息的查询     6 显示所有的设备信息  \n" );
    printf("\n                  0 退出系统              \n");   
    printf("\n\n\n\n****@@@@****@@@@  欢迎登陆实验设备管理系统  @@@@****@@@@****\n");
	printf("\n----请选择需要服务的序号:\n\n");
	scanf("%d",&i);
    system("cls");
	if(i<0||i>6)
	{
		printf("\n您输入的数字不正确,请重新选择并输入:\n");
		scanf("%d",&i);
	}

	switch(i)
	{
	case 1: xiugai();break;   //修改密码
	case 2: insert(); break;  //录入信息
	case 3: delet(); break;   //修改信息
	case 4: tongji();  break; //分类统计
	case 5: search();break;   //查询信息
	case 6: print_all();break;  //打印全部信息
	case 0: exit(0);             //退出系统
	}
}


void xiugai()              //修改用户密码
{  
	FILE * fp;
	char password1[20],password2[20];  //接收修改密码
	int i=0, m=1,k=0,j;
	fp=fopen("stu_list.txt","rb");     //打开存放注册数据的文件
    if((fp=fopen("stu_list.txt","rb"))==NULL) //文件为空
    {
    printf("不能打开该文件,按任意键返回\n");
    getch();
    jiemian();         //返回界面管理系统
	}
    for(i=0;!feof(fp);i++)  //循环至文件关闭
	{
		fread(&zhuce[i],sizeof(struct zhuce),1,fp);//读注册的数据
	}
    j=i;
	printf("请输入你的用户名:\n");
	scanf("%s",cha.name);
    printf("请输入你的密码:\n");
	scanf("%s",cha.password);
    do
	{
	  for(i=0;feof(fp);i++)
	  {
		if(strcmp(cha.name,zhuce[i].name)==0&&strcmp(cha.password,zhuce[i].password)==0)
		{        //检查用户名和密码是否正确
				  k=i;m=0;break;
		}
	 }
	if(m!=0)    //用户名或密码有误,重新输入
	{
	   printf("你输入的帐号或密码错误!\n"); 
	   printf("请重新输你的帐号:\n");
	   scanf("%s",cha.name);
	   printf("请重新输入你的密码:\n");
	   scanf("%s",cha.password);
	}
	}while(m!=0);    //至用户名和密码正确,中止循环
	 if(m==0) 
	 {
      printf("\n请您输入一个新密码(小于20位内的字符):\n");
      scanf("%s",password1);      //输入新密码
      printf("\n请再次输入新密码:\n");
      scanf("%s",password2);      //再次输入新密码
      while(strlen(password1)>20||strcmp(password1,password2)!=0)
	  {           //限制密码的长度和验证两次输入的密码是否一致
	  printf("输入有误,请重新输入:\n");
      scanf("%s",password1);     //输入有误,重新输入
      printf("\n请再次输入新密码:\n");
      scanf("%s",password2);
	  }
	  strcpy(zhuce[k].password,password1);   //覆盖原来的密码
	 }
	fp=fopen("stu_list.txt","wb");    //把新密码读进文本
	for(i=0;i<j;i++)
	fwrite(&zhuce[i],sizeof(struct zhuce),1,fp);
    fclose(fp); 
	printf("修改成功,请按任意键返回\n");//修改成功
	getch();
    system("cls"); 
    jiemian();                //修改成功后回到界面管理系统

}  

void  insert()        //输入设备的信息
{
	FILE *fp;     //定义指针       
    int i=0;
    char k='y';
    fp=fopen("eq_infor.txt","ab");
    if((fp=fopen("eq_infor.txt","ab"))==NULL)
    exit(0);
    while(k=='y'||k=='Y') //输入信息的循环条件
	{   
        system("cls");
    	printf("----请为设备输入信息:\n");	//接收设备信息
		printf("---number:\n");
		scanf("%ld",&infor[i].num);
		printf("---name:\n");
		scanf("%s",&infor[i].name);
       	printf("---sort:\n");       //类型一定要用大写字母A,B,C,D,E,F
		scanf("%s",&infor[i].sort);
       	printf("---date:\n");
		scanf("%s",&infor[i].date);
       	printf("---repairmen:\n");
		scanf("%s",&infor[i].repairmen);
	    printf("---lab:\n");
		scanf("%s",&infor[i].lab);
       	printf("---discount:\n");
		scanf("%s",&infor[i].discount);
     	printf("---factory:\n");
		scanf("%s",&infor[i].factory);
	    printf("---telephone:\n");
		scanf("%s",&infor[i].tel);
       	printf("---posunhaohui:\n");
		scanf("%s",&infor[i].posun);  //直接输入破损费
        printf("---yisunchuli:\n");   //直接输入遗损耗费
		scanf("%s",&infor[i].yisun);

        printf("\n是否继续输入?(y/n)\n");//是否继续输入设备信息?
        scanf("%s",&k);
        fwrite(&infor[i],sizeof(struct eq_infor),1,fp);
	}                                                 //保存输入的设备信息
    if(toupper(k)=='N'||(k)=='n')   //停止输入
	{
    fclose(fp);                     //关闭文件
    printf("输入完毕,任意键返回\n");
    getch();
    system("cls");
	jiemian();                     //返回界面管理系统
	}
}


void delet()          //修改函数
{
   FILE * fp;
   int j,a,i,n;int flag;char c;
   long  num;
   char  name[20];  //名称
   char  sort[20];  //类别
   char  date[20];  //购买日期
   char  repairmen[20];//维护人
   char  lab[20];   //实验室
   char  discount[20];//折旧率
   char  factory[20]; //生产商
   char  tel[20];   //故障维护电话
   char  posun[20]; //破损耗费
   char  yisun[20]; //遗损处理
   flag=1;
   while(flag)
  {
	   if((fp=fopen("eq_infor.txt","r+"))==NULL)
	    {
	      printf("can not open file\n");
	      return;}
       for(i=0;i<100;i++)
	   { if(fread(&infor[i],sizeof(struct eq_infor),1,fp)==0) break;}
       fclose(fp);
	   n=i;
	   fp=fopen("eq_infor.txt","w+");
        printf("\f请输入您要修改的设备编号:");scanf("%ld",&j);
	    printf("\n    ━━━━━━━━━━━━━━━━━━━━━ ");
		printf("\n    1  设备名称        2  设备类别         ");
		printf("\n    3  设备购买日期    4  设备维护人       ");
		printf("\n    5  设备所在实验室  6  设备折旧率       ");
        printf("\n           7  设备生产厂商    ");
        printf("\n    ━━━━━━━━━━━━━━━━━━━━━ \n");
		printf("\n\f请输入您需要服务的种类的序号:");scanf("%d",&a);
		printf("\n\f请输入您需要修改的内容:");scanf("%d",&a);
		 switch(a)    //逐个信息修改
		 { 
		   case 1 :  scanf("%s",name);     strcpy(infor[j-1].name,name);break;
    	   case 2 :  scanf("%s",sort);     strcpy(infor[j-1].sort,sort); break;	
           case 3 :  scanf("%s",date);     strcpy(infor[j-1].date,date); break;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -