如果觉得对你有帮助,能否点个赞或关个注,以示鼓励笔者呢?!博客目录 | 先点这里
文章目录偶然翻到了自己大一时候写的一些代码,代码冗余,但还是想保存下来,以作纪念。
- 1.运行效果
- 2.运行环境
- 3.完整代码
源码(Dev5.4.0版本下可直接(.cpp文件)运行 gcc 4.7.2)
注意:由于部分代码为C11标准,后缀名应改为cpp运行
编译器下载链接:https://pan.baidu.com/s/1Hywq6hxzxMzX1-22ig2HdA
提取码:kd65
下载后解压即可使用
#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;i name); 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&&i next; 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; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)