图书管理系统含源代码c语言数据结构课程设计报告.docx
- 文档编号:3922926
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:18
- 大小:167.12KB
图书管理系统含源代码c语言数据结构课程设计报告.docx
《图书管理系统含源代码c语言数据结构课程设计报告.docx》由会员分享,可在线阅读,更多相关《图书管理系统含源代码c语言数据结构课程设计报告.docx(18页珍藏版)》请在冰豆网上搜索。
图书管理系统含源代码c语言数据结构课程设计报告
数据结构大作业
图书管理系统
工程管理121279044伍杨
一、题目要求
1)目的要求
本课程设计任务的目的是要求学生按照分析、设计、编码、调试和测试的软件开发过程独立完成管理系统设计,以及C语言算法的掌握,并能最终实现本系统的功能要求,通过这个程序可以学习到以前调试短程序没有的的经验。
2)题目要求
实现图书管理信息系统的设计。
要求实现图书添加、显示全部图书、查询、借阅和归还。
主要考查利用文件的操作!
二、总体设计
三、编码实现
1)定义图书结构体
structbook{
charbookname[20];//书名
intNO;//书编号
chartype[20];//类型
intdate;//到书日期
};
structperson{
charname[10];//姓名
charclasses[20];//班级
intnumber;//学号
chartelephone[12];//联系电话
intNO;//书编号
charbookname[20];//书名
intborrowdate;//借书日期
intreturndate;//还书日期
2)登记操作
voidnew_book()//登记新书
{
FILE*fp;
structbookb;
inti,j;
if((fp=fopen("shuku.txt","a"))==NULL){
printf("Fileopenerror!
\n");
exit(0);
}
printf("请朱老师输入此次收到的书本总数:
");
scanf("%d",&i);
for(j=0;j
printf("请朱老师输入书名:
");
scanf("%s",b.bookname);
fprintf(fp,"%s",b.bookname);
printf("请朱老师输入书编号:
");
scanf("%d",&b.NO);
fprintf(fp,"%d",b.NO);
printf("请朱老师输入类型:
");
scanf("%s",b.type);
fprintf(fp,"%s",b.type);
printf("请朱老师输入到书日期:
");
scanf("%d",&b.date);
fprintf(fp,"%d",b.date);
}
if(fclose(fp)){
printf("Cannotclosethefile!
\n");
exit(0);
}
}
voidnew_person()//登记借书
{
FILE*fp;
structpersonp;
charchoice;
if((fp=fopen("jieshujilu.txt","a"))==NULL){
printf("Fileopenerror!
\n");
exit(0);
}
printf("请朱老师输入借书人姓名:
");
scanf("%s",p.name);
fprintf(fp,"%s",p.name);
printf("请朱老师输入借书人班级:
");
scanf("%s",p.classes);
fprintf(fp,"%s",p.classes);
printf("请朱老师输入借书人学号:
");
scanf("%d",&p.number);
fprintf(fp,"%d",p.number);
printf("请朱老师输入借书人联系电话:
");
scanf("%s",p.telephone);
fprintf(fp,"%s",p.telephone);
printf("请朱老师输入书编号:
");
scanf("%d",&p.NO);
fprintf(fp,"%d",p.NO);
printf("请朱老师输入书名:
");
scanf("%s",p.bookname);
fprintf(fp,"%s",p.bookname);
printf("请朱老师输入借书日期:
");
scanf("%d",&p.borrowdate);
fprintf(fp,"%d",p.borrowdate);
printf("请朱老师输入还书日期:
");
scanf("%d",&p.returndate);
fprintf(fp,"%d",p.returndate);
printf("\n\t您想继续吗?
(y/n)");
scanf("%c",&choice);
if(choice=='Y'||choice=='y'){
system("cls");
new_person();
}
if(fclose(fp)){
printf("Cannotclosethefile!
\n");
exit(0);
}
}实现程序对文件的读取
voidRead()
{
inti=0;
intj=0;
ifstreamin("Libra.txt",ios:
:
out);
in>>i;
all=i;
if(i>0&&i<=Max)
{
for(j=1;j<=i;j++)
{
in>>data[j].id>>data[j].name>>data[j].type>>data[j].status>>data[j].count;
}
}
in.close();
}
3)查看操作
vvoidsee_book()//查看书库记录
{
FILE*fp;
longNO;
charbookname[20];
chartype[20];
longdate;
if((fp=fopen("shuku.txt","r"))==NULL){
printf("Fileopenerror!
\n");
exit(0);
}
while(!
feof(fp))
{
fscanf(fp,"%s%ld%s%ld",bookname,&NO,type,&date);
printf("%-10s%-10ld%-10s%ld\n",bookname,NO,type,date);
};
if(fclose(fp)){
printf("Cannotclosethefile!
\n");
exit(0);
}
}
voidsee_person()//查看所有借书记录
{
FILE*fp;
charname[10];
charclasses[20];
intnumber;
chartelephone[20];
intNO;
charbookname[20];
intborrowdate;
intreturndate;
if((fp=fopen("jieshujilu.txt","r"))==NULL){
printf("Fileopenerror!
\n");
exit(0);
}
while(!
feof(fp))
{
fscanf(fp,"%s%s%ld%s%ld%s%ld%ld",name,classes,&number,telephone,&NO,bookname,&borrowdate,&returndate);
printf("%-5s%-5s%ld%-5s%ld%-5s%ld%ld\n",name,classes,number,telephone,NO,bookname,borrowdate,returndate);
};
if(fclose(fp)){
printf("Cannotclosethefile!
\n");
exit(0);
}
}
4)删除操作
voiddelete_books()//删除旧书
{
FILE*fp;
structbookb;
intnumber;
voiddeletebooks();
printf("请输入您要删除的书编号:
");
scanf("%d",&number);
if((fp=fopen("shuku.txt","r"))==NULL){
printf("不能打开此文件!
\n");
exit(0);
}
while(!
feof(fp)){
fscanf(fp,"%s%d%s%d",b.bookname,&b.NO,b.type,&b.date);
if(b.NO==number){
printf("\n\n\t***************图书信息*******************\n");
printf("\n\t图书书名:
%25s",b.bookname);
printf("\n\t-----------------------------------------");
printf("\n\t图书编号:
%25d",b.NO);
printf("\n\t-----------------------------------------");
printf("\n\t图书类型:
%23s",b.type);
printf("\n\t-----------------------------------------");
printf("\n\t到书日期:
%25d",b.date);
printf("\n\t-----------------------------------------");
deletebooks();
}
}
}
voiddeletebooks()
{
FILE*fp,*fp1,*fp2,*fp3;
intnumber;
structbookb;
printf("\n\n确认删除?
请再次输入书编号:
");
scanf("%d",&number);
if((fp=fopen("shuku.txt","r"))==NULL){
printf("不能打开此文件!
\n");
exit(0);
}
if((fp1=fopen("tempshuku.txt","w"))==NULL){//建立一个临时文件
printf("不能打开此文件!
\n");
exit(0);
}
while(!
feof(fp)){
fscanf(fp,"%s%d%s%d",b.bookname,&b.NO,b.type,&b.date);
if(b.NO==number)
continue;
else
fprintf(fp1,"%s%d%s%d",b.bookname,b.NO,b.type,b.date);
}
fclose(fp);
fclose(fp1);
if((fp2=fopen("tempshuku.txt","r"))==NULL){
printf("不能打开此文件!
\n");
exit(0);
}
if((fp3=fopen("shuku.txt","w"))==NULL){//清空书库
printf("不能打开此文件!
\n");
exit(0);
}
while(!
feof(fp2)){//将临时文件的内容写人源文件
fscanf(fp2,"%s%d%s%d",b.bookname,&b.NO,b.type,&b.date);
fprintf(fp3,"%s%d%s%d",b.bookname,b.NO,b.type,b.date);
}
fclose(fp2);
fclose(fp3);
printf("\n删除成功!
\n");
}
voiddelete_returnbook()//删除借书记录
{
FILE*fp;
intnumbers;
structpersonp;
voiddeletereturnbook();
charchoice;
printf("\n请输入所还书本的书编号:
");
scanf("%d",&numbers);
if((fp=fopen("jieshujilu.txt","r"))==NULL){
printf("不能打开此文件!
\n");
exit(0);
}
while(!
feof(fp)){
fscanf(fp,"%s%s%ld%s%ld%s%ld%ld",p.name,p.classes,&p.number,p.telephone,&p.NO,p.bookname,&p.borrowdate,&p.returndate);
if(p.NO==numbers){
printf("\n\t***************图书信息*******************\n");
printf("\n\t借书人姓名:
%20s",p.name);
printf("\n\t-----------------------------------------");
printf("\n\t借书人班级:
%20s",p.classes);
printf("\n\t-----------------------------------------");
printf("\n\t借书人学号:
%20d",p.number);
printf("\n\t-----------------------------------------");
printf("\n\t借书人联系电话:
%20s",p.telephone);
printf("\n\t-----------------------------------------");
printf("\n\t图书编号:
%24d",p.NO);
printf("\n\t-----------------------------------------");
printf("\n\t图书名称:
%23s",p.bookname);
printf("\n\t-----------------------------------------");
printf("\n\t借书日期:
%25d",p.borrowdate);
printf("\n\t-----------------------------------------");
printf("\n\t还书日期:
%25d",p.returndate);
printf("\n\t-----------------------------------------");
deletereturnbook();
printf("\n\t您想继续吗?
(y/n)");
scanf("%c",&choice);
if(choice=='Y'||choice=='y'){
system("cls");
delete_returnbook();
}
}
}
fclose(fp);
}
voiddeletereturnbook()
{
FILE*fp,*fp1,*fp2,*fp3;
structpersonp;
intnumbers;
printf("\n\n确认删除?
请再次输入书编号:
");
scanf("%d",&numbers);
if((fp=fopen("jieshujilu.txt","r"))==NULL){
printf("不能打开此文件!
\n");
exit(0);
}
if((fp1=fopen("tempbook.txt","w"))==NULL){
printf("不能打开此文件!
\n");
exit(0);
}
while(!
feof(fp)){
fscanf(fp,"%s%s%d%s%d%s%d%d",p.name,p.classes,&p.number,p.telephone,&p.NO,p.bookname,&p.borrowdate,&p.returndate);
if(p.NO==numbers)
continue;
else
fprintf(fp1,"%s%s%d%s%d%s%d%d",p.name,p.classes,p.number,p.telephone,p.NO,p.bookname,p.borrowdate,p.returndate);
}
fclose(fp);
fclose(fp1);
if((fp2=fopen("tempbook.txt","r"))==NULL){
printf("不能打开此文件!
\n");
exit(0);
}
if((fp3=fopen("jieshujilu.txt","w"))==NULL){
printf("不能打开此文件!
\n");
exit(0);
}
while(!
feof(fp2)){//将临时文件写人源文件
fscanf(fp2,"%s%s%d%s%d%s%d%d",p.name,p.classes,&p.number,p.telephone,&p.NO,p.bookname,&p.borrowdate,&p.returndate);
fprintf(fp3,"%s%s%d%s%d%s%d%d",p.name,p.classes,p.number,p.telephone,p.NO,p.bookname,p.borrowdate,p.returndate);
}
fclose(fp2);
fclose(fp3);
printf("\n删除成功!
\n");
}
5)Main函数
intmain(void)
{
intchoice;
charchoice2;
structbook;
structperson;
do{
printf("\n\n\n图书馆管理系统\n\a");
printf("*******************************************************\n");
printf("***朱老师您好吖********功能选项:
登记******请按1,******\n");
printf("*******************************查看/查询*请按2******\n");
printf("*******************************删除*****请按3******\n");
printf("*******************************退出*****请按0******\n");
printf("*******************************************************\n\n\n");
printf("请选择功能:
");
scanf("%d",&choice);
switch(choice){
case1:
printf("登记选项:
新书登记请按1,借书登记请按2,返回请按3\n");
printf("请选择:
");
scanf("%d",&choice);
switch(choice){
case1:
system("cls");//清屏
printf("新书资料登记:
\n\n");
new_book();//新书登记
printf("登记完毕!
\n");
printf("\n");
scanf("%c",&choice2);
system("cls");
break;
case2:
system("cls");
printf("借书资料登记:
\n\n");
new_person();//借书登记
printf("\npressanykey");
scanf("%c",&choice2);
system("cls");
break;
case3:
system("cls");
break;
}
break;
case2:
printf("查看/查询选项:
书库查看请按1,总借书记录查看请按2,到期记录查询请按3,返回请按4\n");
printf("请选择:
");
scanf("%d",&choice);
switch(choice){
case1:
system("cls");
printf("欢迎朱老师进入书库!
\n\n");
printf("书名书编号类型到书日期\n");
printf("------------------------------------------\n");
see_book();//书库显示
printf("\npressanykey");
scanf("%c",&choice2);
system("cls");
break;
case2:
system("cls");
printf("欢迎朱老师进入借书记录!
\n\n");
printf("姓名班级学号联系电话书编号书名借书日期到书日期\n");
printf("--------------------------------------------------------\n");
see_person();//借书记录显示
printf("\npressanykey");
scanf("%c",&choice2);
system("cls");
break;
case3:
system("cls");
search_person();//显示符合记录
printf("\npressanykey");
scanf("%c",&choice2);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书 管理 系统 源代码 语言 数据结构 课程设计 报告