zoukankan      html  css  js  c++  java
  • 实验室管理系统课程设计

    主要目的:实现对实验室的硬件资源和软件资源的使用和管理。
    数据信息:用户登录信息(分普通成员--管理员:信息主要有用户名、密码、性别、专业班级、学号、联系电话、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");
    }
  • 相关阅读:
    三次请求(读-改-读)引出nibernate 一级缓存
    算法竞赛入门经典第一、二章摘记
    uva 10905 Children's Game
    uva 11205 The broken pedometer
    uva 10160 Servicing stations
    uva 208 Firetruck
    uva 167 The Sultan's Successors
    zoj 1016 Parencodings
    uva 307 Sticks
    uva 216 Getting in Line
  • 原文地址:https://www.cnblogs.com/xiaolanchong/p/7502500.html
Copyright © 2011-2022 走看看