加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入

C语言程序设计-图书信息管理系统

08/22 13:25
493
服务支持:
技术交流群

完成交易后在“购买成功”页面扫码入群,即可与技术大咖们分享疑惑和经验、收获成长和认同、领取优惠和红包等。

虚拟商品不可退

当前内容为数字版权作品,购买后不支持退换且无法转移使用。

加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论
放大
实物图
相关方案
  • 方案介绍
  • 相关文件
  • 推荐器件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

题    目: 图书信息管理系统 

图书信息管理系统

本题目设计目的是训练学生的基本编程能力,了解图书管理信息系统的开发流程,熟悉C语言的文件的基本操作。本程序中涉及结构体、文件等方面的知识。通过本程序的训练,使学生能对C语言的文件操作有一个更深刻的了解,掌握利用文件存储结构实现对学生成绩管理的原理,为进一步开发出高质量的图书管理系统打下坚实的基础。

1、题目要求

设计“图书信息管理系统

要求:

图书信息包括:书号、书名、作者、价格等。使之提供以下功能:

  1. 系统以菜单方式工作。
  2. 图书信息录入功能。(图书信息用文件保存)。
  3. 图书信息浏览功能。
  4. 图书信息的导入。
  5. 图书信息的修改。
  6. 图书信息查询功能。
  7. 图书信息的删除。
  8. 图书信息的保存和返回主菜。

2、分析:

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

3、总体设计:

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

  1. 菜单选择模块。
  2. 图书信息数据写入文件。
  3. 图书信息数据文件的导入。
  4. 图书信息主菜单的打印。
  5. 输出*与输出~。
  6. 提供开关的效果。
  7. 图书信息的输入。
  8. 图书信息的打印。
  9. 图书信息的修改。
  10. 图书信息的查找。
  11. 图书信息的删除。
  12. 图书信息的保存。
  13. 返回主菜单。

4:部分程序设计:

头函数名:

#include<stdio.h>

#include<string.h>

#include<conio.h>

#include<windows.h>

#define N 80

struct book_type

{char booknum[20];                   /*书号*/

char bookname[20];                      /*书名*/

char authorname[20];                  /*作者*/

char price[20];                      //价格

}person[N];                       /*存储图书信息*/

4.1:功能模块

void menu();                      /*菜单函数*/

void display1();                  /*执行打印的功能*/

void display2();                  /*执行打印的功能*/

void reserve();                   /*保存到数组*/

void read();                      /*导入图书信息*/

void delay();                     /*提供开关的效果*/

void choose();                    /*提供选择的功能*/

void enter();                     /*图书信息的输入*/

void printfinformation();         /*图书信息的打印*/

void modify();                     /*图书信息的修改*/

void search();                    /*图书信息的查找*/

void del();                       /*图书信息的删除*/

void save();                      /*图书文件信息的保存*/

void back();                      /*返回主菜单*/

char ch;                          /*存储主菜单的调用选项信息*/

int number=0,temp1,temp2=0;       /*记录每次输入的人数*/

void main()

{system("color 0e");              //选择颜色

menu();                           //菜单函数

do

{scanf(" %c",&ch);

system("cls");                    //清屏功能

choose();

}while(ch!='8');                  //循环条件的判断

}

//提供主菜单的选择功能

void choose()

{switch(ch)

{case'1':enter();

break;

case'2':printfinformation();

back();

break;

case'3':modify();

back();

break;

case'4':search();

//back;

break;

case'5':del();

break;

case'6':save();

break;

case'7':read();

back();

case'8':printf("nnt感谢您的使用!n");

break;

default:menu();

printf("nnt请重新选择:");

}

注释:图书信息以数据的形式写入文件,以文件的形式保存图书信息数据

//图书信息数据写入文件

void reserve()

{FILE *fp=NULL;

FILE *fp1=NULL;

int i;

if((fp=fopen("book.txt","w"))==NULL)                                            //以文本只写方式打开文件

{printf("不能打开文件");

exit(0);

}

if((fp1=fopen("book1.txt","w"))==NULL)                                            //以文本只写方式打开文件

{printf("不能打开文件");

exit(0);

}

fprintf(fp1,"%20dn",number);

for(i=temp2;i<number;i++)

{fprintf(fp,"%10s%15s%15s%15sn",person[i].booknum,person[i].bookname,person[i].authorname,person[i].price);       //写入文件

}

fclose(fp1);

fclose(fp);                                                                     //关闭文件

}

注释:当图书信息不能打开时则关闭文件,返回菜单。

//图书信息数据文件的读取/导入

void read()

{FILE *fp;//=NULL;

FILE *fp1;

int i=0;

if((fp1=fopen("book1.txt","rb+"))==NULL)         以文本只读方式重新打开文件

{printf("不能打开文件");

exit(0);

}

fscanf(fp1,"%4dn",&number);

if((fp=fopen("book.txt","rb+"))==NULL)     为了读与写,打开一个二进制文件

{printf("不能打开文件");

exit(0);

}

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

{fscanf(fp,"%11s%11s%11s%11sn",person[i].booknum,person[i].bookname,person[i].authorname,person[i].price);

//读文件

printf("%11s%11s%11s%11sn",person[i].booknum,person[i].bookname,person[i].authorname,person[i].price);

//输出文件数据

}

reserve();

fclose(fp1);

fclose(fp);

menu();

back();

}

//主菜单的打印

void menu()

{char *s[9]={"【1】输入图书信息","【2】查看图书信息","【3】修改图书信息","【4】查找图书信息","【5】删除图书信息","【6】保存图书信息","【7】导入图书信息","【8】退出管理系统","请选择:"};

int i;

printf("n");

printf("tt");

display1();

printf("图书管理系统");

display1();

printf("nn");

printf("tt");

display2();

printf("nn");

printf("tt");

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

{display1();

printf("%s",s[i]);

display1();

printf("n");

printf("tt");

}

}

//输出*

void display1()

{int i;

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

{printf("*");

delay();

}

}

//输出~

void display2()

{int i;

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

{printf("~");

delay();

}

}

//提供开关的效果

void delay()

{long i,n=4000000;

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

{if(ch!='�') i=n;                //运行过后可消除开关的延迟效果

}

}

//图书信息的输入

void enter()

{int i;

printf("请输入图书的册数:");

scanf("%d",&temp1);

number+=temp1;

for(i=temp2;i<number;i++)         //引用中间变量temp2,记录每次输入的人数

{printf("请输入%d本图书的信息:",i+1);

printf("t书号:");

scanf("%s",person[i].booknum);

printf("t书名:");

scanf("%s",person[i].bookname);

printf("t作者:");

scanf("%s",person[i].authorname);

printf("t价格:");

scanf("%s",person[i].price);

}

reserve();

temp2+=temp1;

back();                           //返回主菜单

}

//图书信息的打印

void printfinformation()

{int i;

if(number==0)

{printf("t没有图书信息");

}

else

{printf("ntt~~~~~~~~~~~~图书信息~~~~~~~~~~~~~~~n");

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

printf("        书号       书名        作者      价格n");

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

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

{printf("%10s%11s%11s%11sn",person[i].booknum,person[i].bookname,person[i].authorname,person[i].price);

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

}

}

}//图书信息的修改

//图书信息的查找

void search()

{int i,k,flag;

char temp[20],temp1;

if(number==0)

{printf("t没有图书信息");

}

else

{do

{printf("请输入你要查找的图书是书号或书名:");

scanf("%s",temp);

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

{if(strcmp(temp,person[i].booknum)==0||strcmp(temp,person[i].bookname)==0)

{k=i;

flag=1;

break;

}

if(i==(number-1)&&(strcmp(temp,person[i].booknum)!=0)&&(strcmp(temp,person[i].bookname)!=0))

{printf("不存在该图书n");

flag=0;

}

}

if(flag==1)

{printf("该图书的信息:n");

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

printf("3  书号    书名     作者     价格n");

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

printf("%5s%7s%9s%9sn",person[k].booknum,person[k].bookname,person[k].authorname,person[k].price);

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

}

printf("n是否继续查找?Y/N:");

scanf("%c",&temp1);

}while(temp1=='y'||temp1=='Y');

}

back();

}

void del()

{int i,k,flag;

char temp[20],temp1;

if(number==0)

{printf("t没有图书信息");

}

else

{printfinformation();

do

{printf("请输入要删除的图书信息的书号或书名:");

scanf("%s",temp);

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

{if(strcmp(temp,person[i].booknum)==0||strcmp(temp,person[i].bookname)==0)

{k=i;

flag=1;

break;

}

if(i==(number-1)&&(strcmp(temp,person[i].booknum)!=0)&&(strcmp(temp,person[i].bookname)!=0))

{printf("不存在该图书n");

flag=0;

}

}

if((flag==1)&&(number==1))

{number--;

temp2--;

printf("该图书信息已经成功删除nn");

}

if((flag==1)&&(number<=0))

{printf("已经没有图书信息,请重新输入!nn");

}

if((flag==1)&&(number>1))

{for(i=k;i<(number-1);i++)

{strcpy(person[i].booknum,person[i+1].booknum);

strcpy(person[i].bookname,person[i+1].booknum);

strcpy(person[i].authorname,person[i+1].authorname);

strcpy(person[i].price,person[i+1].price);

}

number--;

temp2--;

printf("该图书信息已经成功删除nn");

}

printf("是否继续删除?Y/N");

scanf("%c",&temp1);

}while(temp1=='Y'||temp1=='y');

printf("是否显示删除操作后全部图书信息?Y/N:");

scanf("%c",&temp1);

if(temp1=='y'||temp1=='Y')

{printfinformation();

}

reserve();

}

back();

}

注释:当输入数据时选择1则返回上次的记录,2则保存记录。会输出相应的数据。

//保存记录

void save()

{char temp;

printf("1、读取上次的记录:n2、保存现在的记录:n请选择:");

scanf("%c",&temp);

if(temp=='1')

{printf("ntt/~~~~~~~~~~~~~图书信息~~~~~~~~~~~~~~~n");

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

printf("  书号    书名     作者    价格n");

read();

back();

}

else

{printf("t程序已经保存n");

back();

}

}

//返回主菜单

void back()

{printf("ntt输入任意键返回主菜单:");

getch();                          //提供任意键返回效果

system("cls");                    //清屏功能

menu();                           //打印主菜单

}

5运行与测试报告:

功能选择键。

输入图书信息。

查看图书信息。

修改图书信息。

查找图信息。

删除图书信息。

保存图书信息。

图书信息的导入。

退出图书管理系统。

需要全部资料可以在我的资源里下载,资料包括程序文档、源程序。

需要完整的资料可在我的资源里下载,也可以加入我的纷传圈子,里面有资源压缩包的百度网盘下载地址及提取码。

纷传 点击用微信打开即可,过程有点繁琐请见谅。​​​​​​​

  • 有需要资料的可了解一下.docx

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
6N137S-TA1 1 Lite-On Semiconductor Corporation Logic IC Output Optocoupler,

ECAD模型

下载ECAD模型
$1.03 查看
ECS-.327-12.5-1210-TR 1 ECS International Inc Parallel - Fundamental Quartz Crystal, 0.032768MHz Nom, SMD, 2 PIN

ECAD模型

下载ECAD模型
$1.09 查看
AT45DB321E-SHF-T 1 Adesto Technologies Corporation Flash, 32MX1, PDSO8, 0.208 INCH, GREEN, PLASTIC, SOIC-8

ECAD模型

下载ECAD模型
$4.19 查看

相关推荐

电子产业图谱