鱼C论坛

 找回密码
 立即注册
查看: 1162|回复: 0

[技术交流] 练手!图书管理系统!!大家来找茬鸭!

[复制链接]
发表于 2020-7-17 14:50:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 认真学习的pea 于 2020-7-17 15:46 编辑
  1. [code]/* 图书管理系统:
  2. a.程序密码功能
  3. b.用户名密码登录功能
  4. (用户信息结构体:序号,用户名,密码)
  5. c.登录后可进行图书的管理(修改下列图书信息)
  6. (图书信息结构体:序号,书名,作者名,页数,定价,剩余数量...)
  7. d.尝试添加多个用户、多本图书... */
  8. #include<stdio.h>
  9. #include<string.h>
  10. #include<stdlib.h>
  11. struct book {int num1;//序列号
  12.                      int num2;//剩余数量
  13.                          int book_page;//页数
  14.                          float price;//定价
  15.                          char book_name[20];//书名
  16.                          char writer[20];};//作者名

  17. struct user {char name[20];//用户名
  18.                         char pwd[20];};//用户密码
  19.                        
  20. struct book information[20]={{1,10,256,99.99,"AAA","111"},
  21.                                                 {2,12,266,16.65,"BBB","222"},
  22.                                                 {3,20,169,19.99,"CCC","333"}};       
  23. struct user check[20]={{"pea1","123456"},
  24.                                            {"pea2","1234567"},
  25.                                            {"pea3","12345678"}};//定义全局变量

  26. int check_name_pwd(char a[20],char b[20])//检查用户名和密码是否匹配
  27. {       
  28.        
  29.         int i;
  30.         int countx1=0;
  31.         int countx2=0;
  32.         for(i=0;i<3;i++)
  33.         {
  34.                 if(strcmp(a,check[i].name)==0&&strcmp(b,check[i].pwd)==0)//检查用户名和密码是否匹配必须对应满足
  35.                 {
  36.                         countx1++;                               
  37.                         countx2++;                       
  38.                 }               
  39.         }
  40.        
  41.         return         countx1+countx2;       
  42. }

  43. int main(int argc,const char **argv)
  44. {
  45.         // a.程序密码判断
  46.         if(argc != 2)        //判断参数数量
  47.         {
  48.                 printf("参数数量不正确,请重新运行!\n");
  49.                 return -1;        //结束程序
  50.         }
  51.         if(strcmp("654321", argv[1]))        //判断密码
  52.         {
  53.                 printf("密码不正确,请重新运行!\n");
  54.                 return -2;        //结束程序
  55.         }       
  56.         float q;
  57.         int f,y;
  58.         int i=3;//初始用户数量
  59.         int t=3;//初始图书种类
  60.         int j=1;//控制密码输出次数变量
  61.         int k;//功能管理指令
  62.         int g;//子功能修改数据控制指令
  63.         int z;//图书管理功能选择指令
  64.         int x;//图书信息录入指令
  65.         char new_writer[20];//输入的新作者
  66.         char new_book_name[20];//新书名
  67.         char name1[20];//新用户名
  68.         char pwd1[20];//对应的新密码
  69.         char new_pwd[20];//再次输入对应的新密码
  70.         char user_[20];//输入的用户名
  71.         char pwd_[20];//输入的密码
  72.         while(1) //用户登录功能
  73.         {               
  74.                 printf("请输入用户名\n");
  75.                 scanf("%s",user_);while(getchar()!='\n');
  76.                 /* printf("%s\n",user_); */
  77.                 printf("请输入密码\n");
  78.                 scanf("%s",pwd_);while(getchar()!='\n');
  79.                 /* printf("%s\n",pwd_); */
  80.                 if(check_name_pwd(user_,pwd_)!=2)//调用函数判断用户名和密码是否匹配
  81.                 {
  82.                         printf("用户名或密码错误!请重新输入\n");
  83.                         printf("第%d次错误\n",j);
  84.                         printf("3次后退出\n");
  85.                         if(j==3)//3次错误后退出程序
  86.                         {       
  87.                                 printf("第3次错误再见!\n");
  88.                                 return 0;
  89.                         }
  90.                         j++;
  91.                        
  92.                 }
  93.                 else
  94.                 {
  95.                         printf("欢迎进入图书管理系统\n");
  96.                         break;
  97.                 }
  98.         }
  99.         while(1)
  100.         {               
  101.                 printf("请输入指令\n");
  102.                 printf("0查看所有用户\n1修改用户名\n2修改密码\n3添加用户\n4图书信息管理\n");
  103.                 scanf("%d",&k);while(getchar()!='\n');
  104.                 if(k==0)//查看所有用户
  105.                 {
  106.                         for(f=0;f<i;f++)
  107.                         {
  108.                                 printf("%d:%s\n",f+1,check[f].name);
  109.                         }
  110.                         continue;
  111.                 }
  112.                 if(k==1)//修改指定用户名
  113.                 {
  114.                         printf("请输入指令修改对应的用户名\n");
  115.                         for(f=0;f<i;f++)
  116.                         {
  117.                                 printf("%d:%s\n",f,check[k].name);
  118.                         }
  119.                         scanf("%d",&g);while(getchar()!='\n');
  120.                         printf("请输入用户名\n");
  121.                         bzero(name1,sizeof(name1));
  122.                         scanf("%s",name1);while(getchar()!='\n');
  123.                         strncpy(check[g].name,name1,sizeof(name1));
  124.                         continue;
  125.                 }
  126.                 if(k==2)//修改指定用户的密码
  127.                 {
  128.                         printf("请输入指令修改对应的用户名的密码\n");
  129.                         for(f=0;f<i;f++)
  130.                         {
  131.                                 printf("%d:%s\n",f,check[f].name);
  132.                         }
  133.                         scanf("%d",&g);while(getchar()!='\n');
  134.                         printf("请输入新密码\n");
  135.                         bzero(pwd1,sizeof(pwd1));
  136.                         scanf("%s",pwd1);while(getchar()!='\n');
  137.                         strncpy(check[g].pwd,pwd1,sizeof(pwd1));
  138.                         continue;
  139.                 }
  140.                 if(k==3)//添加用户
  141.                 {
  142.                         printf("请输入用户名\n");
  143.                         bzero(name1,sizeof(name1));
  144.                         scanf("%s",name1);while(getchar()!='\n');
  145.                         bzero(pwd1,sizeof(pwd1));
  146.                         printf("请输入密码\n");
  147.                         scanf("%s",pwd1);while(getchar()!='\n');
  148.                         while(1)
  149.                         {
  150.                                 printf("再次输入密码\n");
  151.                                 bzero(new_pwd,sizeof(new_pwd));
  152.                                 scanf("%s",new_pwd);while(getchar()!='\n');
  153.                                 if(strcmp(pwd1,new_pwd)==0)
  154.                                 {
  155.                                         i++;
  156.                                         break;
  157.                                 }
  158.                                 else
  159.                                 {
  160.                                         printf("密码错误重新输入\n");
  161.                                         continue;
  162.                                 }
  163.                         }
  164.                         bzero(check[i-1].name,sizeof(check[i-1].name));
  165.                         strncpy(check[i-1].name,name1,sizeof(name1));
  166.                         bzero(check[i-1].pwd,sizeof(check[i-1].pwd));
  167.                         strncpy(check[i-1].pwd,pwd1,sizeof(pwd1));
  168.                         printf("用户注册成功\n");
  169.                         printf("用户名:%s",check[i-1].name);
  170.                         printf("密码:%s",check[i-1].pwd);
  171.                 }
  172.                 if(k==4)//图书管理
  173.                 {
  174.                         while(1)
  175.                         {
  176.                                 printf("请输入指令\n");
  177.                                 printf("0书的信息\n1序号\n2书名\n3作者名\n4页数\n5定价\n6剩余数量\n7添加图书\n8退出\n");
  178.                                 scanf("%d",&z);while(getchar()!='\n');
  179.                                 if(z==0)//书的信息
  180.                                 {
  181.                                         printf("序号\t书名\t作者名\t页数\t定价\t剩余数量\n");                               
  182.                                         for(f=0;f<t;f++)
  183.                                         {                                       
  184.                                                 printf("%d\t%s\t%s\t%d\t%f\t%d\n",information[f].num1,
  185.                                                 information[f].book_name,information[f].writer,
  186.                                                 information[f].book_page,information[f].price,
  187.                                                 information[f].num2);               
  188.                                         }                                                               
  189.                                 }
  190.                                 if(z==1)                //序号                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
  191.                                 {
  192.                                         printf("序号\t书名\t作者名\t页数\t定价\t剩余数量\n");                               
  193.                                         for(f=0;f<t;f++)
  194.                                         {
  195.                                                 printf("%d\t%s\t%s\t%d\t%f\t%d\n",information[f].num1,
  196.                                                 information[f].book_name,information[f].writer,
  197.                                                 information[f].book_page,information[f].price,
  198.                                                 information[f].num2);               
  199.                                         }
  200.                                         printf("输入对应的序号修改\n");
  201.                                         scanf("%d",&g);while(getchar()!='\n');//被替换的序号
  202.                                         printf("输入你要用来替换的序号\n");
  203.                                         scanf("%d",&y);while(getchar()!='\n');//替换的序号
  204.                                         information[g-1].num1=y;       
  205.                                         continue;                               
  206.                                 }
  207.                                 if(z==2)//书名
  208.                                 {
  209.                                         printf("序号\t书名\t作者名\t页数\t定价\t剩余数量\n");                                                               
  210.                                         for(f=0;f<t;f++)
  211.                                         {
  212.                                                 printf("%d\t%s\t%s\t%d\t%f\t%d\n",information[f].num1,
  213.                                                 information[f].book_name,information[f].writer,
  214.                                                 information[f].book_page,information[f].price,
  215.                                                 information[f].num2);               
  216.                                         }           
  217.                                        
  218.                                         printf("输入对应的序号修改书名\n");
  219.                                         scanf("%d",&g);while(getchar()!='\n');//被替换的书名的序号
  220.                                         printf("输入你要用来替换的书名\n");
  221.                                         bzero(new_book_name,sizeof(new_book_name));
  222.                                         scanf("%s",new_book_name);while(getchar()!='\n');//替换的书名
  223.                                         strncpy(information[g-1].writer,new_book_name,sizeof(new_book_name));
  224.                                         continue;                                 
  225.                                 }
  226.                                 if(z==3)//作者名
  227.                                 {
  228.                                         printf("序号\t书名\t作者名\t页数\t定价\t剩余数量\n");
  229.                                         for(f=0;f<t;f++)
  230.                                         {
  231.                                                 printf("%d\t%s\t%s\t%d\t%f\t%d\n",information[f].num1,
  232.                                                 information[f].book_name,information[f].writer,
  233.                                                 information[f].book_page,information[f].price,
  234.                                                 information[f].num2);               
  235.                                                                   
  236.                                         }
  237.                                         printf("输入对应的序号修改作者名\n");
  238.                                         scanf("%d",&g);while(getchar()!='\n');//被替换的作者名的序号
  239.                                         printf("输入你要用来替换的作者名\n");
  240.                                         bzero(information[f].writer,sizeof(information[f].writer));
  241.                                         scanf("%s",new_writer);while(getchar()!='\n');//替换的作者名
  242.                                         strncpy(information[g-1].writer,new_writer,sizeof(new_writer));
  243.                                         continue;
  244.                                 }
  245.                                 if(z==4)//页数
  246.                                 {
  247.                                         printf("序号\t书名\t作者名\t页数\t定价\t剩余数量\n");
  248.                                         for(f=0;f<t;f++)
  249.                                         {
  250.                                                 printf("%d\t%s\t%s\t%d\t%f\t%d\n",information[f].num1,
  251.                                                 information[f].book_name,information[f].writer,
  252.                                                 information[f].book_page,information[f].price,
  253.                                                 information[f].num2);               
  254.                                         }
  255.                                         printf("输入对应的序号修改页数\n");
  256.                                         scanf("%d",&g);while(getchar()!='\n');//被替换的页数的序号
  257.                                         printf("输入你要用来替换的页数\n");                               
  258.                                         scanf("%d",&y);while(getchar()!='\n');//替换的页数
  259.                                         information[g-1].book_page=y;
  260.                                         continue;
  261.                                        
  262.                                        
  263.                                 }
  264.                                 if(z==5)//定价
  265.                                 {
  266.                                         printf("序号\t书名\t作者名\t页数\t定价\t剩余数量\n");
  267.                                         for(f=0;f<t;f++)
  268.                                         {                                       
  269.                                                 printf("%d\t%s\t%s\t%d\t%f\t%d\n",information[f].num1,
  270.                                                 information[f].book_name,information[f].writer,
  271.                                                 information[f].book_page,information[f].price,
  272.                                                 information[f].num2);               
  273.                                         }
  274.                                         printf("输入对应的序号修改价格\n");
  275.                                         scanf("%d",&g);while(getchar()!='\n');//被替换的价格的序号
  276.                                         printf("输入你要用来替换的价格\n");
  277.                                         scanf("%f",&q);while(getchar()!='\n');//替换的价格
  278.                                         information[g-1].book_page=q;
  279.                                         continue;
  280.                                        
  281.                                 }
  282.                                 if(z==6)//剩余数量
  283.                                 {
  284.                                         printf("序号\t书名\t作者名\t页数\t定价\t剩余数量\n");
  285.                                         for(f=0;f<t;f++)
  286.                                         {
  287.                                                 printf("%d\t%s\t%s\t%d\t%f\t%d\n",information[f].num1,
  288.                                                 information[f].book_name,information[f].writer,
  289.                                                 information[f].book_page,information[f].price,
  290.                                                 information[f].num2);               
  291.                                         }
  292.                                         printf("输入对应的序号修改剩余数量\n");
  293.                                         scanf("%d",&g);while(getchar()!='\n');//被替换的剩余数量的序号
  294.                                         printf("输入剩余数量\n");
  295.                                         scanf("%d",&y);while(getchar()!='\n');//替换的剩余数量
  296.                                         information[g-1].num2=y;
  297.                                         continue;
  298.                                        
  299.                                 }
  300.                                 if(z==7)//添加图书
  301.                                 {
  302.                                         while(1)
  303.                                         {
  304.                                                 printf("输入序号\n");
  305.                                                 scanf("%d",&y);while(getchar()!='\n');
  306.                                                 information[t-1].num1=y;
  307.                                                 printf("输入书名\n");
  308.                                                 bzero(new_book_name,sizeof(new_book_name));
  309.                                                 scanf("%s",new_book_name);while(getchar()!='\n');
  310.                                                 strncpy(information[t-1].writer,new_book_name,sizeof(new_book_name));
  311.                                                 printf("输入作者名\n");
  312.                                                 bzero(new_book_name,sizeof(new_book_name));
  313.                                                 scanf("%s",new_book_name);while(getchar()!='\n');
  314.                                                 strncpy(information[t-1].book_name,new_book_name,sizeof(new_book_name));
  315.                                                 printf("输入页数\n");                       
  316.                                                 scanf("%d",&y);while(getchar()!='\n');
  317.                                                 information[t-1].book_page=y;
  318.                                                 printf("输入定价\n");
  319.                                                 scanf("%f",&q);while(getchar()!='\n');
  320.                                                 information[t-1].book_page=q;
  321.                                                 printf("输入剩余数量\n");
  322.                                                 scanf("%d",&y);while(getchar()!='\n');
  323.                                                 information[t-1].num2=y;                                               
  324.                                                 printf("是否还要输入图书信息:按0退出1继续\n");
  325.                                                 scanf("%d",&x);while(getchar()!='\n');
  326.                                                 t++;
  327.                                                 if(x==0)
  328.                                                 {
  329.                                                         break;
  330.                                                        
  331.                                                 }
  332.                                         }                                                                               
  333.                                         continue;
  334.                                 }
  335.                                 if(z==8)//退出图书管理
  336.                                 {       
  337.                                         break;
  338.                                 }                                       
  339.                         }
  340.                         continue;
  341.                 }                               
  342.         }       
  343.         return 0;       
  344. }
复制代码
[/code]
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-8-7 13:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表