C语言程序设计报告 图书馆信息管理系统

时间:2024.4.2

20##年第二阶段课程设计成果报告

实训项目:      程序设计技术课程设计         

学号:                 姓名:                 

专业:                                        

实训日期:20##年6月 27 日至20##年7月8日

指导教师:                实训成绩:           

江西财经大学信息管理学院


一、  问题概述

(对问题背景及主要实现的功能进行简要说明。)

随着图书馆图书的不断增加,图书管理的难度也随之加大,一个好的图书馆图书信息管理系统,能够使图书管理工作简便,有条不紊。通过C语言学习,我们已经能够完成基本的C语言编程,此次实训,是将学习和实践结合,充分感受C语言解决实践问题的魅力。此次编写的图书馆信息管理系统,能够实现基本的图书管理功能。它包括图书库的创建,打印图书信息表,录入新图书,修改图书信息,删除图书信息,借书,还书。图书库包含图书的各方面信息,编号,类型,作者,出版社,总数,剩余量等等,并且打印图书信息表。录入,修改,删除这些功能都是对图书库的操作。借书,还书这两项最重要的功能也都能很好的实现。把此系统应用于图书馆的图书管理,能使图书馆的各项工作便捷,可靠的完成。

二、  系统目标

     (主要是对系统技术目标和要求)

欢迎界面、主菜单、系统管理功能、图书信息管理、借阅功能模块、

其中系统管理功能包括系统管理员添加、删除、修改信息以及用管理员身份登录系统等功能。

图书信息管理包括新增图书、修改图书、删除图书、等功能。

借阅功能模块包括借书功能、还书功能、查询已借图书、查询过期未还图书,其中借书还书功能可以按图书编号信息进行操作。

三、  设计的过程及步骤

1、需求分析

(描述系统需求,既详细分析系统需求和功能)

根据题目要求,应当把图书信息用结构体形式输入,再定义一个全局变量和文件指针进行整个程序的运行,然后把图书信息送到文件中,所以应该提供一个结构体和文件的输入输出等操作;在程序中需实现图书信息录入,浏览,查询,删除和修改等功能的操作,所以需要建立相应的模块来实现;另外还需提供键盘式选择菜单实现功能,在运行时达到所要目的。

2、设计文件结构

(设计文件结构,并扼要说明设计缘由)

此系统根据所要实现的功能,使用的函数等综合考虑,设计了两个,图书信息文件(tushu.red),借还书文件(borrow.red),录入新图书,修改,删除图书等一些操作时在图书信息文件上运行,借还书功能则在借还书文件上运行,同时也要在图书信息文件上运行。两个文件相互结合,使各个功能很好的实现了,运用C语言的文件功能,也是整个程序的主线。

3、设计系统功能图

(根据需求分析结果和文件结构,应用结构化分析与设计技术设计功能结构图,如下图所示)

 

    4、函数设计

( 详细分析每一个子模块的子功能,定义主要的子函数原型,并对每一个函数的功能加以说明)

此系统主要有7个功能,也就有主要的7个函数,他们分别是

void shan()       //删除图书信息

void xiu()        //修改图书信息

void putin()      //录入新图书

void print()      //打印图书信息表

void returned()    //还书

void books()       //创建图书文件

void borrowed()    //借书

其中每一个函数都用到了两个结构体,它们分别是:

struct tushu

    {

        char bianhao1[10];

        char bianhao2[10];

        char leixing[20];

        char shuming[50];

        char chubanshe[50];

        char writer[20];

        long zongshu;

        long shengyu;

    }shu;

struct books

     {

        char bianhao1[10];

         char bianhao2[10];

         long nian;

         long borrowmonth;

         long borrowday;

         long returnedmonth;

         long returnedday;

         long limittime;

         char student[10];

     }book;

四、  实训成果

(对自己的最后的实验成果进行概括)

经过长达9天的编写,修改,运行,最后完成时,预想的功能都能比较好的实现。下面是各个功能运行的界面:

进入界面 :

功能选择界面 :

录入新图书界面 :

还有各个功能各种界面,这里就不一一列出了。

五、  实训心得与体会

此次系统编程,我感受很多,从开始编程时的迷茫,到修改时的烦躁,再到运行时的无奈,最后是成功时无法表达的喜悦和兴奋。每一步都是自己努力走过来的,虽然这个过程比较辛苦,但是现在回过头去想想,这几天还是过得很有意义和价值的。大家都说编程最需要的是耐心,我这次是深有体会,程序刚开始编,满身都是信心和兴趣,到修改的时候,检查一遍又一遍,修改一次有一次还是无法成功运行,这个时候只有耐心才能坚持完成。同时,编程时,会发现许多以前学的概念都记错了,这时候要找出课本重新温习,所以这也是一个不断学习的过程。还有,编程时不能太死板,要实现一个功能其实都会有很多种算法,我们应边做边学习新的方法。对于我的不足之处,要实现一个功能时,我总是第一遍编程实现后,就不愿意在深探究下去,这种惰性很不适合做编程工作。

总而言之,通过此次C语言实践编程,使我对C语言的兴趣更加浓厚,也对C语言的实践应用更加了解,充分感受到了它的魅力,同时也明白了自身在这方面工作的优势和不足。

六、  附录

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

struct tushu

    {

        char bianhao1[10];

        char bianhao2[10];

        char leixing[20];

        char shuming[50];

        char chubanshe[50];

        char writer[20];

        long zongshu;

        long shengyu;

    }shu;

struct books

     {

         char bianhao1[10];

         char bianhao2[10];

         long nian;

         long borrowmonth;

         long borrowday;

         long returnedmonth;

         long returnedday;

         long limittime;

         char student[10];

     }book;

void shan()                              //删除图书信息

{

    FILE *fp;

    int i=0,j,n,m,l;

    char booknum[20];

    struct tushu tu[1000];

    if((fp=fopen("tushu.txt","r"))==NULL)

    {

        printf("can not open the tushu.txt.\n");

        exit(0);

    }

    while(fread(&tu[i],sizeof(shu),1,fp))

    {

        i++;

        m=i;

    }

    printf("要删除几本书:");

    scanf("%d",&n);

    getchar();

    for(i=0;i<n;i++)

    {

        printf("输入图书编号2:");

        gets(booknum);

        for(j=0;j<m;j++)

            if(strcmp(booknum,tu[j].bianhao2)==0)

              break;

        if(j<m)

       {

           for(l=0;l<m;l++)

              if(strcmp(tu[j].bianhao1,tu[l].bianhao1)==0)

              {

                  tu[l].zongshu--;

                  tu[l].shengyu--;

              }

            for(j;j<m;j++)

                tu[j]=tu[j+1];

       }

        else

       {

            printf("输入有误  重新输入\n");

            i--;

        }  

    }

    if((fp=fopen("tushu.txt","w"))==NULL)

    {

        printf("can not open the tushu.txt.\n");

        exit(0);

    }

    for(i=0;i<m-n;i++)

        fwrite(&tu[i],sizeof(shu),1,fp);

    printf("删除成功!!");

}

void xiu()                                        //修改图书信息

{

    FILE *fp;

    int i=0,m,n;

    char booknum[20],numchar[20];

    struct tushu tu[1000];

    if((fp=fopen("tushu.txt","r"))==NULL)

    {

        printf("can not open the borrow.txt.\n");

        exit(0);

    }

    while(fread(&tu[i],sizeof(shu),1,fp))

    {

        i++;

        m=i;

    }

    if((fp=fopen("tushu.txt","w"))==NULL)

    {

        printf("can not open the borrow.txt.\n");

        exit(0);

    }

    printf("要修改几本书:");

    scanf("%d",&n);

    getchar();

    for(i=0;i<n;i++)

    {

        printf("输入要修改的图书编号2:");

        gets(booknum);

        for(i=0;i<m;i++)

       {

            if(strcmp(booknum,tu[i].bianhao2)==0)

              break;

       }

        if(i<m)

       {

            printf("》》》输入修改后的\n\n");

            printf("》》》输入编号1:"); 

            gets(tu[i].bianhao1);

           printf("\n");

            printf("》》》编号2:"); 

            gets(tu[i].bianhao2);

           printf("\n");

            printf("》》》类型:");

            gets(tu[i].leixing);

           printf("\n");

            printf("》》》书名:"); 

            gets(tu[i].shuming);

           printf("\n");

            printf("》》》出版社:"); 

            gets(tu[i].chubanshe);

           printf("\n");

            printf("》》》作者:"); 

            gets(tu[i].writer);

           printf("\n");

            printf("》》》总数:"); 

            gets(numchar);

           printf("\n");

            tu[i].zongshu=atol(numchar);

            printf("》》》剩余:"); 

            gets(numchar);

           printf("\n");

            tu[i].shengyu=atol(numchar);

       }

        else

            printf("输入有误\n");

        for(i=0;i<m;i++)

            fwrite(&tu[i],sizeof(shu),1,fp);

    }

    fclose(fp);

}

void putin()                                               //录入新图书

{

    char numchar[20];

    FILE *fp;

    int i=0,m,n;

    struct tushu tu[1000];

    if((fp=fopen("tushu.txt","r"))==NULL)

    {

        printf("can not open the borrow.txt.\n");

        exit(0);

    }

    while(fread(&tu[i],sizeof(shu),1,fp))

    {

        i++;

        m=i;

    }

    if((fp=fopen("tushu.txt","w"))==NULL)

    {

        printf("can not open the borrow.txt.\n");

        exit(0);

    }

    for(i=0;i<m;i++)

    {

        fwrite(&tu[i],sizeof(shu),1,fp);

    }

    printf("要录入几本书:");

    scanf("%d",&n);

    getchar();

    for(i=0;i<n;i++)

    {  

       printf("\n");

        printf("》》》输入编号1:"); 

        gets(shu.bianhao1);

        printf("\n");

        printf("》》》编号2:"); 

        gets(shu.bianhao2);

        printf("\n");

        printf("》》》类型:");

        gets(shu.leixing);

        printf("\n");

        printf("》》》书名:"); 

        gets(shu.shuming);

        printf("\n");

        printf("》》》出版社:"); 

        gets(shu.chubanshe);

        printf("\n");

        printf("》》》作者:"); 

        gets(shu.writer);

        printf("\n");

        printf("》》》总数:"); 

        gets(numchar);

        printf("\n");

        shu.zongshu=atol(numchar);

        printf("》》》剩余:"); 

        gets(numchar);

        printf("\n");

        shu.shengyu=atol(numchar);

        fwrite(&shu,sizeof(shu),1,fp);

    }

    fclose(fp);

}

void print()                                           //打印图书信息表

    FILE *fp;

    if((fp=fopen("tushu.txt","r"))==NULL)

    {

        printf("can not open the tushu.txt.\n");

        exit(0);

    }

    puts("_______________________________________________________________________");

    puts("-----------------------------------------------------------------------");

    puts("| 编号1  | 编号2  |  类型  |  书名  |   作者   |   出版社  |   总数 |   剩余 |");                         

    fseek(fp,0L,SEEK_SET);

    while(fread(&shu,sizeof(shu),1,fp)==1)

        printf("  %-9s%-10s%-10s%-10s%-10s%-10s%-10ld%-10ld\n",shu.bianhao1,shu.bianhao2,shu.leixing,shu.shuming,shu.writer,shu.chubanshe,shu.zongshu,shu.shengyu);

}

void returned()                                              //还书

{

    FILE *fp;

    int i=0,m,flag=0,j;

    char booknum[20];

    struct books book1[1000];

    if((fp=fopen("borrow.txt","r"))==NULL)

    {

    printf("can not open the borrow.txt.\n");

        exit(0);

    }

    while(fread(&book1[i],sizeof(book),1,fp))

    {

        i++;

        m=i;

    }

    if((fp=fopen("borrow.txt","w"))==NULL)

    {

        printf("can not open the borrow.txt.\n");

        exit(0);

    }

    printf("输入要还的图书编号2:");

    gets(booknum);

    for(j=0;j<m;j++)

    {

       if(strcmp(booknum,book1[j].bianhao2)==0)

       {

           flag=1;

            break;

       }

    }

    if(flag)

    {

       flag=0;

        printf("输入还书月份:");

        scanf("%ld",&book1[i].returnedmonth);

        printf("输入还书日期:");

        scanf("%ld",&book1[i].returnedday);

        getchar();

        for(j=0;j<m;j++)

       fwrite(&book1[i],sizeof(book),1,fp);

    }

    else

       printf("输入有误\n");

    fclose(fp);

}

void books()                                                //创建图书文件

   FILE *fp;

   char numchar[50],ch='y';

   if((fp=fopen("tushu.txt","wt"))==NULL)

   {

       printf("can not open the tushu.txt.\n");

       exit(0);

   }

   while(ch=='y'||ch=='Y')

   {

       printf("\n");

       printf("》》》输入编号1:"); 

       gets(shu.bianhao1);

       printf("\n");

       printf("》》》编号2:"); 

       gets(shu.bianhao2);

       printf("\n");

       printf("》》》类型:");

       gets(shu.leixing);

       printf("\n");

       printf("》》》书名:"); 

       gets(shu.shuming);

       printf("\n");

       printf("》》》出版社:"); 

       gets(shu.chubanshe);

       printf("\n");

       printf("》》》作者:"); 

       gets(shu.writer);

       printf("\n");

       printf("》》》总数:"); 

       gets(numchar);

       printf("\n");

       shu.zongshu=atol(numchar);

       printf("》》》剩余:"); 

       gets(numchar);

       printf("\n");

       shu.shengyu=atol(numchar);

       fwrite(&shu,sizeof(shu),1,fp);

       do{

          printf("have another book record(y/n)?:");

          gets(numchar); 

          ch=numchar[0];

       }while(!(ch=='y'||ch=='n'||ch=='Y'||ch=='N'));

   }

   fclose(fp);

}

void borrowed()                                               //借书

{  

    struct tushu tu[1000];

    struct books book1[1000];

    FILE *fp,*fq;

    char numchar[50];

    int i=0,j,m1,m2,n,flag=0,x;

    printf("借几本书:");

    scanf("%d",&x);

    getchar();

    if((fq=fopen("tushu.txt","r"))==NULL)

    {

       printf("can not open the tushu.txt.\n");

        exit(0);

    }

    while(fread(&tu[i],sizeof(shu),1,fq))

    {

       i++;

        m1=i;

    }

    if((fp=fopen("borrow.txt","r"))==NULL)

    {

       printf("can not open the borrow.txt.\n");

       exit(0);

    }

    while(fread(&book1[i],sizeof(book),1,fp))

    {

        i++;

        m2=i;

    }

    for(i=0;i<x;i++)

    {

       printf("\n");

       printf("输入编号2:");

        gets(numchar);

        for(j=0;j<m1;j++)

       {

           if(strcmp(numchar,tu[j].bianhao2)==0)

           {

              n=j;

              flag=1;

               break;

           }

       }

        if(flag)

       {

           printf("\n");

           printf("输入正确\n\n");

           flag=0;

           strcpy(book.bianhao2,numchar);

           printf("》》》输入编号1");  gets(book.bianhao1); printf("\n");

            printf("》》》借书年份:");   gets(numchar);  printf("\n");  book.nian=atol(numchar);

            printf("》》》借书月份:");  gets(numchar); printf("\n");  book.borrowmonth=atol(numchar);

            printf("》》》借书日期:"); gets(numchar); printf("\n");  book.borrowday=atol(numchar);

            printf("》》》还书月份:");  gets(numchar); printf("\n");  book.returnedmonth=atol(numchar);

            printf("》》》还书日期:");  gets(numchar);  printf("\n");  book.returnedday=atol(numchar);

            printf("》》》期限:");  gets(numchar); printf("\n");  book.limittime=atol(numchar);

            printf("》》》学生学号:");  gets(book.student);  printf("\n");

            if((fp=fopen("borrow.txt","w"))==NULL)

           {

              printf("can not open the borrow.txt.\n");

                exit(0);

           }

           fwrite(&book,sizeof(book),1,fp);

            for(j=0;j<m2;j++)

           {

              fwrite(&book1[j],sizeof(book),1,fp);

           }

           for(j=0;j<m1;j++)

           {

              if(strcmp(tu[n].bianhao1,tu[j].bianhao1)==0)

                  tu[j].shengyu--;

           }

            if((fq=fopen("tushu.txt","w"))==NULL)

           {

              printf("can not open the tushu.txt.\n");

                exit(0);

           }

           for(j=0;j<m1;j++)

           {

              fwrite(&tu[j],sizeof(shu),1,fq);

           }

       }

       else

       {

           printf("输入错误\n");

           i--;

       }

    }

    fclose(fq);

    fclose(fp);

}

void main()

{  

    int flag=1;

    char a[20];

    puts("┌──────────────────────────┐");

    puts("│                                                    │");

    puts("│                                                    │");

    puts("│                                                    │");

    puts("│                                                    │");

    puts("│                                                    │");

    puts("│           欢迎使用图书信息管理系统                 │");

    puts("│                                                    │");

    puts("│                                                    │");

    puts("│                                                    │");

    puts("│                                                    │");

    puts("│                  █████                        │");

    puts("│                  █田█田█                        │");

    puts("│                  █田█田█                        │");

    puts("│                  █田█田█.                      │");

    puts("│                  █田█田█.                      │");

    puts("│                  █████                        │");

    puts("│                ◢██□██◣.                    │");

    puts("│                                                    │");

    puts("│                                                    │");

    puts("│      请选择您需要的功能 :                         │");

    puts("│                                                    │");

    puts("│         (直接键入对应数字)                       │");

    puts("│                                                    │");

    puts("│                                                    │");

    puts("│                                                    │");

    puts("│         1.图书创建                                 │");

    puts("│                                                    │");

    puts("│         2.打印图书信息表                           │");

    puts("│                                                    │");

    puts("│         3.图书追加与录入                           │");

    puts("│                                                    │");

    puts("│         4.修改图书信息                             │");  

    puts("│                                                    │");  

    puts("│         5.删除图书信息                             │");

    puts("│                                                    │");

    puts("│         6.借书                                     │");  

    puts("│                                                    │");

    puts("│         7.还书                                     │");

    puts("│                                                    │");

    puts("│                                                    │");

    puts("│                                                    │");

    puts("│                                                    │");

    puts("│                                                    │");

    puts("│                                                    │");

    puts("└──────────────────────────┘");

    while(flag)

    {

        flag=0;

        scanf("%s",a);

        getchar();

        if(strcmp(a,"3")==0)

            putin();

        else if(strcmp(a,"1")==0) 

            books();

        else if(strcmp(a,"6")==0) 

            borrowed();

        else if(strcmp(a,"2")==0)

            print();

        else if(strcmp(a,"7")==0)

            returned();

        else if(strcmp(a,"4")==0)

            xiu();

        else if(strcmp(a,"5")==0)

            shan();

        else

        {

            printf("输入错误   请重新输入:");

            flag=1;

        }

    }

}

更多相关推荐:
图书馆管理信息系统设计报告 (2)

图书馆管理信息系统设计报告学号11061150班级信息班姓名冯聪晴时间20xx年11月1系统总体技术方案11模块设计图书馆管理信息系统采用先进的ClientBrowserServerDatabaseServer...

图书馆管理信息系统设计报告

图书馆管理信息系统分析设计实现与测试11系统分析111图书馆管理信息系统的基本任务该图书馆管理信息系统是一个具有万人以上的员工并地理位置分布在大型企的图书馆理系统图书馆藏书100多万册每天的借阅量近万册在手工操...

C语言程序设计报告__图书馆信息管理系统

20xx年第二阶段课程设计成果报告实训项目程序设计技术课程设计学号20xx0210470335姓名郑毓豪专业电气工程及其自动化实训日期20xx年6月8日至20xx年6月20日指导教师舒蔚实训成绩华东交通大学理工...

管理信息系统课程设计 -图书馆信息管理系统

辽宁工业大学管理信息系统设计课程设计报告(论文)题目:图书馆信息管理系统的分析与设计院(系):软件学院专业班级:软件工程112学号:学生姓名:指导教师:起止时间:20##.5.28-20##.6.8课程设计(论…

图书馆管理信息系统毕业论文

东华理工学院毕业论文设计摘要摘要图书馆管理信息系统是典型的计算机信息管理系统MIS其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面对于前者要求建立起数据一致性和完整性强数据安全性好的库而对于后...

图书信息管理系统实验报告

图书管理信息系统第1章图书管理信息系统系统规划11项目概况111项目说明1项目名称图书管理信息系统2客户3供应商12项目战略规划信息系统建设目标目标是努力达到读者满意图书馆内藏书丰富品种齐全但随着信息处理量的快...

图书馆管理信息系统分析与设计.doc111

文档下载站更多资源下载本目录论文摘要1关键字11选题背景311课题背景意义和来源以及系统工具介绍3111课题背景及意义3112课题的来源3113系统工具介绍312国内外发展概况413研究内容及须解决的关键问题4...

图书馆管理信息系统设计与实现报告摘要

图书馆管理信息系统设计与实现学生姓名郭娟指导老师罗永红摘要为了便于图书资料的管理需要有效的图书管理软件减轻工作人员的工作量方便工作人员对它的操作提高管理的质量和水平做到高效智能化管理达到提高图书借阅信息管理效率...

数据库课程设计报告——图书馆管理信息系统

数据库原理课程设计报告学生姓名班级学号所在学院专业课程设计题目图书馆管理系统指导教师20xx年1月3日一需求分析2功能需求2数据需求3二建库结果3三系统开发设计5四关键和难点问题以及相应的解决方案7关键7难点问...

管理信息系统实验报告设计

经济管理学院管理信息系统实验报告设计指导老师20xx61管理信息系统实验报告目录一系统需求分析311问题的提出312可行性分析313系统的设计目标3二系统设计421系统设计422系统运行环境4三系统结构框架43...

管理信息系统课程设计报告

管理信息系统课程设计报告仓库管理系统学院班级姓名学号仓库管理系统的设计和实现一绪论企业的物资管理往往是很繁琐的由于所掌握的物资种类众多订货管理发放的渠道各有差异各个企业之间的管体制不尽相同各类统计计划报表繁多等...

管理信息系统课程设计报告模板

管理信息系统图书馆管理系统课程设计报告图书管理查询系统一系统背景当今时代是飞速发展的信息时代在各行各业中离不开信息处理这正是计算机被广泛应用于信息管理系统的环境计算机的最大好处在于利用它能够进行信息管理使用计算...

图书馆管理信息系统设计报告(18篇)