def AddBook(): openbook = open( "D:\python\\book.txt", 'a+' ,encoding="utf-8") input_bookName = str( input( "请输入新图书名:" ) ) input_class=str(input("请输入书的类别:")) input_public=str(input("请输入书的出版社:")) input_author = str( input( "请输入作者:" ) ) input_price=str(input("请输入书的价格:")) input_num=str(input("请输入书的数量:")) input_date=str(input("请输入书的购买日期:")) for book in books: if input_bookName == book['书名']: print( "图书已存在,添加失败." ) break else: bookID = str(int(book['书号']) + 1) openbook.write( str(bookID) + input_bookName + input_class + input_public + + input_author + str(input_price) + str(input_num) + str(input_date) ) print("图书添加成功") openbook.close()
时间: 2024-04-01 08:38:00 浏览: 60
这段代码是一个添加图书的函数,大致的流程如下:
1. 打开存储图书信息的文件 "D:\python\\book.txt"。
2. 通过输入,获取新图书的信息,包括书名、类别、出版社、作者、价格、数量和购买日期。
3. 遍历已有的图书信息,如果新图书的书名已经存在,输出提示信息并退出循环;否则,生成新图书的书号,将新图书信息写入文件,并输出添加成功的提示信息。
4. 关闭文件。
需要注意的是,这段代码存在以下问题:
1. 在读取已有的图书信息之前,没有将文件指针移到文件开头,容易出现读取不到数据的情况。可以在打开文件时加上 `openbook.seek(0)` 语句,将文件指针移到开头。
2. 在将新图书信息写入文件时,各个字段之间没有分隔符,导致写入的数据不易读取。可以在字段之间加上空格或其他分隔符。
3. 在写入新图书信息之前,没有对 `books` 变量进行初始化或者赋值操作,无法在遍历 `books` 变量时获取已有的图书信息。可以在函数开头添加 `books = []` 语句,表示 `books` 变量是一个空列表,然后通过读取文件中的数据,将已有的图书信息添加到 `books` 列表中。
相关问题
org.apache.jasper.JasperException: java.lang.ClassNotFoundException: org.apache.jsp.addbook_jsp
org.apache.jasper.JasperException: java.lang.ClassNotFoundException: org.apache.jsp.addbook_jsp是一个JSP编译错误,通常是由于缺少相关类或库文件引起的。这个错误可以通过以下几种方法来解决:
1.检查项目的类路径是否正确,确保所有的类和库文件都在正确的位置。
2.检查项目的构建路径是否正确,确保所有的类和库文件都被正确地编译和打包。
3.检查项目的部署路径是否正确,确保所有的类和库文件都被正确地部署到服务器上。
4.检查项目的JSP文件是否正确,确保所有的JSP文件都被正确地编写和部署。
以下是一个可能的解决方案:
```java
org.apache.jasper.JasperException: java.lang.ClassNotFoundException: org.apache.jsp.addbook_jsp
这个错误通常是由于缺少相关类或库文件引起的。可以尝试以下几种方法来解决:
1.检查项目的类路径是否正确,确保所有的类和库文件都在正确的位置。
2.检查项目的构建路径是否正确,确保所有的类和库文件都被正确地编译和打包。
3.检查项目的部署路径是否正确,确保所有的类和库文件都被正确地部署到服务器上。
4.检查项目的JSP文件是否正确,确保所有的JSP文件都被正确地编写和部署。
```
Book book = new Book(); book.setBook_ISBN("3456"); book.setBook_category("计算机科学"); book.setBook_name("java编程思想"); book.setBook_author("张三"); book.setPublish_house("机械工业出版社"); book.setPublish_time("2020-01"); book.setBook_price(65); book.setBook_sum(10); book.setBook_remain(2); book.setBook_introduce("无"); //调用addBook方法 BookDao bookDao = new BookDao(); bookDao.addBook(book); //验证是否成功插入一条数据 String sql = "select count(*) from Book where Book_ISBN=?"; Object [] params = {book.getBook_ISBN() }; boolean count = DBHelper.executeUpdate(sql,params); assertEquals(1,count);为什么assertEquals(1,count);会报错
可以根据错误提示信息来判断具体错误原因,如果没有错误提示信息,可以检查以下几个方面:
1. 是否正确引入了JUnit框架,在代码中是否正确导入了需要的类。
2. 在测试方法中是否正确创建了被测试的对象和使用了正确的测试数据。
3. 在测试方法中是否正确调用了被测试方法并获取了正确的返回值。
4. 在使用assertEquals方法时,参数顺序是否正确,期望值和实际值是否一致。
5. 是否存在数据库连接问题,需要检查数据库连接是否正常,以及SQL语句是否正确。
阅读全文