C语言程序的设计实践课程报告文档格式.docx

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

C语言程序的设计实践课程报告文档格式.docx

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

C语言程序的设计实践课程报告文档格式.docx

一、提交材料应包括:

(1)系统源代码

(2)课程报告

二、整个设计过程具体要求

(1)需求分析要求学生对案例系统进行分析,设计出需要完成的功能,完善各个模块的调用关系;

(2)设计过程要求学生进一步明确各模块调用关系,进一步完善模块函数细节(函数名、参数、返回值等)

(3)实现过程要求学生养成良好的编码习惯、完成各个模块并进行测试,最终完成系统整体测试;

(4)总结阶段按照要求完成系统设计和实现报告,并进行总结、答辩。

成绩

评定

报告撰写情况(30分)

系统完成情况(30分)

答辩情况(40分)

总分

容20分

规程度5分

程序测试5分

基本功能20分

扩展功能10分

自述情况10分

答辩情况30分

成绩评定教师:

1.需求分析

经过大一上学期的理论学习,在基础实验的基础上,本学期我们继续开设了C语言程序设计实践课。

课程要求我们对已经学习的基础实验进行整合与衔接处理,并最终形成一个系统性质的规模较大的程序。

本次课程设计要求我们达到能独立完成一个图书管理系统,完成后要现的功能有对图书信息的录入、删除、修改,浏览(即输出),按某种方式查询(要求至少一种查询方式),按某种方式排序(要求至少一种排序方式)。

当然,我们可以根据自己的能力对系统进行完善性的拓展,例如自己加入简单的权限处理,统计功能,模糊查询等,甚至可以拓展为图书借阅系统。

通过整个程序的开发过程,最终使我们掌握利用计算机解决实际问题的基本方法,熟悉C语言开发的全过程,提高综合应用C语言的能力、编程和调试能力,为学习计算机后续课程打好专业基础。

2.概要设计

1.系统采用的是结构数组数据系统,用于实现图书信息的存放,修改,排序等功能。

用二进制文件保存已写入的信息。

2.模块划分:

1 voidAddNewbook图书信息录入系统

2 voidRprint图书信息浏览系统

3 voidQuerybook图书信息查询系统:

voidnumnode1-书籍编号查找.2-书名voidnamenode查找.3-voidwriter作者查找.4-voidpress查找.5-voidfuzzy模糊查找.

4 voidpaixu图书信息排序系统:

1-价格排序2-时间排序

5 Voidexiugai图书信息修改系统

6 Voidshanchu图书信息删除系统

7图书信息统计系统:

1-voidsorttongji书籍类别统计.2-voidkuno库存低于标准统计

3.程序框架

1 进行录入图书信息

2 录入后进行浏览系统

3 然后根据需要分别进行查询,排序,修改,删除,统计功能

3.详细设计:

1.定义图书结构:

typedefstructbook{

longnum;

//书的序号

charname[MAX];

//书名

chartime[MAX];

//出版时间

charwriter[MAX];

doubleprice;

charpress[MAX];

//

charsort[MAX];

intkucun;

//库存量

}book;

2.图书录入系统:

voidAddNewbook(FILE*fp){//*添加书籍

system("

cls"

);

inta;

if((fp=fopen("

图书信息.txt"

"

a+"

))==NULL){

printf("

不能打开图书信息管理系统!

\n"

exit(0);

}

booknewbook;

printf("

(-1代表结束)"

while(a!

=-1){

输入书籍编号:

"

scanf("

%ld"

&

newbook.num);

输入书名:

%s"

newbook.name);

输入出版时间:

newbook.time);

输入"

newbook.writer);

输入价格:

%lf"

newbook.price);

输入:

newbook.press);

输入书籍种类:

newbook.sort);

输入库存量:

%d"

newbook.kucun);

fwrite(&

newbook,size,1,fp);

a);

}

fclose(fp);

3.图书浏览系统

voidRprint(FILE*fp){//图书信息浏览

if((fp=fopen("

r+"

booklog;

书籍编号书名出版时间作者价格种类库存量\n"

while(!

feof(fp)){

fread(&

log,sizeof(book),1,fp);

%8ld%s%6s%10s%.2lf%s%s%d\n"

log.num,log.name,log.time,log.writer,log.price,log.press,log.sort,log.kucun);

4.图书查询系统

一.按编号查找

voidnumnode(FILE*fp){

r"

inti=0;

bookchaxun;

Enternum:

num);

fread(&

chaxun,size,1,fp);

if(num==chaxun.num){

%ld\t%s\t%s\t%s\t"

chaxun.num,chaxun.name,chaxun.time,chaxun.writer);

%.2lf\t%s\t%d\n"

chaxun.price,chaxun.sort,chaxun.kucun);

i=1;

if(i!

=1)

对不起,没有你想要查找的书籍。

二.按书名查找

voidnamenode(FILE*fp){

Entername:

name);

if(strcmp(name,chaxun.name)==0){

printf("

%ld\t%s\t%s\t%s\t%.2lf\t%s\t%d\n"

chaxun.num,chaxun.name,chaxun.time,chaxun.writer,

chaxun.price,chaxun.sort,chaxun.kucun);

i=1;

}

三.按作者名查找

voidwriternode(FILE*fp){

Enterwriter:

writer);

if(strcmp(writer,chaxun.writer)==0){

四.按查找

voidpressnode(FILE*fp){

Enterpress:

press);

if(strcmp(press,chaxun.press)==0){

i=1;

五.模糊查询

voidfuzzy(FILE*fp){

intk=0;

charzifu[MAX];

输入关键字:

getchar();

inti,j;

for(i=0;

(zifu[i]=getchar())!

='

\n'

;

i++);

zifu[i]='

\0'

for(i=0;

zifu[i]!

i++)

for(j=0;

chaxun.writer[j]!

j++)

if(zifu[i]==chaxun.writer[j]){

printf("

chaxun.num,chaxun.name,chaxun.time,chaxun.writer,

chaxun.price,chaxun.sort,chaxun.kucun);

k=1;

}

if(k!

4.排序功能

一按价钱排序

voidprice(FILE*fp){

intn;

inti=1,j;

n=tongji(fp);

bookt;

bookpaixu[MAX];

paixu[i],size,1,fp);

i++;

for(i=1;

i<

n;

for(j=1;

j<

n-i;

if(paixu[j].price>

paixu[j+1].price){

t=paixu[j];

paixu[j]=paixu[j+1];

paixu[j+1]=t;

paixu[i].num,paixu[i].name,paixu[i].time,paixu[i].writer,

paixu[i].price,paixu[i].sort,paixu[i].kucun);

二.按时间排序

voidtime(FILE*fp){

bookpaixu[MAX],t;

=n;

=n-i;

if(strcmp(paixu[j].time,paixu[j+1].time)>

0){

paixu[i].num,paixu[i].name,paixu[i].time,

paixu[i].writer,paixu[i].price,paixu[i].sort,paixu[i].kucun);

三.排序选择

voidpaixu(FILE*fp){

intchoice=-1;

1-价格排序\n2-时间排序\n"

choice);

switch(choice){

case1:

price(fp);

break;

case2:

time(fp);

default:

printf("

error\n"

}}

5.修改功能

voidbookxiugai(FILE*fp){

FILE*t;

intn=0;

if((t=fopen("

intchoice;

bookxiugai;

bookduqu;

输入要修改书的编号:

feof(t)){

duqu,size,1,t);

if(num==duqu.num){

请输入修改后的书籍信息:

请输入书籍编号:

scanf("

xiugai.num);

请输入书名:

xiugai.name);

请输入"

xiugai.writer);

请输入出版时间:

xiugai.time);

请输入价格:

xiugai.price);

请输入:

xiugai.press);

请输入书籍种类:

xiugai.sort);

请输入库存量:

xiugai.kucun);

n=i;

}}

fseek(t,(n-1)*size,0);

1-确认修改。

\n其他数字-取消修改。

if(choice==1){

fwrite(&

xiugai,size,1,t);

printf("

修改成功!

6.删除功能

voidbookshanchu(FILE*fp){

inti=1,n;

bookduqu[MAX];

duqu[i],size,1,fp);

i++;

if((t=fopen("

w"

i++){

if(num!

=duqu[i].num){

fwrite(&

duqu[i],size,1,t);

fclose(t);

7.。

统计功能

一.按类别统计

voidsorttongji(FILE*fp){

booksor;

请输入书籍类别:

sort);

sor,size,1,fp);

if(strcmp(sort,sor.sort)==0)

i++;

本类别的书籍种类有%d\n"

i);

二.按库存标准统计

voidkuno(FILE*fp){

bookkcun;

请输入标准库存量:

n);

kcun,size,1,fp);

if(n>

kcun.kucun)

kcun.num,kcun.name,kcun.time,

kcun.writer,kcun.price,kcun.sort,kcun.kucun);

三.统计选择函数

voidtongjixinxi(FILE*fp){

1-书籍类别统计.\n2-库存低于标准统计.\n"

case1:

sorttongji(fp);

case2:

kuno(fp);

default:

4.调试分析:

问题一界面不美观,进入一次系统只能进行一项操作的问题

解决方法通过将主菜单与清屏函数(system(“cls”))一起,在每次进行完一次具体操作后都能出现printf("

Enteryourchoice:

问题二:

浏览图书信息时编号等文字与下面的图书信息不对应

解决办法:

文字与文字间的间隔与字符字符间的间隔一致

问题三:

一些小错误比如单词前后拼写错误

反复调试修改

问题四:

在查询中由于回车符释放过多使信息录入异常

去掉多余的getchar()

问题五:

输入时无法结束输

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

当前位置:首页 > 成人教育 > 远程网络教育

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

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