找考题网-背景图
问答题

【说明】
流程图描述了某高校图书订购与编目系统的处理流程。全校的图书典藏在校图书馆和各系的资料室中。学校每年分若干批向出版单位订购图书,同一批订购的图书将陆续邮寄到学校。出版单位在寄出图书的同时附上到书清单和发票,发票上仅给出一份到书清单中书的总册数和总金额。学校收到图书和发票后,先参照订购单验收,然后进行编目,并把有关信息存放在书种文件、书名文件、作者文件和复本文件中,以供读者检索。
书种文件记录了每种书的有关信息。所谓一种书是指同一作者、同一书名、同一出版单位和同一出版年份出版的书。例如,2004年张明在科技出版社出版了《软件工程》(印数8000册)和《数据库基础》(印数5000册),则张明在2004年出版了两种书。在全校的藏书中,如果一种书只有一册,则该书的信息存放在书种文件中:如果一种书有多册,则其中一册书的信息存放在书种文件中,其余的书作为复本将信息存放在复本文件中。复本文件的结构与书种文件的结构相同,每种书都有一个书号,书号唯一地标识了一种书。在书库中,每册书有一个登录号,登录号唯一地标识了一册书。此外,为了图书检索的方便,将图书按学科分类,分类号用来标识不同的学科领域。
各类单据和文件的结构如下所示。
订购单:订购批号、书名、作者名、出版单位、出版年份、单价、订购册数、订购部门代码、订购日期。
到书清单:订购批号、书名、作者名、出版单位、出版年份、单价、册数。
发票:订购批号、发票号、总册数、总金额。
书种文件:分类号、登录号、书名代码、作者代码、出版单位、出版年份、单价、复本标志、典藏部门代码、借出标志。
其中,复本标志用来指示该种书在书库中有没有复本:对于书名相同的若干种书,书名代码是相同的。
书名文件:书名代码、书名。
作者文件:作者代码、作者名。

【参考答案】

[问题1]
书名、作者名、出版单位、出版年份、单价、册数、订购部门代码(或典藏部门代码)。
[问题2]
在到书清单中增加“发票号”。
[问题3]
书号、登录号、典藏部门代码、借出标志。
热门试题

问答题【说明】本程序从正文文件text.in中读入一篇英文短文,统计该短文中不同单词及出现次数,并按词典编辑顺序将单词及出现次数输出到正文文件word.out中。 程序用一棵有序二叉树存储这些单词及其出现的次数,边读入边建立,然后中序遍历该二叉树,将遍历经过的二叉树上的结点的内容输出。 #include <stdio.h> #include <malloc.h> #include <ctype.h> #include <string.h> #define INF text.in #define OUTF wotd.out typedef struct treenode char *word; int count; struct treenode *left,*right; BNODE int getword (FILE *fpt,char *word) char c; c=fgetc (fpt); if ( c=EOF) return 0; while(!(tolower(c)>=’a’ && tolower(c)<=’z’)) c=fgetc (fpt); if ( c==EOF) return 0; *跳过单词间的所有非字母字符* while (tolower (c)>=’a’ && tolower (c)<=’z’) *word++=c; c=fgetc (fpt); *word=’ 0’; return 1; void binary_tree(BNODE **t,char *word) BNODE *ptr,*p;int compres; P=NULL; (1) ; while (ptr) *寻找插入位置* compres=strcmp (word, (2) ); *保存当前比较结果* if (!compres) (3) ;return; else (4) ; ptr=compres>0 ptr->right:ptr->left; ptr= (BNODE*) malloc (sizeof (BNODE)) ; ptr->left = ptr->right = NULL; ptr->word= (char*) malloc (strlen (word) +1) ; strcpy (ptr->word, word); ptr->count - 1; if (p==NULL) (5) ; else if (compres > 0) p->right = ptr; else p->left = ptr; void midorder (FILE **fpt, BNODE *t) if (t==NULL) return; midorder (fpt, t->left); fprintf (fpt, %s %d n , t->word, t->count) midorder (fpt, t->right); void main() FILE *fpt; char word[40]; BNODE *root=NULL; if ((fpt=fopen (INF, r )) ==NULL) printf ( Can’t open file %s n , INF ) return; while (getword (fpt, word) ==1 ) binary_tree (&root, word ); fclose (fpt); fpt = fopen (OUTF, w ); if (fpt==NULL) printf ( Can’t open file %s n , OUTF) return; midorder (fpt, root); fclose(fpt);