2《程序设计实践》课程报告统一格式1.docx
- 文档编号:9609311
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:60
- 大小:1.01MB
2《程序设计实践》课程报告统一格式1.docx
《2《程序设计实践》课程报告统一格式1.docx》由会员分享,可在线阅读,更多相关《2《程序设计实践》课程报告统一格式1.docx(60页珍藏版)》请在冰点文库上搜索。
2《程序设计实践》课程报告统一格式1
课程报告
课程名称:
程序设计实践
专业班级:
学生姓名:
学号:
任课教师:
学期:
2012-2013年第二学期
课程报告任务书
题目
图书信息管理系统
主要
内容
开发一个图书信息管理系统,图书信息包括:
图书编号、书名、作者、出版社、类别、出版时间、价格等基本信息(也可以根据自己情况进行扩充,比如是否借出、库存量等)。
使之能提供以下基本功能:
(1)图书信息录入功能(图书信息用文件保存)--输入
(2)图书信息浏览功能--输出
(3)查询功能(至少一种查询方式)、排序功能(至少一种排序方式):
①按书名查询②按作者名查询
按照价钱排序
按出版时间排序等等
(4)图书信息的删除与修改
扩展功能:
可以按照自己的程度进行扩展。
比如
(1)简单的权限处理
(2)报表打印功能(3)甚至根据自己情况,可以加上学生信息,并扩充为图书借阅系统。
(4)模糊查询(5)综合查询(6)统计功能比如统计处某一类别的图书信息或筛选出小于指定数量库存的图书信息等等,总之,可以根据自己需求进行分析功能。
任务
要求
一、提交材料应包括:
(1)系统源代码
(2)课程报告
二、整个设计过程具体要求
(1)需求分析要求学生对案例系统进行分析,设计出需要完成的功能,完善各个模块的调用关系;
(2)设计过程要求学生进一步明确各模块调用关系,进一步完善模块函数细节(函数名、参数、返回值等)
(3)实现过程要求学生养成良好的编码习惯、完成各个模块并进行测试,最终完成系统整体测试;
(4)总结阶段按照要求完成系统设计和实现报告,并进行总结、答辩。
成绩
评定
报告撰写情况(30分)
系统完成情况(30分)
答辩情况(40分)
总分
内容
20分
规范程度
5分
程序测试
5分
基本功能20分
扩展功能10分
自述情况10分
答辩情况
30分
成绩评定教师:
1需求分析
主要功能包括首次输入图书信息,添加图书入库,彻底删除图书信息,查询图书信息,图书信息排序,图书信息修改,图书信息统计,输出所有图书信息,图书借出,图书归还等,图书信息包括图书编号,图书名称,图书类型,图书作者,图书的出版社,图书的价格,图书的出版时间和图书现在的状态等.查询图书信息包括按图书编号查询,按图书名称查询和按图书作者查询.图书的信息排序只有一种按图书编号进行排序.图书信息修改包括对图书编号,书名,作者,类型和时间进行修改.图书信息统计是按不同类型进行统计的.
2概要设计
数据结构
typedefstructbook_type
{
charid[10];//编号
charname[40];//名称
chartype[10];//类型
charwriter[10];//作者
charpublisher[20];//出版
doubleprice;//价格
chartime[15];//时间
charyear[20];//年
charmonth[10];//月
charday[10];//日
charstate[15];//状态
charborrower[10];//借书者
book_type*next;
}Bk,*LB;
⑵模块划分
voidinfor_creat();//首次输入图书信息
voidinfor_input();//信息输入
char*Number_exist_judge();//判断编号已存在
char*Number_absence_judge();//判断编号不存在
voidAll_infor_display();//输出图书的所有信息
voidinfor_inquire();//信息查找
voidNo_infor_inquire();//按编号查找
voidName_infor_inquire();//按图书名称查找
voidWriter_infor_inquire();//按作者查找
voidinfor_sort();//信息排序
voidNo_infor_sort();//按编号排序
LBson_no_sort(LBhead,LBp);//按编号排序的子函数
voidinfor_revise();//修改图书信息
voidNo_revise_infor();//修改编号
voidName_revise_infor();//修改书名
voidWriter_revise_infor();//修改作者
voidType_revise_infor();//修改类别
voidTime_revise_infor();//修改时间
voidinfor_add();//图书入库
voidinfor_delete();//图书彻底删除
voidinfor_stat();//图书统计
voidinfor_borrow();//图书借出
voidinfor_return();//图书归还
⑶程序总体框架
3详细设计
1.主界面函数
intmain_inter_face()
{
intn;
system("cls");
printf("\n\n\n\t\t/**************************************************/");
printf("\n\t\t/*个人图书管理系统*/");
printf("\n\t\t/**************************************************/\n");
printf("\n\t\t1:
首次输入图书信息2:
添加图书入库\n");
printf("\n\t\t3:
彻底删除图书4:
查询图书信息\n");
printf("\n\t\t5:
图书信息排序6:
图书信息的修改\n");
printf("\n\t\t7:
图书信息统计8:
输出所有图书信息\n");
printf("\n\t\t9:
图书借出10:
图书归还\n");
printf("\n\t\t0:
退出系统\n");
printf("\n\t\t-----------------------------------------------------");
printf("\n\t\t-----------------------------------------------------");
printf("\n\t\t\t\t\t请选择(0-10):
");
scanf("%d",&n);
returnn;
}
2.新建图书信息
voidinfor_creat()
{
inta;
printf("\n\n\t\t\t欢迎使用图书新建功能!
");
printf("\n\n\n\t温馨提示:
新建会把以前的信息全部覆盖!
如果不是首次创建,请选择其它版块!
\n");
printf("\n\t\t\t是否继续:
");
printf("\n\t\t\t1:
继续,0:
退出\n\t\t\t请选择:
");
scanf("%d",&a);
if(a)
{
system("cls");//清屏
intk=1;
intcount=0;
charid[10];//编号
charname[40];//名称
chartype[10];//类型
charwriter[10];//作者
charpublisher[20];//出版
doubleprice;//价格
chartime[15];//时间
charyear[20];//年
charmonth[10];//月
charday[10];//日
charstate[15];//状态
intsize=sizeof(Bk);
LBtail,p,head;
head=tail=NULL;
printf("\n\n\n\n\n\n\n\n\t\t温馨提示:
新建时输入请留意已经输入的图书编号,请不要重复输入!
");
printf("\n\n\t\t\t按Enter键进入!
");
getchar();
getchar();
system("cls");
while(k==1)
{
printf("\n\n\n\t\t\t\n");
printf("\n\t\t1:
图书编号(请按001格式输入):
");
scanf("%s",id);
printf("\n\t\t2:
图书名称:
");
scanf("%s",name);
printf("\n\t\t3:
图书类别(文史,科技,娱乐,其它):
");
scanf("%s",type);
printf("\n\t\t4:
图书作者:
");
scanf("%s",writer);
printf("\n\t\t5:
图书出版社:
");
scanf("%s",publisher);
printf("\n\t\t6:
图书价格(元):
");
scanf("%lf",&price);
printf("\n\t\t7:
出版日期(按年月日顺序,中间以空格隔开):
");
scanf("%s%s%s",year,month,day);
strcpy(time,year);
strcat(time,"/");
strcat(time,month);
strcat(time,"/");
strcat(time,day);
printf("\n\t\t8:
图书状态(在馆内,已借出):
");
scanf("%s",state);
p=(LB)malloc(size);if(!
p){printf("\n\t\t内存分配错误!
");exit(0);}
strcpy(p->id,id);
strcpy(p->name,name);
strcpy(p->type,type);
strcpy(p->writer,writer);
strcpy(p->publisher,publisher);
strcpy(p->time,time);
strcpy(p->year,year);
strcpy(p->state,state);
strcpy(p->borrower,"--");
p->price=price;
p->next=NULL;
if(head==NULL)//看看这一点
head=p;
else
tail->next=p;
tail=p;
printf("\n\t\t\t1:
继续输入0:
输入完毕");
printf("\n\t\t\t请选择:
");
scanf("%d",&k);
}
fprint(head);//将链表写入文件
}
}
3.文件写入链表
LBlinked_list()
{
FILE*fp;
LBhead,p,tail;
head=tail=NULL;
intsize=sizeof(Bk);
if((fp=fopen("图书信息.txt","rb"))==NULL)
{
printf("\n\t\t\t文件打不开!
\n\t\t\t\t");
exit(0);
}
p=(LB)malloc(size);
fread(p,size,1,fp);
while(!
feof(fp))
{
p->next=NULL;
if(head==NULL)
head=p;
else
tail->next=p;
tail=p;
p=(LB)malloc(size);
fread(p,size,1,fp);
}
fclose(fp);
returnhead;
}
4.链表写入文件
voidfprint(LBhead)
{
FILE*fp;
LBp;
intsize=sizeof(Bk);
if((fp=fopen("图书信息.txt","wb"))==NULL)
{
printf("文件打不开!
\n");exit(0);
}
for(p=head;p;p=p->next)
fwrite(p,size,1,fp);
fclose(fp);
printf("\n\t\t你输入图书已入库!
按Enter键继续其它操作!
\n");
getchar();
getchar();
}
5.判断编号是否存在
//判断编号存在
char*Number_exist_judge()
{
char*a=(char*)malloc(sizeof(char)*15);
LBhead,p;
scanf("%s",a);
head=linked_list();
p=head;
if(p==NULL)
{
printf("\n\n\n\t\t\t当前文件为空,请先输入数据!
\n");
scanf("%s",p->id);//第一次不能输入,这个需要改变
getchar();
getchar();
}
else
{
while(p!
=NULL){
if(strcmp(a,p->id)==0){
printf("\n\t\t对不起,您输入的图书编号已经存在!
\n\n\t\t请重新输入编号:
");
break;
}
p=p->next;
}
if(p!
=NULL)
Number_exist_judge();
else
returna;//id的空间不存在
}
}
//判断编号不存在
char*Number_absence_judge()
{
char*a=(char*)malloc(sizeof(char)*15);
LBhead,p;
intj=1;
scanf("%s",a);
head=linked_list();
p=head;
if(p==NULL)
{
printf("\n\n\n\t\t\t当前文件为空,请先输入数据!
\n");
scanf("%s",p->id);
getchar();
getchar();
}
else
{
while(p!
=NULL){
if(strcmp(a,p->id)==0){
returna;
j=0;
break;
}
p=p->next;
}
if(j==1)
{
printf("\n\t对不起您所输入的编号不存在!
");
printf("\n\n\t请重新输入编号:
");
Number_absence_judge();
}
}
}
6.输出所有图书信息
voidAll_infor_display()
{
LBp;
intn=1;
p=linked_list();
while(p!
=NULL)
{
if(n){
printf("\n%s%5s%8s%6s%14s%12s%11s%5s%5s\n","编号","名称","类别","作者","出版社","价格","出版日期","状态","借书人");
}
printf("\n%s%-6s%-4s%-10s%-12s%8.2f%10s%5s%s\n",p->id,p->name,p->type,p->writer,p->publisher,p->price,p->time,p->state,p->borrower);
n=0;
p=p->next;
}
printf("\n\n\n\t\t\t已经为您输出了所有信息!
\n\t\t\t按Enter键结束!
");
getchar();
getchar();
}
7.图书信息查找
voidinfor_inquire()
{
intm=1,n=1;//不能连续定义intm=n=1;
printf("\n\n\n\n\n\n\n\t\t\t欢迎使用图书查询功能!
");
printf("\n\n\t\t\t\t按Enter键进入!
");
getchar();
getchar();
while(m==1){
system("cls");
printf("\n\n\n\n\t\t-------------------------------------------------------");
printf("\n\t\t------------------------图书查询---------------------\n");
printf("\n\n\t\t1.按图书编号查询2.按图书名称查询");
printf("\n\n\t\t3.按图书作者查询");
printf("\n\n\t\t0.退出查询\n");
printf("\n\t\t-------------------------------------------------------");
printf("\n\n\t\t请输入您要查询的方式:
");
scanf("%d",&n);
switch(n)
{
case1:
{system("cls");No_infor_inquire();break;}
case2:
{system("cls");Name_infor_inquire();break;}
case3:
{system("cls");Writer_infor_inquire();break;}
case0:
{system("cls");break;}
default:
{system("cls");
printf("\n\n\n\n\n\n\n\n\t\t输错了,请重新输入!
");
printf("\n\n\n\t\t\t\t按Enter键继续!
");
getchar();
getchar();
break;
}
}
printf("\n\n\t\t本次查询结束,请按Enter继续!
");
getchar();
getchar();
system("cls");
printf("\n\n\n\n\n\n\n\n\t\t\t是否继续使用查询功能:
");
printf("\n\n\t\t\t1.继续查询0.返回上一层");
printf("\n\t\t\t\t\t请输入您的选择:
");
scanf("%d",&m);
}
}
(1)按编号查找
voidNo_infor_inquire()
{
LBhead,p;
chara[10];
printf("\n\n\n\n\n\t\t请输入你要查找的编号(请按001格式输入):
");
scanf("%s",a);
head=linked_list();
p=head;
if(p==NULL)
{
printf("\n\n\n\t\t当前文件为空,请先输入数据!
\n");
printf("\n\t\t按Enter键结束~");
}
else
{
while(p!
=NULL)
{
if(strcmp(p->id,a)==0)
break;
p=p->next;
}
if(p==NULL)
printf("\n\t\t对不起,您输的编号不存在!
\n\n");
else
{
printf("\n%s%5s%8s%6s%14s%12s%11s%5s%5s\n","编号","名称","类别","作者","出版社","价格","出版日期","状态","借书人");
printf("\n%s%-6s%-4s%-10s%-12s%8.2f%10s%5s%s\n",p->id,p->name,p->type,p->writer,p->publisher,p->price,p->time,p->state,p->borrower);
}
}
}
(2)按图书名称查找
voidName_infor_inquire()
{
LBhead,p;
chara[40];
intn=1,m=1;
printf("\n\n\n\n\n\t\t请输入你要查找的图书名称:
");
scanf("%s",a);
head=linked_list();
p=head;
if(p==NULL)
{
printf("\n\n\n\t\t当前文件为空,请先输入数据!
\n");
printf("\n\t\t按Enter键结束~");
getchar();
getchar();
}
else
{
while(p!
=NULL)
{
if(strcmp(p->name,a)==0)
{
m=0;
if(n)
{
printf("\n%s%5s%8s%6s%14s%12s%11s%5s%5s\n","编号","名称","类别","作者","出版社","价格","出版日期","状态","借书人");
}
printf("\n%s%-6s%-4s%-10s%-12s%8.2f%10s%5s%s\n",p->id,p->name,p->type,p-
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计实践 程序设计 实践 课程 报告 统一 格式