实验室管理系统课程设计

主要目的:实现对实验室的硬件资源和软件资源的使用和管理。 数据信息:用户登录信息(分普通成员–管理员:信息主要有用户名、密码、性别、专业班级、学号、联系电话、QQ等) 硬件器材信息(编号、名称、数量、存放地点、所属类别、主要用途) 图书资源信息(图书编号、图书名称、图书数量、图书类别、主要用途) 主要功能: 1.登录界面:实现不同用户的登录、找回密码、注册新用户。 2。普通用户登录之后功能选择:查询资源记录、借还资源、修改个人信息。 3.管理登录可以增加新的耗材记录、修改用户信息。#include<stdio.h>#include<string.h>#include<stdlib.h>#include<conio.h>struct personal_message{ //个人信息 char name[10]; char num[12]; char sex[6]; char classes[15]; char QQ[12]; char Tel[12];}p;struct book{ //图书信息 char name[20]; char num[10]; int member; int borrow;}books,book1[50];struct sysuser{ //用户名和密码 char username[16]; char password[7];}sd,sy;struct consumables{ //耗材信息 char name[20]; int member;}con,con1;void registe();     //注册void enter(); //登录int validate();    //验证管理员(root)void find_password();    //找回密码void modification_information(); //修改信息void modification_password(); //修改密码void resource_record(); //查询书籍信息void add_book(); //添加书籍void borrow_repay(); //书籍借还void borrow(); //借书void repay(); //还书void consumables_record(); //查询耗材void check_consumables(); //耗材信息void add_consumables(); // 添加耗材void add_administrator(); //添加管理员void star(char mima[]); //密码变 *void page_design1(); //登录页面void page_design2(); void page_design3(); void page_design4();void page_design5(); void page_design6();FILE *fp;FILE *fp1;FILE *fp2;FILE *fp3;int fog=0,j=0;char mima[7];int main(void){ struct personal_message h,*o; o=&h; int n,m,flag; char st[100],s[20];// loop:printf(“1-登录\t2-注册\n”); loop:page_design1(); scanf(“%d”,&n); system(“CLS”); switch(n) { case 1: { enter(); validate(); system(“CLS”); }break; case 2: { registe(); system(“CLS”); goto loop; }break; case 3: { find_password(); system(“CLS”); goto loop; }break; } lo:if((fp=fopen(“information.txt”,”r”))==NULL) /*显示个人信息 */ { printf(“File open error!\n”); exit(0); } rewind(fp); fseek(fp,j*sizeof(struct personal_message),0); fread(&h,sizeof(struct personal_message),1,fp); printf(“姓名:%s\n”,h.name); printf(“性别:%s\n”,h.sex); printf(“学号:%s\n”,h.num); printf(“专业班级:%s\n”,h.classes); printf(“QQ:%s\n”,h.QQ); printf(“电话:%s\n”,h.Tel); if(fclose(fp)) { printf(“Can not close the file!\n”); exit(0); } //printf(“1-修改个人信息\t2-查询图书资源\t3-借还资源\t4-修改密码\n”); page_design2(); if(fog==1) page_design3(); // printf(“5-添加图书\t6-耗材信息\t7-添加管理员\n”); printf(“\t\t\t*———————-*\n”); printf(“\t\t\t************************\n”); scanf(“%d”,&m); system(“CLS”); switch(m) { case 1:modification_information();break; case 2:resource_record();break; case 3:borrow_repay();break; case 4:modification_password();break; case 5:add_book();break; case 6:consumables_record();break; case 7:add_administrator();break; }// printf(“按1键返回首页,按2键退出\n”); page_design6(); scanf(“%d”,&flag); system(“CLS”); if(flag==1) goto lo; return 0;}void registe() /*注册*/{ char c[7]; struct sysuser sa; printf(“用户名:”); scanf(“%s”,sa.username); for(;;) { printf(“密码:”); //scanf(“%s”,sa.password); star(sa.password); printf(“确认密码:”); //scanf(“%s”,c); star(c); if(strcmp(c,sa.password)==0) break; } if((fp3=fopen(“sysusers.txt”,”a”))==NULL) { printf(“File open error!\n”); exit(0); } //fputs(&sa,fp3); fwrite(&sa,sizeof(struct sysuser),1,fp3); if(fclose(fp3)) { printf(“Can not close the file!\n”); exit(0); } system(“CLS”); printf(“姓名:”); scanf(“%s”,p.name); printf(“性别:”); scanf(“%s”,p.sex); printf(“学号:”); scanf(“%s”,p.num); printf(“专业班级:”); scanf(“%s”,p.classes); printf(“QQ:”); scanf(“%s”,p.QQ); printf(“电话:”); scanf(“%s”,p.Tel); if((fp=fopen(“information.txt”,”a”))==NULL) { printf(“File open error!\n”); exit(0); } fwrite(&p,sizeof(struct personal_message),1,fp); if(fclose(fp)) { printf(“Can not close the file!\n”); exit(0); } printf(“注册成功!\n”);}void enter() /*登录 */{ int count=0; for(;;) { printf(“用户名:”); scanf(“%s”,sy.username); printf(“密码:”); // scanf(“%s”,sy.password); star(sy.password); if((fp3=fopen(“sysusers.txt”,”r”))==NULL) { printf(“File open error!\n”); exit(0); } while(!feof(fp3)) { fread(&sd,sizeof(struct sysuser),1,fp3); if(strcmp(sy.username,sd.username)==0 && strcmp(sy.password,sd.password)==0) { count=1; break; } j++; } if(fclose(fp3)) { printf(“Can not close the file!\n”); exit(0); } if(count == 1) { printf(“登录成功!\n”); break; } else printf(“用户名和密码不匹配!\n”); }}int validate() /*验证是否是管理员(root) */{ int l1; l1=strlen(sd.username); if(sd.username[l1-4]==’r’ && sd.username[l1-3]==’o’ && sd.username[l1-2]==’o’ && sd.username[l1-1]==’t’) fog=1; else fog=0; return fog;}void find_password() //找回密码{ struct sysuser sr,sr1; int b=0; char b1[7]; lp:printf(“请输入用户名:”); scanf(“%s”,sr1.username); if((fp3=fopen(“sysusers.txt”,”r+”))==NULL) { printf(“File open error!\n”); exit(0); } while(!feof(fp3)) { fread(&sr,sizeof(struct sysuser),1,fp3); if(strcmp(sr.username,sr1.username)==0) break; else b++; } if(feof(fp3)==-1) { printf(“找不到该用户名”); goto lp; } else { for(;;) { printf(“请输入新密码:”); // scanf(“%s”,sr1.password); star(sr1.password); printf(“请确认新密码:”); // scanf(“%s”,b1); star(b1); if(strcmp(b1,sr1.password)==0) break; } rewind(fp3); strcpy(sr.password,sr1.password); fseek(fp3,b*sizeof(struct sysuser),0); fwrite(&sr,sizeof(struct sysuser),1,fp3); } if(fclose(fp3)) { printf(“Can not close the file!\n”); exit(0); }}void modification_information() /*修改个人信息 */{ struct personal_message p1; printf(“姓名:”); scanf(“%s”,p1.name); printf(“性别:”); scanf(“%s”,p1.sex); printf(“学号:”); scanf(“%s”,p1.num); printf(“专业班级:”); scanf(“%s”,p1.classes); printf(“QQ:”); scanf(“%s”,p1.QQ); printf(“电话:”); scanf(“%s”,p1.Tel); if((fp=fopen(“information.txt”,”w”))==NULL) { printf(“File open error!\n”); exit(0); } rewind(fp); fseek(fp,j*sizeof(personal_message),0); fwrite(&p1,sizeof(personal_message),1,fp); if(fclose(fp)) { printf(“Can not close the file!\n”); exit(0); }}void modification_password() //修改密码{ struct sysuser su,su1; char b[7]; for(;;) { printf(“请输入新密码:”); //scanf(“%s”,su.password); star(su.password); if(strcmp(su.password,b)==0) break; printf(“请确认密码:”); //scanf(“%s”,b); star(b); if(strcmp(b,su.password)==0) break; } if((fp3=fopen(“sysusers.txt”,”r+”))==NULL) { printf(“File open error!\n”); exit(0); } rewind(fp3); fseek(fp3,j*sizeof(struct sysuser),0); fread(&su1,sizeof(struct sysuser),1,fp3); strcpy(su1.password,su.password); fseek(fp3,j*sizeof(struct sysuser),0); fwrite(&su1,sizeof(struct sysuser),1,fp3); if(fclose(fp3)) { printf(“Can not close the file!\n”); exit(0); } printf(“修改成功!\n”);}void resource_record() /* 图书资源查看 */{ int w; if((fp1=fopen(“resource.txt”,”r”))==NULL) { printf(“File open error!\n”); exit(0); } fseek(fp1,0,2); //文件末 w=ftell(fp1); //文件指针的位置 fseek(fp1,0,0); //文件首 while(w!=ftell(fp1))// while(!feof(fp1)) { fread(&books,sizeof(struct book),1,fp1); printf(“书名:%s\n”,books.name); printf(“编号:%s\n”,books.num); printf(“数量:%d\n”,books.member); printf(“已借:%d\n”,books.borrow); printf(“\n”); } if(fclose(fp1)) { printf(“Can not close the file!\n”); exit(0); }}void add_book() /*添加图书 */{ int count; printf(“请输入要添加书的本数:”); scanf(“%d”,&count); while(count–) { printf(“书名:”); scanf(“%s”,books.name); printf(“编号:”); scanf(“%s”,books.num); printf(“数量:”); scanf(“%d”,&books.member); printf(“已借:”); scanf(“%d”,&books.borrow); if((fp1=fopen(“resource.txt”,”a”))==NULL) { printf(“File open error!\n”); exit(0); } fwrite(&books,sizeof(struct book),1,fp1); if(fclose(fp1)) { printf(“Can not close the file!\n”); exit(0); } if(count!=0) printf(“\n”); }}void borrow_repay() /*书籍借还 */{ int k; //printf(“1-借\t2-还\n”); page_design4(); scanf(“%d”,&k); switch(k) { case 1:borrow();break; case 2:repay();break; }}void borrow() /*借书 */{ int i=0; char a2[20]; printf(“请输入要借的书的编号:”); scanf(“%s”,a2); if((fp1=fopen(“resource.txt”,”r+”))==NULL) { printf(“File open error!\n”); exit(0); } while(!feof(fp1)) { fread(&book1[i],sizeof(struct book),1,fp1); if(strcmp(a2,book1[i].num)==0) { book1[i].member–; book1[i].borrow++; rewind(fp1); fseek(fp1,i*sizeof(struct book),0); fwrite(&book1[i],sizeof(struct book),1,fp1); break; } i++; } if(fclose(fp1)) { printf(“Can not close the file!\n”); exit(0); } printf(“借书成功!\n”);}void repay() /*还书*/{ int i=0; char a3[20]; printf(“请输入要还的书的编号:”); scanf(“%s”,a3); if((fp1=fopen(“resource.txt”,”r+”))==NULL) { printf(“File open error!\n”); exit(0); } while(!feof(fp1)) { fread(&book1[i],sizeof(struct book),1,fp1); if(strcmp(a3,book1[i].num)==0) { book1[i].member++; book1[i].borrow–; rewind(fp1); fseek(fp1,i*sizeof(struct book),0); fwrite(&book1[i],sizeof(struct book),1,fp1); break; } i++; } if(fclose(fp1)) { printf(“Can not close the file!\n”); exit(0); } printf(“还书成功!\n”);}void consumables_record() /*耗材管理 */{ int m1; //printf(“1-查看耗材\t2-增加耗材\n”); page_design5(); scanf(“%d”,&m1); switch(m1) { case 1:check_consumables();break; case 2:add_consumables();break; }}void check_consumables() /*查看耗材 */{ system(“CLS”); int w1; if((fp2=fopen(“consumables.txt”,”r”))==NULL) { printf(“File open error!\n”); exit(0); } fseek(fp2,0,2); //文件末 w1=ftell(fp2); //文件指针的位置 fseek(fp2,0,0); while(w1!=ftell(fp2))// while(!feof(fp2)) { fread(&con,sizeof(struct consumables),1,fp2); printf(“名称:%s\n”,con.name); printf(“数量:%d\n”,con.member); printf(“\n”); } if(fclose(fp2)) { printf(“Can not close the file!\n”); exit(0); }}void add_consumables() /*增加耗材 */{ system(“CLS”); printf(“请输入增加的耗材名称:”); scanf(“%s”,con1.name); printf(“请输入该耗材的数量:”); scanf(“%d”,&con1.member); if((fp2=fopen(“consumables.txt”,”a”))==NULL) { printf(“File open error!\n”); exit(0); } fwrite(&con1,sizeof(struct consumables),1,fp2); if(fclose(fp2)) { printf(“Can not close the file!\n”); exit(0); } printf(“添加成功!\n”);}void add_administrator() /*添加管理员*/{ struct sysuser sw; char a4[16]; char a5[5]={“root”}; int l2=0,w2; loop:printf(“请输入要添加成管理员的用户名:”); scanf(“%s”,a4); if((fp3=fopen(“sysusers.txt”,”r+”))==NULL) { printf(“File open error!\n”); exit(0); } fseek(fp3,0,2); w2=ftell(fp3); fseek(fp3,0,0); while(!feof(fp3)) { fread(&sw,sizeof(struct sysuser),1,fp3); if(strcmp(sw.username,a4)==0) { strcat(sw.username,a5); // rewind(fp3); // fseek(fp3,l2*sizeof(struct sysuser),0); fseek(fp3,l2*sizeof(struct sysuser),0); fwrite(&sw,sizeof(struct sysuser),1,fp3); printf(“添加成功!\n”); break; } else { l2++; if(w2==ftell(fp3)) { printf(“找不到该用户!\n”); goto loop; } } } if(fclose(fp3)) { printf(“Can not close the file!\n”); exit(0); }}void star(char mima[]){ for(int i=0;;i++) //以*号显示所输入密码,i并不重要,这里可以设置成无限循环。 { mima[i]=getch(); if(mima[i]==’\r’) //getch()函数读到回车键则退出 { printf(“\n”); mima[i]=’\0′; break; } else if((mima[i]==8)&&i>0) //关于是否退格的判断 { printf(“\b \b”); i=i-2; } else if(mima[i]!=8) //如果输入的不是退格键(8是退格键的Ascii码值),那么就输出星号。 { printf(“*”); } }}void page_design1(){ printf(“\n\n\n”); printf(“\t\t\t************************\n”); printf(“\t\t\t*———————-*\n”); printf(“\t\t\t*—1-登录————-*\n”); printf(“\t\t\t*—2-注册————-*\n”); printf(“\t\t\t*—3-找回密码———*\n”); printf(“\t\t\t*———————-*\n”); printf(“\t\t\t************************\n”);}void page_design2(){ printf(“\n\n”); printf(“\t\t\t************************\n”); printf(“\t\t\t*———————-*\n”); printf(“\t\t\t*—1-修改个人信息—–*\n”); printf(“\t\t\t*—2-查询图书资源—–*\n”); printf(“\t\t\t*—3-借还资源———*\n”); printf(“\t\t\t*—4-修改密码———*\n”);}void page_design3(){ printf(“\t\t\t*—5-添加图书———*\n”); printf(“\t\t\t*—6-耗材信息———*\n”); printf(“\t\t\t*—7-添加管理员——-*\n”);}void page_design4(){ printf(“\t\t\t************************\n”); printf(“\t\t\t*———————-*\n”); printf(“\t\t\t*—1-借—————*\n”); printf(“\t\t\t*—2-还—————*\n”); printf(“\t\t\t*———————-*\n”); printf(“\t\t\t************************\n”);}void page_design5(){ printf(“\t\t\t************************\n”); printf(“\t\t\t*———————-*\n”); printf(“\t\t\t*—1-查看耗材———*\n”); printf(“\t\t\t*—2-添加耗材———*\n”); printf(“\t\t\t*———————-*\n”); printf(“\t\t\t************************\n”);}void page_design6(){ printf(“\t\t\t************************\n”); printf(“\t\t\t*———————-*\n”); printf(“\t\t\t*—1-返回首页———*\n”); printf(“\t\t\t*—2-退出————-*\n”); printf(“\t\t\t*———————-*\n”); printf(“\t\t\t************************\n”);}每个人的生命都是可以绽放美丽,只要你珍惜。

实验室管理系统课程设计

相关文章:

你感兴趣的文章:

标签云: