📄 shebeiguanli.c
字号:
#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 + -