//数据结构关于课程设计--------图书馆管理系统的设计
#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. Linq 数据库操作(增删改查)

    Linq数据库增删改查 Linq是一种查询语言,集成包含在formwork中,包含在C#语言中,它的作用是降低查询的门槛,提高开发效率,是我们必须掌握的技术之一,下面是我自己对linq数据库操作的方法 ...

  2. jQuery 删除或是清空某个HTML元素示例

    jQuery使用下面两个方法来删除或是清空某个HTML元素. remove() – 删除指定的元素(包括其子元素)empty() – 清空指定元素的子元素 1.remove()  <!DOCTY ...

  3. C#反射技术的简单操作(读取和设置类的属性)

    public class A { public int Property1 { get; set; } } static void Main(){ A aa = new A(); Type type ...

  4. Ubuntu上OpenStack DashBoard主题修改的方案

    最近终于把OpenStack的整个初步环境安装部署并配置成功,后续工作就是安装一些可选项了,如Cinder.Swift部件了.我们的整个项目采用的颜色方案主要为清淡色系,蓝色为主,可OpenStack ...

  5. ESB数据发布思路

    通过esb已经将数据采集进数据库,现在需要开放一个接口,接受请求参数,进而通过参数进行数据查询,返回一段json格式的数据. ▼流程图: 刚开始尝试了很多个版本,可能是esb开发工具还用不熟练的原因吧 ...

  6. 使用zookeeper实现分布式master选举(c 接口版本)

    zookeeper,已经被很多人所熟知,主要应用场景有(数据订阅/发布 ,负载均衡, 命名服务, 分布式协调/通知,集群管理,Master选举,分布式锁,分布式队列). C接口的描述  主要参考 Ha ...

  7. request.getSession();为什么不用response儿用request!

    首先回答为什么分别是response和request这两个内置对象.你得先明白你通过获取对象是做什么用的,是往哪用的.第一个PrintWriter out=response.getWriter()是想 ...

  8. js设计模式(4)---组合模式

    0.前言 今天是建党节,新疆那边又开始了闹腾.作为立志成为码农的我,现在已经从一个大愤青淡化为一个小愤青,对这些国家民生大事不在血气喷发,转而把经历发泄在技术问题上面,因而在扯一篇随笔吧,把无处发泄的 ...

  9. 联想预装win8系统改成win7操作步骤及注意事项

    联想消费台式机与一体机预装Windows8改装Windows7的操作步骤及常见问题 前提说明: 目前联想出厂预装Windows 8的台式和一体机使用都是UEFI+GPT硬盘的组合,并且开启了安全启动, ...

  10. UINavigationController 与 UITabBarController

    http://www.cnblogs.com/YouXianMing/p/3756904.html // index start from 1. UITabBarItem *newsItem = [[ ...