ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:265.53KB ,
资源ID:2570001      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-2570001.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C++课程设计简单图书管理系统教学总结.docx)为本站会员(b****2)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

C++课程设计简单图书管理系统教学总结.docx

1、C+课程设计简单图书管理系统教学总结课 程 设 计 课程名称 C+课程设计题目名称 图书管理系统 2016 年 6 月 29 日一设计内容与要求(1)、设计一个图书管理系统,能够实现用户信息管理,图书信息的录入、查询、删除等功能。(2)、实现用户管理,系统具有用户注册功能。管理员的账号和密码由系统指定,登录后可进行修改。一般用户注册后才能登录使用系统。管理员具有录入、查询、删除图书信息及一般用户的功能。一般用户只有图书查询功能。 (3)、登录功能,只有注册了的用户才能进入系统,没有注册的则有提示信息出现。(4)、图书管理功能,管理员能够录入、查询、删除图书信息。(5)、图书查询功能,管理员及一

2、般用户能够通过图书的基本信息,如图书作者、书名、出版社、出版日期等等,进行查询。提示:上述为基本功能,可参考实际的系统进行扩展。二设计思路:为了实现用户信息以及图书信息的管理,建立一个用户CUser类与图书信息CBoodata类,其中CUser类应该包含用户账号以及密码,CBookdata类应该包含图书作者,书名,出版社,出版日期。同时应该建立两个dat文件,一个为存储用户信息,一个用来储存图书信息。程序主要分为4个页面:(1)登录页面,由Cdialog类派生出CMyprojectDlg类,用来处理账号注册与用户登录。(2)图书查询页面。由Cdialog类派生出CSearch类。包含读取所有图

3、书数据响应函数,以及根据作者姓名或者书名来查询图书响应函数。(3)管理员图书管理页面。由Cdialog类派生出CBookdata类。包含读取所有图书响应函数,添加图书响应函数,修改图书响应函数,删除图书响应函数。(4)用户信息管理页面,由Cdialog类派生出CUserdata类。包含读取所有用户信息响应函数,删除用户响应函数、添加用户响应函数、修改用户信息响应函数。因为本人能力有限,而且自己是根据老师给的教程以及结合书本内容来完成课程设计,于是我第一想到的就是应数组来存储信息,而不是用链表,所以,对于文件数据的删除与修改,难免会过于乏力。 三关键模块实现及主要代码(1)自己建立的类1.用户类

4、:class CUserpublic: int num; char password20;2.图书信息类:class Book /图书类public: char author10; /设置作者姓名 char bname20; /设置图书书名 char pub_name20; /设置出版社名称 int pub_date; /设置出版年月;(2)登录页面,由Cdialog类派生出CMyprojectDlg类,用来处理账号注册与用户登录。1.用户注册处理响应函数:void CMyprojectDlg:OnButton3() /用户注册 / TODO: Add your control notific

5、ation handler code here / /以下代码主要还是把这条记录写入文件,注意写入的格式:文件的前四个字节是保持用户记录数, /后面依次保持用户记录注意,写用户的每个信息的顺序要与读取时的顺序一致。 UpdateData(TRUE); CUser user; int n_user=0; /用户的个数,管理员默认为第一个。自己输入为账号:1111,密码:0000。 int size=0; fstream file(user.dat,ios:in|ios:out); / 建立一个文件类,关于其用法,请baidu。 file.seekg(ios:beg); /将文件指针指向文件头。

6、file.read(char*)&n_user,sizeof(n_user); /读取用户数。 n_user+=1; file.seekp(ios:beg); file.write(char*)&n_user,sizeof(n_user);/写学生记录个数 user.num=m_num; /之前定义user.password为string,导致密码匹配时有错误。 memcpy(user.password,m_password.GetBuffer(m_password.GetLength(),m_password.GetLength(); / 把类CString对象的内容赋值到字符数组中 use

7、r.passwordm_password.GetLength()=0; /在数组末尾加结束符号 /在文件末尾,把新的记录写入。 file.seekp(4+(n_user-1)*sizeof(CUser),ios:beg); /这里出错 file.write(char*)&user.num,sizeof(user.num); file.write(char*)&user.password,sizeof(user.password); file.close(); / /用消息框提示 CString str; str.Format(成功注册,成为第 %d 个注册用户,请按确定返回重新登录.,n_us

8、er-1); /因为第一个为管理员,不算为用户人数。 AfxMessageBox(str); 2.用户登录处理响应函数。其中包含判断是管理员,还是普通用户。void CMyprojectDlg:OnButton2() /用户登录 / TODO: Add your control notification handler code here UpdateData(TRUE); CUser m_user100; int i; int size; int n_user=0; /文件中用户的个数 / /读取文件中的用户记录,注意读取顺序与写入的顺序要一致,文件最开始的4个字节是表示记录个数。 /根据记

9、录个数,依次读取用户记录 放在成员变量m_st数组中(已在类体中声明了) CFile file; file.Open(user.dat,CFile:modeReadWrite); size=GetFileSize(void*)file.m_hFile,NULL); /读取文件大小,size=0表示是空文件 if(size0) file.SeekToBegin(); file.Read(&n_user,sizeof(n_user); if(n_user0 & n_user99) /实验中限定为0100个用户记录 for( i=0;in_user;i+) /请注意与写入数据的顺序要保持一样,否则会

10、读错数据。 file.Read(&(m_useri.num),sizeof(m_useri.num); file.Read(&(m_useri.password),sizeof(m_useri.password); file.Close(); / if(m_num=1111&m_password=0000) /管理员进入管理员页面 CAdministrators administrators; administrators.DoModal(); CString str_password; for(i=0;i0) file.SeekToBegin(); file.Read(&n_book,siz

11、eof(n_book); if(n_book0 & n_book99) /实验中限定为0100个书本记录 m_num_book=n_book; for( i=0;in_book;i+) /请注意与写入数据的顺序要保持一样,否则会读错数据。 file.Read(&(m_user_booki.author),sizeof(m_user_booki.author); file.Read(&(m_user_booki.bname),sizeof(m_user_booki.bname); file.Read(&(m_user_booki.pub_name),sizeof(m_user_booki.pub

12、_name); file.Read(&(m_user_booki.pub_date),sizeof(m_user_booki.pub_date); file.Close(); / /在列表控件中显示所有条记录 /插入每列的表头; m_list.InsertColumn(0,作者,LVCFMT_LEFT,100,1); m_list.InsertColumn(1,书名,LVCFMT_LEFT,100,1); m_list.InsertColumn(2,出版社,LVCFMT_LEFT,100,1); m_list.InsertColumn(3,出版日期,LVCFMT_LEFT,100,1); /每

13、一行插入一条书本记录 for(i=0;in_book;i+) CString str; str=m_user_booki.author; m_list.InsertItem(i,str); /InsertItem向CListCtr控件申请一行用来存放数据,同时写入一行的头名称(即编号为0列的数据) str=m_user_booki.bname; m_list.SetItemText(i,1,str);/设置第i行第1列的的数据为书名 str=m_user_booki.pub_name; m_list.SetItemText(i,2,str);/设置第i行第2列的的数据为出版社 str.Form

14、at(%d,m_user_booki.pub_date); /整型变为字符串,便于在控件显示 m_list.SetItemText(i,3,str);/设置第i行第3列的的数据为出版日期 2.图书查询响应函数。void CSearch:OnButton4() /查询图书 / TODO: Add your control notification handler code here UpdateData(TRUE); m_list.DeleteAllItems(); int num=0; /表示查找结果的个数 int i; for(i=0;i=0, 表示str中包含了m_author的字段 st

15、r=m_user_booki.bname; ret2=str.Find(m_bname,0); /ret2=0, 表示str中包含了m_bname的字段 if(ret1=0) /按作者查询 str=m_user_booki.author; m_list.InsertItem(num,str); /InsertItem向CListCtr控件申请一行用来存放数据,同时写入一行的头名称(即编号为0列的数据) str=m_user_booki.bname; m_list.SetItemText(num,1,str);/设置第i行第1列的的数据为书名 str=m_user_booki.pub_name;

16、 m_list.SetItemText(num,2,str);/设置第i行第2列的的数据为出版社 str.Format(%d,m_user_booki.pub_date); /整型变为字符串,便于在控件显示 m_list.SetItemText(num,3,str);/设置第i行第3列的的数据为出版日期 num+=1; /结果+1; (4)管理员图书管理页面。包含读取所有图书,添加图书,修改图书,删除图书的功能。1.读取所有图书功能实现与(3)的实现一样。2.添加图书响应函数。void CBookdata:OnButton7() /添加图书 UpdateData(TRUE); Book boo

17、k; int n_book=0; /书本的个数 int size=0; fstream file(book.dat,ios:in|ios:out); / 建立一个文件类,关于其用法,请baidu。 file.seekg(ios:beg); /将文件指针指向文件头。 file.read(char*)&n_book,sizeof(n_book); /读取书籍数。 / /以下代码主要还是把这条记录写入文件,注意写入的格式:文件的前四个字节是保持书本记录数, /后面依次保持书本记录注意,写学生的每个信息的顺序要与读取时的顺序一致。 n_book+=1; file.seekp(ios:beg); fil

18、e.write(char*)&n_book,sizeof(n_book);/写学生记录个数 memcpy(book.author,m_add_author.GetBuffer(m_add_author.GetLength(),m_add_author.GetLength(); / 把类CString对象的内容赋值到字符数组中 book.authorm_add_author.GetLength()=0; /在数组末尾加结束符号 memcpy(book.bname,m_add_bname.GetBuffer(m_add_bname.GetLength(),m_add_bname.GetLength

19、(); / 把类CString对象的内容赋值到字符数组中 book.bnamem_add_bname.GetLength()=0; /在数组末尾加结束符号 memcpy(book.pub_name,m_add_pub_name.GetBuffer(m_add_pub_name.GetLength(),m_add_pub_name.GetLength(); / 把类CString对象的内容赋值到字符数组中 book.pub_namem_add_pub_name.GetLength()=0; /在数组末尾加结束符号 book.pub_date=m_add_pub_date; /在文件末尾,把新的记

20、录写入。 file.seekp(4+(n_book-1)*54,ios:beg); file.write(char*)&book.author,sizeof(book.author); file.write(char*)&book.bname,sizeof(book.bname); file.write(char*)&book.pub_name,sizeof(book.pub_name); file.write(char*)&book.pub_date,sizeof(book.pub_date); file.close(); / /用消息框提示 CString str; str.Format(

21、文件中已有 %d 本书籍记录.,n_book); AfxMessageBox(str); 3.修改图书响应函数。void CBookdata:OnButton5() /修改图书,必须先读取图书才能修改图书。 / TODO: Add your control notification handler code here UpdateData(TRUE); m_list.DeleteAllItems(); m_list.InsertColumn(0,作者,LVCFMT_LEFT,100,1); m_list.InsertColumn(1,书名,LVCFMT_LEFT,100,1); m_list.

22、InsertColumn(2,出版社,LVCFMT_LEFT,100,1); m_list.InsertColumn(3,出版日期,LVCFMT_LEFT,100,1); CString str_author,str_bname,str_pub_name,str; /将book类的字符串数组赋值为字符串变量,方便比较。 CFile file; / 建立一个文件类,关于其用法,请baidu。 file.Open(book.dat,CFile:modeReadWrite); /打开文件 file.SeekToBegin(); file.Write(&m_num_book,sizeof(m_num_

23、book);/写书本记录本数 for(int i=0;im_num_book;i+) str_author=m_booki.author; str_bname=m_booki.bname; str_pub_name=m_booki.pub_name; if(str_author=m_author|str_bname=m_bname|str_pub_name=m_pub_name|m_booki.pub_date=m_pub_date) memcpy(m_booki.author,m_modify_author.GetBuffer(m_modify_author.GetLength(),m_mo

24、dify_author.GetLength(); / 把类CString对象的内容赋值到字符数组中 m_booki.authorm_modify_author.GetLength()=0; /在数组末尾加结束符号 memcpy(m_booki.bname,m_modify_bname.GetBuffer(m_modify_bname.GetLength(),m_modify_bname.GetLength(); / 把类CString对象的内容赋值到字符数组中 m_booki.bnamem_modify_bname.GetLength()=0; /在数组末尾加结束符号 memcpy(m_booki.pub_name,m_modify_pub_name.GetBuffer(m_modify_pub_name.GetLength(),m_modify_pub_name.GetLength(); / 把类CString对象的内容赋值到字符数组中 m_booki.pub_namem_modify_pub_name.GetLength()=0; /在数组末尾加结束符号 m_booki.pub_date=m_modify_pub_date; /

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2