程序设计实践

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

程序设计实践-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN

苏州科技学院

二○一四~二○一五学年第二学期电子与信息工程学院课程设计报告书

课程名称:

班级:

学号:

姓名:

指导教师:

二○一五年三月

1.题目

小型图书信息管理系统

2.功能

1、信息录入,包括记录的追加和插入;

2、信息删除;

3、信息修改;

4、信息排序和查询;

5、信息的保存和装载;

6、简单的帮助。

3.要求

(1)整个系统均用C语言实现;

(2)利用指针、链表来实现图书馆的数据结构设计;

(3)系统具有输入、显示、查询、删除、排序、插入,保存、读取基本功能;

(4)系统的各个功能模块都用函数的形式来实现;

(5)可以将图书信息保存在文件中。

(6)可以将图书信息从文件中读取出来。

4.设计内容

整个系统除了主函数外,另外还有6个函数,实现八大功能:输入功能,查找功能,插入功能,保存功能,删除功能,读取功能。各个函数的详细设计说明分别如下:

主函数 main()

利用无限次循环for(;;)实现各函数的调用,系统根据输入的数字选项来调用相应的函数。

初始化函数 book *create()

这是一个无参函数,它的作用是使链表初始化,使head的值为NULL。

输入函数 Insert(book *head)

这是一个无参函数,用来执行图书信息的输入。

算法:先声明一个首节点head,并将head->next设为NULL。每输入一个数据就声明一个新节点p,把p->next设为NULL,并且链接到之前列表的尾端。

N-S

修改函数 change(book *head)

用于修改图书信息。

算法:输入需修改图书的书名,判断是否有本书,若有,再进行修改。

N-S

显示记录函数 void Print(book *head)

这是一个不返回值的有参函数,将记录的输出。

算法:先将p结点的指针指向第一个结点,将p结点的数据输出,再将p结点的指针指向下一结点,将下一结点的数据输出。重复执行此步聚直到p指针指向NULL为止。

N-S

查找记录函数 void search(book *head)

这是一个不返回值的有参函数,形参为“链表头的指针”,实现按书名对某书进行查找,并显示所查找到的记录。

算法:采用线性查找法往下一个节点查找。输入所要查找的图书的名称,设一个指针变量p,先指向第一个结点,当strcmp(p->name,name1) && p != NULL 时,使p后移一个结点,如果p!=NULL,输出p所指的结点。

N-S

删除记录函数 Delete(book *head)

这是一个有参函数,形参为“链表头的指针”,先输入要删除的图书的名称,找到后进行删除。

算法:从p指向的第一个结点开始,检查该结点中的bookname是否等于输入的要求删除的那个书名。如果相等就将该结点删除,如不相等,就将p后移一个结点,再如此进行下去,直到遇到表尾为止。

N-S

5.调试分析

在编写完程序后,点击编译,显示是1个错误。但是往上看的时候,却是很多。

改的时候发现有些是句子写错了,然后再看看书,上网查下,就改好了。还有2处是打错字母了……

最后0 error(s), 0 warning(s)。但是在信息录入的时候,输入到pubtime后出错,程序停止运行,仔细看了程序,才发现在输入pubtime和price时,句子中&忘记打了……后面程序中也有几处关于&的问题,还有是%d与%f写错了。

能输入信息后,在浏览和查询时,输出的信息和上面对应的项目不对应,还有一些是地址。然后输入数据,多次更改后,把数据对应了起来。

6.总结

通过这个作业,我又对链表,指针等有了一些了解,能更好的运用。还上网查了一些资料,对这门课有了加强。当编写完这个程序,并成功运行起来,我感觉到有一种成就感,我觉得这种感觉对学习是很有帮助的,能帮我在学习中找到乐趣。

程序如下

#include<>

#include<>

#include<>

struct book

{

char author[25];

char bookname[25];

char publisher[25];

int pubtime;

int innum;

float price;

struct book *next;

};

struct book *create()

{

struct book *head;

head=(struct book *)malloc(sizeof(struct book));

head->next=NULL;

return head;

}

void Save(struct book *head)

{

struct book *p;

FILE *fp;

p=head;

if((fp=fopen("","w+"))==NULL)

{

printf("can not open this file\n");

exit(0);

}

fprintf(fp," innum bookname author publisher pubtime price \n");

while(p->next!=NULL)

{

p=p->next;

fprintf(fp,"%-6d%-10s%-10s%-10s%-10d%-8f",p->innum,p-

>bookname,p->author,p->publisher,p->pubtime,p->price);

fclose(fp);

printf(" 信息已保存! \n");

}

}

void Insert(struct book *head)

{

struct book *s,*p;

p=head;

while(p->next!=NULL)

{

p=p->next;

}

s=(struct book *)malloc(sizeof(struct book));

printf("input the innum :\n");

scanf("%d",&s->innum);

printf("input the bookname :\n");

scanf("%s",s->bookname);

printf("input the author name :\n");

scanf("%s",s->author);

printf("input the publisher :\n");

scanf("%s",s->publisher);

printf("input the pubtime :\n");

scanf("%d",&s->pubtime);

printf("input the price :\n");

scanf("%f",&s->price);

printf("\n");

p->next=s;

p=s;

s->next=NULL;

printf(" INSERT SUCCESS !\n");

}

相关文档
最新文档