- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(1).数据结构
(2).程序模块及之间的调用关系
(3). 详细分析
(4). 调试与结果
借书图示:
还书图示
还书图示
图书维护菜单
读者维护菜单
帮助文件
五、 课程设计心得
一.课程设计目的
软件应用课程设计是计算机及相关专业的实践环节之一,是学习完《面向对象程序设计》课程后进行的一次全面的综合练习。其目的在于巩固和加深对C++语言课程的基本知识的理解和掌握;掌握C++语言编程和程序调试的基本技能;利用C++语言进行软件设计的基本思路和方法;提高运用C++语言解决实际问题的能力。
int m_nMaxBorrow;
int *m_pBorrowID;
3.工作人员类
成员函数:
friend istream& operator>>(istream &in, CWorker &work);
friend ofstream& operator<<(ofstream &out, CWorker &work);
三、详细设计
1.界面类
#ifndef __INTERFACE_H__
#define __INTERFACE_H__
class CCmdProc;
class CWorkerCmd;
class CStudentCmd;
//三个命令类CStudentCmd,CWorkerCmd,CCmdProc的函数指针
(4)查看学生的信息;
(5)添加图书的信息(图书号,书名,作者,出版社,数量等);
(6)修改图书的信息(图书号,书名,作者,出版社,数量等);
(7)删除图书的信息(图书号,书名,作者,出版社,数量等);
(8)查看图书的信息;
[2]:学生登陆后,可以进行的操作
(1)查看学生自己借阅的数目信息;
(2)借阅图书;
CWorker();
~CWorker();
void InputWorkerInfo();
bool Check(const char *pStrName, const char *pStrPass);
数据成员:
string m_strName;
string m_strPass;
4.文件类
成员函数:
CFileProc();
PFUN pCmdFun;
};
struct _COMMAND
{
_COMMAND(int nID, const char *pStr, PFUN p);
_COMMAND(int nID, const char *pStr, PSFUN p);
_COMMAND(int nID, const char *pStr, PWFUN p);
1.数据结构
本程序对读者的信息及图书的相关资料采用外存储的形式,即文件流,进行不断的读取与写入!此过程中采用vector容器代替数组进去相关数据的操作!
2.程序模块及之间的调用关系
在本程序的代码中,共建立了七个类,分别为总命令类(CCmdProc)、学生命令类(CStudentCmd),工作人员命令类(CWorkerCmd),图书类(CBook),学生类(CStudent),工作人员类(CWorker),文件类(CFileCmd).其中CCmdProc,CStudentCmd,CWorkerCmd类,负责菜单处理,也就是对外的接口,学生和工作人员可以由此进入。图书类,负责对读书的处理,工作人员可以经过命令类调用图书类及学生类的各种行为和数据,学生和工作人员的各种数据的保存必须经过文件类的处理,才能安全保存!
int nCmdID;
const char *strInfo;
_FUNPOINT pFun;
};
class CCmdProc;/登入界面类
成员函数
void WorkerLogin();//工作人员登陆
void StudentLogin();//学生登入
void Help();//输出界面内容
void Exit();
5.各类代码如下
//#include "Interface.h"
_COMMAND::_COMMAND(int nID, const char *pStr, PFUN p)
{Leabharlann Baidu
assert(NULL != pStr);
assert(NULL != p);
nCmdID = nID;
strInfo = pStr;
}
_COMMAND::_COMMAND(int nID, const char *pStr, PWFUN p)
{
assert(NULL != pStr);
assert(NULL != p);
nCmdID = nID;
strInfo = pStr;
pFun.pwCmdFun = p;
}
//#include "FileProc.h"
~CFileProc();
vector<CStudent>& GetStudent();
vector<CBook>& GetBook();
vector<CWorker>& GetWorker();
void SaveBook();
void SaveStudent();
void SaveWorker();
(3)归还图书;
备注:要求将学生和图书信息存放到外存上,每次从外存读取数据。
2.设计要求
(1).对指导教师下达的题目进行系统分析。
(2).根据分析结果完成系统设计。
(3).编程:在计算机上实现题目的代码实现。
(4).完成对该系统的测试和调试。
(5).提交课程设计报告,课程设计报告内容包括:需求分析、概要设计、详细设计,调试与结果和设计心得体会五个部分。
typedef void (CStudentCmd::*PSFUN)();
typedef void (CWorkerCmd::*PWFUN)();
typedef void (CCmdProc::*PFUN)();
union _FUNPOINT
{
PSFUN psCmdFun;
PWFUN pwCmdFun;
static CFileProc m_file;
int IsInputInt(int *p);
2.学生类
成员函数:
friend istream& operator>>(istream &in, CStudent &stu);
friend ofstream& operator<<(ofstream &out, CStudent &stu);
pFun.pCmdFun = p;
}
_COMMAND::_COMMAND(int nID, const char *pStr, PSFUN p)
{
assert(NULL != pStr);
assert(NULL != p);
nCmdID = nID;
strInfo = pStr;
pFun.psCmdFun = p;
四.课程设计说明书
1.需求分析
(1)问题描述
在实际生活中,图书馆工作人员都面临着一个非常具体现实的问题,即图书借阅的管理。当图书与读者数量不大时,工作人员可以根据相关纸质纪录进行定期检查与核对而清楚的掌握书籍与读者信息,并对其行修改与维护,但是现实生活中工作人员管理的数据数量庞大,不可能人工完成相关管理。为了迎合自动化办公的要求,现要求设计一个图书借阅管理系统完成对于读者、图书相关信息的记录操作及添加、修改、更新等维护操作。
(5)添加图书的信息(图书号,书名,作者,出版社,数量等);
(6)修改图书的信息(图书号,书名,作者,出版社,数量等);
(7)删除图书的信息(图书号,书名,作者,出版社,数量等);
(8)查看图书的信息;
[2]:学生登陆后,可以进行的操作
(1)查看学生自己借阅的数目信息;
(2)借阅图书;
(3)归还图书;
(2)基本要求:
基本要求:
[1]:工作人员登陆后,可以进行的操作
(1)添加学生的信息(学号,姓名,院系,最大借阅的图书数量等);
(2)修改学生的信息(学号,姓名,院系,最大借阅的图书数量);
(3)删除学生的信息(学号,姓名,院系,最大借阅的图书数量),如果某个学生退学,就要清除他的信息;
(4)查看学生的信息;
三.原始依据
已完成C++语言课程学习,有语言编程基础,能够熟练运用C++语言进行程序设计。通过C++语言编写实际应用程序,提高用C++语言解决实际问题的能力。
参考文献:
[1] 谭浩强等.面向对象程序设计.清华大学出版社,2006
[2]谭浩强等.面向对象程序设计上机与习题指导.清华大学出版社,2006
CFileProc::CFileProc()
{
InitVector();//读取工作人员,学生及图书的全部的信息
}
CFileProc::~CFileProc()
{
}
vector<CStudent>& CFileProc::GetStudent()//反回容器学生类对象
{
return m_vStudent;
}
vector<CBook>& CFileProc::GetBook()//反回容器图书类对象
{
return m_vBook;
}
vector<CWorker>& CFileProc::GetWorker()//反回容器工作人员类对象
{
return m_vWorker;
}
void CFileProc::InitVector()
CStudent();
~CStudent();
void InputStudent();
void ShowStudent();
int GetStuID();
string GetStuName();
数据成员:
int m_nID;//
string m_strName;
string m_strPass;
string m_strCollege;
xxxx学院
课
程
设
计
报
告
设计名称 :数据库课程软件设计
班 级 :
姓 名 :
学 号 :
指导教师 :xx
时 间 :2010.6.1—2010.6.16
一、课程设计目的
二、课程设计任务与要求
1.设计任务
2.设计要求
三、原始依据
四.课程设计说明书
1.需求分析
(1)问题描述
(2)基本要求
(3)测试数据
2.概要设计
void InitVector();
void ReadStudent();
void ReadWorker();
void ReadBook();
成员数据:
vector<CStudent> m_vStudent;
vector<CBook> m_vBook;
vector<CWorker> m_vWorker;
virtual bool CallCmd(const _COMMAND &c, int nID);
CCmdProc(const char *pStr);//设置界面名称
virtual ~CCmdProc();
CCmdProc();
void Proc();
virtual void InitCmd();//给m_vCmd赋初值
二.课程设计任务与要求:
1.设计任务
基本要求:
[1]:工作人员登陆后,可以进行的操作
(1)添加学生的信息(学号,姓名,院系,最大借阅的图书数量等);
(2)修改学生的信息(学号,姓名,院系,最大借阅的图书数量);
(3)删除学生的信息(学号,姓名,院系,最大借阅的图书数量),如果某个学生退学,就要清除他的信息;
备注:要求将学生和图书信息存放到外存上,每次从外存读取数据。
(3)测试数据
读者1:xx(人名),读者2:xx(人名),读者3:xx(人名);图书1:数学分析,图书2:高等代数,图书3:雪山上的来客。读者1借阅图书1,读者2借阅图书2,读者2将图书2归还,然后再借图书1,(显示无法借阅)。
2.概要设计
while(!file.eof())
{
file>>stu;//从文件中读取学生的信息
m_vStudent.push_back(stu);//插入学生的信息
{
ReadBook();
ReadStudent();
ReadWorker();
}
void CFileProc::ReadStudent()//从文件中读取所有学生的信息
{
CStudent stu;
fstream file("student.d", fstream::out | fstream::app | fstream::in);
void DrawStars(int nLen);//********************
bool CheckWorker();
bool CheckStudent();
数据成员
string m_strCmdUI;
string m_sysName;//界面名称
vector<_COMMAND> m_vCmd;//_COMMAND类型的m_vCmd变量