六、模块分析
1. 添加模块
系统将提示用户输入新添加的图书的信息,插入在链表中 2. 删除模块
首先由用户输入图书的编号,然后由删除模块判断p->num和用户输入的编号是否相同,相同则从链表中删除。 3. 图书列表模块
传递一个头指针给print_book函数,若头指针不为空,则将整个链表的数据输出。 4. 图书排序模块
首先由用户判断由什么关键词进行排序,然后运行相应的运行模块。 5. 查询图书模块
系统将会把所有航班的信息显示出来。由用户输入图书的编号,判断是p->num和用户输入的编号是否相同,相同则输出。 6. 修改图书模块
按照编号检索,然后修改相应的内容。 7. 录入模块
用while循环批量录入图书信息。 0. 退出系统
七、比较有特色的函数
void num_paixu(struct book *head) { struct book *a[1000],*p,*p1,*temp; int i,k,index,n=0; char b; p1=head; for(p=head;p;p=p->next) n++; for(i=0;i
temp=a[index]; a[index]=a[k]; a[k]=temp; }
printf(\排序成功!\\n\ printf(\是否显示排序结果?(y/n)\\n\ scanf(\ getchar(); switch(b){ case 'n': break; case 'y': printf(\
================================================================\\n\ printf(\ ** 编号 图书名 作者名 出版社 类别 出版时间**\\n\ for(i=0;i ** %d %s %s %s %s %d **\\n\ } printf(\ ================================================================\\n\ break; default: printf(\您的输入有误!\\n\ break; } } 八、存在的不足与对策、编程体会。 排序的方式过于复杂,有待改进。 九、参考文献 百度文库 十、程序源代码 #include 价格 %.2f int time; float price; struct book *next;//定义文件头指针 }; struct book *creatbook(); //创建链表 struct book *addbook(struct book *head); //添加图书 int yanzheng(struct book *head,int m); //验证新添加的图书编码是否已存在 void deletebook(struct book *head); //删除图书 void fprint(struct book *head); //将链表写入文件 struct book *load(); //从文件中读取信息并建成链表 void print_book(struct book *head); //将链表信息输出 void chaxun(struct book *head); //查询图书信息 void num_chaxun(struct book *head); //按图书编号查询图书 void wname_chaxun(struct book *head); //按作者名查询图书 void sort_chaxun(struct book *head); //按类别查询图书 void time_chaxun(struct book *head); //按出版时间查询图书 void bname_chaxun(struct book *head); //按图书名查询图书 void xiugai(struct book *head); //修改图书信息 void paixu(struct book *head); //对图书进行排序 void num_paixu(struct book *head); //按图书编号排序 void time_paixu(struct book *head); //按图书出版时间排序 void price_paixu(struct book *head); //按图书价格排序 void bname_paixu(struct book *head); //按图书名排序 void wname_paixu(struct book *head); //按作者名排序 int main() { int choice,n,x,y=1,c,c1=1234; char a,d,b[10],b1[10]=\ struct book *head=NULL; while(y){ system(\ printf(\ printf(\ ********** 欢迎光临 **********\\n\\n\ printf(\ ********************** 图书信息管理系统 ************************\\n\\n\\n\ printf(\ printf(\ ============1-用户登录===========\\n\ printf(\ ============0-退出系统===========\\n\ printf(\ 请输入您的选择:\ scanf(\ printf(\ getchar(); switch(n){ case 0: y=0; break; case 1: printf(\ 请输入您的用户名:\ gets(b); printf(\ printf(\ 请输入您的密码:\ scanf(\ printf(\ if(strcmp(b,b1)!=0||c!=c1){ printf(\ 验证失败,请重新输入!\\n\ scanf(\ getchar(); system(\ } else{ printf(\ 验证通过!请按Enter键进入!\\n\ scanf(\ getchar(); x=1; while(x){ system(\ printf(\ ------------------\\n\ printf(\ *图书信息管理系统*\\n\ printf(\ ------------------\\n\\n\ printf(\ **********************************************\\n\\n\ printf(\ **********************************************\\n\\n\ printf(\ || 1-添加图书 ||\\n\\n\ printf(\ || 3-图书列表 ||\\n\\n\ printf(\ || 5-查询图书 ||\\n\\n\ printf(\ || 7-录入数据 ||\\n\\n\ printf(\ **********************************************\\n\\n\ printf(\ **********************************************\\n\\n\ printf(\请输入所选择的序号:\ 2-删除图书 4-图书排序 6-修改图书 0-退出系统 scanf(\ getchar(); system(\ switch(choice) { case 0: x=0;break; case 1: head=load(); if(head==NULL){ printf(\文件为空,请先录入数据!\\n\ getchar(); break; } else{ head=addbook(head); printf(\添加成功!\\n\ printf(\是否将新信息保存到文件?(y/n)\\n\ scanf(\ getchar(); switch(a){ case 'n': break; case 'y': fprint(head); printf(\保存成功!\\n\ getchar(); break; } break; } case 2: head=load(); if(head==NULL){ printf(\文件为空,请先录入数据!\\n\ getchar(); break; } else{ deletebook(head); getchar(); break;