• 图书管理系统(C语言实现)


    设计并实现一个简单的图书管理系统

    本次实训内容主要在于训练学生的C语言的基本编程能力,通过C语言输入输出、循环语句、子函数设计、数组、结构体等知识点,完成一个简单图书管理系统的设计开发。实现录入图书、删除指定图书、修改指定图书和查询指定图书的基本信息等主要功能。

    1.创建图书节点

    1. #include
    2. #include
    3. #include
    4. using namespace std;
    5. struct Book{
    6. char id[101];// ISBN
    7. char name[101];// 书名
    8. double price;//价格
    9. };

    2.构建顺序表

    1. typedef struct{
    2. Book *elem;//顺序表首地址
    3. int len;//表长
    4. }Sqlist;

    3.图书信息的展示

    1. void display(Sqlist L){ //不需要修改里面的信息
    2. //展示表L中所有的图书信息
    3. int maxIndex = L.len;
    4. for(int i=1;i<=maxIndex;i++){
    5. printf("%s\t%s\t%lf\n",L.elem[i].id , L.elem[i].name , L.elem[i].price);//\n换行 \tTab
    6. }
    7. }

    4.图书信息的查找

    1. int findBook(Sqlist L,char id[]){
    2. //在表L 中查找 是否有 ISBN码为id的图书
    3. //遍历 表 L,如果出现了L中 图书的id == id
    4. int index = 0;//假设不存在
    5. int len = L.len;
    6. for(int i=1;i<=len;i++){
    7. if(strcmp(L.elem[i].id,id) == 0){//strcmp()
    8. index = i;//修正假设 (假设修正法)
    9. break;
    10. }
    11. }
    12. return index;
    13. }

    5.图书信息的插入

    1. void insertBook(Sqlist &L,Book t,int x){
    2. //判断x 是否合法
    3. int len = L.len;//1--len
    4. if(x<1 || x>len){
    5. printf("位置不合法!\n");
    6. }else{
    7. //将len 至 x位置的图书全部向后移动一个位置
    8. for(int i=len;i>=x;i--){
    9. L.elem[i+1] = L.elem[i];
    10. }
    11. //将图书 t 加入 L的x位置
    12. L.elem[x] = t;
    13. L.len++;
    14. printf("图书插入成功!\n");
    15. }
    16. }

    6.图书信息的删除

    1. void deleteBook(Sqlist &L,int indexT){
    2. int len = L.len;//1--len
    3. for(int i=indexT;i<len;i++){
    4. L.elem[i] = L.elem[i+1];
    5. }
    6. L.len--; //长度-1
    7. }

    7.图书信息总览

    1. int main(){
    2. int n;
    3. //顺序存储结构
    4. Sqlist L;
    5. L.elem =(Book *)malloc(sizeof(Book)*100);
    6. L.len=0;
    7. printf("-------------图书录入------------\n");
    8. printf("请输入图书的数目:\n");
    9. scanf("%d",&n);
    10. for(int i=1;i<=n;i++){
    11. printf("请输入第 %d 本图书的ISBN码:\n",i);
    12. scanf("%s",L.elem[i].id);
    13. getchar();
    14. printf("请输入第 %d 本图书的书名:\n",i);
    15. scanf("%s",L.elem[i].name);
    16. getchar();
    17. printf("请输入第 %d 本图书的价格:\n",i);
    18. scanf("%lf",&L.elem[i].price);
    19. L.len++;
    20. }
    21. //展示所有的图书
    22. printf("\n-------------图书展示------------\n");
    23. display(L);
    24. //图书查找功能
    25. printf("\n-------------图书查找------------\n");
    26. printf("请输入要查询图书的ISBN码:\n");
    27. char name[101];
    28. scanf("%s",name);
    29. //图书查找函数:返回值如果是0 则表示系统中无此图书,返回值非0 则表示系统中有次图书,返回值代表下标
    30. //参数:L name
    31. int index = findBook(L,name);
    32. if(index==0){
    33. printf("ISBN码为:%s的图书不存在!",name);
    34. }else{//图书存在
    35. printf("图书存在,要查找的图书信息如下:\n");
    36. printf("%s\t%s\t%lf\n",L.elem[index].id, L.elem[index].name, L.elem[index].price);
    37. }
    38. //图书插入
    39. //提示用户输入图书信息
    40. Book t;
    41. int x;
    42. printf("\n-------------图书插入------------\n");
    43. printf("请输入要插入图书的ISBN码:\n");
    44. scanf("%s",t.id);
    45. printf("请输入要插入图书的名称:\n");
    46. scanf("%s",t.name);
    47. printf("请输入要插入图书的价格:\n");
    48. scanf("%lf",&t.price);
    49. printf("请输入要插入图书的位置(下标1--98):\n");
    50. scanf("%d", &x);
    51. //图书信息 整合 到了 t
    52. insertBook(L,t,x);
    53. //展示所有的图书
    54. printf("\n-------------图书展示------------\n");
    55. display(L);
    56. //图书删除
    57. int indexT;
    58. char idT[101];
    59. printf("\n-------------图书删除------------\n");
    60. printf("请输入要删除图书的编码:\n");
    61. scanf("%s",idT);
    62. //用户要删除 ISBN码为 idT 的图书
    63. indexT = findBook(L,idT);//如果 0 则idT不存在,如果非0则返回的是下标
    64. if(indexT!=0){//图书存在
    65. printf("图书存在,确定删除请按1\n");
    66. int d;
    67. scanf("%d",&d);
    68. if(d==1){
    69. //从表L 中删除 下标indexT
    70. deleteBook(L,indexT);
    71. printf("图书删除成功!\n");
    72. }
    73. }else{//==0
    74. printf("图书不存在!\n");
    75. }
    76. printf("\n-------------图书展示------------\n");
    77. display(L);
    78. return 0;
    79. }

  • 相关阅读:
    运维Shell脚本小试牛刀(十二):awk编程尝鲜
    Spring Data MongoDB SpEL表达式注入漏洞(CVE-2022-22980)分析与利用
    多目标水循环优化算法(Matlab代码实现)
    动漫主题dreamweaver作业静态HTML网页设计——仿京东(海贼王)版本
    ssh动态代理配置(Tunnel)
    【华为OD机试真题 JS】数组拼接
    (232)Verilog HDL:时钟激励
    Python小技巧:轻松找到电脑里的隐藏图片!
    每日一题——Python实现PAT甲级1132 Cut Integer(举一反三+思想解读+逐步优化)五千字好文
    关于commonjs、AMD、UMD、ESM以及ts模块之间的使用差异
  • 原文地址:https://blog.csdn.net/qq_64314976/article/details/125904499