//数据结构关于课程设计--------图书馆管理系统的设计
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#define _OJ_ typedef struct Book
{
char title[30];
//ISBN编号书籍的标准编号
char ISBN[30]; char author[30]; //作者 char publisher[30]; //出版社 char pub_time[30]; //出版时间 char price[10]; //书的价格 int count; //书的数量 struct Book *next; } Book, *Linkbook; typedef struct Student
{ int amount; //学生已借书的数量 char stu_num[8]; //学生的学号 char name[20]; //学生的姓名 char card_num[8]; //借书证的编号 Linkbook stu_book[6]; //学生所借图书信息 struct Student *next;
} Stu, *Linkstu; //判断输入的字符是否正确
void
input_str(const char *str, char *str1, int number)
{
char tmp[200];
printf("%s", str);
do {
scanf("%s", tmp);
if(strlen(tmp) > number) {
printf("您输入的信息错误请重新输入:\n");
} } while(strlen(tmp) > number);
strcpy(str1, tmp);
} // 判断输入的整型数字是否正确
int
input_float(const char *str, char *str1, int number)
{
int i, len, flag;
char num[200];
printf("%s", str);
for ( ; ;) {
flag = 0;
scanf("%s", num);
len = strlen(num);
if(len > number) {
printf("\n您输入的信息错误请重新输入:");
continue;
} for (i = 0; i < len; i++) {
if((num[i] < '0' || num[i] > '9') && num[i] != '.') {
printf("\n您输入的不是浮点数字请重新输入:");
flag = 1; break;
}
} if(flag == 1) continue;
else
break;
}
strcpy(str1, num); return 1;
} //------------------------------------- 判断输入的浮点型是否正确
int
input_int(const char *str, int number)
{
int i, len, flag;
char num[200];
printf("%s", str);
for ( ; ;) {
flag = 0;
scanf("%s", num);
len = strlen(num);
if(len > number) {
printf("\n您输入的数字超限请重新输入:");
continue;
} for (i = 0; i < len; i++) {
if((num[i] < '0' || num[i] > '9')) {
printf("\n您输入的非数字或不是整型数字请重新输入:");
flag = 1; break;
}
} if(flag == 1) continue;
else
break;
}
int n = atoi(num);
return n;
} //-----------------------------------------------判断输入的ISBN是否正确
void
input_ISBN(const char *str, char *str1) //International Standard Book Number
{
int i, flag;
char tmp[200]; //x-xxx-xxxxx-x
printf("%s", str);
for(;;) {
flag = 0;
scanf("%s", tmp);
if(strlen(tmp) != 13 || tmp[1] != '-' || tmp[5] != '-' || tmp[11] != '-') {
printf("您输入的格式错误请重新输入格式为:x-xxx-xxxxx-x\n");
continue;
} for( i = 0; i < strlen(tmp); i++) {
if((tmp[i] < '0' || tmp[i] > '9') && tmp[i] != '-'){
printf("您输入的含非数字请重新输入格式为:x-xxx-xxxxx-x");
flag = 1; continue;
}
}
if(flag == 1) continue;
else
break;
} strcpy(str1, tmp);
} //-----------------------------------------------------------------------------
//书籍收编入库
Linkbook
Creat_book(void)
{
char ch;
Linkbook L, head, P;
head = (Linkbook) malloc (sizeof(Book));
if(!head) {
printf("申请空间失败!!!\n"); exit(0);
}
L = head;
printf("创建图书:\n"); for (;;) {
P = (Linkbook) malloc (sizeof(Book)); P->next = NULL;
input_str("请输图书名称:", P->title, 30); input_str("请输入图书的作者:", P->author, 30);
input_str("请输入图书的出版社:", P->publisher, 30);
input_str("请输入图书的出版时间:", P->pub_time, 30);
input_float("请输入图书的价格:", P->price, 10);
P->count = input_int("请输入图书的数量:",5); input_ISBN("请输入图书的ISBN格式为:x-xxx-xxxxx-x:\n", P->ISBN);
L->next = P; L = P; printf("请按任意键继续添加图书 或者输入q返回:");
ch = getche();
if (ch == 'q' || ch == 'Q')
break;
}
printf("\n");
return head;
} void
print_book(Linkbook head)
{
Linkbook L;
L = head->next;
printf("打印所有图书信息:");
while (L != NULL) {
printf("图书名称:%s\n", L->title);
printf("图书作者:%s\n", L->author);
printf("图书出版社:%s\n", L->publisher);
printf("图书出版时间:%s\n", L->pub_time);
printf("图书价格:%s\n", L->price);
printf("图书的ISBN:%s\n", L->ISBN);
printf("图书数量:%d\n\n\n", L->count);
L = L->next;
}
printf("打印完成!!\n");
} //-------------------------------------------------------------- int main(int argc, char const *argv[]) {
#ifndef _OJ_ //ONLINE JUDGE
freopen("input.txt", "r", stdin);
//freopen("output.txt", "w", stdout);
#endif
Linkbook Book = NULL;
Linkstu Stu = NULL;
Book = Creat_book();
printf("booknext%s", Book->next->title); print_book(Book); return 0;
}

巨大bug的更多相关文章

  1. Tomcat一个BUG造成CLOSE_WAIT

    之前应该提过,我们线上架构整体重新架设了,应用层面使用的是Spring Boot,前段日子因为一些第三方的原因,略有些匆忙的提前开始线上的内测了.然后运维发现了个问题,服务器的HTTPS端口有大量的C ...

  2. a标签点击跳转失效--IE6、7的奇葩bug

    一般运用a标签包含img去实现点击图片跳转的功能,这是前端经常要用到的东西. 今天遇到个神奇的bug:如果在img上再包裹一层div,而且div设置了width和height,则图片区域点击时,无任何 ...

  3. 关于 Chrome 浏览器中 onresize 事件的 Bug

    我在写插件时用到了 onresize 事件,在反复地测试后发现该事件在 Chrome 及 Opera(内核基本与 Chrome 相同,以下统称 Chrome)浏览器打开时就会执行,这种情况也许不能算作 ...

  4. Chrome出了个小bug:论如何在Chrome下劫持原生只读对象

    Chrome出了个小bug:论如何在Chrome下劫持原生只读对象 概述 众所周知,虽然JavaScript是个很灵活的语言,浏览器里很多原生的方法都可以随意覆盖或者重写,比如alert.但是为了保证 ...

  5. 一个粗心的Bug,JSON格式不规范导致AJAX错误

    一.事件回放  今天工作时碰到了一个奇怪的问题,这个问题很早很早以前也碰到过,不过没想到过这么久了竟然又栽在这里. 当时正在联调一个项目,由于后端没有提供数据接口,于是我直接本地建立了一个 json ...

  6. 了不起的 nodejs-TwitterWeb 案例 bug 解决

    了不起的nodejs算是一本不错的入门书,不过书中个别案例存在bug,按照书中源码无法做出和书中相同效果,原本兴奋的心情掺杂着些许失落. 现在我们看一下第七章HTTP,一个Twitter Web客户端 ...

  7. 应该是Angular2的一个bug?

    为了应对未来的趋势,及时赶上下一趟互联网技术,我最近也在通过具体项目研究angular2,首先必须要吐槽的是,学习angular2的成本本身不高,但是一堆的工具.配置实在让人 很是焦灼,就像asp.n ...

  8. 记录一次bug解决过程:数据迁移

    一 总结 不擅长语言表达,勤于沟通,多锻炼 调试MyBatis中SQL语法:foreach 问题:缺少关键字VALUES.很遗憾:它的错误报的让人找不着北. 二 BUG描述:MyBatis中批量插入数 ...

  9. 关于MJRefresh的下拉加载数据bug

    当没有更多数据的时候显示NoMoreData 我的理解是先结束刷新再显示没有更多 今天之前一直没发现有问题 贴之前的代码 [self.collectionView reloadData]; [self ...

  10. [异常特工]android常见bug跟踪

    前言 对app的线上bug的收集(友盟.云捕等)有时会得到这样的异常堆栈信息:没有一行代码是有关自身程序代码的.这使得对bug的解决无从下手,根据经验,内存不足OOM,Dialog关闭,ListVie ...

随机推荐

  1. Part 13 Cast and Convert functions in SQL Server

    Part 28 Cast and Convert functions in SQL Server

  2. Android之画廊点击内容显示

    package com.example.Gallery; import com.example.Gallery.R; import android.os.Bundle; import android. ...

  3. 我的博客模板(线框图wireframe)

    不久前看到一篇介绍定制网页浏览的方法,当时就想着,我把我的博客页也修改下,在手机浏览的时候,也能漂亮的显示出来.以后写的文章的话,也可以分享的微信朋友圈里面和朋友分享. 具体步骤参考:http://w ...

  4. JAVA JDBC 元数据分析小结

    纯干货: 获取数据库名称: /** * 获取数据库的名称 */ public void getDataBaseName() throws Exception { Connection con = DS ...

  5. 20150410---GridView分页(备忘)

    GridView自带分页功能,但是模板单一,试用较少数据. AllowPaging="true" PageSize="10" 启用分页设置.默认每页数量为10 ...

  6. AMQ学习笔记 - 19. 问题解决 - 控制Atomikos的日志输出

    概述 在使用Atomikos为ActiveMQ提供JTA支持时,Atomikos在控制台打印了繁琐的日志.这里介绍如何控制Atomikos日志输出的粒度. 解决方案 基于以下三个事实: Atomiko ...

  7. fread 和 fwrite 函数用法示例以及注意事项

    1.函数功能   用来读写一个数据块. 2.一般调用形式   fread(buffer,size,count,fp);   fwrite(buffer,size,count,fp); 3.说明   ( ...

  8. Makefile 基本知识

    Technorati 标签: Makefile 基本知识   最常见的书写方式: CC = gcc LD = ld STRIP = strip CFLAGS := -Os -static -DEZ_O ...

  9. linux系统启动流程

    BIOS: (Basic Input Output System)基本输入输出系统,一般保存在主板上的BIOS芯片中 BIOS是计算机启动时运行的第一个程序,负责检查硬件并且查找可启动设备. 可启动设 ...

  10. (一)熟悉执行流程——基于ThinkPHP3.2的内容管理框架OneThink学习

    ThinkPHP作为国内具有代表性的PHP框架,经过多年的发展,受到越来越多公司与开发者的青睐.我也在忙里偷闲中抽出部分时间,来学习这个优秀的框架.在开始学习这个框架时,最好通过实例来学习,更容易结合 ...