程序设计实践
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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");
}