数据结构课程设计个人书籍管理系统.docx
- 文档编号:30270797
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:23
- 大小:78.76KB
数据结构课程设计个人书籍管理系统.docx
《数据结构课程设计个人书籍管理系统.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计个人书籍管理系统.docx(23页珍藏版)》请在冰豆网上搜索。
数据结构课程设计个人书籍管理系统
数据结构课程设计
课程设计说明书
个人书籍管理系统
起止日期:
2010年6月1日至2011年6月20日
一.问题分析——————————————————3
二.功能函数——————————————————4
三.程序基本框架图—————-——————————5
四.总结与心得——————————————-———6
五.程序截图—————————————-—————7
六.源代码——————————————————-—9
问题分析
学生在自己的学习和生活中会拥有很多的书籍,对所购买的书籍进行统计和分类是一种良好的习惯。
可以便于对这些知识资料的整理和查找使用。
如果用文件来存储相关的各种信息,包括分类,购买日期,价格,出版社信息等。
辅之一程序来使用这些文件对里面的书籍信息进行统计和查询的工作使得书籍管理工作变得轻松而有趣。
简单的个人书籍管理系统的开发就是为了解决这个实际的问题。
这个程序具备如下的功能:
1.存储书籍各种相关的信息,可以随时增加书籍。
2.提供查找功能,按多种关键码查找需要的书籍。
3.提供排序的功能,按多种关键码对所有的书籍进行排序,例如按照购买日期进行排序。
4.提供删除的功能,可以把一些已丢失的从书籍库中删除。
5.为软件设置打开密码。
功能函数
Check()函数:
软件打开时检查E盘中的code.txt文件来进行密码验证。
Menu()函数:
主菜单函数。
包含以下子函数:
1.input函数:
录入。
2.print函数:
显示已录入的信息。
3.add函数:
追加录入。
4.search函数:
查询功能(包括search_name和search_price函数)。
5.delete函数:
删除记录。
6.rank函数:
排序功能(包括rank_data和rank_price函数)。
7.password函数:
设置软件打开密码。
8.write函数:
作者信息。
程序基本框架图
总结与心得
数据结构一向是一门难学难懂的课程,其课程设计也一直是一件头疼的事,虽然如此,但是在我们做课程设计的过程中,感觉学到了许多的东西。
这次课程设计是两人一组,我们有着愉快合作,不懂之处,互相鼓励,分头去查找解决方案,不亦乐乎。
除了领悟到团队合作的魅力外,对于以前没学懂而要用的知识也扎扎实实的复习了一遍,充实了不少,在实践中领悟真理。
编程的过程,实是枯燥无味,必须全神贯注,差错往往在于一念之间。
人家都说程序员是很辛苦的的工作,我能深深体会到这一点,所以以后要多多用正版软件,特别是免费的正版。
在课程设计过程中,收获知识,提高能力的同时,我们也学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪。
总而言之,收益颇多。
程序截图
源代码
————————————————————
//system.cpp:
Definestheentrypointfortheconsoleapplication.
//
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
#include"conio.h"
#include"io.h"
typedefstruct
{
charname[20];
intdata;
charauthor[10];
intidnumber;
intprice;
charpublish[15];
charremarks[30];
}BOOK;
typedefstruct
{
BOOKbook[300];
intlast;
}SeqList;
SeqListL;
voiddeleted()
{
SeqList*L;
L=newSeqList;
FILE*fp,*p;
BOOKb;
inti=0,n=0,h;
fp=fopen("E:
\\bookfile","r");
if(fp==NULL)
{printf("\n\t无存储记录.\n");getch();}
while(fread(&b,sizeof(BOOK),1,fp)!
=0)
{
strcpy(L->book[i].name,b.name);
L->book[i].data=b.data;
strcpy(L->book[i].author,b.author);
L->book[i].idnumber=b.idnumber;
L->book[i].price=b.price;
strcpy(L->book[i].publish,b.publish);
strcpy(L->book[i].remarks,b.remarks);
i++;
}
fclose(fp);
p=fopen("E:
\\bookfile","r+");
BOOKa[300];
while(fread(&a[n],sizeof(BOOK),1,p)!
=0)
n++;fclose(p);
L->last=n;//Totalbooknumberisn。
fclose(fp);
//printf("Totalbooknumberis%d",n);
voidprint();print();
printf("\n\n\t\t请输入要删除的书的编号:
\t");
scanf("%d",&h);
intk,u,v;
for(k=0;k { if(h==L->book[k].idnumber) {u=k;break;} } u++; for(v=u;v { L->book[v-1]=L->book[v]; } n--; L->last=n; printf("\n书名\t购买日期\t作者\t编号\t价格\t出版社\t备注\n\n"); fp=fopen("E: \\bookfile","w+"); intk1=0,k2,k3; //printf("%d",n); while(k1! =n) { printf("\n"); printf("%s\t",L->book[k1].name); printf("%d\t\t",L->book[k1].data); printf("%s\t",L->book[k1].author); printf("%d\t",L->book[k1].idnumber); printf("%d\t",L->book[k1].price); printf("%s\t",L->book[k1].publish); printf("%s\n",L->book[k1].remarks); k1++; fwrite(&L->book[k1],sizeof(BOOK),1,fp); } printf("\n\n\t\t成功删除。 \n"); fclose(fp); getch(); } voidinput() { intk;BOOKb; FILE*fp; fp=fopen("E: \\bookfile","wb+");system("cls"); if(fp==NULL) printf("\n\t出错啦.\n"); printf("\n\t请输入书本数目: \t"); scanf("%d",&k); for(inti=0;i { printf("\n\n"); printf("书名: \t"); scanf("%s",b.name); printf("购买日期: \t"); scanf("%d",&(b.data)); printf("作者: ");scanf("%s",b.author); printf("数字编号: ");scanf("%d",&(b.idnumber)); printf("价格: ");scanf("%d",&(b.price)); printf("出版社: ");scanf("%s",b.publish); printf("备注: ");scanf("%s",b.remarks); fwrite(&b,sizeof(BOOK),1,fp); } printf("\n\n\t********************输入完毕*******************\n"); fclose(fp); printf("\n\n\n\n\n\t*****************请按任意键键返回**************\n");getch(); system("cls"); } voidprint() { FILE*fp; BOOKb; fp=fopen("E: \\bookfile","rb+");system("cls"); if(fp==NULL) {printf("\n\t无存储记录.\n");getch();} printf("\n\n\n*****************************************************************************\n\n"); printf("书名\t购买日期\t作者\t编号\t价格\t出版社\t备注\n\n"); while(fread(&b,sizeof(BOOK),1,fp)! =0) { printf("\n"); printf("%s\t",b.name); printf("%d\t\t",b.data); printf("%s\t",b.author); printf("%d\t",b.idnumber); printf("%d\t",b.price); printf("%s\t",b.publish); printf("%s\n",b.remarks); } printf("\n\n***************************************************************************\n"); fclose(fp); } voidadd() { BOOKb; FILE*fp; intk; system("cls"); printf("\n\t要添加的书本数: \t"); fp=fopen("E: \\bookfile","ab+"); scanf("%d",&k); for(inti=0;i { printf("\n\n"); printf("书名: \t"); scanf("%s",b.name); printf("购买日期: \t"); scanf("%d",&(b.data)); printf("作者: ");scanf("%s",b.author); printf("数字编号: ");scanf("%d",&(b.idnumber)); printf("价格: ");scanf("%d",&(b.price)); printf("出版社: ");scanf("%s",b.publish); printf("备注: ");scanf("%s",b.remarks); fwrite(&b,sizeof(BOOK),1,fp); } printf("\n\n\t********************输入完毕*******************\n"); fclose(fp); printf("\n\n\n\n\n\t*****************请按任意键键返回*******************\n"); getch();system("cls"); } voidsearch_name() { voidmenu(); intx; FILE*fp; BOOKb; x=access("E: \\bookfile",0); if(x==-1) {printf("\n\t无存储记录! ");getch();menu(); } printf("\n\t输入书名: \t"); chari[20]; scanf("%s",i); fp=fopen("E: \\bookfile","r"); intm=1; while(fread(&b,sizeof(BOOK),1,fp)! =0) { if(strcmp(b.name,i)==0) { if(m==1) {printf("书名为%s的书是: \n\n\n",b.name);m++; printf("书名\t购买日期\t作者\t编号\t价格\t出版社\t备注\n\n");} printf("\n"); printf("%s\t",b.name); printf("%d\t\t",b.data); printf("%s\t",b.author); printf("%d\t",b.idnumber); printf("%d\t",b.price); printf("%s\t",b.publish); printf("%s\n",b.remarks); printf("\n\n"); } } printf("\n\t输出完毕,如无显示书目,这符合要求的书不存在,按任意键继续。 "); getch(); fclose(fp); } voidsearch_price() { voidmenu(); intx; FILE*fp; BOOKb; x=access("E: \\bookfile",0); if(x==-1) {printf("\n\t无存储记录! ");getch();menu(); } printf("\n\t输入价格: \t"); inti; scanf("%d",&i); fp=fopen("E: \\bookfile","r"); intm=1; while(fread(&b,sizeof(BOOK),1,fp)! =0) { if(b.price==i) { if(m==1) {printf("价格为%d的书有: \n\n\n",i);m++; printf("书名\t购买日期\t作者\t编号\t价格\t出版社\t备注\n\n");} printf("\n"); printf("%s\t",b.name); printf("%d\t\t",b.data); printf("%s\t",b.author); printf("%d\t",b.idnumber); printf("%d\t",b.price); printf("%s\t",b.publish); printf("%s\n",b.remarks); printf("\n\n"); } } printf("\n\t输出完毕,如无显示书目,这符合要求的书不存在,按任意键继续。 "); getch(); fclose(fp); } voidsearch() { voidmenu(); inta; system("cls"); printf("*******************************************************************************\n\n"); printf("\n\n\t*\t1,按书名查找\t*\n"); printf("\n\n\t*\t2,按价格查找\t*\n"); printf("\n\n\t*\t按0键返回.\t*\n\n\n"); printf("输入查找方式: \t");scanf("%d",&a); switch(a) { case1: search_name();break; case2: search_price();break; case0: system("cls");menu();break; default: printf("\n\t输入有误,重新输入! ");search(); } system("cls"); } voidrank_price() { voidmenu(); intx; inti,j,n=0; BOOKa[300],t; x=access("E: \\bookfile",0); if(x! =0) {printf("\n\n\t\t无存储记录! \n");getch();menu();} FILE*fp; fp=fopen("E: \\bookfile","r"); while(fread(&a[n],sizeof(BOOK),1,fp)! =0) n++; for(i=0;i { for(j=n;j>i;j--) if(a[j].price>a[j-1].price) {t=a[j];a[j]=a[j-1];a[j-1]=t;} } printf("\n\t*****************************按书价排序***********************\n\n"); printf("价格\t购买日期\t作者\t编号\t书名\t出版社\t备注\n\n"); for(i=0;i { printf("\n"); printf("%d\t",a[i].price); printf("%d\t\t",a[i].data); printf("%s\t",a[i].author); printf("%d\t",a[i].idnumber); printf("%s\t",a[i].name); printf("%s\t",a[i].publish); printf("%s\n",a[i].remarks); } fclose(fp); printf("\n\t\t输出完毕! "); } voidrank_data() { voidmenu(); intx; inti,j,n=0; BOOKa[300],t; x=access("E: \\bookfile",0); if(x! =0) {printf("\n\n\t\t无存储记录! \n");getch();menu();} FILE*fp; fp=fopen("E: \\bookfile","r"); while(fread(&a[n],sizeof(BOOK),1,fp)! =0) n++; for(i=0;i { for(j=n;j>i;j--) if(a[j].data>a[j-1].data) {t=a[j];a[j]=a[j-1];a[j-1]=t;} } printf("\n\t*****************************按购买日期排序***********************\n\n"); printf("购买日期\t价格\t作者\t编号\t书名\t出版社\t备注\n\n"); for(i=0;i { printf("\n"); printf("%d\t\t",a[i].data); printf("%d\t",a[i].price); printf("%s\t",a[i].author); printf("%d\t",a[i].idnumber); printf("%s\t",a[i].name); printf("%s\t",a[i].publish); printf("%s\n",a[i].remarks); } fclose(fp); printf("\n\t\t输出完毕! "); } voidrank() { voidmenu(); system("cls"); inta; printf("\n\n输入排序方式: \n"); printf("\n\n\t*\t1,按书价排序,\t\t*"); printf("\n\n\t*\t2,按购买日期排序,\t*\n\n\t"); printf("*\t0,返回目录,\t\t*\n\n\t"); scanf("%d",&a); switch(a) { case1: system("cls");rank_price();break; case2: system("cls");rank_data();break; case0: system("cls");menu(); default: printf("\n\t\t输入有误,重新输入! "); } getch(); system("cls"); } voidwritein() { FILE*fp;charstr[10]; fp=fopen("E: \\code.txt","r+"); printf("\n\t输入密码: "); scanf("%s",str); fputs(str,fp); fclose(fp); printf("\n\n\t密码已保存.\n\n\t按任意键继续。 "); getch();system("cls"); } voidpassword() { system("cls"); FILE*fp; intx; x=access("E: \\code.txt",0); switch(x) { case-1: fp=fopen("E: \\code.txt","w+");fclose(fp);writein();break; case0: writein();break; } } voidwriter() { system("cls"); printf("\n\n*********************************************************************\n"); printf("\n\n\t\t通信103班: \t");printf("伍柏林&于鹏超\n"); getch();sys
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 个人 书籍 管理 系统