1、数学与计算机学院 C程序设计 课程设计报告年级 2012 学号 2012110911 姓名 刘怡然 成绩 专业 电气 实验地点 B3-401 指导教师 许景山 实验项目 简单个人书籍管理系统的设计与实现 实验日期 2013年6月23日 一、 实验题目 简单个人书籍管理系统的设计与实现二、 实验目的、要求 1、存储书籍各种相关信息。2、提供查找功能,按照多种关键码查找需要的书籍,查找成功后可以修改记录的相关项。3、提供排序功能,按照多种关键码对所有的书籍进行排序,例如按照购买日期进行排序。4、其他辅助的维护工作。三、 数据结构及算法描述 1、使用C+中的类来实现,其中有DATE类和Book类,进
2、行类的复合。数据均为私有数据。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,day;-class Book pu
3、blic: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 &); /重载等于运算符private:int
4、 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 & operator(istream &input
5、, 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_INCLUDED_)-DATE.cpp:类
6、DATE的实现/ DATE.cpp: implementation of the DATE class./#include DATE.h/ Construction/Destruction/DATE:DATE(int y,int m,int d)year=y;month=m;day=d;DATE:DATE()ostream & operator0&t.month0&t.day31)outputt.year-t.month-t.dayendl;elseoutput日期错误!(istream &input, DATE &t)inputt.yeart.montht.day;return input;
7、int DATE:operator (DATE &operand)if(yearoperand.year) return 0;else if(monthoperand.month) return 0;else if(day 1000#pragma once#endif / _MSC_VER 1000#include #include fstream.h#include #include #include #include DATE.h#define MAX 12class Book public:Book(int t,char *n,char *a,float p,int y,int m,in
8、t 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 &); /重载等于运算符private:int type; /书籍类型char nameMAX; /书籍名称char authorMAX; /作者floa
9、t price; /书籍价格DATE date; /购买日期;#endif / !defined(AFX_BOOK_H_0541F24F_979E_4421_8EAC_926616201FD9_INCLUDED_)-Book.cpp:类Book的实现/ Book.cpp: implementation of the Book class./#include Book.hBook books200; /定义200条数组int num=0; /初始化书籍信息条数零/ Construction/Destruction/Book:Book(int t,char *n,char *a,float p,i
10、nt 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:Book()int Book:f_new() system(cls);cout1-学习 2-名著 3-小说 4-散文endlendlendl;coutbooksnum.type;printf(请输入书名:);gets(booksnum.name);printf(请输入作者名:);gets(booksnum.author);coutbooksnum.price;coutbo
11、oksnum.date;num+;return 1;int Book:f_save()ofstream outFile(book.dat,ios:out|ios:binary);if(!outFile)cerrOpen file or create file error.endl;elseoutFilenum;outFile.write(char *)&books,sizeof(books);outFile.close();cout保存成功!num;if(num=0)cout没有记录!请先输入书籍信息。endl;system(pause);return 1;for(i=0;inum;i+)in
12、file.read(char *)&booksi,sizeof(books);infile.close();return 1;int Book:sort()char c;system(cls); printf(n-排序书籍信息-nn); cout1-按时间顺序排序endl2-按书名顺序排序endl;c=getch();switch(c)case1: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.dat
13、e;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 *s4=散文;char c; for(;)system(cls);cout1. 显示全部书籍信息。endl;cout2. 显示指定类别书籍信息。endl;cout0. 返回上一层。endl;c=getch();if(c=0)break;switch(c
14、)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=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;
15、strcpy(s,s4); break; printf(%-15s%-18s%-15s%-15.1f,s,name,author,price);coutdateendl; break;case2:system(cls);printf(n-书籍分类列表-nn);for(int i=0;inum;i+)if(booksi.type=1)cout学习类:endlbooksi.name booksi.authorendl;for(i=0;inum;i+)if(booksi.type=2)cout名著类:endlbooksi.name booksi.authorendl;for(i=0;inum;i+)
16、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()char *s;char *s1=学习;char *s2=名著;char *s3=小说;char *s4=散文;switch(type)case 1:s=new charstrlen(s1)+1;strcpy(s,s1);break;case 2:
17、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%-15.1f,s,name,author,price);coutdateendl;return 1;int Book:e_delete()char c;char sMAX;system(cls);couts;for(int i=0;inum;i+)if(strcmp(s
18、,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; system(pause); return 0; case 2: return 0;elsecout没有匹配的搜索对象endl;system(pause);return 0;return 0;int Book:e_update()cha
19、r 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();switch(c)case1:printf(n-修改书籍信息-nn);cout1-学习 2-名著 3-小说 4-散文endlendlendl; coutex.type; printf(请输入修改后的书名:);gets(ex.na
20、me); printf(请输入修改后的作者名:);gets(ex.author); coutex.price; coutex.date;booksi=ex;cout修改成功!endl;system(pause);return 1;case2:return 1;return 1;Book &Book:operator =(Book &right)type=right.type;strncpy(name,right.name,MAX);nameMAX=0;strncpy(author,right.author,MAX);authorMAX=0;price=right.price;date=righ
21、t.date;return *this;-main.cpp:主函数#include Book.hint 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键修改书籍信息-|e
22、ndl;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;六、程序测试主界面:
23、全部书籍列表: 修改书籍:时间顺序排序书籍信息:合同管理制度1 范围本标准规定了龙腾公司合同管理工作的管理机构、职责、合同的授权委托、洽谈、承办、会签、订阅、履行和变更、终止及争议处理和合同管理的处罚、奖励;本标准适用于龙腾公司项目建设期间的各类合同管理工作,厂内各类合同的管理,厂内所属各具法人资格的部门,参照本标准执行。2 规范性引用中华人民共和国合同法龙腾公司合同管理办法3 定义、符号、缩略语无4 职责4.1 总经理:龙腾公司经营管理的法定代表人。负责对厂内各类合同管理工作实行统一领导。以法人代表名义或授权委托他人签订各类合法合同,并对电厂负责。4.2 工程部:是发电厂建设施工安装等工程合
24、同签订管理部门;负责签订管理基建、安装、人工技术的工程合同。4.3 经营部:是合同签订管理部门,负责管理设备、材料、物资的订购合同。4.5 合同管理部门履行以下职责:4.5.1 建立健全合同管理办法并逐步完善规范;4.5.2 参与合同的洽谈、起草、审查、签约、变更、解除以及合同的签证、公证、调解、诉讼等活动,全程跟踪和检查合同的履行质量;4.5.3 审查、登记合同对方单位代表资格及单位资质,包括营业执照、经营范围、技术装备、信誉、越区域经营许可等证件及履约能力(必要时要求对方提供担保),检查合同的履行情况;4.5.4 保管法人代表授权委托书、合同专用章,并按编号归口使用;4.5.5 建立合同管理台帐,对合同文本资料进行编号统计管理;4.5.6 组织对法规、制度的学习和贯彻执行,定期向