C语言图书馆管理系统课程设计报告12

C语言课程设计

学生姓名袁盛升

学生学号1021112128

所在班级10211121

任课教师姜林

图书馆管理系统

设计目的

图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等.

试设计一图书信息管理系统,使之能提供以下功能:

1)系统以菜单方式工作

2)图书信息录入功能(图书信息用文件保存)--输入

3)图书信息浏览功能--输出

4)查询和排序功能:(至少一种查询方式)--算法

5)按书名查询

6)按作者名查询

7)图书信息的删除与修改(可选项)*/

设计思路

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

  【总体设计

图1  系统功能模块图

 【详细设计

1.       主函数

主函数设计要求简洁,只提供部分提示语和函数的调用

【程序】

     

#include<stdio.h>

#include<stdlib.h>

#include<conio.h>

int get()

{

       int o;

       scanf("%d",&o);

}

struct BOOK

{

       int ID,usr[10],total,store,days[10];

       char name[31],aurthor[21];

}books[100];

/*上面是结构体的定义,用于存放书籍及借书的信息。*/

void page_title(char*menu_item)

{

       printf("图书管理系统\n-%s-\n",menu_item);

}

/*通过参数menu_item,可以显示当前的状态。*/

void return_confirm()

{

       printf("\n按任意返回\n");

    getch();

}

/*上面是返回前请求确认的函数,以便在返回前观察结果*/

int search_book()

{

       int n,i;

       printf("输入图书序号:");

       scanf("%d",&i);

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

       {

              if(books[n].ID==i)

              {

                     printf("书名:%s\n",books[n].name);

                     printf("作者:%s\n",books[n].aurthor );

                     printf("存数:%d of ",books[n].store );

                     printf("%d\n",books[n].total);

                     return n;

              }

       }

       printf("\n输入错误或无效图书序号\n");

       return -1;

}

/*上面的函数是在数组中找到图书号匹配的记录,显示其信息并返

 回数组下标,如果找不到相应记录则提示错误并返回-1。*/

void book_out()

{

       int n,s,l,d;

       page_title("借阅图书");

       if((n=search_book())!=-1 && books[n].store >0)

       {

              printf("请输入可借天数:\n");

              scanf("%d",&d);

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

              {

                     if(books[n].usr [l]==0)

                     {

                            books[n].usr[l]=s;

                            books[n].days[l]=d;

                            break;

                     }

              }

              books[n].store--;

       }

       if(n!=-1 && books[n].store==0)

              printf("此书已借出。\n");

           return_confirm();

}

/*上面是借书的函数,首先调用找书函数*/

void book_in()

{

       int n,s,l;

       page_title("图书归还");

       if((n=search_book())!=-1 && books[n].store<books[n].total)

       {

              printf("借阅者图书证列表:\n");

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

                     if(books[n].usr[l])    !0;

                     printf("[%d]-%d天\n",books[n].usr[l],books[n].days[l]);

                     printf("请输入借书证序号:");

                     scanf("%d",&s);

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

                     {

                            if(books[n].usr[l]==s)

                            {

                                   books[n].usr[l]=0;

                                   books[n].days[l]=0;

                                   break;

                            }

                     }

                     books[n].store++;

       }

       if(n!=-1 && books[n].store==books[n].total)

              printf("全部入藏。\n");

           return_confirm();

}

void book_add()

{

       int n;

       page_title("注册新书");

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

              if(books[n].ID==0)

                     break;

              printf("序号:");

              scanf("%d",&books[n].ID);

              printf("书名:");

              scanf("%s",&books[n].name);

              printf("作者:");

              scanf("%s",&books[n].aurthor);

              printf("数量:");

              scanf("%d",books[n].total);

              books[n].store=books[n].total;

              return_confirm();

}

void book_del()

{

       int n;

       page_title("注销旧书\n");

       if((n=search_book())!=-1) books[n].ID=0;

       printf("该书已注销\n");

       return_confirm();

}

void main()

{

       while(1)

       {

menu:page_title("操作选单");

        printf("请用数字选择操作\n\n");

        printf("1,借阅图书\n2,归还图书\n");

        printf("3,注册新书\n4,注销旧书\n\n");

        printf("\n0,退出\n");

        switch(get())

        {

        case 1: book_out();break;

        case 2: book_in();break;

        case 3: book_add();break;

        case 4: book_del();break;

        default : exit(0);

       }

return;

       }

}

设计体会

通过为期一周的课程设计,对《C语言》这门课程有了更深一步的了解。它是计算机程序设计的重要理论技术基础,在我们软件工程专业的学习中占据着十分重要的地位。这个程序的结构大体是从网络上借鉴的,但是结果无法运行,只能自己修改,最后终于调试通过,同时也使我们知道,要学好这门课程,仅学习书本上的知识是不够的,还要有较强的实践能力。因为我们学习知识就是为了实践。而只有多实践,多编写程序,才能更好的理解与掌握书本上的东西。

 

第二篇:C语言图书馆管理系统课程设计报告

C语言课程设计

学生姓名

学生学号

所在班级

任课教师

图书馆管理系统

设计目的

图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等.

试设计一图书信息管理系统,使之能提供以下功能:

1)系统以菜单方式工作

2)图书信息录入功能(图书信息用文件保存)--输入

3)图书信息浏览功能--输出

4)查询和排序功能:(至少一种查询方式)--算法

5)按书名查询

6)按作者名查询

7)图书信息的删除与修改(可选项)*/

设计思路

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

  【总体设计

图1  系统功能模块图

 【详细设计

1.       主函数

主函数设计要求简洁,只提供部分提示语和函数的调用

【程序】

      

#include<stdio.h>

#include<stdlib.h>

#include<conio.h>

int get()

{

       int o;

       scanf("%d",&o);

}

struct BOOK

{

       int ID,usr[10],total,store,days[10];

       char name[31],aurthor[21];

}books[100];

/*上面是结构体的定义,用于存放书籍及借书的信息。*/

void page_title(char*menu_item)

{

       printf("图书管理系统\n-%s-\n",menu_item);

}

/*通过参数menu_item,可以显示当前的状态。*/

void return_confirm()

{

       printf("\n按任意返回\n");

    getch();

}

/*上面是返回前请求确认的函数,以便在返回前观察结果*/

int search_book()

{

       int n,i;

       printf("输入图书序号:");

       scanf("%d",&i);

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

       {

              if(books[n].ID==i)

              {

                     printf("书名:%s\n",books[n].name);

                     printf("作者:%s\n",books[n].aurthor );

                     printf("存数:%d of ",books[n].store );

                     printf("%d\n",books[n].total);

                     return n;

              }

       }

       printf("\n输入错误或无效图书序号\n");

       return -1;

}

/*上面的函数是在数组中找到图书号匹配的记录,显示其信息并返

 回数组下标,如果找不到相应记录则提示错误并返回-1。*/

void book_out()

{

       int n,s,l,d;

       page_title("借阅图书");

       if((n=search_book())!=-1 && books[n].store >0)

       {

              printf("请输入可借天数:\n");

              scanf("%d",&d);

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

              {

                     if(books[n].usr [l]==0)

                     {

                            books[n].usr[l]=s;

                            books[n].days[l]=d;

                            break;

                     }

              }

              books[n].store--;

       }

       if(n!=-1 && books[n].store==0)

              printf("此书已借出。\n");

           return_confirm();

}

/*上面是借书的函数,首先调用找书函数*/

void book_in()

{

       int n,s,l;

       page_title("图书归还");

       if((n=search_book())!=-1 && books[n].store<books[n].total)

       {

              printf("借阅者图书证列表:\n");

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

                     if(books[n].usr[l])    !0;

                     printf("[%d]-%d天\n",books[n].usr[l],books[n].days[l]);

                     printf("请输入借书证序号:");

                     scanf("%d",&s);

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

                     {

                            if(books[n].usr[l]==s)

                            {

                                   books[n].usr[l]=0;

                                   books[n].days[l]=0;

                                   break;

                            }

                     }

                     books[n].store++;

       }

       if(n!=-1 && books[n].store==books[n].total)

              printf("全部入藏。\n");

           return_confirm();

}

void book_add()

{

       int n;

       page_title("注册新书");

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

              if(books[n].ID==0)

                     break;

              printf("序号:");

              scanf("%d",&books[n].ID);

              printf("书名:");

              scanf("%s",&books[n].name);

              printf("作者:");

              scanf("%s",&books[n].aurthor);

              printf("数量:");

              scanf("%d",books[n].total);

              books[n].store=books[n].total;

              return_confirm();

}

void book_del()

{

       int n;

       page_title("注销旧书\n");

       if((n=search_book())!=-1) books[n].ID=0;

       printf("该书已注销\n");

       return_confirm();

}

void main()

{

       while(1)

       {

menu:page_title("操作选单");

        printf("请用数字选择操作\n\n");

        printf("1,借阅图书\n2,归还图书\n");

        printf("3,注册新书\n4,注销旧书\n\n");

        printf("\n0,退出\n");

        switch(get())

        {

        case 1: book_out();break;

        case 2: book_in();break;

        case 3: book_add();break;

        case 4: book_del();break;

        default : exit(0);

       }

return;

       }

}

设计体会

通过为期一周的课程设计,对《C语言》这门课程有了更深一步的了解。它是计算机程序设计的重要理论技术基础,在我们软件工程专业的学习中占据着十分重要的地位。这个程序的结构大体是从网络上借鉴的,但是结果无法运行,只能自己修改,最后终于调试通过,同时也使我们知道,要学好这门课程,仅学习书本上的知识是不够的,还要有较强的实践能力。因为我们学习知识就是为了实践。而只有多实践,多编写程序,才能更好的理解与掌握书本上的东西。

相关推荐