【C语言小游戏】图书管理系统

【C语言小游戏】图书管理系统,第1张

【C语言小游戏】图书管理系统

如果觉得对你有帮助,能否点个赞或关个注,以示鼓励笔者呢?!博客目录 | 先点这里


偶然翻到了自己大一时候写的一些代码,代码冗余,但还是想保存下来,以作纪念。

文章目录
  • 1.运行效果
  • 2.运行环境
  • 3.完整代码

1.运行效果


2.运行环境

源码(Dev5.4.0版本下可直接(.cpp文件)运行 gcc 4.7.2)

注意:由于部分代码为C11标准,后缀名应改为cpp运行

编译器下载链接:https://pan.baidu.com/s/1Hywq6hxzxMzX1-22ig2HdA
提取码:kd65
下载后解压即可使用

3.完整代码
#include
#include
using namespace std;

typedef struct book
{
    char name[50];//书名
    int  ISBN;//书号
    float price;//单价
    int num;//数量
    char outline[300];//书的简介
    struct book* next;
}Book,*pBook;


pBook Book_Head;//图书列表的表头
char UI[15][140]={
    {"******************欢迎来到图书管理系统******************"},
    {"****************按下以下按键即可呼出选择****************"},
    {"********************1.图书信息录入**********************"},
    {"********************2.添加图书**************************"},
    {"********************3.删除图书**************************"},
    {"********************4.查找图书**************************"},
    {"********************5.保存图书修改**********************"},
    {"********************6.显示所有图书**********************"},
    {"********************7.还原图书系统**********************"},
    {"********************0.退出******************************"},
{"————————————————————————————————————————————————————————————————"}
};
//加载动画
char cartoon[20][150] = {
    {"                                                                    /~/~/                                      "},
    {"                                                                   /~/~/                                       "},
    {"                                             Microsotf@             ~ ~     __ XP                              "},
    {"                                             \  /\  / -  _   _|  _  _   _  /_                                "},
    {"                                              \/  \/  | | | |_| |_| \/\/  __/                              "},
    {"                                                                                                               "},
    {"                                                    _____________________                                      "},
    {"                                                   │                    │                                      "},
    {"                                                   └────────────────────┘                                      "},
    {"                                                                                                               "},
    {"                                                                                                               "},
    {"                                                                                                               "},
    {"                                                                                                               "},
    {"                                                                                                               "},
    {"                                                                                                               "},
    {"                  Copyright ΘMicrosoft Corporation                                            Microsoft*       "},
};


void creat_book();//图书信息录入
void show_book();//显示图书列表,图书浏览
void add_book();//添加图书
void del_book();//删除图书
void save_book();//保存修改信息
void find_book();//按书号查询
void restore_system();//还原图书系统
int len_book();//返回当前系统中图书的数量

void top_menu();//顶部菜单显示
void choice_menu();//选择菜单
void load_cartoon();//加载动画

void gotoxy(int ,int);
void go();


void go()
{
     printf("%*s",68,"");
}

void gotoxy(int x, int y) //坐标函数
{
    HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
    COORD pos;
    pos.X = x;
    pos.Y = y;
    SetConsoleCursorPosition(handle, pos);
}


void creat_book()//图书信息录入
{
	int i=0;
	FILE *fp;
    //以只读的方式打开文件
    fp=fopen("data.txt","r");
    if(fp==NULL){
        printf("t文件打开失败!n");
        exit(-1);
    }
	Book_Head=(pBook)malloc(sizeof(Book));
	pBook pTail=Book_Head;
	pTail->next=NULL;
	for(i=0;i<12;i++)//初始化为12本书
	{
		pBook pNew=(pBook)malloc(sizeof(Book));
		//格式化读取
		fscanf(fp,"%s%d%f%d%sn",pNew->name,&pNew->ISBN,&pNew->price,&pNew->num,pNew->outline);
		//插入链表
		pTail->next=pNew;
		pNew->next=NULL;
		pTail=pNew;
	}
	//关闭文件
	fclose(fp);
}

void show_book()//显示图书列表
{
    pBook p=Book_Head->next;
	int i=1;
	printf("t****************************************************************************图书列表******************************************************************************n");
	printf("t序号tt图书名称tt图书号tt单价tt图书数量ttttt图书简介n");
	while(p!=NULL)
	{
		printf("t%-4dtt%-20st %-3dtt%5.2ftt%5dtt%-90sn",i++,p->name,p->ISBN,p->price,p->num,p->outline);
		p=p->next;
	}
}

void add_book()//添加图书
{
    int i=0,n;
	pBook p=Book_Head;
	while(p->next!=NULL)p=p->next;
	go();
    printf("请输入您要添加的图书数:");
    scanf("%d",&n);
    for(i=0;iname);
        go();
        printf("请输入添加的第%d本图书的图书号:",i+1);
        scanf("%d",&pNew->ISBN);
        go();
        printf("请输入添加的第%d本图书的图书单价:",i+1);
        scanf("%f",&pNew->price);
        go();
        printf("请输入添加的第%d本图书的图书数量:",i+1);
        scanf("%d",&pNew->num);
        go();
        printf("请输入添加的第%d本图书的图书简介:",i+1);
        scanf("%s",pNew->outline);
		p->next=pNew;
		pNew->next=NULL;
		p=pNew;
    }
}

void del_book()//删除图书
{
    int i=0,n;
    pBook p=Book_Head;
    pBook m;
    show_book();
    go();
    printf("请输入要删除的图书序号:");
    scanf("%d",&n);
	while(p!=NULL&&inext;
		i++;
		if(i>len_book())
		{
		    go();
			printf("输入错误!要删除的图书不存在!n");
			break;
		}
	}
	m=p->next;
	p->next=p->next->next;
	free(m);//防止内存泄漏
}

int len_book()//返回当图书系统中图书数量
{
    int len=0;
	pBook p=Book_Head->next;
	while(p!=NULL)
	{
		p=p->next;
		len++;
	}
	return len;
}

void save_book()//保存修改信息
{
    pBook p=Book_Head->next;
    FILE *fp;
    fp=fopen("data.txt","w");//以写入方式打开文件,更新文件信息
    if(fp==NULL){
        printf("t文件打开失败!n");
        exit(-1);
    }
	while(p!=NULL)
	{
        fprintf(fp,"%-15s %-5d %-5.2f %-5d %sn",p->name,p->ISBN,p->price,p->num,p->outline);
		p=p->next;
	}
	fclose(fp);//关闭文件
	go();
	printf("文件保存成功!n");
}

void find_book()//按书号查询
{

    int ISBN,flag=0,i=0;
	pBook p=Book_Head->next;
	go();
	printf("请输入要查找的图书的书号:");
	scanf("%d",&ISBN);
	while(p!=NULL)
	{
		if(p->ISBN==ISBN){
            flag=1;break;
		}
		if(i>len_book())break;
		i++;
		p=p->next;
	}
    if(flag){
         printf("tt图书名称tt图书号tt单价tt图书数量ttttt图书简介n");
         printf("tt%-20st %-3dtt%5.2ftt%5dtt%-90sn",p->name,p->ISBN,p->price,p->num,p->outline);
    }
    else{
         go();
         printf("未能查询到该图书,请检查输入是否有误!n");
    }

}

void restore_system()//还原图书系统
{
    FILE *fp;
    int num,i;
    //初始化为12本书,可添加
	char name[13][25]={{"三体"},{"龙族"},{"雪中悍刀行"},
                        {"剑来"},{"天之炽"},{"流浪地球"},
                        {"活着"},{"百年孤独"},{"明朝那些事"},
                        {"择天记"},{"庆余年"},{"将夜"},};
	int isbn[13]={111,112,113,114,115,116,117,118,119,120,121,122};//书号
	float fees[13]={30.0,25.0,34.0,29.0,30.0,43.0,32.0,24.0,22.0,21.0,31.0,33.0};//单价
	char outline[13][300]={	//简介
    {"对人性绝望的天文学家叶文洁向三体人暴露了地球的坐标,彻底改变了人类的命运。"},//三体
	{"路明非同学坐上去往芝加哥的CC1000次列车,踏上了与龙族争锋的征程"},//龙族
	{"西楚景河之战:十二万大戟士对阵北凉铁骑,全军覆没,死战不屈。"},//雪中悍刀行
	{"我陈平安,唯有一剑,可搬山,倒海,降妖,镇魔,敕神,摘星,断江,摧城,开天!"},//剑来
    {"这是诸天燃烧之日,那红色的龙在男孩心中咆哮,它说,当惩罚的,我从不宽恕!"},//天之炽
    {"无数的人前仆后继,奋不顾身,只为延续百代子孙生存的希望。"},//流浪地球
    {"最后,福贵说馒头赶上好时候了,将来这日子会越来越好。"},//活着
    {"她把自己终日关在房中缝制殓衣,缝了拆,拆了缝,直至生命的最后一刻。"},//百年孤独
    {"在读史的过程中瞻仰先贤们的风采,领悟先贤们的道理。"},//明朝那些事
    {"那少年长的其实不是很高,但比她高。所以当天塌的时候,他替自己挡着了。"},//择天记
    {"念君如三日,昨日今日明日。"},//庆余年
    {"我本心无樊笼,樊笼如何拦我?我道心光明,光明如何拦我?"}//将夜
	};
    fp=fopen("data.txt","w");
    if(fp==NULL){
        printf("t文件打开失败!n");
        exit(-1);
    }
	for(i=0;i<12;i++)//初始化为12本书
	{
	    num=rand()%8+5;//书的数量随机初始化
		fprintf(fp,"%-15s %-5d %-5.2f %-5d %sn",
                name[i],isbn[i],fees[i],num,outline[i]);
	}
	//关闭文件
	fclose(fp);
	creat_book();//重新导入列表
}


void top_menu()
{

    int i=0;
    for(i=0;i<15;i++)
    {
        if(i==10)
            printf("%*s",36,"");
        else
            go();
        printf("%sn",UI[i]);
    }
}

void choice_menu()
{
    int x=1;
    char choice;
    while(x)
    {
        system("cls");
        top_menu();
        go();
        printf("请输入您要选择的操作对应的序号:");
        choice=getchar();
        switch(choice)
        {
        case '1':
            creat_book();
            go();
            printf("录入成功!n");
            go();
            system("pause");
            break;
        case '2':
            add_book();
            go();
            printf("添加成功!n");
            go();
            system("pause");
            break;
        case '3':
            del_book();
            go();
            printf("删除成功!n");
            go();
            system("pause");
            break;
        case '4':
            find_book();
            go();
            system("pause");
            break;
        case '5':
            save_book();
            go();
            printf("保存成功!n");
            go();
            system("pause");
            break;
        case '6':
            show_book();
            go();
            system("pause");
            break;
        case '7':
            restore_system();
            go();
            printf("系统还原成功!n");
            go();
            system("pause");
            break;
        case '0':
            x=0;
            break;
        }
    }
}

void load_cartoon()
{
    //动态加载页面
    int i,l, j;
	gotoxy(25, 15);
    for (i = 0; i <= 16; i++)
    {
        cout<= 53 && j <= 70)
                {
                    gotoxy(j+25, 22);
                    printf("[]");
                }
                Sleep(100);
            }
            for (j = i - 4; j <= i; j = j + 2)
            {
                if (j >= 53 && j <= 70)
                {
                    gotoxy(j+25, 22);
                    printf("  ");
                }
            }
        }
    }
}

int main()
{
    srand((unsigned)time(NULL));//用时间做随机数种子
    system("mode con cols=200 lines=100");//设置窗口大小,方便显示
    load_cartoon();
    system("color 70");//设置颜色
    restore_system();//为防止用户误操作,先重制系统,初始化状态
    choice_menu();
    return 0;
}

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zaji/5692739.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存