南航 图书馆管理系统课设

更新时间:2024-06-25 08:19:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

南京航空航天大学

《C++程序设计》课程设计报告

图书馆管理系统

姓名: 学号:

院系:信息科学与技术学院 日期:2009.4.8

目 录

目 录 .............................................................................................................................................. 2 一、需求分析 ................................................................................................................................... 3 二、系统主要功能 ........................................................................................................................... 3 三、系统总框图 ............................................................................................................................... 3 四、定义的函数及说明 ................................................................................................................... 3 五、特色算法 ................................................................................................................................... 4 六、源程序....................................................................................................................................... 4

2

一、需求分析

在信息技术日益普及的今天,很多事物都在信息技术的帮助下成倍的提高了效率,同样,如果一个图书馆能有一套有效的人事管理系统,这对于图书馆的日常管理是大有益处的。

二、系统主要功能

本系统提供了一个图书馆管理的平台可,所提供的功能如下: 1.借书 2还书 3显示书库 4添加书籍 5删除书籍 6编辑书籍 7用户登陆 8用户注册 9显示用户信息

三、系统总框图

主控模块 图书管理模块 界面管理模块 功能实现部分 文件存取 四、定义的函数及说明

class book:存储了一本书的信息

class student:存储了一个学生的信息 class lib_sys:图书管理的功能部分 int input_data(); 从文件读入数据 int output_data(); 向文件输出数据 int user_login(); 用户登陆

3

int check_user_right(); 检查用户权限

int check_admin_right(); 检查管理员权限

book edit_book_inner(book k); 编辑一本书(程序内部使用) book add_book_inner(); 添加一本书(程序内部使用) int show_book_inner(book k); 显示一本书(程序内部使用)

int find_book_inner(char *isbn); 查找一本书(程序内部使用)

int find_student_inner(char *username); 查找一个学生(程序内部使用) int add_book(); 添加书籍

int edit_book(char *isbn); 编辑书籍

int del_book(char *isbn,int much); 删除书籍

int show_book(); 显示书籍

int borrow_book(); 借书

int return_book(); 还书

int register_user(); 用户注册

char * get_username(); 返回当前用户的用户名 int show_user_detail(); 显示用户信息

class Manager:界面实现部分 int work(); 显示和实现界面

五、特色算法

本程序把借书和用户关联在一起,而且出现的权限的概念,普通游客只能观看书籍列表,普通用户只能借书和还书,只有管理员才有权限对书籍信息和数量进行修改。

注:当前默认管理员的帐户和密码都是admin

六、源程序

(见后页)

4

Main.cpp

#include\

main(){

Manager k; k.work(); return 0; }

Book.h

#ifndef BOOK_H #define BOOK_H

class book{ private:

char isbn[50];

char bookTitle[50]; char author[50]; char publisher[50]; char datepublished[50]; int left;

friend class lib_sys; };

#endif

Student.h

#ifndef STUDENT_H #define STUDENT_H

class student{ private:

char username[50]; char password[50]; int num;

char isbn[50][50]; friend class lib_sys; };

5

#endif

Lib_sys.h

#ifndef LIB_SYS_H #define LIB_SYS_H

#include\#include\

class lib_sys{ private:

int book_tot; int student_tot;

book lbook[100];

student lstudent[100];

char username[50]; char password[50];

int user_state; //0 is no user , 1 is login

public:

lib_sys(){

username[0]='\\0'; password[0]='\\0'; user_state=0; book_tot=0; student_tot=0; }

int input_data(); int output_data();

int user_login();

int check_user_right(); int check_admin_right();

book edit_book_inner(book k); book add_book_inner();

int show_book_inner(book k); int find_book_inner(char *isbn);

6

int find_student_inner(char *username);

int add_book();

int edit_book(char *isbn);

int del_book(char *isbn,int much); int show_book();

int borrow_book(); int return_book();

int register_user(); char * get_username(){ return username; }

int show_user_detail(); };

#endif

Lib_sys.cpp

#include\

#include #include #include #include

#include

int lib_sys::input_data(){ int i,j;

fstream fbook,fstudent;

fbook.open(\

fstudent.open(\ if (!fbook) return 0; if (!fstudent) return 0;

fbook >> book_tot; fbook.ignore();

for (i=1;i<=book_tot;i++){

fbook.getline(lbook[i].isbn,50);

fbook.getline(lbook[i].bookTitle,50);

7

fbook.getline(lbook[i].author,50); fbook.getline(lbook[i].publisher,50); fbook.getline(lbook[i].datepublished,50); fbook >> lbook[i].left; fbook.ignore(); }

fbook.close();

fstudent >> student_tot; fstudent.ignore();

for (i=1;i<=student_tot;i++){

fstudent.getline(lstudent[i].username,50); fstudent.getline(lstudent[i].password,50); fstudent >> lstudent[i].num; fstudent.ignore();

for (j=1;j<=lstudent[i].num;j++)

fstudent.getline(lstudent[i].isbn[j],50); }

fstudent.close();

return 1; }

int lib_sys::output_data(){ int i,j;

fstream fbook,fstudent;

fbook.open(\

fstudent.open(\ if (!fbook) return 0; if (!fstudent) return 0;

fbook << book_tot << endl; for (i=1;i<=book_tot;i++){

fbook << lbook[i].isbn << endl;

fbook << lbook[i].bookTitle << endl; fbook << lbook[i].author << endl; fbook << lbook[i].publisher << endl; fbook << lbook[i].datepublished << endl; fbook << lbook[i].left << endl; }

fbook.close();

fstudent << student_tot << endl; for (i=1;i<=student_tot;i++){

8

fstudent << lstudent[i].username << endl; fstudent << lstudent[i].password << endl; fstudent << lstudent[i].num << endl; for (j=1;j<=lstudent[i].num;j++)

fstudent << lstudent[i].isbn[j] << endl; }

fstudent.close();

return 1; }

int lib_sys::user_login(){ char ua[50],pw[50]; int i;

cout << \ cin.getline(ua,50); cout << \ cin.getline(pw,50);

for (i=1;i<=student_tot;i++){

//cout << lstudent[i].username << endl << lstudent[i].password << endl; if (strcmp(lstudent[i].username,ua)==0 && strcmp(lstudent[i].password,pw)==0){ user_state=1;

strcpy(username,ua); strcpy(password,pw);

//cout << username << endl; //cout << password << endl; break; } }

if (user_state) cout << \ else cout << \ return user_state; }

int lib_sys::check_user_right(){ return user_state; }

int lib_sys::check_admin_right(){ if (!user_state) return 0;

if (strcmp(username,\ return 0;

9

}

book lib_sys::edit_book_inner(book k){ char ch; char st[50];

if (!check_admin_right()) return k; ch='0';

while (!(ch=='6')){ system(\

cout << \请输入要修改的项目,在新数据输入状态下直接回车表示取消修改\\n\ cout << \ cout << \书名\\n\ cout << \作者\\n\ cout << \出版社\\n\ cout << \出版时间\\n\ cout << \确定\\n\ cout.flush(); ch=getch(); switch (ch){ case '1':

cout << \当前的isbn是: \ cout << \请输入新数据: \ cin.getline(st,50);

if (!strlen(st)==0) strcpy(k.isbn,st); break; case '2':

cout << \当前的书名是: \ cout << \请输入新数据: \ cin.getline(st,50);

if (!strlen(st)==0) strcpy(k.bookTitle,st); break; case '3':

cout << \当前的作者是: \ cout << \请输入新数据: \ cin.getline(st,50);

if (!strlen(st)==0) strcpy(k.author,st); break; case '4':

cout << \当前的出版社是: \ cout << \请输入新数据: \ cin.getline(st,50);

if (!strlen(st)==0) strcpy(k.publisher,st); break; case '5':

10

#include\

class Manager{ private:

lib_sys msys;

public:

Manager(){

msys.input_data(); }

int work(); };

#endif

Manager.cpp

#include\

#include #include #include

int Manager::work(){ char ch; char st[50]; int w; do{

system(\

cout << \图书馆管理系统\\n\\n\ cout << \ 当前用户: \

if (msys.check_user_right()) cout << msys.get_username() << endl; else cout << \游客\\n\ cout << endl;

cout << \1.借书\\n\ cout << \2.还书\\n\ cout << \3.显示书库\\n\ if (msys.check_admin_right()){ cout << \4.添加书籍\\n\ cout << \5.删除书籍\\n\

16

cout << \6.编辑书籍\\n\}

if (!msys.check_user_right()){ cout << \7.用户登陆\\n\ cout << \8.用户注册\\n\}

if (msys.check_user_right()){

cout << \9.显示用户信息\\n\}

cout << \0.退出\\n\\n\cout << \请输入您的选择: \

cout.flush();

ch=getch();

cout << ch << endl; //cin >> ch; switch (ch){ case '1':

if (msys.borrow_book()) cout << \操作成功\\n\ else cout << \操作失败\\n\ break; case '2':

if (msys.return_book()) cout << \操作成功\\n\ else cout << \操作失败\\n\ break; case '3':

msys.show_book(); break; case '4':

if (msys.add_book()) cout << \操作成功\\n\ else cout << \操作失败\\n\ break; case '5':

if (!msys.check_admin_right()){ cout << \操作失败\ break; }

cout << \请输入isbn: \ cin.getline(st,50); cout << \请输入数量: \ cin >> w;

if (msys.del_book(st,w)) cout << \操作成功\\n\

17

}

else cout << \操作失败\\n\ break; case '6':

if (!msys.check_admin_right()){ cout << \操作失败\\n\ break; }

cout << \请输入isbn: \ cin.getline(st,50);

if (msys.edit_book(st)) cout << \操作成功\\n\ else cout << \操作失败\\n\ break; case '7':

if (msys.user_login()) cout << \操作成功\\n\ else cout << \操作失败\\n\ break; case '8':

if (msys.register_user()) cout << \操作成功\\n\ else cout << \操作失败\\n\ break; case '9':

if (!msys.show_user_detail()) cout << \操作失败\\n\ break; case '0':

msys.output_data(); break; default:

cout << \操作失败\\n\ }

cout.flush(); system(\

cin.ignore(100,'\\n'); }while (!(ch=='0')); return 1;

18

本文来源:https://www.bwwdw.com/article/a8x3.html

Top