C语言程序实践报告.docx

上传人:b****4 文档编号:11864947 上传时间:2023-04-06 格式:DOCX 页数:13 大小:61.97KB
下载 相关 举报
C语言程序实践报告.docx_第1页
第1页 / 共13页
C语言程序实践报告.docx_第2页
第2页 / 共13页
C语言程序实践报告.docx_第3页
第3页 / 共13页
C语言程序实践报告.docx_第4页
第4页 / 共13页
C语言程序实践报告.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

C语言程序实践报告.docx

《C语言程序实践报告.docx》由会员分享,可在线阅读,更多相关《C语言程序实践报告.docx(13页珍藏版)》请在冰豆网上搜索。

C语言程序实践报告.docx

C语言程序实践报告

 

C语言程序设计报告

图书管理系统

学生学号XXXXXXXXXX

学生姓名XXX

学生系别信息工程系

班级XXXX

指导老师XX

日期

 

目录

一、需求分析··········································3

二、概要设计··········································3

1.系统功能组成框图················································3

2.程序的文件存储设计··············································4

3.模块功能说明····················································4

4.主函数流程图····················································5

三、详细设计··········································5

1.头函数·························································5

2.主函数·························································6

3.录入···························································7

4.输出···························································8

5.查询···························································8

6.删除···························································9

7.分类···························································10

8.修改···························································11

八、心得················································13

 

图书管理系统

编程实践是学习C语言程序设计的一重要环节,上机实习和课程设计是提高同学们程序设计能力的有效途径,能够使同学们初步掌握程序设计的基本方法和调试技能。

学校安排上机时间有限,老师也只能教给我们一些方法,而我们自己需要投入很大的时间和精力来锻炼。

一、需求分析

图书信息包括:

登录号,书名,作者名,分类号,出版单位,出版时间,价格等。

使之提供以下功能:

(1)图书信息录入功能。

(图书信息用文件保存)。

(2)图书信息浏览功能。

(3)图书信息查询功能。

(4)图书信息的删除和修改。

(5)图书信息的排序功能。

二、概要设计

1.系统功能组成框图

 

 

2.程序的文件存储设计

程序数据存取主要由三个文件:

book.txt、record.txt、car.txt组成。

Book.txt:

主要存储图书数据,程序的增加图书、删除图书、查阅图书等

功能均是对些文件进行读取操作。

Record.txt:

借书记录存储文件,主要用来储存书籍的借出与归还信息。

Car.txt:

学生卡号储存文件。

另外在程序运行的时候还增加了一个临时文件book1.txt,它的主要功能是

防止因为误操作对源文件book.txt的数据破坏。

3.模块功能说明

本程序包括七个主要模块

1主程序模块

main()

{

清屏并显示主菜单提示用户选择所要执行的操作

根据用户的选择执行相应模块

}

2录入模块——实现图书信息的录入

3显示模块——实现图书信息的显示

4查询模块——按用户指定要求(书名或书名号)查询指定对象的图书信息

5删除模块——删除相应对象的图书信息

6修改模块——修改相应对象的图书信息

7排序模块——按用户指定要求(书名或书名号)将图书信息进行排序

注:

因为分组做程序,本人被安排到修改模块,加上老师要求必做的录入与显示模块,共三个小程序,其余模块皆为同学共同完成。

 

4.主函数流程图

初始化、定义主菜单、分支菜单指针数组及变量

读键盘按键的键值

判断键值并弹出对应菜单

Y

用户按了0键吗?

N

根据按键执行菜单选项对应的函数

从被调用函数中返回并转移

退出管理系统

图3系统主函数流程图

三、详细设计

1.头函数

#include

structlibrary

{

intdel;删除标记,0表示删除

intnumber;登陆号

charname[20];书名

charauthor[30];作者名

charsort[40];分类号

charpublisher;出版社

intprice;价格

}lib[10];

intn=3;

 

2.主函数

main()

{charch;

do{clrscr();

printf("***************************\n");

printf("WelcomeToLibrarySystem!

\n");

printf("***************************\n");

printf("iorI-----input\n");录入

printf("porP-----output\n");浏览

printf("qorQ-----inquire\n");查询

printf("dorD-----delete\n");删除

printf("sorS-----sort\n");分类

printf("morM-----modify\n");修改

printf("eorE-----exit\n");退出

printf("Pleaseselect:

\n");

ch=getchar();

if(ch=='i'||ch=='I'){input();getch();}

elseif(ch=='p'||ch=='P'){output();getch();}

elseif(ch=='q'||ch=='Q'){inquire();getch();}

elseif(ch=='d'||ch=='D'){delete();getch();}

elseif(ch=='a'||ch=='A'){insert();getch();}

elseif(ch=='s'||ch=='S'){sort();getch();}

elseif(ch=='m'||ch=='M'){modify();getch();}

elseif(ch=='e'||ch=='E'){exit(0);getch();}

}while

(1);

}

 

3.录入

增加图书:

在管理系统中选择“iorI”,然后输入书籍的序号,书名、作者和分类号,即可完成添加图书操作。

input()

{FILE*fp;

inti;

if((fp=fopen("libr.dat","wb"))==NULL)

{printf("cannotopenthefile!

");exit(0);}

printf("Pleaseinputlibraryinformation:

\n");

for(i=0;i

{scanf("%d%s%s%s%d",&lib[i].number,lib[i].name,lib[i].author,lib[i].sort,&lib[i].price);}

for(i=0;i

fwrite(&lib[i],sizeof(structlibrary),1,fp);

fclose(fp);}

 

4.输出

浏览图书:

在管理系统中选择“porP”,可查看输入书籍的序号,书名、作者和分类号。

output()

{FILE*fp;

inti;

if((fp=fopen("libr.dat","rb"))==NULL)

{printf("cannotopenthefile!

");exit(0);}

n=0;

while(fread(&lib[n],sizeof(structlibrary),1,fp)==1)n++;

printf("NO.\tName\tAuthor\tSort\tPrice\n");

for(i=0;i

printf("%d\t\t%s\t\t%s\t%s\t\t%d\n",lib[i].number,lib[i].name,lib[i].author,lib[i].sort,lib[i].price);

fclose(fp);}

 

5.查询

inquire()

{FILE*fp;

inti,k;charname[20],author[30];

if((fp=fopen("libr.dat","rb"))==NULL)

{printf("cannotopenthefile!

");exit(0);}

n=0;

while(fread(&lib[n],sizeof(structlibrary),1,fp)==1)n++;

printf("1---name,2---author\n");

printf("Pleaseselect1or2\n");

scanf("%d",&k);

if(k==1)

{printf("Pleaseinputname:

\n");

scanf("%s",name);

for(i=0;i

if(strcmp(name,lib[i].name)==0)printf("%d\t\t%s\t\t%s\t%s\t\t%d\n",lib[i].number,lib[i].name,lib[i].author,lib[i].sort,lib[i].price);

}

if(k==2)

{printf("Pleaseinputauthor:

\n");

scanf("%s",author);

for(i=0;i

if(strcmp(author,lib[i].author)==0)printf("%d\t\t%s\t\t%s\t%s\t\t%d\n",lib[i].number,lib[i].name,lib[i].author,lib[i].sort,lib[i].price);

}

fclose(fp);}

 

6.删除

delete()

{FILE*fp;

inti,j,k;

charname[20],author[30];

if((fp=fopen("libr.dat","rb"))==NULL)

{printf("cannotopenthefile!

");exit(0);}

n=0;

while(fread(&lib[n],sizeof(structlibrary),1,fp)==1)n++;

fclose(fp);

if((fp=fopen("libr.dat","wb"))==NULL)

{printf("cannotopenthefile!

");exit(0);}

printf("Pleaseinputwillbedeletedlibraryinformation:

\n");

printf("1---name,2---author\n");

printf("Pleaseselect1or2\n");

scanf("%d",&k);

if(k==1)

{printf("Pleaseinputname:

\n");

scanf("%s",name);

for(i=0;i

if(strcmp(name,lib[i].name)==0)

for(j=i;j

if(k==2)

{printf("Pleaseinputauthor:

\n");

scanf("%s",author);

for(i=0;i

if(strcmp(author,lib[i].author)==0)for(j=i;j

for(i=0;i

fwrite(&lib[i],sizeof(structlibrary),1,fp);

fclose(fp);}

 

7.分类

分类图书:

在管理系统中选择“sorS”,选择1按书名号排序,选择2按分类号排序。

sort()

{FILE*fp;

inti,k,j,number;

structlibraryt;

if((fp=fopen("libr.dat","rb"))==NULL)

{printf("cannotopenthefile!

");exit(0);}

n=0;

while(fread(&lib[n],sizeof(structlibrary),1,fp)==1)n++;

fclose(fp);

if((fp=fopen("libr.dat","wb"))==NULL)

{printf("cannotopenthefile!

");exit(0);}

printf("1---number,2---sort\n");

printf("Pleaseselect1or2\n");

scanf("%d",&k);

if(k==1)

{for(i=0;i

for(j=0;j

if(lib[j].number>lib[j+1].number){t=lib[j];lib[j]=lib[j+1];lib[j+1]=t;}}

if(k==2)

{for(i=0;i

for(j=0;j

if(lib[j].sort

for(i=0;i

fwrite(&lib[i],sizeof(structlibrary),1,fp);

fclose(fp);}

 

8.修改

修改图书:

在管理系统中选择“morM”,选择1输入书名号,开始修改;选择2查看书名,开始修改。

modify()

{FILE*fp;

inti,k,dlh;

charsm[20];

if((fp=fopen("libr.dat","rb+"))==NULL)

{printf("cannotopenthefile!

");exit(0);}

n=0;

while(fread(&lib[n],sizeof(structlibrary),1,fp)==1)n++;

printf("1---number,2---name\n");

printf("Pleaseselect1or2\n");

scanf("%d",&k);

if(k==1)

{printf("Pleaseinputnumber:

\n");

scanf("%d",&dlh);

for(i=0;i

if(dlh==lib[i].number)

{printf("Pleaseinputnewdata:

\n");

scanf("%d%s%s%s%d",&lib[i].number,lib[i].name,lib[i].author,lib[i].sort,&lib[i].price);}

}

if(k==2)

{printf("Pleaseinputname:

\n");

scanf("%s",sm);

for(i=0;i

if(strcmp(sm,lib[i].name)==0)

{printf("Pleaseinputnewdata:

\n");

scanf("%d%s%s%s%d",&lib[i].number,lib[i].name,lib[i].author,lib[i].sort,&lib[i].price);}

}

rewind(fp);

for(i=0;i

fwrite(&lib[i],sizeof(structlibrary),1,fp);

fclose(fp);}

 

八、心得

设计过程的感受与体会

学了一学期C语言课,感觉到自己掌握的不多。

在课程设计中,需要更改一部分系统,刚开始的时候真的头都大了,发现以前自以为懂的,用起来却好象并不是那么一回事,只好一点一点的学习,一遍一遍的复习。

课程设计刚开始的时候,我真的感觉无从下手。

因为已经过去一个学期了,期间又没有怎么看书,考完试就放下了,许多知识都已经忘记。

不过因为专业原因,实训只有一周,老师也没有为难我们,发了一个样本,要求我们仿写,通过老师的讲解,发现并不是想象中那么难,20人为一大组,大组分4小组,分工明确,任务变少,换句话说,整个程序是与其他同学共同完成的。

一周时间过的很快,经过这一周的努力,自己对C语言的掌握多多少少比以前好一些,可以运用到实践中,渐渐脱离课本。

可是总感觉到不够用,因为在设计过程中遇到很多问题自己都不能独立解决。

所以,书还是要看的。

遇到的问题与解决方法

在设计过程中,由于对各种概念还不是很熟悉,不能随心运用,翻书是经常的事,最头疼的是对程序的理解。

并且,在运行中发现的错误通常不知道出错在哪,细节方面,自己掌握的还不足。

解决方法

有问题,第一时间看书,看不懂的请教同学,但有时候他们跟我说了半天我都还是很茫然,然后看同学的代码,看多了就有点感觉了。

我也会上网搜,通常都会有解决的方案,再不行的话就打算问老师,问老师是最后的办法,自己掌握的不够,我怕老师越讲我越愧疚,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 企业管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1