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

时间:2024.4.12

C语言课程设计报告

图书信息管理系统设计

  语言程序设计

编程实践是学习C语言程序设计的一重要环节,上机实习和课程设计是提高同学们程序设计能力的有效途径,能够使同学们初步掌握程序设计的基本方法和调试技能。学校安排上机时间有限,老师也只能教给我们一些方法,而我们自己需要投入很大的时间和精力来锻炼。

1、题目要求

设计“图书信息管理系统

要求:

图书信息包括:登录号,书名,作者名,分类号,出版单位,出版时间,价格等。使之提供以下功能:

(1)  系统以菜单方式工作。

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

(3)       图书信息浏览功能。

(4)       图书信息查询功能。

(5)       图书信息的删除和修改。

2、分析:

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

3、总体设计:

     根据题目要求,可以将系统分为六个模块:

(1)       管理员登录系统模块。

(2)       菜单选择模块。

(3)       图书信息录入功能模块。

(4)       图书信息浏览功能。

(5)       图书信息查询功能。

(6)       图书信息的删除和修改。

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

4、详细设计:

头函数名:

#include

#include

#include

/*********图书信息结构体*********/

/***包括登录号,书名,作者名,分类号,出版单位,出版时间,价格等***/

struct bookinf  

{ int num; ******************************************************登录号

  char bname[20];***************************************书名

  char wname[10];***************************************作者名

  char clanum[14];***************************************分类号

  char pubcom[10];***************************************出版单位

  char pubtime[10];***************************************出版时间

  float price;*********************************************价格

};

管理员登录系统模块:

(1)   来到图书信息管理系统页面

void index() 

{

 char input;                                                          注释:运行时

 printf("\n\n\t\t\t*****************************\n");                         直接进入

 printf("\t\t\t    图书信息管理系统\n");                                     这个页面

 printf("\t\t\t*****************************\n\n\n");

 printf(" ------------------------------------------------------------------------------\n");

 printf("\t<按任意键进入>\n\t");

 input=getchar();   

}

(2)       管理员登陆进入功能菜单页面

第2页

 

FILE *fp;

struct manage pswd;

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

 {

  printf("\n\n\n\tCannot open file!\n\t");

 }

 else                                                                         

 {

  do

  {                                                 

   printf("\n\n\t请输入管理员帐号:");                            

   scanf("%s",name);                                         

   printf("\n\n\t请输入管理员密码:");

   scanf("%s",password);

   fp=fopen("password.txt","r");  

   fread(&pswd,sizeof(struct manage),1,fp);

   fclose(fp);

   w=strcmp(pswd.manage_name,name);

   k=strcmp(pswd.password,password);

   adm_servelist();

  }

  while (w!=0||k!=0);

 adm_servelist();    

 }

}

(3)来到功能菜单页面

第3页

void adm_servelist()

{

 void book_add();

 void book_view();

 void change();

 void del();

 void book_search();

 void login();

 void pwchange();

 int in;                                                注释:菜单列出的服务种类

 char input;                                                 从1,2,3,4,5,6

 do                                                        所对应的功能进行选择

 {                                                  

  printf("\n\n\n\t--欢迎使用信息管理系统--");

  printf("\n\n\t1.图书信息录入\n");

  printf("\t2.图书信息浏览\n");

  printf("\t3.图书信息查询\n");

  printf("\t4.图书信息删除\n");

  printf("\t5.图书信息修改\n");

  printf("\t6.退出管理模式\n");

  printf("\n\t请选择服务种类:");

  scanf("%d",&in);

  if (in!=1&&in!=2&&in!=3&&in!=4&&in!=5&&in!=6)

  {

   printf("\n\t没有这项服务~\n");

   printf("\t按任意键重新选择");

   input=getchar();

  }

 }

 while (in!=1&&in!=2&&in!=3&&in!=4&&in!=5&&in!=6);

 switch (in)

 {

 case 1: book_add();  break;                                    注释:选择自己所需要

 case 2: book_view(); break;                                         后摁下数字键则

 case 3: book_search(); break;                                      则进入此功能页面

 case 4: del(); break;

 case 5: change();break;

 case 6: login();  break;

 }

}

(3)图书信息录入功能模块

void book_add()

{

                                     第4页

void adm_servelist();

 void book_add();

 int i=0,j;

 FILE *fp;

 char input;                                      注释:输入的图书信息

 struct bookinf books;                                   是通过文件进行

 struct bookinf book_taxis[30];                            保存的

  printf("\n\n\n\t---请输入图书信息---\n\n");

  printf("\t登录号:");

  scanf("%d",&books.num);

  printf("\n\t书名:");

  scanf("%s",books.bname);

  printf("\n\t作者名:");

  scanf("%s",books.wname);

  printf("\n\t分类号:");

  scanf("%s",books.clanum);

  printf("\n\t出版单位:");

  scanf("%s",books.pubcom);

  printf("\n\t出版时间:");

  scanf("%s",books.pubtime);

  printf("\n\t价格:");

  scanf("%f",&books.price);

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

  {

   do

   {

    fread(&book_taxis[i],sizeof(struct bookinf),1,fp); 

    i=i+1;

   }

   while(!feof(fp));

   fclose(fp);

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

    if (books.num==book_taxis[j].num)  

    {

     printf("\n\n\n\t对不起,这个编号已经使用过了~\n");

     printf("\t按任意键返回管理菜单~");

     input=getchar();

     adm_servelist();

     break;

    }

  }

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

 {

                                   第5页

fp=fopen("book.txt","w");   

 }

 else

 {

  fclose(fp);

  fp=fopen("book.txt","a");

 }

 fwrite(&books,sizeof(struct bookinf),1,fp);  

 fclose(fp);

 printf("\n\n\n\t信息输入完毕~按任意键继续\n");

 input=getchar();

 adm_servelist();

}

(4)   图书信息浏览功能模块

void book_view()

{

 void adm_servelist();

 void book_view();

 int inp,i=0,n=0;

 FILE *fp;

 char input;

 struct bookinf bookview[20];

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

 {

  printf("\n\n\n\t数据尚未初始化~~\n\n\t请在管理菜单中增加图书信息~~~\n");

  printf("\n\t<按任意键返回管理菜单>\n\t");

  input=getchar();

  adm_servelist();

 }

 else   

 {

  do

  {

   fread(&bookview[i],sizeof(struct bookinf),1,fp);

   i=i+1;

  }

  while (!feof(fp));

  fclose(fp);   

  do    

   {

    printf("\n\t--------共有%d条记录--------",i-1);

    printf("\n\n\t登录号:   %d\n",bookview[n].num);

                                  第6页

printf("\n\t书名:   %s\n",bookview[n].bname);

    printf("\n\t作者名:   %s\n",bookview[n].wname);

    printf("\n\t分类号:   %s\n",bookview[n].clanum);

    printf("\n\t出版单位:   %s\n",bookview[n].pubcom);

    printf("\n\t出版时间:   %s\n",bookview[n].pubtime);

    printf("\n\t价格:   %f\n",bookview[n].price);

    printf("\n\n\t1.上一页\t2.下一页\t3.回目录\n");

    printf("\n\t请选择:");

    scanf("%d",&inp);

    switch (inp)

    {

    case 1:   

     {

      if (n==0)

      {

       printf("\n\t已到达首页\n\t按任意键重新选择");

       input=getchar();

      }

      else  n=n-1;   break;

     }

    case 2:

     {

      if (n==i-2)

      {

       printf("\n\t已到达最末页\n\t按任意键重新选择");

       input=getchar();

      }

      else n=n+1;   break;

     }

    case 3:

     {

      adm_servelist();

      break;

     }

    default:                                                                     

     {

      printf("\n\t没有这项服务\n\t按任意键重新选择");

      input=getchar();

     }

    }

   

   }

   while (inp!=3);

第7页

}

}

(5)   图书信息修改与删除功能模块

修改:

 void change(int x)

{

 int inp,i=0,j;

 void book_search();

 FILE *fp,*fp1;

 char input;

 struct bookinf books,book_taxis[20];

 do

 {   

  printf("\n\n\n\t注意:您确定要修改该记录吗?\n");

  printf("\n\t1.是\t2.否\n");

  printf("\n\t请输入:");

  scanf("%d",&inp);

  if (inp!=1&&inp!=2)

  {

   printf("\n\t对不起~没有这项服务~\n");

   printf("\t按任意键重新选择\n\t");

   input=getchar();

  }

 }

 while (inp!=1&&inp!=2);

 if (inp==2)

  book_search();

  if (inp==1)   

 {

   printf("\n\n\n\t---请输入图书信息---\n\n");

   printf("\t登录号:");

   scanf("%d",&books.num);

   printf("\n\t书名:");

   scanf("%s",books.bname);

   printf("\n\t作者名:");

   scanf("%s",books.wname);

   printf("\n\t分类号:");

   scanf("%s",books.clanum);

   printf("\n\t出版单位:");

   scanf("%s",books.pubcom);

   printf("\n\t出版时间:");

   scanf("%s",books.pubtime);

                                     第8页

printf("\n\t价格:");

   scanf("%f",&books.price);

  

   if ((fp1=fopen("book.txt","r"))!=NULL)   

   {

    do

    {

     fread(&book_taxis[i],sizeof(struct bookinf),1,fp1); 

     i=i+1;

    }

    while(!feof(fp1));

    fclose(fp1);

  

    for (j=0;j

     if (books.num==book_taxis[j].num)

     {

      printf("\n\n\n\t对不起,这个编号已经使用过了~\n");

      printf("\t按任意键返回管理菜单~");

       printf("0");

      input=getchar();

      book_search();  

      break;

     }

    for (j=x+1;j

     if (books.num==book_taxis[j].num)

     {

      printf("\n\n\n\t对不起,这个编号已经使用过了~\n");

      printf("1");

      printf("\t按任意键返回管理菜单~");

      input=getchar();

      book_search();

     break;

     }

   }

   book_taxis[x]=books;  

   fp=fopen("book.txt","w");

   for (j=0;j

   fwrite(&book_taxis[j],sizeof(struct bookinf),1,fp);

   fclose(fp);

   printf("\n\n\t信息修改完成!按任意键返回");

   input=getchar();

   book_search();  

第9页

}

}

S删除:

void del(int y)

{

 char input;

 FILE *fp;

 int inp,i=0,j;

 struct bookinf book_taxis[20];

 void book_search();

 void adm_servelist();

 do   

 {

  printf("\n\n\n\t注意:您确定要删除该记录吗?\n");

  printf("\n\t1.是\t2.否\n");

  printf("\n\t请输入:");

  scanf("%d",&inp);

  if (inp!=1&&inp!=2)

  {

   printf("\n\t对不起~没有这项服务~\n");

   printf("\t按任意键重新选择\n\t");

   input=getchar();

  }

 }

 while (inp!=1&&inp!=2);

 if (inp==2)

  book_search();

 if (inp==1)   

 {

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

   {

    do

    {

     fread(&book_taxis[i],sizeof(struct bookinf),1,fp);

     i=i+1;

    }

    while(!feof(fp));

    fclose(fp);

   }

   if (i>2)  

   {

    fp=fopen("book.txt","w"); 

                                第10页

 for (j=0;j

      fwrite(&book_taxis[j],sizeof(struct bookinf),1,fp);

     fclose(fp);

    fp=fopen("book.txt","a");

     for (j=y+1;j

      fwrite(&book_taxis[j],sizeof(struct bookinf),1,fp);

     fclose(fp);

   } 

   else   

   {

    remove("book.txt");

   }

  printf("\n\n\t记录已删除!\n\n\t按任意键返回\n\t");

  input=getchar();

  adm_servelist();  

 }

}

(6)      图书信息查询功能模块

void book_search()      

{

 void adm_servelist();

 void id_search();

 void wr_search();

 void bn_search();

 char input;

 FILE *fp;

 int inp;

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

 {

  printf("\n\n\n\t数据尚未初始化~~\n\n\t请在管理菜单中增加图书信息~~~\n");

  printf("\n\t<按任意键返回管理菜单>\n\t");

  input=getchar();

  adm_servelist();

 }

 else     

 {

  do

  {

   printf("\n\n\n\t1.按图书登录号查询\n");

   printf("\n\t2.按图书作者查询\n");

                                    第11页

printf("\n\t3.按图书名查询\n");

   printf("\n\t4.回到主菜单\n");

   printf("\n\n\t请选择查询类别:");

   scanf("%d",&inp);

   if (inp!=1&&inp!=2&&inp!=3&&inp!=4)

   {

    printf("\n\n\t没有这项服务~\n\t按任意键重新选择~");

    input=getchar();

   }

  }

  while (inp!=1&&inp!=2&&inp!=3&&inp!=4);

  fclose(fp);

  switch (inp)

  {

  case 1: id_search();  break;

  case 2: wr_search();  break;

  case 3: bn_search();  break;

  case 4: adm_servelist(); break;

  }

 }

}

5运行与测试报告:

第12页

第13页

三 后记/课程设计过程中遇到的问题以及解决方法,课程设计的体会。

这次课程设计让我掌握了许多的有用知识。首先通过不断地学习和锻炼更加熟练地掌握应用软件Microsoft Visual C++ 6.0 了。设计正确及合适的程序对于我们初学者来说是很大的难题,出现一丁点儿错误就得非很大的努力去修改,正式者一步步一点点的努力让我对C语言游乐更深的认识。同时我掌握了解决问题的方法,这无论是对以后的学习、生活都有无比重要的价值。

在设计中,每个同学都会遇到一些困难,或多或少,这些困难常常让我心情烦躁,比如不能清晰的建立设计模块,不会修改出现的错误等等,然后我向同学寻求帮助,向他们学习,最终通过自己努力建立了模块。不可避免地程序中肯定依然存在者某些问题,我希望在以后的学习和应用中不断提高自己的能力,攻克遇到的困难。

第14页

更多相关推荐:
c语言图书管理系统课程设计报告

合肥学院计算机科学与技术系课程设计报告20xx20xx学年第二学期课学学专指业导班教生姓程C语言课程设计图书管理系统名号级师课程设计名称20xx年6月一需求分析为了满足图书管理的要求通过计算机技术给图书管理人员...

c语言课程设计报告·图书管理系统

第一章11题目描述图书管理系统设计要求图书管理信息包括图书名称图书编号单价作者存在状态借书人姓名性别学号等试设计一图书管理系统使之能提供以下功能1新图书基本信息的输入2图书基本信息的查询3对撤销图书信息的删除4...

C语言图书管理系统课程设计报告[1]

第三章图书管理系统的设计与实现3.1系统的需求分析图书登记管理系统作为一个应用软件将为学校的老师和学生提供一个对学校图书馆深入了解并借阅、还书的平台。根据系统界面的提示信息对图书馆信息进行查询、初始化等操作系统…

c语言图书管理系统课程设计报告

沈航北方科技学院课程设计说明书课程名称教学部专业数控班级B042111学号B04211123学生姓名指导教师赵小磊20xx年6月链表实现图书信息操作田文目录摘要31绪论32系统分析321功能需求322数据需求4...

c语言图书管理系统课程设计报告

河南工业大学C语言课程设计报告20xx20xx学年第2学期课程C语言课程设计课程设计名称图书管理系统姓名晁永兵学号20xx16040220学院信息科学与工程学院专业软件工程班级2班20xx年05月04日一需求分...

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

课程设计报告图书馆管理系统目录1题目与要求22系统总体设计要给出必要的文字说明及必要的图示321功能需求分析明确选题的功能需求322系统功能模块划分要给出系统功能模块图43详细设计431重要数据的数据结构设计即...

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

C语言图书管理系统课程设计报告引言随着社会经济的迅速发展和现代科学技术的进步,人类社会正逐渐走向现代化。计算机事业的飞速发展,使得以计算机与通信技术为基础的信息系统正处于蓬勃发展的时期。同时,随着经济文化水平的…

C语言图书管理系统课程设计任务书 (4)

课程设计报告课程名称课题名称班级成绩管理系统专业班级学号姓名指导教师20xx年6月20日湖南工程学院课程设计任务书课程名称C语言程序设计课题班级成绩管理系统专业班级学生姓名学号指导老师审批任务书下达日期20xx...

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

C语言课程设计图书管理系统摘要本设计系统主要运用了结构体结构体指针数据结构双向链表等C语言知识实现了图书上架图书下架图书归还图书出借图书查找查看全部图书信息和全部读者信息等基本功能并且能自动存储和加载具有简易严...

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

C语言课程设计学生姓名袁盛升学生学号所在班级任课教师姜林10211121图书馆管理系统设计目的图书信息包括登录号书名作者名分类号出版单位出版时间价格等试设计一图书信息管理系统使之能提供以下功能1系统以菜单方式工...

C语言图书管理系统课程设计任务书 (1)

课程设计报告课程名称C语言程序设计课题名称飞机订票专业网络工程班级学号姓名指导教师20xx年6月20日课程设计任务书课程名称C语言程序设计课题飞机订票管理系统专业班级学生姓名学号指导老师审批任务书下达日期20x...

《C语言程序》课程设计_图书管理系统[1]

C语言程序课程设计报告书设计题目图书管理专业电子信息工程班级学生姓名学号指导教师20xx年5月信息工程学院目录摘要02第一章绪论04第二章问题定义或系统分析05第三章总体设计与详细设计07第四章编码实现09第五...

c语言图书管理系统课程设计报告(26篇)