C语言课程设计 编写一个 图书管理系统

本文介绍了C语言课程设计的一个图书管理系统,包括系统的设计要求、功能模块、数据结构和部分源代码。系统具备图书信息录入、浏览、查询、排序、修改、删除及会员管理等功能,旨在提高图书管理效率。
摘要由CSDN通过智能技术生成

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


提示:下方有设计要求及源代码。

一、课程设计要求

设计要求:

  1. 引言
    图书管理系统是智能办公系统的重要组成部分。图书管理系统将传统的图书管理方式彻底的解脱出来,提高管理效率,减轻管理人员的工作量,减少出错概率。使人们来获取信息、掌握信息。系统实现了借还书的方便性、高效性、有效性和及时性。
  2. 需求分析

2.1 需求概述
本次设计的职工信息管理系统,应该等提供以下功能:
(1)录入图书信息
(2)图书信息的浏览
(3)图书查询
(4)图书排序
(5)图书信息的删除
(6)图书信息的修改
(7)退出系统

会员管理
(1) 会员注册
(2) 会员登陆
(3) 会员注销
(4) 会员还书
2.11需求说明

(1)录入图书信息,录入图书编号时会判断此编号是否存在,若存在不能成功录入。
(2)图书浏览可以浏览全部图书!	
(3)图书查询可按图书编号模糊查询。
(4)排序可以按年份和价格排序。
(5)删除和修改通过图书编号进行删除。

在图书管理系统中,管理员为每个读者建立一个账户,账户内储存者个人的详细信息,读者可以凭借借书卡在图书馆进行图书的借、还,不同类别的读者在借书借阅图书时,由管理员录入借书卡号,系统首先验证该卡号的有效性,若无效,则提示无效的原因;若有效,则显示卡号、姓名、借书限额、已借数量、在借阅信息中添加相应的记录,归还图书时,由管理员录入借书卡号和带归还的图书编号,显示借书卡号、读者姓名,读者姓名。
3总体设计

3.1功能模块图

4详细设计
4.1功能模块处理逻辑

该系统主要有以下功能:浏览功能、查询功能、添加功能、修改功能、删除功能

(1) 信息输入模块
打开图书信息文件
while(继续输入)
{
读入图书信息;
将读入信息添加到职工信息文件中;
提示是否继续输入;
}
关闭职工信息文件;
(2)信息浏览模块
打开图书信息文件;
while(不到文件结束)
{
从文件中顺序读出一个图书的信息;
按指定格式输出该图书的信息;
}
关闭职工信息文件;

(3)信息查询模块
while(仍继续查询)
{
if(按年份查询)
{
读入查询的职工工资条件;
打开职工信息文件;
}
while(不到文件结束)
{
顺序读出一个图书的信息;
if(该职工信息的工资符合条件)输出该图书的信息;
}
关闭图书信息文件;
提示共有几条符合条件的记录;
}
else if(按年份查询)
{
读入查询的职工工资条件;
打开职工信息文件;
while(不到文件结束)
{
顺序读出一个图书的信息;
if(该职工信息的工资符合条件)输出该图书的信息;
}
关闭图书信息文件;
提示共有几条符合条件的记录;
}
else 提示输入不合适;
提示是否继续查询;
}
(4)信息修改模块:
while(继续修改)
{
从给出信息文件中所有的记录情况;
提示并读入待修改的记录的图书编号;
打开图书信息文件;
查找图书的编号;
进行修改;
修改完毕重新写回到原职工信息文件中;
关闭职工信息文件;
}

(5)信息删除模块;
while(继续删除)
{
从给出信息文件中所有的记录情况;
提示并读入待删除的记录的图书编号;
打开图书信息文件;
查找图书的编号;
询问是否要删除;
删除完毕;
关闭职工信息文件;
}
(6)菜单选择模块:
给出信息提示;
清屏;
绘制菜单(包含输入、显示、查询、修改、删除、返回上一级菜单、退出)
提示菜单选择并读入到变量;
根据读入变量的值调用不同的模块函数;
4.2 数据结构
本系统用到的数据结构具体如下:
struct tushu
{
char bno[20]; //书号
char bname[20];//书名
char name[20];//作者
char cbs[20];//出版社
char lb; //类别
long int cbsj;//出版时间
float jg; //价格
};

struct hyzc
{
char xh[20];
char pwd[7];
};

struct hyname //
{
char xh[20];
char name[20];
char bno[20];
};

struct hyhs
{
char xh[20];
char bno[20];
};

6.总结
通过本人努力和老师的关心指导,和同学们团结协作,一起完成了该课题。通过这次课程设计我系统地掌握了文件的应用,并锻炼饿了自己的团队合作精神。最后感谢任石老师的帮助。

二、运行结果如下

在这里插入图片描述

三、源代码如下

代码如下:

#include <stdio.h>
#include <stdlib.h>//其中包含system函数
#include <conio.h>//定义了通过控制台进行 数据输入 和数据输出的函数,如getch函数。
#include <string.h>//定义字符数组
#include <math.h>
#define LEN sizeof(struct book)//有关图书信息的结构体
#define LEN1 sizeof(struct reader)//有关读者信息的结构体
#define LEN2 sizeof(struct land)//有关登录系统的结构体


struct book//图书信息
{
   
	char num[20],nam[20],aut[20],pub[20],cat[20];
	int  many;
	float price;
	struct book*next;
};

struct reader//读者借阅信息
{
   
	int jnum;
	char jnam[20],time[20],tsnam[20];
	struct reader *next;
};
struct land//登录信息
{
   
	int zhanghao;
	char password[20];
	struct land*next;
};



int tjzs();//统计library文本个数函数
void xg(int,char[] );
void mainmenu();//显示主菜单
void tsmenu();//显示图书信息菜单
void jmenu();//显示借阅信息菜单
void lmenu();//显示登录菜单

void main1();// 主菜单功能
void tsmain();//图书菜单功能
void cxts();//查询图书
void zjts();//增加图书
void scts();//删除图书
void llts();//浏览图书

void jmain();//读者借阅信息
void js();//借书
void hs();//还书
void cxjs();//查询借书
void lljs();// 浏览借书情况

void land();//登录功能系统
void hyzx(); 
int xinjian(int,char[] );//创建账号密码
void xgmm();//修改密码

void lmain();//登录界面函数


int tjzs()//统计图书文本个数
{
   
FILE *fp;
int txcl=0,n;
float tprice=0;
char tname[20]={
   '\0'},tauthor[20]={
   '\0'},tchuban[20]={
   '\0'},tkind[20]={
   '\0'},tshuhao[20]={
   '\0'};
fp=fopen("library.txt","r");//打开文件
for (n=0;!feof(fp);n++)//逐个读文件
fscanf(fp,"%s%s%s%s%s%d%f",tshuhao,tname,tauthor,tchuban,tkind,&txcl,&tprice);
n--;
fclose(fp);//关闭文件
return (n);//返回个数
}


int tjdzzs()//统计文读者本个数函数

{
   
FILE *fp;
int zhenghao=0,n;
char mingzi[20]={
   '\0'},riqi[20]={
   '\0'},zname[20]={
   '\0'};
fp=fopen("reader.txt","r");//打开文件
for (n=0;!feof(fp);n++)//逐个读文件
fscanf(fp,"%d%s%s%s ",&zhenghao,&mingzi,&riqi,&zname);
n--;
fclose(fp);//关闭文件
return (n);//返回个数
}


int tjzs3()//统计账号密码文本个数
{
   
FILE *fp;
int zhao=0,n;
char mm[20]={
   '\0'};
fp=fopen("land.txt","r");//打开文件
for (n=0;!feof(fp);n++)//逐个读文件
fscanf(fp,"%d %s",&zhao,mm);
n--;
fclose(fp);//关闭文件
return (n);//返回个数
}


void mainmenu()//主菜单
{
   
system ("cls");

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

printf("\n\n 1.图书系统\n\n");

printf("\n\n 2.会员借阅系统\n\n");

printf("\n\n 3.退出系统\n\n");

printf("\n\n 请按键选择,回车确定\n");

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

return ;
}


void tsmenu() //图书馆信息菜单
{
   
system ("cls");

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

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

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

printf("\n 3.图书查询\n\n");

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

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

printf("\n 6.图书排序\n\n");

printf("\n 7.返回上一级\n\n");

printf("\n 请按键选择,回车确定\n");

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

return ;

}


void main1()
{
   
	void tsmian();
	void jmain();
	char choose;
	mainmenu();
	scanf(" %c",&choose);
	switch(choose)//功能函数
  {
   
	  case'1':
	    tsmain();
	    break;
	  case'2':
	  	jmain();
	  	break;
	  case'3':
	  	system("cls");
    getch();
  	exit(0);
  	system ("cls");
	break;
  }
}


void tsmain()
{
   
	void zjts();
	void scts();
	void ctts();
	void llts();
	char choose;
	tsmenu();
	scanf(" %c",&choose);
	for(;;)
	{
   
		switch(choose)
	{
   
	case'1':
		zjts();
		break;
	case'2':
		scts();
		break;
	case'3':
		cxts();
		break;
	case'4':
		llts();
		break;
	case'7':
		main1();
		break;
	}
    }
}


void zjts()//增加图书
{
   
	FILE*fp;
	char i;
	int many=0;
    float price=0;
    char  nam[20]={
   '\0'},aut[20]={
   '\0'},cat[20]={
   '\0'},pub[20]={
   '\0'},num[20]={
   '\0'};
    system ("cls");

    //if ((fp=fopen("library.txt","r"))==NULL)//if语句:打开图书馆文件,不存在此文件则新建
//	{
   
  //    fp=fopen("library.txt","a");
    //  fclose(fp);
    //}
	fp=fopen("library.txt","a");
	
	printf("\n请按以下格式输入图书信息:\n书号 书名 作者 出版社 类别 进库量 单价");
	
	for(;i!=27;)//为了实现输入一次后按esc退出
	{
   
		printf("请输入:\n");
		scanf("%s%s%s%s%s%d%f",num,nam,aut,pub,cat,&many,&price);
		fprintf(fp,"%-8s%-9s%-14s%-16s%-18s%-7d%-8.2f\n",num,nam,aut,pub,cat,many,price);
	    printf("继续输入请按回车,结束输入请按Esc\n");
        i=getch();//暂停程序当i接收后继续下一条指令
        for (;i!=
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值