...
...
一:系统功能
Write to a Text File
基本功能 :
将 数组中的全部 记录写入文 件 Records.txt 中,要 求格式 与
图书的录入,删除,查找,和导入导出等。
Dictory.txt 相同。
Quit (退出图书管理系统)
图书属性 :
书号,书名,第一作者,版次,出版年等。 新增加菜单功能:
Change a record
菜单功能 :
修改某一条记录的值
Input Records (输入若干条记录) a. Menu
从键盘一次输入一本书的信息,存放到结构体数组中,然后显示。 显示菜单
提示信息,确认是否输入下一条记录。 b. Clear Screen
Display All Records (显示所有记录)
清屏
按顺序显示所有记录,每屏显示 10 条记录,按 键继续显示
c. Pause
下一屏。 按暂停,按任意键继续
Delete a Record (按书名查找,删除一本书)
输入待删除书的书名,显示该书名的所有书目,提示输入待删除书
目的书号,提示是否删除,确认后,删除该书。
二 :数据结构
Sort (排序)
Typedef struct
以书名为升序排列数组 {
Insert a record (插入一条记录) char ISBN[10];// 书号
以书名为序排列的数组中插入一条记录,插入后,数组仍然有序。 char book[30];// 书名输出插入成功后的信息。 char author[20];// 作者
Query(查找并显示一个记录) Int edition;// 版本号
输入书名,查找并显示包含该书名的所有图书信息 char press[50];// 出版社名
Add Records from a Text File (从文件读入图书信息到结构体数 int year;// 出版年
组中) }Bookinfo;用户可事先建立一个文本文件 Dictory.txt 。存放所有图书信息,
文件格式如下:
2
1182 高等数学刘浩荣 5 同济大学出版社 2013
7300 物理化学王德明 2 化学工业出版社 2015
三:函数调用关系
Delete()
Delete_a_record()
Display()Input()
Sort_by_name()
AddfromText()main
Insert()
Insert_a_record()
Query_a_record() Write_to_Text()
Display_main_menu()Change_a_record()
Query()
四:主要算法及实现
插入算法
否
是 j>i+1
j=n 语句 A j-- n+1
否
是
是
i=0 i=0 i
b&&c
否
i++ 语句 B n+1
b=strcmp((*s).book,dictList[i].book)>=0
c=strcmp((*s).book,dictList[i+1].book)<=0
语句 A:dictList[j]=dictList[j-1];
语句 B:dictList[i+1]=*s;
排序算法
p=j
语句 A
否
否 是
是
是 p=i 是
开始 i0 j++ P!=i
i=0
j=i+1
i++ 结束
否 否
b=strcmp(dictList[p].book,dictList[j].book)
语句 A:t = dictList[p];
dictList[p] = dictList[i];
dictList[i] = t;
五:源程序(含注释)
printf("Please input year:\n");
scanf("%d",&dictList[n].year);
#include n+=1;
#include printf(" 是否输入下一条 ?确认(y)| 取消(n)\n");// 提示信息
#include c1=getchar();
#define NUM 100 }while((c2=getchar())=='y');
return(n); // 返回值为新的记录数量
typedef struct // 定义结构体数组 }
{
char ISBN[10]; // 书号 void Display(Bookinfo dictList[],int n) // 显示所有记录,每 10 个暂停一次,
char book[30]; // 书名
输入回车继续显示
char author[20]; // 作者 {
int edition; // 版本号 int i=0,j;
ch