C++课程设计图书管理系统档案管理系统.docx
《C++课程设计图书管理系统档案管理系统.docx》由会员分享,可在线阅读,更多相关《C++课程设计图书管理系统档案管理系统.docx(28页珍藏版)》请在冰点文库上搜索。
C++课程设计图书管理系统档案管理系统
计算机科学与技术学院
《C高级语言程序设计》课程设计报告
(2014/2015学年第一学期)
学生姓名:
学生专业:
学生班级:
学生学号:
指导教师:
20015年1月9日
计算机科学与技术学院
课程设计任务书
课程设计名称
《C高级语言程序设计》课程设计
课程设计题目
档案管理系统
学生姓名
专业班级
学号
课程设计任务内容
[问题描述]
档案管理系统是企业管理中的一个子系统,功能模块如下:
借阅模块:
此模块在通过用户的身份验证后实现档案的借阅功能。
归还模块:
此模块用于在用户的身份验证后实现档案的借阅功能。
档案维护模块:
此模块用于实现档案的增加,删除,修改,删除和全部删除功能。
用户维护模块:
此模块用于实现用户信息的增加,删除,修改,删除,记录用户所借档案信息等功能。
[基本要求]
(1)系统以菜单方式工作,至少实现对档案的正常管理及各项功能实现。
(2)用c或者c++完成,源程序可读性强。
[测试要求]
(1)能正确运行出结果。
(2)具有友好的界面和提示信息。
指导教师:
时间:
年月日
计算机科学与技术学院
课程设计成绩评审表
课程设计名称
《C高级语言程序设计》课程设计
课程设计题目
档案管理系统
学生姓名
专业班级
同组人
无
学号
指导教师
设计成绩
评价内容
签字:
时间:
年月日
目录
第一章、设计问题描述与分析………………………………………………………………………………1
第二章、算法设计与流程图…………………………………………………………………………………2
2.1、算法设计…………………………………………………………………………………………………2
2.2、流程图……………………………………………………………………………………………………3
第三章、程序设计编码与测试………………………………………………………………………………4
3.1、程序设计代码………………………………………………………………………………………4
3.2、程序测试…………………………………………………………………………………………20
第四章、设计过程总结与分析………………………………………………………………………………21
附录程序流程图………………………………………………………………………………………23
程序代码……………………………………………………………………………………………………24
第一章设计问题描述与分析
档案,对于一个具体单位或个人其作用体现在以下方面:
1、档案是一个单位或个人历史的真实、全面的反映。
2、档案是一个单位或个人维护自身权益的重要工具。
3、档案是一个单位规范管理的基础。
4、档案我们积累和传播知识重要载体。
5、档案是开展单位文化建设的重要素材,特别是对于企业建立企业文化有不可替代的作用。
6、档案是一个单位或个人建立信用,在社会活动、生产经营等方面建立和利用信用体系,获得发展最有力的工具。
最后,档案还是我们国家和民族文化建立历史记忆,传承文明的重要载体,是“今世可以知古,后世可以知今”的重要素材。
档案管理工作是社会各种企事业单位的各项工作的一个重要部分。
面对庞大的信息量,如何有效地提高档案信息管理工作的效率是一个急需解决的问题。
档案管理系统的设计目标是实现对各类信息的科学化、规范化管理,提高管理的效率,为高水平的企业管理提供保证。
档案管理系统,为企事档业单位的案现代化管理,提供完整的解决方案,档案管理系统可以自成系统,为用户提供完整的电子档案管理和查询功能。
档案管理系统作为企业管理中的一个子系统,与其它子系统,如人事管理系统、后勤管理系统等一起构成企业信息管理系统,为企业管理信息化提供一个子功能。
所以,几乎所有的大、中、小企业都需要一套这样的管理系统来提高日常的工作效率。
经分析档案管理系统一般主要有以下几项功能要求:
●档案的录入与修改,包括档案编号,档案名称,可以修改档案的名称等。
●档案的查看,包括档案的状态,档案的编号,档案的名称。
●档案的全部删除功能,实现档案的清空。
●档案的借阅和归还功能,实现档案是否在架可借的记录显示,方便用户对档案的借阅。
●用户信息的录入与修改,包括用户编号,用户密码等。
●用户信息的查找,包括用户的数量,用户的编号,用户的名称,用户所借阅的档案编号。
●用户信息的全部删除,实现用户的清空处理。
●用户信息的删除功能,可以实现用户信息的单个删除。
功能的齐全与操作的方便性,将大大提高档案的管理效率,可以说,档案管理系统是每个企业办公当中必备的一套管理系统,其需求是不言面喻的。
第二章算法设计与流程图
2.1算法设计
本程序计划实现的程序界面:
档案管理系统
1借阅
2归还
3档案维护
4用户维护
0退出
计划通过定义四个类:
用户类;用户库类;档案类;档案库类实现以上功能。
其中,各个模块实现如下。
借阅模块:
此模块在通过用户的身份验证后实现档案的借阅功能。
首先主函数定义一个int型变量choise接收用户输入的操作数,通过switch(),判断用户的需要执行的操作,调用档案库类中的函数判断所需要的档案是否在架,显示输出判断结果。
若在架则通过tag变量标记此书。
归还模块:
此模块用于在用户的身份验证后实现档案的借阅功能。
首先当档案中的retrecord()函数被调用。
该档案的标记是否在架的变量被设置为1,代表该档案已归还,并显示输出提示语。
档案维护模块:
此模块用于实现档案的增加,删除,修改,删除和全部删除功能。
在用户做出选择后,接受该选择的变量通过switch()判断用户所要执行的操作。
此模块的功能是在档案类中实现,通过intretrecord(intrecordid)、voiddisp()、函数实现删除、归还、增加档案操作和借档案操作。
用户维护模块:
此模块用于实现用户信息的增加,删除,修改,删除,记录用户所借档案信息等功能。
在用户做出选择后,接受该选择的变量通过switch()判断用户所要执行的操作。
此模块的功能是在用户类中实现,通过voidborrowrecorder(intrecordid)、intretrecord(intrecordid)等成员函数,首先检测该用户的借阅档案数是否已超上限,若达到上限显示提示字符,否则实现用户借阅档案、归还档案信息的记录操作。
2.2流程图
图2—1
第三章程序设计编码与测试
3.1程序设计代码
#include#include#include#include
#include#include#include//输入/输出文件流类
usingnamespacestd;
//用户类,实现对用户的信息的描述
classUsers
{private:
inttag;//删除标记,表示是否存在1:
已删0:
未删
intno;//用户编号
charname[10];//用户姓名
intborrecord[Maxbor];//所借档案
public:
Users(){}
char*getname(){returnname;}//获取姓名
intgettag(){returntag;}//获取删除标记
intgetno(){returnno;}//获取用户编号
voidsetname(charna[])//设置姓名
strcpy(name,na);}
voiddeluser(){tag=1;}//设置删除标记1:
已删0:
未删
voidadduser(intn,char*na)//增加用户
{tag=0;
no=n;
strcpy(name,na);
for(inti=0;iborrecord[i]=0;//还未借阅,全部设置为0}
voidborrowrecorder(intrecordid)//借书操作
{for(inti=0;iborrecord[i]=recordid;//存储档案的编号表示档案借阅
intretrecord(intrecordid)//还书操作
{for(inti=0;ivoiddisp()//读出用户信息
{cout<[";
for(inti=0;iif(borrecord[i]!
=0)
cout<cout<<"]"<//用户类库,实现建立用户的个人资料
classRDatabase
{private:
inttop;//用户记录指针
Usersuser[Maxr];//用户记录
public:
RDatabase()//构造函数,将reader.txt读到read[]中
{Userss;
top=-1;
fstreamfile("用户文件.txt",ios:
:
in);//打开一个输入文件
while
(1)
{file.read((char*)&s,sizeof(s));//将reader.txt读到read[]中
if(!
file)break;
top++;
user[top]=s;}
file.close();//关闭reader.txt}
voidclear()//删除所有用户信息{top=-1;}
intadduser(intn,char*na)//添加用户时先查找是否存在
{Users*p=query(n);
if(p==NULL)
{top++;
user[top].adduser(n,na);
return1;}return0;
Users*query(intuserid)//按编号查找
{for(inti=0;i<=top;i++)
if(user[i].getno()==userid&&
user[i].gettag()==0){return&user[i];}
returnNULL;}
voiddisp()//输出所有用户信息
{for(inti=0;i<=top;i++)
user[i].disp();}
voiduserdata();//用户库维护
~RDatabase()//析构函数,将read[]写到reader.txt文件中
{fstreamfile("用户文件.txt",ios:
:
out);
for(inti=0;i<=top;i++)
if(user[i].gettag()==0)
file.write((char*)&user[i],sizeof(user[i]));
file.close();}};
voidRDatabase:
:
userdata()
{charchoice;
charrname[20];
intuserid,i;
Users*r;
while(choice!
='0')
{cout<<"\n\n\t\t\t用户维护\n\n\n\t\t1新增\n\n\t\t2更改\n\n\t\t3删除\n\n\t\t4查找\n\n\t\t5显示\n\n\t\t6全删\n\n\t\t0退出"<cin>>choice;
switch(choice)
{case'1':
cout<<"输入用户编号:
";
cin>>userid;
cout<<"输入用户密码:
";
for(i=0;i<6;i++)
{rname[i]=getch();
putchar('*');
}adduser(userid,rname);
break;
case'2':
cout<<"输入用户编号:
";
cin>>userid;
r=query(userid);
if(r==NULL)
{cout<<"很抱歉,您不是合法用户,系统无法提供服务!
"<break;
}cout<<"输入新的密码:
";
for(i=0;i<6;i++)
{rname[i]=getch();
putchar('*');
}r->setname(rname);
break;case'3':
cout<<"输入用户编号:
";
cin>>userid;
r=query(userid);
if(r==NULL)
{cout<<"很抱歉,此用户不是合法用户,无法删除!
"<break;}
r->deluser();
cout<<"该用户已删除!
"<break;
case'4':
cout<<"输入用户编号:
";
cin>>userid;
r=query(userid);
if(r==NULL)
{cout<<"很抱歉,您要查找的用户不存在!
"<break;}
r->disp();
break;
case'5':
disp();
break;
case'6':
clear();
break;
case'0':
return;
default:
cout<<"尊敬的用户,您好!
您的输入有错误,请您重新输入:
";break;
//档案类,实现对档案的描述,档案的编号,名称,借出,还入等
classRecord
{private:
inttag;//删除标记1:
已删0:
未删
intno;//档案编号
charname[20];//档案名
intonshelf;//是否再架1:
在架0:
已借出
public:
Record(){}
char*getname(){returnname;}//获取姓名
intgetno(){returnno;}//获取档案编号
intgettag(){returntag;}//获取删除标记
voidsetname(charna[])//设置档案名
{strcpy(name,na);}voiddelrecord(){tag=1;}//删除档案
voidaddrecord(intn,char*na)//增加档案
{tag=0;no=n;strcpy(name,na);onshelf=1;}
intborrowrecord()//借档案操作
{if(onshelf==1){onshelf=0;return1;return0;}voidretrecord()//归还操作{onshelf=1;}
voiddisp()//输出档案
{cout<"在架,可借":
"很抱歉,已借出")<//档案库类,实现对档案的维护,查找,删除等
classBDatabase
{private:
inttop;//档案记录指针
Recordrecord[Maxr];//档案记录
public:
BDatabase()//构造函数,将档案.txt读到record[]中
{Recordb;top=-1;fstreamfile("档案.txt",ios:
:
in);
while
(1)
{file.read((char*)&b,sizeof(b));
if(!
file)break;
top++;
record[top]=b;}
file.close();}
voidclear()//删除全部档案{top=-1;}
intaddrecord(intn,char*na)//增加档案{
Record*p=query(n);
if(NULL==p)
{top++;record[top].addrecord(n,na);return1;}return0;}Record*query(intrecordid)查找档案{for(inti=0;i<=top;i++)
if(record[i].getno()==recordid&&record[i].gettag()==0)
{return&record[i];}returnNULL;}
voidrecorddata();//档案库维护
voiddisp()
{for(inti=0;i<=top;i++)
if(record[i].gettag()==0)
record[i].disp();}
~BDatabase()//析构函数,将record[]写到档案.txt文件中
{fstreamfile("档案.txt",ios:
:
out);
for(inti=0;i<=top;i++)
if(record[i].gettag()==0)
file.write((char*)&record[i],sizeof(record[i]));
file.close();}};
voidBDatabase:
:
recorddata()
{charchoice;
charbname[40];
intrecordid;
Record*b;
while(choice!
='0')
{switch(choice)
{case'1':
cout<<"输入档案编号:
";
cin>>recordid;
cout<<"输入档案名称:
";
cin>>bname;addrecord(recordid,bname);
cout<<"已成功保存档案!
"<case'2':
cout<<"输入档案编号:
";
cin>>recordid;
b=query(recordid);
if(b==NULL)
{cout<<"该档案不存在!
"<break;}ut<<"输入新的档案名称:
";
cin>>bname;
b->setname(bname);
cout<<"已成功修改名称。
"<break;
case'3':
cout<<"输入档案编号:
";
cin>>recordid;
b=query(recordid);
if(b==NULL)
cout<<"尊敬的用户,您好!
该档案不存在!
敬请见谅!
"<delrecord();break;case'4':
cout<<"输入档案编号:
";
cin>>recordid;
b=query(recordid);
if(b==NULL)
{cout<<"尊敬的用户,您好!
很抱歉,您想调阅的档案不存在!
敬请谅解!
"<disp();break;}
//main()函数的实现,程序的主界面的引导
voidmain()
{charchoice;intrecordid,userid;RDatabaseReaderDB;Users*r;BDatabaseBookDB;Record*b;
while(choice!
='0')
cin>>choice;switch(choice){case'1':
cin>>userid;r=ReaderDB.query(userid);//按编号查找if(r==0)
{cout<<"尊敬的用户,您好!
您不是合法用户,系统无法提供服务。
"<;cin>>recordid;b=BookDB.query(recordid);if(b==NULL){cout<<"尊敬的用户,您好!
很抱歉,您要调阅的档案不存在。
"<if(b->borrowrecord()==0)
cout<<"尊敬的用户,您好!
很抱歉,该档案已借出,无法借阅。
"<r->borrowrecorder(b->getno());break;
case'2':
cin>>userid;
r=ReaderDB.query(userid);
if(r==0){cout<<"尊敬的用户,您好!
很抱歉,您不是合法用户,系统无法提供服务。
"<cout<<"尊敬的用户,您好!
请输入要归还的档案的编号:
";
cin>>recordid;
b=BookDB.query(recordid);
if(b==NULL)
{cout<<"尊敬的用户,您好!
很抱歉,您不是合法用户,系统无法提供服务。
"<retrecord();
r->retrecord(b->getno());break;