巨大bug
//数据结构关于课程设计--------图书馆管理系统的设计
#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的更多相关文章
- Tomcat一个BUG造成CLOSE_WAIT
之前应该提过,我们线上架构整体重新架设了,应用层面使用的是Spring Boot,前段日子因为一些第三方的原因,略有些匆忙的提前开始线上的内测了.然后运维发现了个问题,服务器的HTTPS端口有大量的C ...
- a标签点击跳转失效--IE6、7的奇葩bug
一般运用a标签包含img去实现点击图片跳转的功能,这是前端经常要用到的东西. 今天遇到个神奇的bug:如果在img上再包裹一层div,而且div设置了width和height,则图片区域点击时,无任何 ...
- 关于 Chrome 浏览器中 onresize 事件的 Bug
我在写插件时用到了 onresize 事件,在反复地测试后发现该事件在 Chrome 及 Opera(内核基本与 Chrome 相同,以下统称 Chrome)浏览器打开时就会执行,这种情况也许不能算作 ...
- Chrome出了个小bug:论如何在Chrome下劫持原生只读对象
Chrome出了个小bug:论如何在Chrome下劫持原生只读对象 概述 众所周知,虽然JavaScript是个很灵活的语言,浏览器里很多原生的方法都可以随意覆盖或者重写,比如alert.但是为了保证 ...
- 一个粗心的Bug,JSON格式不规范导致AJAX错误
一.事件回放 今天工作时碰到了一个奇怪的问题,这个问题很早很早以前也碰到过,不过没想到过这么久了竟然又栽在这里. 当时正在联调一个项目,由于后端没有提供数据接口,于是我直接本地建立了一个 json ...
- 了不起的 nodejs-TwitterWeb 案例 bug 解决
了不起的nodejs算是一本不错的入门书,不过书中个别案例存在bug,按照书中源码无法做出和书中相同效果,原本兴奋的心情掺杂着些许失落. 现在我们看一下第七章HTTP,一个Twitter Web客户端 ...
- 应该是Angular2的一个bug?
为了应对未来的趋势,及时赶上下一趟互联网技术,我最近也在通过具体项目研究angular2,首先必须要吐槽的是,学习angular2的成本本身不高,但是一堆的工具.配置实在让人 很是焦灼,就像asp.n ...
- 记录一次bug解决过程:数据迁移
一 总结 不擅长语言表达,勤于沟通,多锻炼 调试MyBatis中SQL语法:foreach 问题:缺少关键字VALUES.很遗憾:它的错误报的让人找不着北. 二 BUG描述:MyBatis中批量插入数 ...
- 关于MJRefresh的下拉加载数据bug
当没有更多数据的时候显示NoMoreData 我的理解是先结束刷新再显示没有更多 今天之前一直没发现有问题 贴之前的代码 [self.collectionView reloadData]; [self ...
- [异常特工]android常见bug跟踪
前言 对app的线上bug的收集(友盟.云捕等)有时会得到这样的异常堆栈信息:没有一行代码是有关自身程序代码的.这使得对bug的解决无从下手,根据经验,内存不足OOM,Dialog关闭,ListVie ...
随机推荐
- sql 了解
char,varchar,nvarchar区别 类型 长度 使用说明 长度说明 char(n) 固定长度 索引效率高 程序里面使用trim去除多余的空白 n 必须是一个介于 1 和 8,000 之间 ...
- ORACLE的分组统计之ROLLUP(一)
Oracle 9i以后,扩展了group by 的功能,能够满足大部分多维数据的分析统计功能,主要表现: 1. rollup,cube,grouping sets 扩展group by字句提供了丰富的 ...
- php 图片调整大小 封装类【转载】
<?php class ImageResize { private $image; private $img_des; private $image_type; private $permiss ...
- 【学习笔记】【C语言】变量的内存分析
计算机中的内存是以字节为单位的存储空间.内存的每一个字节都有一个唯一的编号,这个编号就称为地址.就好像酒店是以房间为单位的,每个房间都有一个唯一的房号,我们根据房号就能找到对应的房间. 1. 变量的存 ...
- 学习笔记:JavaScript传参方式———ECMAScript中所有函数的参数都是按值传递
我们把命名参数(arguments)视为局部变量,在向参数传递基本类型值时,如同基本类型变量的复制一样,传递一个副本,参数在函数内部的改变不会影响外部的基本类型值.如: function add10( ...
- bzoj2395[Balkan 2011]Timeismoney最小乘积生成树
所谓最小乘积生成树,即对于一个无向连通图的每一条边均有两个权值xi,yi,在图中找一颗生成树,使得Σxi*Σyi取最小值. 直接处理问题较为棘手,但每条边的权值可以描述为一个二元组(xi,yi),这也 ...
- 【转】理解依赖注入(IOC)和学习Unity
IOC:英文全称:Inversion of Control,中文名称:控制反转,它还有个名字叫依赖注入(Dependency Injection).作用:将各层的对象以松耦合的方式组织在一起,解耦,各 ...
- 在Windows Phone中使用HTML编程
在开发Windows Phone的项目中,需求中有几个页面是要用表格来布局的(效果图如下),由于Grid中有的边线是虚的,而且没有边线,果断放弃了,用了border将表格的线加上去了.于是在有表格布局 ...
- ADO.NET笔记——调用存储过程
相关知识: 在ADO.NET访问SQL Server时,鼓励使用存储过程取代常规的SQL语句. 存储过程有下列优点: 存储过程中的SQL语句将会经过预先的解析和编译,然后存放在数据库服务器上行.调用的 ...
- NaN属性,isNaN函数
NaN:Not a Number,顾名思义,表示不是一个数字. 可以把 Number 对象设置为该值,来指示其不是数字值. 使用 isNaN() 全局函数来判断一个值是否是 NaN 值 详见 Java ...