鱼C论坛

 找回密码
 立即注册
查看: 1035|回复: 2

[技术交流] 做的简单的图书管理系统大家可以交流一下,明天继续添加新功能

[复制链接]
发表于 2020-7-15 09:54:36 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 认真学习的pea 于 2020-7-15 10:33 编辑
  1. /* 图书管理系统:
  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.         int f,y;
  57.         int j=1;//控制密码输出次数变量
  58.         int k;//功能管理指令
  59.         int g;//子功能修改数据控制指令
  60.         int z;//图书管理功能选择指令
  61.         float q;
  62.         char new_writer[20];//输入的新作者
  63.         char new_book_name[20];//新书名
  64.         char name1[20];//新用户名
  65.         char pwd1[20];//对应的新密码
  66.         char user_[20];//输入的用户名
  67.         char pwd_[20];//输入的密码
  68.         while(1) //用户登录功能
  69.         {               
  70.                 printf("请输入用户名\n");
  71.                 scanf("%s",user_);while(getchar()!='\n');
  72.                 /* printf("%s\n",user_); */
  73.                 printf("请输入密码\n");
  74.                 scanf("%s",pwd_);while(getchar()!='\n');
  75.                 /* printf("%s\n",pwd_); */
  76.                 if(check_name_pwd(user_,pwd_)!=2)//调用函数判断用户名和密码是否匹配
  77.                 {
  78.                         printf("用户名或密码错误!请重新输入\n");
  79.                         printf("第%d次错误\n",j);
  80.                         printf("3次后退出\n");
  81.                         if(j==3)//3次错误后退出程序
  82.                         {       
  83.                                 printf("第3次错误再见!\n");
  84.                                 return 0;
  85.                         }
  86.                         j++;
  87.                        
  88.                 }
  89.                 else
  90.                 {
  91.                         printf("欢迎进入图书管理系统\n");
  92.                         break;
  93.                 }
  94.         }
  95.         while(1)
  96.         {               
  97.                 printf("请输入指令\n");
  98.                 printf("0查看所有用户\n1修改用户名\n2修改密码\n3添加用户\n4图书信息管理\n");
  99.                 scanf("%d",&k);while(getchar()!='\n');
  100.                 if(k==0)//查看所有用户
  101.                 {
  102.                         for(f=0;f<3;f++)
  103.                         {
  104.                                 printf("%d:%s\n",f+1,check[f].name);
  105.                         }
  106.                         continue;
  107.                 }
  108.                 if(k==1)//修改指定用户名
  109.                 {
  110.                         printf("请输入指令修改对应的用户名\n");
  111.                         for(f=0;f<3;f++)
  112.                         {
  113.                                 printf("%d:%s\n",f,check[k].name);
  114.                         }
  115.                         scanf("%d",&g);while(getchar()!='\n');
  116.                         printf("请输入用户名\n");
  117.                         bzero(name1,sizeof(name1));
  118.                         scanf("%s",name1);while(getchar()!='\n');
  119.                         strncpy(check[g].name,name1,sizeof(name1));
  120.                         continue;
  121.                 }
  122.                 if(k==2)//修改指定用户的密码
  123.                 {
  124.                         printf("请输入指令修改对应的用户名的密码\n");
  125.                         for(f=0;f<3;f++)
  126.                         {
  127.                                 printf("%d:%s\n",f,check[f].name);
  128.                         }
  129.                         scanf("%d",&g);while(getchar()!='\n');
  130.                         printf("请输入新密码\n");
  131.                         bzero(pwd1,sizeof(pwd1));
  132.                         scanf("%s",pwd1);while(getchar()!='\n');
  133.                         strncpy(check[g].pwd,pwd1,sizeof(pwd1));
  134.                         continue;
  135.                 }
  136.                 if(k==3)
  137.                 {
  138.                         printf("敬请期待\n");
  139.                 }
  140.                 if(k==4)//图书管理
  141.                 {
  142.                         while(1)
  143.                         {
  144.                                 printf("请输入指令\n");
  145.                                 printf("0书的信息\n1序号\n2书名\n3作者名\n4页数\n5定价\n6剩余数量\n7添加图书\n8退出\n");
  146.                                 scanf("%d",&z);while(getchar()!='\n');
  147.                                 if(z==0)//书的信息
  148.                                 {
  149.                                         printf("序号\t书名\t作者名\t页数\t定价\t剩余数量\n");                               
  150.                                         for(f=0;f<3;f++)
  151.                                         {                                       
  152.                                                 printf("%d\t%s\t%s\t%d\t%f\t%d\n",information[f].num1,
  153.                                                 information[f].book_name,information[f].writer,
  154.                                                 information[f].book_page,information[f].price,
  155.                                                 information[f].num2);               
  156.                                         }                                                               
  157.                                 }
  158.                                 if(z==1)                //序号                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
  159.                                 {
  160.                                         printf("序号\t书名\t作者名\t页数\t定价\t剩余数量\n");                               
  161.                                         for(f=0;f<3;f++)
  162.                                         {
  163.                                                 printf("%d\t%s\t%s\t%d\t%f\t%d\n",information[f].num1,
  164.                                                 information[f].book_name,information[f].writer,
  165.                                                 information[f].book_page,information[f].price,
  166.                                                 information[f].num2);               
  167.                                         }
  168.                                         printf("输入对应的序号修改\n");
  169.                                         scanf("%d",&g);while(getchar()!='\n');//被替换的序号
  170.                                         printf("输入你要用来替换的序号\n");
  171.                                         scanf("%d",&y);while(getchar()!='\n');//替换的序号
  172.                                         information[g-1].num1=y;       
  173.                                         continue;                               
  174.                                 }
  175.                                 if(z==2)//书名
  176.                                 {
  177.                                         printf("序号\t书名\t作者名\t页数\t定价\t剩余数量\n");                                                               
  178.                                         for(f=0;f<3;f++)
  179.                                         {
  180.                                                 printf("%d\t%s\t%s\t%d\t%f\t%d\n",information[f].num1,
  181.                                                 information[f].book_name,information[f].writer,
  182.                                                 information[f].book_page,information[f].price,
  183.                                                 information[f].num2);               
  184.                                         }           
  185.                                        
  186.                                         printf("输入对应的序号修改书名\n");
  187.                                         scanf("%d",&g);while(getchar()!='\n');//被替换的书名的序号
  188.                                         printf("输入你要用来替换的书名\n");
  189.                                         bzero(information[f].writer,20);
  190.                                         scanf("%s",new_book_name);while(getchar()!='\n');//替换的书名
  191.                                         strncpy(information[g-1].writer,new_book_name,20);
  192.                                         continue;                                 
  193.                                 }
  194.                                 if(z==3)//作者名
  195.                                 {
  196.                                         printf("序号\t书名\t作者名\t页数\t定价\t剩余数量\n");
  197.                                         for(f=0;f<3;f++)
  198.                                         {
  199.                                                 printf("%d\t%s\t%s\t%d\t%f\t%d\n",information[f].num1,
  200.                                                 information[f].book_name,information[f].writer,
  201.                                                 information[f].book_page,information[f].price,
  202.                                                 information[f].num2);               
  203.                                                                   
  204.                                         }
  205.                                         printf("输入对应的序号修改作者名\n");
  206.                                         scanf("%d",&g);while(getchar()!='\n');//被替换的作者名的序号
  207.                                         printf("输入你要用来替换的作者名\n");
  208.                                         bzero(information[f].writer,20);
  209.                                         scanf("%s",new_writer);while(getchar()!='\n');//替换的作者名
  210.                                         strncpy(information[g-1].writer,new_writer,20);
  211.                                         continue;
  212.                                 }
  213.                                 if(z==4)//页数
  214.                                 {
  215.                                         printf("序号\t书名\t作者名\t页数\t定价\t剩余数量\n");
  216.                                         for(f=0;f<3;f++)
  217.                                         {
  218.                                                 printf("%d\t%s\t%s\t%d\t%f\t%d\n",information[f].num1,
  219.                                                 information[f].book_name,information[f].writer,
  220.                                                 information[f].book_page,information[f].price,
  221.                                                 information[f].num2);               
  222.                                         }
  223.                                         printf("输入对应的序号修改页数\n");
  224.                                         scanf("%d",&g);while(getchar()!='\n');//被替换的页数的序号
  225.                                         printf("输入你要用来替换的页数\n");                               
  226.                                         scanf("%d",&y);while(getchar()!='\n');//替换的页数
  227.                                         information[g-1].book_page=y;
  228.                                         continue;
  229.                                        
  230.                                        
  231.                                 }
  232.                                 if(z==5)//定价
  233.                                 {
  234.                                         printf("序号\t书名\t作者名\t页数\t定价\t剩余数量\n");
  235.                                         for(f=0;f<3;f++)
  236.                                         {                                       
  237.                                                 printf("%d\t%s\t%s\t%d\t%f\t%d\n",information[f].num1,
  238.                                                 information[f].book_name,information[f].writer,
  239.                                                 information[f].book_page,information[f].price,
  240.                                                 information[f].num2);               
  241.                                         }
  242.                                         printf("输入对应的序号修改价格\n");
  243.                                         scanf("%d",&g);while(getchar()!='\n');//被替换的价格的序号
  244.                                         printf("输入你要用来替换的价格\n");
  245.                                         scanf("%f",&q);while(getchar()!='\n');//替换的价格
  246.                                         information[g-1].book_page=q;
  247.                                         continue;
  248.                                        
  249.                                 }
  250.                                 if(z==6)//剩余数量
  251.                                 {
  252.                                         printf("序号\t书名\t作者名\t页数\t定价\t剩余数量\n");
  253.                                         for(f=0;f<3;f++)
  254.                                         {
  255.                                                 printf("%d\t%s\t%s\t%d\t%f\t%d\n",information[f].num1,
  256.                                                 information[f].book_name,information[f].writer,
  257.                                                 information[f].book_page,information[f].price,
  258.                                                 information[f].num2);               
  259.                                         }
  260.                                         printf("输入对应的序号修改剩余数量\n");
  261.                                         scanf("%d",&g);while(getchar()!='\n');//被替换的剩余数量的序号
  262.                                         printf("输入你要用来剩余数量\n");
  263.                                         scanf("%d",&y);while(getchar()!='\n');//替换的剩余数量
  264.                                         information[g-1].num2=y;
  265.                                         continue;
  266.                                        
  267.                                 }
  268.                                 if(z==7)//添加图书
  269.                                 {
  270.                                         printf("敬请期待\n");
  271.                                         continue;
  272.                                 }
  273.                                 if(z==8)//退出图书管理
  274.                                 {       
  275.                                         printf("\n");
  276.                                         break;
  277.                                 }                                       
  278.                         }
  279.                         continue;

  280.                 }
  281.                
  282.                
  283.         }
  284.        
  285.         return 0;
  286.        
  287.        
  288.        
  289. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-15 09:58:02 | 显示全部楼层
你的代码中的 [ i] 会被编辑器吃掉 , 发代码时候按代码格式发:

如何正确地发代码、上传图片和附件?
https://fishc.com.cn/thread-52272-1-1.html
(出处: 鱼C论坛)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-15 10:41:40 | 显示全部楼层
Twilight6 发表于 2020-7-15 09:58
你的代码中的 [ i] 会被编辑器吃掉 , 发代码时候按代码格式发:

如何正确地发代码、上传图片和附件?

OK了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 17:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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