⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 源文件.cpp

📁 文件包括了图书管理程序的源代码以及课程设计的设计文档
💻 CPP
📖 第 1 页 / 共 3 页
字号:
//请保留版权信息:编写者:贵州大学刘二腾,指导老师:曾劼,有问题请联系3l3t3t@163.com
LoadLibrary("OleAcc.dll");                    //老师,使用这条语句您可以把程序中的strcpy_s函数换成strcpy后能在VC6下编译成功
#include "stdafx.h"                           //预编译头文件,用于包含所有源程序可能用刀的头文件,C++必须
#include "iostream"                           //定义数据流输入输出流
#include "iomanip"                            //参数化输入输出(程序中使用倒了setw,必须包含这个头文件                                         
#include "fstream"                            //文件的输入输出头文件
#include "time.h"                             //包含时间函数和时间类型的头文件
#include "conio.h"                            //标准的控制台输入输出,程序中使用getche函数必须包含该头文件
using namespace std;                          //使用标准的名字空间的定义
#define nostudent "您输入的学生不存在"
#define nobook "您输入的图书不存在"
#define inputstudentID "请输入学生编号:"
#define caidan "1: 新增 2: 更改 3:删除 4:查找 5:显示全部 6:全删全部 0:退出>>"
#define bh "编号:"
#define i0 int i=0
#define studentnamemax 10                     //定义学生名字的最大长度
#define booknamemax 30                        //定义书本名称的最大长度 
#define booknum 20                            //定义书本编号的最高长度
#define studentnum 20                         //定义学生编号的最高长度
#define gradesmax 20                          //定义年级允许的最大长度
#define maxbookborrow 50                      //定义每人允许借书数的最大限度
class Page                                    //控制本程序的封面和介绍
{
private:
	char pageflag;                            //翻页控制变量值为P时向前,值为N时向后
	char counts;                              //传递当前封面所在页
	char gettxt;                              //封面文件读取字符时的暂时存储变量
public:
	int borrowmax;                            //定义允许每人最多借的书本数
	int stumax;                               //定义允许存储的最大学生数
    int bkmax;                                //定义允许存储的最大书本数
	int addstumax;                            //定义修该最学生数时使用的中间变量,暂时留空
	Page();                                   //定义Page类的构造函数
	void setborrowmax();                      //重新设置每人限制借的书本数
	void viewpage(char count);                //定义控制上一页下一页位置函数
	void page1();                             //定义显示封面函数
    void page2();                             //定义显示需求分析函数
	void page3();                             //定义显示概要设计函数
	void page4();
	void page5();
	void pagewelcome();                       //显示欢迎屏幕
	void pagebye();                           //显示再见信息函数
	~Page();                                  //定义Page类的析构函数
}pageview;
Page::Page()
{
	i0;
	while(i<=0)
	{
		if(i==0)
			cout<<endl<<endl<<endl<<endl<<endl<<endl<<setw(50)<<"初始化程序中…";
		cout<<endl<<endl<<setw(50)<<"请您输入您可能需要入库的最大书本数:";
		cin>>bkmax;
		cout<<endl<<setw(50)<<"      请您输入可能要存储的最大学生:";
		cin>>stumax;
		cout<<endl<<setw(50)<<"请您输入您要允许每人最多借的书本数:";
		cin>>borrowmax;
		if(bkmax<stumax*borrowmax)                   //防止因为数组大小而导致程序访问冲突,因为调试时曾遇到过这种情况,所以加这个判断
		{
			system("cls");
			cout<<endl<<setw(50)<<"您输入的书本存储长度不满足您的学生量需求";
			cout<<endl<<setw(50)<<"                     请重新初始化数据...";
			cout<<endl<<endl<<endl;
			i=-1;                                   //初始化不正常,重新初始化
		}
		else
 			i=1;                                    //初始化正常,跳出循环                                    
	}

}
//请保留版权信息:编写者:贵州大学刘二腾,指导老师:曾劼
void Page::setborrowmax()                     
{
	cout<<"如果您需要更改学生和书本的存储长度,请退出后重新初始化本程序!"<<endl;
	cout<<"请您输入您要允许每人最多借的书本数";
	cin>>borrowmax;
	system("cls");
}
void Page::page1()                                          
{
	counts='1';
	system("cls");
	cout<<endl<<endl;
	cout<<setw(55)<<"******数据结构课程设计******"<<endl<<endl<<endl;
	cout<<setw(60)<<"★辅导老师:曾劼"<<endl<<endl<<endl<<endl<<endl<<endl<<endl;
	cout<<setw(37)<<"题目:"<<"图书管理程序"<<endl;
	cout<<setw(37)<<"学院:"<<"职业技术学院"<<endl;
	cout<<setw(37)<<"专业:"<<"计算机科学与技术"<<endl;
	cout<<setw(37)<<"班级:"<<"04计科"<<endl;
	cout<<setw(37)<<"学号:"<<"16"<<endl;
	cout<<setw(37)<<"姓名:"<<"刘二腾"<<endl;
	cout<<setw(37)<<"时间:"<<"2006年12月14日"<<endl;
	cout<<endl<<endl<<endl<<endl;
	viewpage(counts);
}
void Page::page2()
{
	counts='2';
	ifstream file;
    file.open("xuqiu.333");                           //读取需求分析文本文档      
	if(!file)                                         //如果文件不存在,跳出封面显示程序,显示程序欢迎界面
	{
		file.close();
		pagewelcome();
	}
	else
	{
		cout<<endl<<endl<<endl;
		cout<<setw(45)<<"一、需求分析"<<endl<<endl<<endl;
		while(!file.eof())                                //输出xuqiu.333中的内容
		{
			file.get(gettxt);
			cout<<gettxt;
			file.close();	
			cout<<endl<<endl;
			viewpage(counts);
		}
	}
}
//请保留版权信息:编写者:贵州大学刘二腾,指导老师:曾劼
void Page::page3()
{
    counts='3';
	ifstream file;
	file.open("gaiyao1.333");                        //读取概要设计文本文档
	if(!file)     
	{
		file.close();
		pagewelcome();
	}
	else
	{
		cout<<endl<<endl<<endl;
		cout<<setw(45)<<"二、概要设计"<<endl<<endl<<endl;
		while(!file.eof())                               //输出gaiyao.333中的内容
		{
			file.get(gettxt);
			cout<<gettxt;
			file.close();
			cout<<endl<<endl;
			viewpage(counts);
		}
	}
}
void Page::page4()
{
    counts='4';
	ifstream file;
	file.open("gaiyao2.333");                          //读取概要设计文本文档
	if(!file)
	{
		file.close();
		pagewelcome();
	}
	else
	{
		while(!file.eof())                                //输出gaiyao.333中的内容
		{
			file.get(gettxt);
			cout<<gettxt;
			file.close();
			viewpage(counts);
		}
	}
	
}
void Page::page5()
{
    counts='5';
	ifstream file;
	file.open("gaiyao3.333");                            //读取概要设计文本文档
	if(!file)
	{
		file.close();
		pagewelcome();
	}
	else
	{
		while(!file.eof())                                   //输出gaiyao.333中的内容
		{
			file.get(gettxt);
			cout<<gettxt;
			file.close();
			viewpage(counts);	
		}
//请保留版权信息:编写者:贵州大学刘二腾,指导老师:曾劼
	}

}
void Page::pagewelcome()
{
	time_t start,end;                                  //定义用于显示欢迎信息的开始和结束时间控制变量
    cout<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<setw(50)<<"欢迎使用本图书管理程序";
	start=time(NULL);
	while(1)                                           //显示欢迎信息两秒钟
	{
		end=time(NULL);
		if((end-start)==2)
		{
			system("cls");
			break;
		}
	}
}
void Page::pagebye()
{
	time_t start,end;                                  //定义用于显示再见信息的开始和结束时间控制变量
	system("cls");
	cout<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<setw(55)<<"感谢您使用本图书管理程序,再见";
	start=time(NULL);
	while(1)                                            //显示再见信息量秒钟
	{
		end=time(NULL);
	    if((end-start)==2)
	    break;
	}
}
void Page::viewpage(char count)
{
	if(count=='1')
		cout<<setw(77)<<"请输入N翻页或其他键跳过:";
	else if(count=='5')
		cout<<setw(77)<<"请输入P翻页或其他键跳过:";
	else
		cout<<setw(77)<<"请输入N/P翻页或其他键跳过:";
	pageflag=_getche();
	if(pageflag=='N')                                    //大小写兼容
		pageflag='n';
	if(pageflag=='P')
		pageflag='p';
	switch(count)
	{
		case '1':
			if(pageflag=='n')
			{
				system("cls");
				page2();
			}
			else
			{
				system("cls");
			    pagewelcome();
				system("cls");
			}
			break;
		case '2':
			if(pageflag=='n')
			{
				system("cls");
				page3();
			}
			else if(pageflag=='p')
			{
				system("cls");
				page1();
//请保留版权信息:编写者:贵州大学刘二腾,指导老师:曾劼
			}
			else
			{
				system("cls");
			    pagewelcome();
				system("cls");
			}
			break;
		case '3':
			if(pageflag=='n')
			{
				system("cls");
				page4();
			}
			else if(pageflag=='p')
			{
				system("cls");
				page2();
			}
			else
			{
				system("cls");
			    pagewelcome();
				system("cls");
			}
			break;
		case '4':
			if(pageflag=='n')
			{
				system("cls");
				page5();
			}
			else if(pageflag=='p')
			{
				system("cls");
				page3();
			}
			else
			{
				system("cls");
			    pagewelcome();
				system("cls");
			}
			break;
		case '5':
			if(pageflag=='p')
			{
				system("cls");
				page4();
			}
			else
			{
				system("cls");
			    pagewelcome();
				system("cls");
			}
			break;
		default:
//请保留版权信息:编写者:贵州大学刘二腾,指导老师:曾劼
			break;
	}
}
Page::~Page()
{
}
class Book                                   //图书类
{
private:
	char num[booknum];                       //定义书本编号
	char name[booknamemax];                  //定义书名
	float prices;                            //定义书的价格
	float times;                             //该变量用于显示借书总时间
	time_t borrowtime,rettime;               //定义借书和还书时间
	int delflag;                             //定义删除标记 1:已删 0:未删
	int noborrow;                             //定义书本是否借出,值为1时在架,为0时已借出
public:
	Book();                                  //定义图书类的构造函数,留空
	char *getnum();                          //获取书本编号
	char *getname();                         //获取书名
	float getprice();                        //获取价格
	float gettimes();                        //获取时间
	int getdelflag();                        //获取删除标记
	void setname(char newname[]);            //设置书名
	void setprice(float price);              //设置价格
    int jieshu();                            //借书操作
	void huanshu();                          //还书操作
	void addbook(char *n,char *newname,float price);//增加书本
	void delbook();                          //删除书本
	void display();                          //输出所有书本
	~Book();                                 //定义图书类的析构函数,留空
};
Book::Book()
{
}
//请保留版权信息:编写者:贵州大学刘二腾,指导老师:曾劼
char *Book::getnum()
{
	return num;
}
char *Book::getname()
{
	return name;
}
float Book::getprice()
{
	return prices;
}
float Book::gettimes()
{
	times=times/(60*60*24);                  //将时间从秒换算成天
	return times;                            //返回借书天数
}
int Book::getdelflag()
{
	return delflag;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -