当前位置:文档之家› 程序设计基础1

程序设计基础1

程序设计基础1
程序设计基础1

大学机械工程学院C语言课程设计论文

学院:机械工程学院

专业:机械设计制造及其自动化

题目:图书管理系统

班级:

姓名:

学号:

指导教师:

2010年1月18日

图书管理系统

摘要

随着科技技术的进步,人们生活水平的提高,公共图书馆不仅出现在学校、党政机关及企事业单位,也逐渐在人们朝夕相处的社区中发展起来,即社(小)区图书馆。相对大型公立图书馆来说,社区图书馆规模不大、借阅人数相对较少,但其分布较广,方便灵活,现已成星火燎原之势。

在信息化社会中,社(小)区图书馆管理工作的得力助手就是以计算机为基础的图书管理系统。图书管理系统是将传统的图书手工操作转化为计算机管理,即图书馆的图书、期刊、音像等各种资料的采编、典藏、借阅、检索及其他日常工作,利用计算机管理系统进行高效、准确的信息化管理,从而减少了图书管理员的劳动强度,提高了图书借阅的效率和图书资源的利用率。

目前,许多软件上已经开发出很多较好的商品化图书管理软件,这些图书管理软件大多数十面向大型图书馆而开发的,其专业性强、分工较细、操作复杂,难以满足社区图书馆管理工作的需要。一般情况下,社区图书馆由社区所在的物业公司创造利润和方便社区居民的双重目的。因此,基于社区图书馆的图书租借管理系统在功能上不应太发杂,应以简单实用为主。

本程序就是一款基于这样的目的设计的图书管理系统。

关键词:简单,实用,服务。

目录

中文摘要 (Ⅰ)

1 题目要求 (1)

1.1要求. (1)

2 需求分析 (1)

3 总体设计 (1)

4详细设计 (1)

4.1数据结构 (2)

4.2主要资源 (6)

4.3主要函数列表 (8)

5.运行结果 (10)

6.总结 (10)

附录A 部分源码介绍 (11)

参考文献 (27)

1 题目要求

1.1 要求

1.每个用户注册需要在管理员处注册一读者信息即一张图书证,并填写正

确身份证号来验证身份。

2.本系统的全部数据都应存放在文件中。

3.系统应实现的操作及其功能定义如下:

a)用户登录:读取数据文件来验证用户名密码。

b)用户注册:把新的用户各种信息写入数据文件。

c)模糊查找:方便读者查找想要图书信息,输入部分图书名字进行模

糊搜索。

d)修改密码:修改当前用户的登录密码。

e)续借图书:对所借图书进行续借,改变各种参数,然后写入数据文

件。

f)我的信息:查看当前登录用户的各种信息。

4.本系统的功能实现需要服务器和客户端的配合。

2 需求分析

本程序将用到文件系统:userdata.lms、OnlinUser.lms、Bookbase.lms、Userbase.lms、Ctrlbase.lms文件内容作为数据源,其中数据使用二进制方式存储。程序只有在需要的时候才将所需要的数据读入内存,使用完毕后,马上存储,并清空所占用的内存,所以应提供文件输入输出的操作;在程序中要进行统计工作,所以要提供显示、查找等操作;另外应提供可视化的选择菜单及菜单栏实现功能选择。

3总体设计

根据上面的分析,可以将这个系统分为如下两大模块:登录选择、用户功能。其中主要模块是前三个模块。

主框架MainFram

主菜单MENU

用户登录

息登录选择用户功能

4 详细设计

4.1数据结构

本程序数据分为四个类:Book、Reader、User、Online。服务器端只使用Book类和Reader 类,客户端使用User类和Online类。

4.1.1 Book类

class CBook

{

public:

long m_Barcode;//条形码,位纯数字

char m_Callnumber[15];//索书号#4-8

char m_Title[60];//书名

char m_ISBN[25];//ISBN编号

char m_Author[40];//作者

char m_Press[20];//出版社

char m_Library[20];//藏书地

BOOL m_renew;//续借

int m_Status;//状态:、可借、已借、可阅、打捆

CTime m_LoanDate;//借阅时间

CTime m_ReturnDate;//应还时间

long m_LibID;//借阅者

public:

CBook(void);

~CBook(void);

//显示所有图书信息

void Display(CDC *pDC,int rows);

static int GetRecordNumber(void);

//删除所以数据

static CBook* Del(CBook *pt);

static void Display_Title(CDC *pDC,int rows,CBook *p);

// 载入所有数据

static CBook* Load(void);

// 重写数据

static CBook* ReWrite(CBook* pt);

};

4.1.1Reader类

class CReader

{

public:

long m_LibID;//图书证号

char m_Name[20];//姓名

int m_Gender;//性别:、男2、女

CTime m_Birthday;//生日

char m_Identification[19];//身份证号

char m_Unit[40];//单位

char m_Email[40];//E-mail

char m_PhoneNumber[30];//电话号码

int m_Loan;//已借书数目

int m_MaxLoanable;//最大可借数目

int m_MaxLoanDay;//最长可借天数

float m_Arrearage;//欠款

public:

CReader(void);

~CReader(void);

//打印读者信息

static void Display(CDC *pDC,int rows,CReader *p);

// 获取记录数

static int GetRecordNumber(void);

// 载入所有读者信息

static CReader* Load(void);

// 重写数据

static CReader* ReWrite(CReader* pt);

// 删除所有读者信息

static CReader* Destory(CReader* pt);

};

class CUser

{

public:

char m_UserId[20]; //用户账号

char m_UserCode[21];// 用户密码

long m_LibId; // 图书证号

char m_Identification[19]; //核对用身份证号

public:

CUser(void);

~CUser(void);

// 添加新用户

static void AddUser(CString UserId , CString UserCode ,long LibId,CString Identification);

// 模糊查找

static CBook* BookSearch(CString BookName);

//保存函数

void Fsave(void);

//删除临时存储节点

static void Del(CUser *p);

// 根据用户名搜索读者

static CReader* SearchReader(char* UserId);

// 模糊查询

static bool Fuzzy(char* BookName , char* m_Bookname);

// 获取记录数

static int GetRecordNumber(void);

// 把所有读者读到一指针里

static CUser* Load(void);

// 重新把数据写进文件

static CUser* Reload(CUser* p);

};

class COnline

{

private:

char m_UserId[20];

public:

COnline(void);

~COnline(void);

// 保存到文件

void Fsave(void);

// 删除临时节点

void Del(COnline * p);

// 把当前用户写进文件

void Fwrite_OnlineUser(CString UserId);

// 检查当前是否有用户在线

static bool Ispect(void);

// 显示当前在线用户

static char* Display_OnlineUser(void);

// 用户退出时清空在线用户

static void ClearUser(void);

// 打印当前在线用户所有信息static void Display(void); };

4.2主要资源

菜单栏:

1.服务器组:

2.客户组:

工具栏:

1.服务器组:

2.客户组:

登录选择窗口:

用户登录窗口:

注册验证窗口:

用户注册窗口:

修改密码窗口:

续借窗口:

图书模糊查找窗口:

4.3主要函数列表

class CBook

{

public:

long m_Barcode;//条形码,位纯数字

char m_Callnumber[15];//索书号#4-8

char m_Title[60];//书名

char m_ISBN[25];//ISBN编号

char m_Author[40];//作者

char m_Press[20];//出版社

char m_Library[20];//藏书地

BOOL m_renew;//续借

int m_Status;//状态:、可借、已借、可阅、打捆

CTime m_LoanDate;//借阅时间

CTime m_ReturnDate;//应还时间

long m_LibID;//借阅者

public:

CBook(void);

~CBook(void);

//显示所有图书信息

void Display(CDC *pDC,int rows);

static int GetRecordNumber(void);

//删除所以数据

static CBook* Del(CBook *pt);

static void Display_Title(CDC *pDC,int rows,CBook *p);

// 载入所有数据

static CBook* Load(void);

// 重写数据

static CBook* ReWrite(CBook* pt);

};

class CReader

{

public:

long m_LibID;//图书证号

char m_Name[20];//姓名

int m_Gender;//性别:、男2、女

CTime m_Birthday;//生日

char m_Identification[19];//身份证号

char m_Unit[40];//单位

char m_Email[40];//E-mail

char m_PhoneNumber[30];//电话号码

int m_Loan;//已借书数目

int m_MaxLoanable;//最大可借数目

int m_MaxLoanDay;//最长可借天数

float m_Arrearage;//欠款

public:

CReader(void);

~CReader(void);

//打印读者信息

static void Display(CDC *pDC,int rows,CReader *p);

// 获取记录数

static int GetRecordNumber(void);

// 载入所有读者信息

static CReader* Load(void);

// 重写数据

static CReader* ReWrite(CReader* pt);

// 删除所有读者信息

static CReader* Destory(CReader* pt);

};

class COnline

{

private:

char m_UserId[20];

public:

COnline(void);

~COnline(void);

// 保存到文件

void Fsave(void);

// 删除临时节点

void Del(COnline * p);

// 把当前用户写进文件

void Fwrite_OnlineUser(CString UserId);

// 检查当前是否有用户在线

static bool Ispect(void);

// 显示当前在线用户

static char* Display_OnlineUser(void);

// 用户退出时清空在线用户

static void ClearUser(void);

// 打印当前在线用户所有信息static void Display(void); };

5运行结果图书信息界面

6 总结

通过这次C程序设计,我了解了并掌握了MFC中一些基础的窗口化程序设计方法,能够深入的理解结构化程序设计思想,熟练运用结构化程序设计方法,巩固了运用C语言进行程序设计的能力。

这次课程设计当中,了解了功能非常强大的数据类型CString,并逐步知道了它和char *,int,等数据类型的互相转换。

附录A 部分源码介绍 1、修改数据

2、获取记录数

3、根据图书名对图书进行模糊查找

具体操作流程图在下页:

数据 文件 .lms 类数组 *p

fread(p=new Type[k],sizeof (Type),k,fp); 各实例 对话框

修改 fwrite(p=new Type[k],sizeof (Type),k,fp);

delete []p;

数据 文件 .lms

Int k Fseek(FILE *fp,size,SEEKEND);Ftell(FILE *fp);

M_status=k

先对查询内容*name1取长度到length1 把数据文件一次性都读到类的指针p 中,根据文件长度获取记录数k

i 从0到k ,取p[i]

获取p[i].name 的长度length2,对p[i].name 和name1里内容进行循环比较

先从p[i].name 里第一个字符起和name1里的每一个进行比较, 比较次数为name1的长度length1次

若相同则打印出p[i]里所有内容

不同再从p[i]里第二个字符起再和name1进行比较

一共比较length2-length1次 把p 中所有相同的都找出并打印

参考文献

[1]张孝祥、徐明华.《软件开发Visual C++ 基础与案例开发详解》[M].北京:

清华大学出版社,2009年07月第一版.

[2] 曲扬.《Visual C++实效编程280例》[M]北京:人民邮电出版社,2009年5

月第一版.

致谢

首先要感谢老师的授课与指导!

感谢所有支持我完成C程序设计论文的老师和同学们,尤其感谢同学在我学习过程中的解疑、指导。

相关主题
文本预览
相关文档 最新文档