人人范文网 范文大全

图书管理系统 数据结构 课程设计

发布时间:2020-03-02 23:19:04 来源:范文大全 收藏本文 下载本文 手机版

《数据结构》

课程设计报告书

一.课程设计题目

图书借阅管理系统

二.课程设计内容

实现图书管理信息系统的设计

(一)管理员功能:

①登录:输入管理员密码,若密码错误则不得执行管理员操作。

②添加新书:增加新的图书资料,同时需检查新书的图书编号是否已存在于原图书资料中, 若已存在则应取消添加或提示重新输入。

③修改图书:通过编号查询该图书资料,若该编号存在,则显示已有信息,允许修改,否则提示 无该图书信息。

④删除图书:通过编号查询该图书资料,若该编号存在,则显示已有信息,允许删除,否则提示无该图书信息。删除对象包括该图书资料以及“图书状态”和“借阅人”中与此书相关的所有记录。

⑤查找图书:

A.按书号查找:通过编号查询该图书资料,若该编号存在,则显示图书信息,否则提示无该图书信息。

B.按书名查找:通过书名查询该图书资料,若该编号存在,则显示图书信息,否则提示无该图书信息。

C.按作者查找:通过作者查询该图书资料,若该编号存在,则显示图书信息,否则提示无该图书信息。

⑥查看全部图书:显示所有图书资料,包括书号、书名、作者、状态和借阅人等信息。

⑦修改读者:通过姓名查询该读者信息,若该姓名存在,则显示已有信息,允许修改,否则提示无该读者信息。

⑧删除读者:通过姓名查询该读者信息,若该姓名存在,则显示已有信息,允许删除,否则提示无该读者信息。删除对象包括该读者姓名、班级、电话以及“图书状态”和“借阅人”中与此人相关的所有记录。

⑨查看所有读者:显示所有读者资料,包括姓名、班级、电话等信息。

(二)读者功能:

①登录:输入读者姓名,若未经注册则不得进入读者服务界面。 ②注册:新用户经注册方可登录系统并使用读者服务功能。 ③借书:

A.输入所需图书编号,判断该编号是否存在,若不存在则提示重新输入。

B.若所输入图书编号存在,则判断该书籍是否已被借出,若已借则不允许执行借书操作。

C.若所输入图书未借,则提示输入读者姓名,判断所输入读者姓名是否存在,若不存在则提示重新输入。 D.若读者姓名存在,则允许执行借书操作。

E.借书处理包括在“图书状态”中加上“已借”标记。 ④还书:

A.输入所借书编号,判断该编号是否存在,若不存在则提示重新输入。 B.判断该书是否已借出,若未借则不允许执行还书操作。 C.借书处理包括在“图书状态”中加上“未借”标记。 ⑤查询图书:

A.按书号查找:通过编号查询该图书资料,若该编号存在,则显示图书信息,否则提示无该图书信息。

B.按书名查找:通过书名查询该图书资料,若该编号存在,则显示图书信息,否则提示无该图书信息。

C.按作者查找:通过作者查询该图书资料,若该编号存在,则显示图书信息,否则提示无该图书信息。

⑥查看借阅情况:输入读者姓名,若该姓名不存在则提示重新输入,若该姓名存在则显示该读者借阅信息。

三.算法设计

1.流程图(部分示例)

①管理员登录

②读者登录

③读者借阅图书

④管理员或读者按书名查找图书

2.代码实现

#include #include

#include #include //文件流 #include #define BookFile \"book.txt\"

//将字符串BookFile替换原文件中的宏名称book #define ReaderFile \"reader.txt\" using namespace std; //**********读者结构体,用于存放读者基本信息********** cla Reader {

private:

char rname[10];

char rcla[10];

char rtel[10]; public:

Reader() //构造函数,实现数据初始化

{strcpy(rname,\"\");strcpy(rcla,\"\");strcpy(rtel,\"\");} //初始化

void set_rname(char *rn) //设置读者姓名

{strcpy(rname,rn);} //将rn的字符复制给rname

char * get_rname() //获得读者姓名

{return rname;} //返回rname的值

void set_rcla(char *rc) //设置班级

{strcpy(rcla,rc);}

char *get_rcla()

//获得班级

{return rcla;}

void set_rtel(char *rt)

//设置电话

{strcpy(rtel,rt);}

char *get_rtel()

//获得电话

{return rtel;}

void copy(Reader m) //读者Reader结构体copy函数

{strcpy(rname,m.get_rname());strcpy(rcla,m.get_rcla());strcpy(rtel,m.get_rtel());} }; //*********读者管理结构体,实现对读者用户的管理********* cla ReaderManage {

Reader readers[50]; //定义读者结构体数组对象,最多50位

int length;

void readFile()

//读取读者文件函数

{

ifstream fread; //定义输入文件流对象fread

length=0;

//计数

if(!fread)

{cout

fread.open(ReaderFile,ios::binary);//使文件流与文件关联,以二进制方式打开

int i=0;

while((fread.read((char *)&readers[i],sizeof(Reader))))//计算并返回所占字节数

i++;

length=i;

fread.close();//关闭磁盘文件

} void saveFile() //保存读者文件

{

ofstream fwrite;

//定义输出文件流对象fwrite

if(!fwrite)

{cout

fwrite.open(ReaderFile,ios::binary);//使文件流与文件关联,以二进制方式打开

fwrite.write((char *)readers,length*sizeof(Reader));//计算并返回所占字节数

fwrite.close(); //关闭磁盘文件

} public:

ReaderManage() //构造函数,读取读者文件

{readFile();}

~ReaderManage() //析构函数,保存读者文件

{saveFile();}

void add_reader(Reader r) //添加读者用户函数

{

if(length>=50)

{cout

readers[length].copy(r); //调用读者结构体copy函数

length++; } int search(char *rn) //按姓名查找读者函数

{

for(int i=0;i

if(strcmp(readers[i].get_rname(),rn)==0)//判断是否相等

return i;

return -1;

} bool revise(Reader reader,int i) //修改读者资料函数

{

readers[i].copy(reader); //调用读者结构体cpoy函数

return true; } void delete_reader(int index) //删除读者函数

{

for(int i=index;i

readers[i].copy(readers[i+1]); //用后面的地址覆盖前面的地址

length--; } bool log_reader(Reader r) //登录时判断读者用户是否存在函数,相当于遍历

{

for(int i=0;i

if(strcmp(readers[i].get_rname(),r.get_rname())==0)

return true;

return false;

} void reg_reader() //注册用户函数

{

char n[10];

//姓名name

char c[10];

//班级cla

char t[10];

//电话tel

Reader reader;

cout

cin>>n;

cout

cin>>c;

cout

cin>>t;

reader.set_rname(n); //调用读者结构体设置读者姓名函数

reader.set_rcla(c); //调用读者结构体设置读者班级函数

reader.set_rtel(t); //调用读者结构体设置联系电话函数

add_reader(reader); //调用读者结构体添加读者函数

cout

{ cout

cout

for(int i=0;i

{

cout

cout

cout

} } void show_reader(int i) //带参的显示读者信息函数

{

cout

cout

cout

cout

cout

}

};

//********书籍结构体,用于存放书籍基本信息******** cla Book { private:

char bnum[10];

//书号

char bname[20];

//书名

char bauthor[10];

//作者

char rname[10];

//借阅人 public: int tag;

//状态标记判断指标(已借/在架) Book()

//构造函数初始化信息

{strcpy(bnum,\"\");strcpy(bname,\"\");strcpy(bauthor,\"\");strcpy(rname,\"\");tag=0;}

void set_bnum(char *no)

//设置书号

{strcpy(bnum,no);}

//把字符串no中的字符复制到字符串bnum中

char *get_bnum()

//获得书号

{

return bnum;}

//返回值为bnum

void set_bname(char *n)

//设置书名

{strcpy(bname,n);}

char *get_bname()

//获得书名

{return bname;}

void set_bauthor(char *a)

//设置作者

{strcpy(bauthor,a);}

char * get_bauthor()

//获得作者姓名

{return bauthor;}

void set_tag(int t)

//状态设置

{tag=t;}

void set_rname(char *rn)

//设置借阅人

{strcpy(rname,rn);}

char *get_rname()

//获得借阅人姓名

{return rname;}

void show_tag()

//显示图书状态

{

if(tag==1)

{cout

else

{cout

}

void copy(Book m)

//Book结构体copy函数

{

strcpy(bnum,m.get_bnum());

//将获得书号函数里的返回值里的字符复制到bnum

strcpy(bname,m.get_bname());

strcpy(bauthor,m.get_bauthor());

tag=0;

} }; //**********书籍管理结构体,实现管理书籍功能********** cla BookManage { private:

Book books[100];

//定义Book书籍结构体数组对象,最大容量100本

int length;

void saveFile()

//保存书籍文件

{

ofstream fwrite; //定义输出文件流ofstream结构体对象fwrite

if(!fwrite)

{cout

}

fwrite.open(BookFile,ios::binary);//使文件流与文件建立关联,以二进制方式打开

fwrite.write((char *)books,length*sizeof(Book)); //计算并返回所占字节数

fwrite.close();

//关闭磁盘文件

} void readFile()

//读取书籍文件

{

ifstream fread; //定义输入文件流对象fread

length=0;

if(!fread)

{cout

Book temp;

//定义书籍结构体临时对象temp

int i=0;

fread.open(BookFile ,ios::binary);//使文件流与文件建立关联,以二进制方式打开

while((fread.read((char *)&books[i],sizeof(Book))))

i++;

//每读完一次,指针后移一位,直到不能读出正确结果为止

length=i;

fread.close(); } public:

BookManage()

//构造函数,读取磁盘文件

{

length=0;

//从头读起,计数,最大100

readFile();

//调用读取文件函数

}

~BookManage()

//析构函数,保存磁盘文件

{

saveFile();

//调用保存文件函数

}

bool add(Book book)

//添加图书资料

{

if(length>=100)

{ cout

return -1;

}

else

{

books[length].copy(book); //调用书籍结构体copy函数

length++;

return (length-1);

} } int bnu_search(char *bnu)

//按书号查找书籍

{

for(int i=0;i

if(strcmp(books[i].get_bnum(),bnu)==0) //字符串比较,判断是否相等

return i;

return -1;

} int bna_search(char *bna)

//按书名查找书籍

{

for(int i=0;i

if(strcmp(books[i].get_bname(),bna)==0) //判断

return i;

return -1;

} int bau_search(char *bau) //按作者查找书籍

{

for(int i=0;i

if(strcmp(books[i].get_bauthor(),bau)==0)//判断

return i;

return -1;

}

int rn_search(char *rn) //按借阅人查找书籍

{

for(int i=0;i

if(strcmp(books[i].get_rname(),rn)==0)//判断

return i;

return -1;

}

void revise(Book book,int i)//带参的修改书籍函数

{books[i].copy(book);} //调用Book结构体copy函数

void deleteBook(int index)//带参的删除书籍资料函数

{

for(int i=index;i

books[i].copy(books[i+1]);//用后面的地址将当前的地址覆盖

length--;

} void show_book()//不带参的显示书籍函数

{

cout

cout

cout.width(10);

cout

cout.width(10);

cout

cout.width(17);

cout

cout.width(25);

cout

for(int i=0;i

{ cout

cout.width(10);

cout

cout.width(10);

cout

cout.width(20);

books[i].show_tag();

cout.width(20);

cout

}

} void show_book(int i)//带参的显示书籍函数

{ cout

cout

cout.width(10);

cout

cout.width(10);

cout

cout.width(17);

cout

cout.width(25);

cout

cout

cout.width(10);

cout

cout.width(10);

cout

cout.width(20);

books[i].show_tag();

cout.width(20);

cout

}

void br_book()//读者借、还书功能函数

{

ReaderManage reader;

int choi; //选择

int a;

//图书状态指标(1已借2在架)

char sh[10]; //需要还书的书号

char dz[10]; //读者姓名

cin>>sh;

int index=bnu_search(sh); //定义一个变量等于查找到的书号

if(index>=0)

{ if(books[index].tag==1) //已借

a=1;

if(books[index].tag==0) //在架

a=2;

switch(a)

{ case 1:

cout\\n\";

cout

0:返回\\n\";

cin>>choi;

cin.ignore(); //清除以回车结束的输入缓冲区的内容,消除上一次输入对下一次输入的影响

if(choi!=1&&choi!=0)

{

cout

return;

}

else if(choi==1)

{

cout

cin>>dz;

cin.ignore();

int index1=reader.search(dz);

if(index1==-1)

{

cout

return;

}

else

{

strcpy(dz,\"\");//将读者姓名已空白代替

books[index].set_rname(dz);//借阅人一项变为空白

books[index].set_tag(0);//图书状态变为在架

cout

}

}break;

case 2:

cout\\n\";

cout

0:返回\\n\";

cin>>choi;

cin.ignore();

if(choi!=1&&choi!=0)

{

cout

return;

}

else if(choi==1)

{

cout

cin>>dz;

int index1=reader.search(dz);

if(index1==-1)

{ cout

return;

}

else

{

books[index].set_rname(dz);

books[index].set_tag(1);

cout

}

}break;

}

}

else

{

cout

}

bool in(int i) //判断图书是否在架函数

{

if(books[i].tag==1)

return false;

return true;

}

}; //**********菜单结构体,实现界面引导********** cla Menu {

BookManage bm;

//定义书籍管理结构体对象bm ReaderManage rm;

//定义读者管理结构体对象rm Reader r;

//定义读者结构体对象r private: int choice;

//菜单序号选择

int key;

//管理员密码 public: void header()

//页眉

{

system(\"color fd\");

cout

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\\n\";

cout

☆\\n\";

cout

☆\\n\";

cout

☆\\n\";

cout

☆\\n\";

cout

☆\\n\";

cout

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\\n\"; } void log_menu()

//主界面登录菜单

{

system(\"color fd\");

header();

cout

份 >\\n\";

cout

者\\n\\n\\t\\t\\t\\t0: 退

出\\n\\t您的选择是: \"; choice: cin>>choice;

cin.ignore();

//清除以回车结束的输入缓冲区的内容,消除上一次输入对下一次输入的影响

switch(choice)

{

case 1:

log_admin();

//管理员登录,需密码验证

break;

case 2:

reader_lr();

//读者登录或注册

break;

case 0:

exit(1);

//退出系统

break;

default:

cout

goto choice;

} } void admin_menu()

//管理员管理菜单

{

system(\"cls\");

system(\"color f9\");

cout

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\\n\";

cout

☆\\n\";

cout

系★统★管★理★界★面

☆\\n\";

cout

☆\\n\";

cout

1: 添加新的图书资料

2: 修改已有图书资料

☆\\n\";

cout

☆\\n\";

cout

3: 删除已有图书资料

4: 查找已有图书资料

☆\\n\";

cout

☆\\n\";

cout

5: 查看所有图书资料

6: 修改读者用户信息

☆\\n\";

cout

☆\\n\";

cout

7: 删除读者用户信息

8: 查看所有读者信息

☆\\n\";

cout

☆\\n\";

cout

9: 返回系统登录界面

0: 退出图书管理系统

☆\\n\";

cout

☆\\n\";

cout

☆\\n\";

cout

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\\n\";

cout>choice;

cin.ignore();

switch(choice)

{

case 1:

//添加图书

addBook();

bm.~BookManage();

break;

case 2:

//修改图书

reviseBook();

bm.~BookManage();

break;

case 3:

//删除图书

delBook();

bm.~BookManage();

break;

case 4:

//查找图书

absearch_menu();

break;

case 5:

//查看全部图书

bm.show_book();

cout

system(\"pause\");

admin_menu();

break;

case 6:

//修改读者

reviseReader();

rm.~ReaderManage();

break;

case 7:

//删除读者

delReader();

rm.~ReaderManage();

break;

case 8: //查看所有读者

rm.show_reader();

cout

system(\"pause\");

admin_menu();

break;

case 9: //返回系统登录界面

system(\"cls\");

log_menu();

case 0: //退出系统

exit(1);

break;

default:

cout

goto choice;

} } void reader_menu()

//读者服务菜单

{

system(\"cls\");

system(\"color f9\");

cout

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\\n\";

cout

☆\\n\";

cout

读★者★服★务★界★面

☆\\n\";

cout

☆\\n\";

cout

1: 借 阅 图 书

2: 归 还 图 书

☆\\n\";

cout

☆\\n\";

cout

3: 查 找 图 书

4: 借 阅 情 况

☆\\n\";

cout

☆\\n\";

cout

5: 返 上 一 级

0: 退 出 系 统

☆\\n\";

cout

☆\\n\";

cout

☆\\n\";

cout

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\\n\";

cout>choice;

cin.ignore();

switch(choice)

{

case 1:

cout

bm.br_book();

bm.~BookManage();

break;

case 2:

cout

bm.br_book();

bm.~BookManage();

break;

case 3:

bsearch_menu();

break;

case 4:

rn_search();

break;

case 5:

system(\"cls\");

reader_lr();

break;

case 0:

exit(1);

break;

default:

cout

goto choice;

} } void bsearch_menu()

//读者查找书籍菜单

{

system(\"color f2\");

cout

☆\\n\";

cout

书★籍★查★找★界★面

☆\\n\";

cout

☆\\n\";

cout

1: 按 书号查找

☆\\n\";

cout

☆\\n\";

cout

2: 按 书名查找

☆\\n\";

cout

☆\\n\";

cout

3: 按 作者查找

☆\\n\";

cout

☆\\n\";

cout

4: 返 回 上 级

☆\\n\";

cout

☆\\n\";

cout

0: 退 出 系 统

☆\\n\"; cout

☆\\n\";

cout

int bsc; //book search choice cout

cin>>bsc;

cin.ignore();

switch(bsc) {

case 1:

bnu_search();

break;

case 2:

bna_search();

\";

break;

case 3:

bau_search();

break;

case 4:

reader_menu();

break;

case 5:

exit(1);

default:

cout\";

break;

}

}

void absearch_menu()

//管理员查找书籍菜单

{

system(\"color f2\");

cout

cout

☆\\n\";

cout

书★籍★查★找★界★面

☆\\n\";

cout

☆\\n\";

cout

1: 按 书号查找

☆\\n\";

cout

☆\\n\";

cout

2: 按 书名查找

☆\\n\";

cout

☆\\n\";

cout

3: 按 作者查找

☆\\n\";

cout

☆\\n\";

cout

4: 返 回 上 级

☆\\n\";

cout

☆\\n\";

cout

0: 退 出 系 统

☆\\n\";

cout

☆\\n\";

cout

int bsc; //book search choice

cout

cin>>bsc;

cin.ignore();

switch(bsc)

{

case 1:

bnu_search();

break;

case 2:

bna_search();

break;

case 3:

bau_search();

break;

case 4:

admin_menu();

break;

case 5:

exit(1);

default:

cout\";

break;

}

} void reader_lr() //读者登录或注册菜单 {

system(\"cls\");

header();

system(\"color f1\");

cout

面 >\\n\";

cout

1: 登

录\\t2: 注

册\\n\\n\\t\\t\\t

3: 返

回\\t0: 退

出\\n\\t您的选择是: \";

int rlc; //reader login choice choice: cin>>rlc;

cin.ignore();

switch(rlc)

{

case 1:

//已注册读者登录

cout

char rn[10]; //reader name

cin>>rn;

r.set_rname(rn);

if(rm.log_reader(r))

{

cout

system(\"pause\");

reader_menu();

}

else

cout

system(\"pause\");

reader_lr();

break;

case 2:

//新用户注册

rm.reg_reader();

rm.~ReaderManage();

system(\"pause\");

reader_lr();

break;

case 3:

system(\"cls\");

log_menu();

case 0:

exit(1);

break;

default:

cout

goto choice;

} } void log_admin()

//管理员登录

{

cout

int key;

cin>>key;

if(key==14125)

{

cout

system(\"pause\");

admin_menu();

//管理员操作菜单

}

else

{cout

cout

0:退出系统>

cin>>choice;

cin.ignore();

switch(choice)

\"; \";

{

case 1:

system(\"cls\");

log_menu();

break;

case 0:

exit(1);

break;

default:

cout

}

} } void rn_search()

//按书号查找函数

{

char rn[10]; //reader name

cout

cin>>rn;

int index=bm.rn_search(rn);

if(index>=0)

bm.show_book(index);

else

cout

cout

system(\"pause\");

reader_menu();

} void bnu_search()

//按书号查找函数

{

char bnu[10];

cout

cin>>bnu;

int index=bm.bnu_search(bnu);

if(index>=0)

bm.show_book(index);

else

cout

cout

system(\"pause\");

bsearch_menu();

}

void bna_search()

//按书名查找函数

{

cout

char bna[20];

cin>>bna;

int index=bm.bna_search(bna);

if(index>=0)

bm.show_book(index);

else

cout

cout

system(\"pause\");

bsearch_menu();

}

void bau_search()

//按作者查找函数

{

cout

char bau[10];

cin>>bau;

int index=bm.bau_search(bau);

if(index>=0)

bm.show_book(index);

else

cout

cout

system(\"pause\");

bsearch_menu();

}

void addBook()

//新增书籍函数

{ char numb[10];

//书号

char nameb[20];

//书名

char authorb[10]; //作者

Book book;

//书籍结构体对象book

int tag1; input1:cout

cin>>numb;

int index=bm.bnu_search(numb);

if(index==-1)

{

cout

cout

cin>>nameb;

cout

cin>>authorb;

tag1=0;

book.set_bnum(numb);

book.set_bname(nameb);

book.set_bauthor(authorb);

book.set_tag(tag1);

bm.add(book);

cout

}

else

{

cout

goto input1;

}

system(\"pause\");

admin_menu(); } void reviseBook()

//修改书籍函数

{

char numb[10];

char nameb[20];

char authorb[10];

Book book;

int index=-1; input2: cout

cin>>numb;

index=bm.bnu_search(numb);

if(index==-1)

{

cout

goto input2;

return;

}

bool sta=bm.in(index); //判断是否在馆

if(sta)

{ cout状态,您可以继续操作!\";

cout

cin>>nameb;

cout

cin>>authorb;

book.set_bnum(numb);

book.set_bname(nameb);

book.set_bauthor(authorb);

bm.revise(book,index);

cout

else

cout

system(\"pause\");

admin_menu();

} void delBook()

//删除书籍函数

{

char numb[10];

cout

cin>>numb;

int index=bm.bnu_search(numb);

if(index>=0)

{

cout

\";

char y;

cin>>y;

if(y==\'y\'||y==\'Y\')

{

bm.deleteBook(index);

cout

}

else

cout

}

else

cout

system(\"pause\");

admin_menu();

} void reviseReader()//修改读者用户函数

{

char namer[10];

Reader reader; get1:

cout

cin>>namer;

int index=rm.search(namer);

if(index==-1)

{

cout

int a;

cin>>a; get2:

cin.ignore();

switch(a)

{

case 1:

goto get1;

break;

case 0:

system(\"pause\");

admin_menu();

break;

default:

cout

\";

goto get2;

}

return;

}

\";

else

{

char namer[10];

char clar[10];

char telr[10];

Reader reader;

cout

cin>>namer;

cout

cin>>clar;

cout

cin>>telr;

reader.set_rname(namer);

reader.set_rcla(clar);

reader.set_rtel(telr);

cout

char y;

cin>>y;

if(y==\'y\'||y==\'Y\')

{ rm.revise(reader,index);

cout

}

else

cout

}

system(\"pause\");

admin_menu();

}

void delReader()

//删除读者用户函数

{

cout

char namer[10];

cin>>namer;

int index=rm.search(namer);

if(index>=0)

{

cout

char y;

cin>>y;

if(y==\'y\'||y==\'Y\')

{

rm.delete_reader(index);

cout

}

else

cout

}

else

cout

system(\"pause\");

admin_menu();

} }; //********主函数******** int main() {

system(\"color fd\"); Menu menu; //定义菜单结构体对象menu

cout

\"; cout

当前日期:2011-6-22 星期三\"; cout

当前时间:08:00

\"; cout

★ 欢 \";cout

} cout

1主页面

2.管理员登陆页面

3.图书添加

五.课程设计过程中出现的问题、原因及解决方法

1.用户登录密码时,不能使用暗码来保护密码。(未解决成功) 2.每个界面都能退出到主页面,而不是直接跳出系统。(以解决) 3.书名字长太多影响书籍、作者、数量等之间的一一对应关系。(为解决成功)

六.课程设计的主要收获

通过这几天学习设计图书信息管理系统,认识到一切看似简单的事情只有自己动手做,明白了其中的原理才会更好的把它变成自己的东西。图书管理系统主要用到了文件的输入输出,以及利用简单的顺序查找知识,加深了对数据结构的理解与应用。对于这次的课程设计,首先,许多知识不仅仅只是课本上的,需要我们自己去图书馆或网上收集资料。其次,编程过程终遇到各种错误,需要我们耐心分析,讨论,最后得出正确结果。第三,程序无错,进行调试,然后进行加工修改优化。

七.对今后课程设计的建议

希望老师可以分小组做课程设计,题目可以相应的增大难度。分组可以锻炼团对合作能力,队员可以相互讨论解决问题,彼此能够激发更多的思想,做出更完善的作品,同时也防止了互相拷贝的情况,让每个同学都积极的参与到设计中,而不是坐享其成。

数据结构课程设计—西文图书管理系统

图书管理系统课程设计

数据结构课程设计职工管理系统

数据结构课程设计——成绩管理系统

数据库课程设计 图书管理系统

图书管理系统课程设计摘要

图书管理系统课程设计绪论

Oracle课程设计 图书管理系统

图书管理系统(含源代码)c语言_数据结构课程设计报告

通讯录管理系统数据结构课程设计报告

图书管理系统 数据结构  课程设计
《图书管理系统 数据结构 课程设计.doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
点击下载本文文档