1、C个人书籍标准管理系统的设计与实现数学与计算机学院 C程序设计 课程设计报告年级 2012 学号 2012110911 姓名 刘怡然 成绩 专业 电气 实验地点 B3-401 指导教师 许景山 实验项目 简单个人书籍管理系统的设计与实现 实验日期 2013年6月23日 一、 实验题目 简单个人书籍管理系统的设计与实现二、 实验目的、要求 1、存储书籍各种相关信息。2、提供查找功能,按照多种关键码查找需要的书籍,查找成功后可以修改记录的相关项。3、提供排序功能,按照多种关键码对所有的书籍进行排序,例如按照购买日期进行排序。4、其他辅助的维护工作。三、 数据结构及算法描述 1、使用C+中的类来实现
2、,其中有DATE类和Book类,进行类的复合。数据均为私有数据。class DATE public:friend ostream & operator(istream &input, DATE &t); /友元函数重载流提取运算符public:DATE(int y=0,int m=0,int d=0); /初始化virtual DATE();DATE &operator=(DATE &); /重载时间等于运算符int operator (DATE &); /重载时间小于运算符int operator =(DATE &); /重载时间等于判断运算符private:int year,month,d
3、ay;-class Book public:Book(int t,char *n,char *a,float p,int y,int m,int d);Book();virtual Book();int f_new(); /新建书籍信息int f_save(); /保存书籍信息 int f_open(); /打开书籍信息int display(); /显示书籍信息int e_delete(); /删除书籍信息int e_update(); /修改书籍信息int showInfo(); /显示个别书籍信息int sort(); /排序书籍信息Book &operator=(Book &); /重
4、载等于运算符private:int type; /书籍类型char nameMAX; /书籍名称char authorMAX; /作者float price; /书籍价格DATE date; /购买日期; 2、定义数组Book books200使用流提取、流插入方式进行数据读取和存储。 3、在排序函数int sort( )中使用冒泡算法排序:for(i=0;inum-1;i+)for(j=i+1;booksi.date 1000#pragma once#endif / _MSC_VER 1000#include class DATE public:friend ostream & operat
5、or(istream &input, DATE &t); /友元函数重载流提取运算符public:DATE(int y=0,int m=0,int d=0); /初始化virtual DATE();DATE &operator=(DATE &); /重载时间等于运算符int operator (DATE &); /重载时间小于运算符int operator =(DATE &); /重载时间等于判断运算符private:int year,month,day;#endif / !defined(AFX_DATE_H_6B5CFDD0_60A3_4347_853E_4B83FD47F383_INCL
6、UDED_)-:类DATE的实现/ : implementation of the DATE class./#include / Construction/Destruction/DATE:DATE(int y,int m,int d)year=y;month=m;day=d;DATE:DATE()ostream & operator0&0&31)output-endl;elseoutput日期错误!(istream &input, DATE &t)input;return input;int DATE:operator (DATE &operand)if(year) return 0;els
7、e if(month) return 0;else if(day 1000#pragma once#endif / _MSC_VER 1000#include #include #include #include #include #include #define MAX 12class Book public:Book(int t,char *n,char *a,float p,int y,int m,int d);Book();virtual Book();int f_new(); /新建书籍信息int f_save(); /保存书籍信息 int f_open(); /打开书籍信息int
8、display(); /显示书籍信息int e_delete(); /删除书籍信息int e_update(); /修改书籍信息int showInfo(); /显示个别书籍信息int sort(); /排序书籍信息Book &operator=(Book &); /重载等于运算符private:int type; /书籍类型char nameMAX; /书籍名称char authorMAX; /作者float price; /书籍价格DATE date; /购买日期;#endif / !defined(AFX_BOOK_H_0541F24F_979E_4421_8EAC_926616201F
9、D9_INCLUDED_)-:类Book的实现/ : implementation of the Book class./#include Book books200; /定义200条数组int num=0; /初始化书籍信息条数零/ Construction/Destruction/Book:Book(int t,char *n,char *a,float p,int y,int m,int d):date(y,m,d)type=t;price=p;strncpy(name,n,MAX);nameMAX=0;strncpy(author,a,MAX);authorMAX=0;Book:Boo
10、k()int Book:f_new() system(cls);cout1-学习 2-名著 3-小说 4-散文endlendlendl;coutbooksnum.type;printf(请输入书名:);gets(booksnum.name);printf(请输入作者名:);gets(booksnum.author);coutbooksnum.price;coutbooksnum.date;num+;return 1;int Book:f_save()ofstream outFile(,ios:out|ios:binary);if(!outFile)cerrOpen file or create
11、 file error.endl;elseoutFilenum;(char *)&books,sizeof(books);();cout保存成功!num;if(num=0)cout没有记录!请先输入书籍信息。endl;system(pause);return 1;for(i=0;inum;i+)(char *)&booksi,sizeof(books);();return 1;int Book:sort()char c;system(cls); printf(n-排序书籍信息-nn); cout1-按时间顺序排序endl2-按书名顺序排序endl;c=getch();switch(c)case
12、1:system(cls);int i,j;Book ex;printf(n-时间顺序排序书籍信息-nn);for(i=0;inum-1;i+)for(j=i+1;booksi.datebooksj.date|booksi.date=booksj.date;j+)ex=booksi;booksi=booksj;booksj=ex;for(i=0;inum-1;i+)booksi.showInfo();system(pause);return 1;return 1;int Book:display()char *s;char *s1=学习;char *s2=名著;char *s3=小说;char
13、 *s4=散文;char c; for(;)system(cls);cout1. 显示全部书籍信息。endl;cout2. 显示指定类别书籍信息。endl;cout0. 返回上一层。endl;c=getch();if(c=0)break;switch(c)case1: system(cls); printf(n-全部书籍列表-nn); printf(类型 书名 作者 价格 日期nn); for(int i=0;inum;i+) switch(booksi.type) case 1: s=new charstrlen(s1)+1; strcpy(s,s1); break; case 2: s=n
14、ew charstrlen(s2)+1; strcpy(s,s2); break; case 3: s=new charstrlen(s3)+1; strcpy(s,s3); break; case 4: s=new charstrlen(s4)+1; strcpy(s,s4); break; printf(%-15s%-18s%-15s%,s,name,author,price);coutdateendl; break;case2:system(cls);printf(n-书籍分类列表-nn);for(int i=0;inum;i+)if(booksi.type=1)cout学习类:endl
15、booksi.name booksi.authorendl;for(i=0;inum;i+)if(booksi.type=2)cout名著类:endlbooksi.name booksi.authorendl;for(i=0;inum;i+)if(booksi.type=3)cout小说类:endlbooksi.name booksi.authorendl;for(i=0;inum;i+)if(booksi.type=4)cout散文类:endlbooksi.name booksi.authorendl;system(pause);return 1;int Book:showInfo()cha
16、r *s;char *s1=学习;char *s2=名著;char *s3=小说;char *s4=散文;switch(type)case 1:s=new charstrlen(s1)+1;strcpy(s,s1);break;case 2:s=new charstrlen(s2)+1;strcpy(s,s2); break;case 3:s=new charstrlen(s3)+1; strcpy(s,s3);break;case 4:s=new charstrlen(s4)+1;strcpy(s,s4);break;printf(%-15s%-18s%-15s%,s,name,author
17、,price);coutdateendl;return 1;int Book:e_delete()char c;char sMAX;system(cls);couts;for(int i=0;inum;i+)if(strcmp(s,booksi.name)=0)printf(n-搜索书籍列表-nn);printf(类型 书名 作者 价格 日期nn);booksi.showInfo(); cout1-删除并保存endl2-返回endl;c=getch(); switch(c) case1: booksi=books200;num-; system(cls); cout删除成功!endl; sys
18、tem(pause); return 0; case 2: return 0;elsecout没有匹配的搜索对象endl;system(pause);return 0;return 0;int Book:e_update()char c;char nMAX;Book ex;system(cls);coutn;for(int i=0;inum;i+)if(strcmp(n,booksi.name)=0)printf(n-搜索书籍列表-nn);printf(类型 书名 作者 价格 日期nn);booksi.showInfo();cout1-修改此书籍信息endl2-返回endl;c=getch()
19、;switch(c)case1:printf(n-修改书籍信息-nn);cout1-学习 2-名著 3-小说 4-散文endlendlendl; cout; printf(请输入修改后的书名:);gets(); printf(请输入修改后的作者名:);gets(); cout; cout;booksi=ex;cout修改成功!endl;system(pause);return 1;case2:return 1;return 1;Book &Book:operator =(Book &right)type=;strncpy(name,MAX);nameMAX=0;strncpy(author,M
20、AX);authorMAX=0;price=;date=;return *this;-:主函数#include int main()extern Book books200;extern num;char c;Book *mptr;mptr=&booksnum;for(;)system(cls);printf(n _ );printf(n -|个人书籍管理系统|-);printf(n nnn);cout |-按0键结束程序-|endl;cout |-按1键添加书籍信息-|endl;cout |-按2键显示书籍信息-|endl;cout |-按3键删除书籍信息-|endl;cout |-按4键修
21、改书籍信息-|endl;cout |-按5键排列书籍信息-|endl;cout 电气七班 刘怡然f_open();mptr-f_new();mptr-f_save();break;case 2:mptr-f_open(); mptr-display();break;case 3:mptr-f_open(); mptr-e_delete(); mptr-f_save(); break;case 4:mptr-f_open();mptr-e_update();mptr-f_save();break;case 5:mptr-f_open();mptr-sort();break;return 1;六、程序测试主界面:全部书籍列表: 修改书籍:时间顺序排序书籍信息: