音像店管理程序 C++课程设计
- 格式:doc
- 大小:342.50 KB
- 文档页数:23
c语言书店管理系统课程设计一、课程目标知识目标:1. 掌握C语言基础语法,如变量定义、数据类型、运算符、控制结构等;2. 学会使用数组、字符串、结构体等C语言高级特性;3. 理解并掌握文件操作在C语言中的应用;4. 了解书店管理系统的需求分析、功能模块划分及实现。
技能目标:1. 能够运用C语言编写简单的书店管理系统程序;2. 学会分析问题,运用所学知识解决问题;3. 掌握编程规范,养成良好的编程习惯;4. 提高团队协作能力,通过小组合作完成课程设计。
情感态度价值观目标:1. 培养学生对计算机编程的兴趣和热情;2. 培养学生的创新意识,鼓励他们勇于尝试新方法解决问题;3. 增强学生的责任感,让他们明白编程在生活中的应用和价值;4. 培养学生面对困难时的坚持和毅力,学会克服挫折。
课程性质:本课程为实践性课程,旨在培养学生的编程能力、分析问题和解决问题的能力。
学生特点:学生已经掌握了C语言的基础知识,具备一定的编程能力,但实际应用经验较少。
教学要求:结合实际应用,引导学生运用所学知识完成书店管理系统的设计与实现,注重培养学生的实践能力和团队协作能力。
通过本课程的学习,使学生能够将所学知识运用到实际项目中,提高编程水平。
二、教学内容1. C语言基础回顾:变量定义、数据类型、运算符、控制结构(选择、循环);2. 数组、字符串、结构体等高级特性及应用;3. 文件操作:文件的打开、读取、写入和关闭;4. 书店管理系统需求分析:系统功能模块划分、数据结构设计;5. 书店管理系统功能实现:用户界面设计、功能模块编程实现;- 用户注册与登录模块;- 图书信息管理模块;- 销售管理模块;- 库存管理模块;- 查询统计模块;6. 编程规范与调试技巧:代码风格、调试方法、性能优化;7. 团队协作与项目管理:分工合作、进度控制、问题解决;8. 课程总结与成果展示:项目演示、经验分享、总结反馈。
教学内容安排与进度:1. C语言基础回顾(1课时);2. 数组、字符串、结构体等高级特性及应用(2课时);3. 文件操作(1课时);4. 书店管理系统需求分析(1课时);5. 书店管理系统功能实现(6课时);6. 编程规范与调试技巧(1课时);7. 团队协作与项目管理(2课时);8. 课程总结与成果展示(1课时)。
2016-2017学年第2学期《C++》课程设计报告题目:电影院售票系统专业:计算机科学与技术班级:14(1)姓名:虞跃华指导教师:陈宝国成绩:计算机学院2017年4月21日(课外的,第十周答辩和总结)2017年5月21日(课内的,第十四周答辩和总结)目录1. 绪论 (4)1.1系统的开发背景 (4)1.2系统开发的必要性 (5)1.3系统开发目标与意义 (5)2. 开发工具 (6)2.1VB简介 (6)2.2数据库开发工具 (6)3 需求分析 (7)3.1可行性分析 (7)3.2功能描述 (8)3.3数据字典 (8)3.4系统功能图 (12)3.5对性能的规定 (13)3.6数据管理能力要求 (13)3.7故障处理要求 (14)4. 主要界面及功能 (14)4.1影院售票管理系统 (14)4.2小卖部管理 (18)4.3查询统计 (20)5. 详细设计 (23)5.1结构程序设计 (23)5.2人机界面设计 (24)6. 功能实现 (26)6.1售票系统 (26)6.2小卖部系统 (32)总结 (39)参考文献 (39)1. 绪论1.1系统的开发背景当今时代是飞速发展的信息时代,在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。
计算机的最大好处在于利用它能够进行信息管理。
使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。
尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。
管理信息系统是进行信息的采集、存储、加工、维护和使用的系统,它是随着管理科学和技术科学的发展而形成的。
影院售票管理系统是一个经济社会不可缺少的部分,它的内容对于企业管理的决策者和管理者来说都至关重要,所以影院售票管理系统应该能够为用户提供充足的信息和快捷的查询手段,对用户来说可以轻松的查阅自己消费信息等。
但是一直以来人们都是靠传统人工的方式管理影院售票,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。
书店管理c语言课程设计一、课程目标知识目标:1. 理解C语言的基本语法和程序结构,掌握其基本数据类型、运算符、控制语句等知识;2. 学习并掌握C语言中的数组、函数、指针等高级概念,并能将其应用于实际编程中;3. 了解书店管理的业务需求,运用C语言设计并实现一个简单的书店管理系统。
技能目标:1. 培养学生运用C语言进行程序设计的能力,能够独立编写、调试和运行简单的C程序;2. 培养学生分析和解决实际问题的能力,通过书店管理系统课程设计,使学生掌握需求分析、模块划分、编程实现等软件开发基本流程;3. 提高学生的团队协作能力,分组完成课程设计,培养学生相互沟通、共同解决问题的能力。
情感态度价值观目标:1. 培养学生对编程的兴趣,激发他们学习C语言的积极性,提高学生的自信心和自主学习能力;2. 通过课程设计,培养学生认真负责、严谨细致的工作态度,以及面对困难和挑战时坚持不懈的精神;3. 增强学生的创新意识,鼓励他们在课程设计中勇于尝试新思路,培养创新精神和团队协作精神。
本课程目标旨在使学生在掌握C语言基本知识的基础上,通过书店管理系统的设计与实现,提高编程实践能力、团队合作能力,培养良好的工作态度和价值观。
为实现这些目标,课程将注重理论与实践相结合,充分考虑学生的认知水平和学习需求,确保课程内容符合教学实际。
在教学过程中,教师将关注学生的学习进度,及时调整教学策略,确保学生能够达到预期的学习成果。
二、教学内容1. C语言基础知识回顾:数据类型、变量、运算符、控制语句(条件语句、循环语句)、函数定义与调用等;2. C语言高级知识学习:数组、指针、结构体、文件操作等;3. 书店管理系统需求分析:分析书店管理系统的业务流程,明确系统功能模块;4. 系统设计:根据需求分析,进行模块划分,设计各模块的功能和数据结构;5. 编程实现:运用C语言编写各模块代码,实现书店管理系统的功能;6. 系统测试与调试:对完成的程序进行测试,发现并修复错误,确保系统的稳定运行;7. 课程总结与评价:对课程设计过程进行总结,分享经验教训,互相评价学习成果。
c 音乐管理系统课程设计一、课程目标知识目标:1. 学生能理解音乐管理系统的基本概念,掌握其功能模块和使用方法。
2. 学生能了解音乐管理系统的数据库结构,学会使用SQL语句进行音乐数据的增、删、改、查操作。
3. 学生掌握音乐管理系统中的音乐分类、排序和搜索功能,提高音乐信息检索的效率。
技能目标:1. 学生能够独立操作音乐管理系统,进行音乐信息的录入、编辑和管理。
2. 学生通过实践,培养解决问题的能力,学会在遇到系统故障或操作困难时,运用所学知识进行排查和解决。
3. 学生能够运用音乐管理系统,进行音乐资源的分享和交流,提高团队协作能力。
情感态度价值观目标:1. 学生通过学习音乐管理系统,培养对音乐的热爱和鉴赏能力,提高音乐素养。
2. 学生在学习过程中,树立正确的信息意识,尊重知识产权,遵循网络道德规范。
3. 学生在团队合作中,学会互相尊重、倾听他人意见,培养集体荣誉感和责任感。
课程性质:本课程为实践性较强的信息技术课程,结合音乐教育,旨在提高学生的音乐素养和信息技术能力。
学生特点:学生处于中学阶段,对新鲜事物充满好奇,具备一定的音乐基础和信息技术知识,喜欢动手操作和实践。
教学要求:教师应注重理论与实践相结合,关注学生的个体差异,引导他们主动探索、合作学习,提高音乐管理系统的操作能力和信息素养。
通过分解课程目标为具体的学习成果,为后续教学设计和评估提供依据。
二、教学内容1. 音乐管理系统概述- 了解音乐管理系统的概念、发展历程和应用场景。
- 分析音乐管理系统的基本功能模块。
2. 音乐管理系统操作- 学习系统登录、音乐信息录入、编辑和管理方法。
- 掌握音乐分类、排序和搜索功能的使用。
3. 数据库操作- 学习音乐管理系统数据库结构,理解表与表之间的关系。
- 掌握SQL语句的基本语法,进行音乐数据的增、删、改、查操作。
4. 实践操作与案例分析- 结合实际案例,运用音乐管理系统进行音乐信息管理。
- 分析系统故障和操作困难,学会排查问题并解决。
影院管理系统c课程设计一、课程目标知识目标:1. 学生能理解影院管理系统的基本概念、功能模块和业务流程。
2. 学生能掌握数据库设计原则,运用SQL语句进行数据查询、插入、删除和更新操作。
3. 学生能了解C语言在影院管理系统中的应用,如文件操作、字符串处理等。
技能目标:1. 学生能运用结构化分析方法,完成影院管理系统的需求分析。
2. 学生能设计合理的数据库表结构,编写相应的SQL语句实现数据操作。
3. 学生能运用C语言编写功能模块,实现影院管理系统的核心功能。
情感态度价值观目标:1. 学生通过课程学习,培养对信息技术的兴趣和热情,提高学习积极性。
2. 学生在团队协作中,学会沟通、分享和承担责任,培养良好的团队合作精神。
3. 学生能够关注社会发展,了解信息技术在生活中的应用,提高社会责任感。
课程性质:本课程为计算机科学与技术专业的实践课程,旨在让学生通过实际操作,掌握影院管理系统的设计与实现。
学生特点:学生具备一定的C语言基础,对数据库知识有一定了解,但缺乏实际项目经验。
教学要求:注重理论与实践相结合,鼓励学生动手实践,提高学生的实际操作能力和解决问题的能力。
将课程目标分解为具体的学习成果,以便于教学设计和评估。
二、教学内容1. 影院管理系统概述:介绍系统的基本概念、功能模块和业务流程,分析实际应用场景,让学生对课程项目有整体的认识。
教材章节:第一章 影院管理系统简介2. 数据库设计:讲解数据库设计原则,指导学生完成影院管理系统数据库的设计,包括表结构设计、关系定义等。
教材章节:第二章 数据库设计3. C语言基础:回顾C语言基础知识,重点讲解文件操作、字符串处理等与本项目相关的内容。
教材章节:第三章 C语言基础4. 影院管理系统功能模块实现:分析系统需求,引导学生运用结构化分析方法,完成功能模块的设计与实现。
教材章节:第四章 功能模块实现5. 数据库操作:教授SQL语言,让学生掌握数据库的增删改查等基本操作,实现影院管理系统中的数据管理功能。
c语言课程设计影院管理系统一、教学目标本课程的目标是让学生掌握C语言编程基础,能够运用C语言设计并实现一个简单的影院管理系统。
具体目标如下:1.知识目标:–掌握C语言的基本语法和数据结构。
–理解函数的定义和调用。
–了解面向过程的编程思想。
2.技能目标:–能够使用C语言编写简单的程序。
–能够运用函数封装和模块化编程。
–能够设计和实现一个简单的影院管理系统。
3.情感态度价值观目标:–培养学生的编程兴趣和自信心。
–培养学生的问题解决能力和创新思维。
–培养学生的团队合作和沟通能力。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构、函数的定义和调用,以及面向过程的编程思想。
具体安排如下:1.C语言的基本语法:–变量和常量的声明和使用。
–运算符和表达式的使用。
–控制语句的运用。
2.数据结构:–数组的声明和操作。
–链表的创建和操作。
–栈和队列的应用。
3.函数的定义和调用:–函数的声明和定义。
–函数的参数传递和返回值。
–函数的调用和调用栈。
4.面向过程的编程思想:–模块化编程和函数封装。
–程序的流程控制和错误处理。
–面向过程的编程实践。
三、教学方法为了激发学生的学习兴趣和主动性,本课程将采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法等。
1.讲授法:教师通过讲解和示例来传授知识,引导学生理解和掌握C语言的基本语法和数据结构。
2.讨论法:学生通过小组讨论和分享,互相学习和交流,培养团队合作和沟通能力。
3.案例分析法:教师通过分析真实的影院管理系统的案例,引导学生运用C语言编程解决实际问题。
4.实验法:学生通过编写和运行C语言程序,实践和巩固所学的知识,培养问题解决能力和创新思维。
四、教学资源为了支持教学内容和教学方法的实施,本课程将准备以下教学资源:1.教材:《C语言程序设计》或《C语言入门教程》。
2.参考书:《C Primer Plus》或《C和指针》。
3.多媒体资料:教学PPT、视频教程、编程案例和示例代码。
计算机程序设计(C语言)课程设计报告题目:图书管理系统学院:专业:班级:学号:姓名:指导教师:设计日期:2013年06月24日一、选题背景:设计一个图书管理系统,管理员通过登陆账号来进行下一步,使用错误账号和密码会被视为非法登陆。
图书信息包括:每种图书都有书名、ISBN、一名或多名作者(译者)、出版社、定价和内容简介等;读者信息包括:借书证记录有借阅者的姓名、密码、所在单位和类别等;读者凭借书证借书二、设计思想:(1)整个系统除了主函数外,另外还有各种功能子函数,利用无限次循环语句while()和选择语句swithch()实现各个子函数的调用,系统根据输入的数字选项来调用相应的函数,以实现相应的功能。
主要实现了图书的录入、存储、查询、添加、删除、修改、借书、还书等功能。
(2)、Cbook();这是一个指针函数,它主要实现了链表的创建,并且在创建过程中从文件读取信息到链表中,以用于后面其他函数的操作。
它返回的时一个单向链表的头。
其他函数调用时只需调用它返回的头即可。
(3)、mainmenu();、menu1();、glm enu();、cxmenu();、jhmenu();这五个函数时整个图书管理系统的全部菜单函数,mainmenu();为系统主界面,进入时可选择进入程序和退出程序。
menu1();为进程序时显示的功能菜单,在此菜单可以选择录入、保存图书信息,也可选择进入其他子系统。
glmenu();此菜单为进入图书管理系统的菜单,在此可以选择添加、删除、修改图书等操作。
cxmenu();为查询系统的菜单,在此可以选择按书名、编号、作者等方式进行查询图书。
jhmenu();为借书还书的子菜单,在此可以选择借书还书操作。
操作完成后按提示信息进行文件的保存操作。
三、程序流程图会员登陆系统系统管理界面收银系统管理系统报表系统退出系统四、主要解决问题的方法及技术关键通过自己定义的函数和声明一个结构,主要方法是先使用int函数定义,不同的选择进入不同的定义函数,通过for语句进行判断,然后使用heart数组的各种方式打开此文件,然后通过while函数和for函数关闭文件,在不同的取用数值里,分别使用for,while语句进行判断是否进行下条语句。
歌曲管理系统c语言课程设计一、课程目标知识目标:1. 理解C语言在开发歌曲管理系统中的应用,掌握基本的程序结构和编程语法。
2. 学习并运用数组、结构体、文件操作等C语言知识模块,实现对歌曲信息的管理。
3. 掌握模块化编程思想,将歌曲管理系统拆分为多个功能模块,并实现各模块间的协同工作。
技能目标:1. 能够运用C语言编写程序,创建并管理一个歌曲管理系统。
2. 学会使用C语言进行数据存储和读取,实现对歌曲信息的增加、删除、修改和查询功能。
3. 通过课程设计,提高编程实践能力,培养解决实际问题的编程思维。
情感态度价值观目标:1. 培养学生对C语言的兴趣和热情,激发学习积极性,树立编程自信心。
2. 培养学生的团队协作精神,学会与他人共同解决问题,提高沟通与协作能力。
3. 通过课程设计,使学生认识到编程在现实生活中的应用价值,激发他们将所学知识应用于解决实际问题的意识。
本课程针对高年级学生,课程性质为理论与实践相结合。
在分析课程性质、学生特点和教学要求的基础上,将课程目标分解为具体的学习成果,以便后续的教学设计和评估。
通过本课程的学习,使学生能够掌握C语言编程技能,提高解决实际问题的能力,并培养良好的团队协作和沟通能力。
二、教学内容1. C语言基础知识复习:数据类型、运算符、控制结构、函数等。
2. 数组与字符串操作:一维数组、二维数组、字符串处理,为歌曲信息存储打下基础。
3. 结构体与文件操作:结构体定义、结构体数组、结构体与文件读写,用于歌曲信息的管理。
4. 模块化编程:函数的定义与调用、模块划分、模块间数据传递,实现系统功能分解。
5. 歌曲管理系统功能实现:歌曲的增加、删除、修改、查询等操作。
6. 项目实践:以小组为单位,设计并实现一个完整的歌曲管理系统。
教学内容依据课程目标,结合教材相关章节进行选择和组织。
教学大纲安排如下:第一周:C语言基础知识复习;第二周:数组与字符串操作;第三周:结构体与文件操作;第四周:模块化编程;第五周:歌曲管理系统功能设计与实现;第六周:项目实践与展示。
课程设计影院订购系统c语言一、教学目标本课程的学习目标主要包括知识目标、技能目标和情感态度价值观目标。
知识目标要求学生掌握影院订购系统的原理、功能和应用;技能目标要求学生能够运用C语言进行简单的程序设计,并能够独立完成一个简单的影院订购系统;情感态度价值观目标要求学生培养对编程的兴趣和热情,增强解决实际问题的信心和勇气。
通过本课程的学习,学生将了解和掌握影院订购系统的基本原理和应用,提高自己的编程能力,培养解决实际问题的能力。
同时,学生将培养对编程的兴趣和热情,增强自己的自信心,为今后的学习和生活打下坚实的基础。
二、教学内容本课程的教学内容主要包括影院订购系统的原理、功能和应用,以及C语言的基本语法和编程方法。
首先,我们将介绍影院订购系统的原理和功能,让学生了解影院订购系统的基本概念和作用。
然后,我们将学习C语言的基本语法和编程方法,让学生掌握C语言的基本编程技巧。
最后,我们将结合实际案例,让学生独立完成一个简单的影院订购系统的设计和实现。
三、教学方法为了提高教学效果,我们将采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法等。
首先,我们将通过讲授法向学生传授影院订购系统的原理和C语言的基本语法。
然后,我们将通过讨论法引导学生进行思考和讨论,提高学生的理解能力和解决问题的能力。
接下来,我们将通过案例分析法让学生分析实际案例,提高学生的应用能力和解决问题的能力。
最后,我们将通过实验法让学生动手实践,提高学生的编程能力和解决问题的能力。
四、教学资源为了支持教学内容和教学方法的实施,我们将选择和准备适当的教学资源,包括教材、参考书、多媒体资料和实验设备等。
教材方面,我们将选择权威、实用的教材,确保学生能够系统地学习和掌握影院订购系统和C语言的知识。
参考书方面,我们将选择一些经典的参考书,为学生提供更多的学习资料和参考信息。
多媒体资料方面,我们将准备一些与课程相关的多媒体资料,如PPT课件、视频教程等,丰富学生的学习体验。
C语言课程设计-小型书店管理系统简介本文档旨在设计一个小型书店管理系统,使用C语言实现。
该系统将提供以下功能:1. 登录:管理员和员工可以使用自己的账号和密码登录系统。
2. 书籍管理:管理员可以添加、编辑和删除书籍信息。
3. 销售管理:员工可以记录每一笔销售,包括售出的书籍、销售时间和销售数量。
4. 会员管理:系统可以管理会员信息,包括会员的姓名、手机号码和积分等。
5. 库存管理:系统可以记录书籍的库存信息,包括书籍的数量和位置。
功能说明登录- 系统启动时,提示用户输入账号和密码。
- 系统验证账号和密码是否正确,允许管理员和员工登录。
- 登录成功后,进入主菜单。
书籍管理- 管理员在主菜单选择书籍管理,可以进行以下操作:- 添加书籍:输入书籍的名称、作者、出版社和价格等信息,保存到系统中。
- 编辑书籍:选择要编辑的书籍,并修改相关信息。
- 删除书籍:选择要删除的书籍,并从系统中删除。
- 查看书籍列表:显示系统中所有的书籍信息。
销售管理- 员工在主菜单选择销售管理,可以进行以下操作:- 记录销售:选择要销售的书籍,并输入销售的数量。
- 系统更新库存信息,并生成销售记录,包括销售时间、图书名称和数量等。
- 销售记录可以用于后续的统计和分析。
会员管理- 管理员在主菜单选择会员管理,可以进行以下操作:- 添加会员:输入会员的姓名、手机号码和积分等信息,保存到系统中。
- 编辑会员信息:选择要编辑的会员,并修改相关信息。
- 删除会员:选择要删除的会员,并从系统中删除。
- 查看会员列表:显示系统中所有的会员信息。
库存管理- 系统会记录每本书籍的库存数量和位置。
- 当员工记录销售时,系统会自动更新库存信息。
- 员工可以在主菜单选择库存管理,查看当前库存情况。
技术实现本系统将使用C语言进行开发,主要使用以下技术:1. 数据结构:使用结构体来表示书籍、会员和销售记录等信息。
2. 文件操作:使用文件保存和读取数据,以实现数据的持久化。
课程设计报告课程名称C++语言课程设计课题名称音像店管理程序专业自动化班级学号姓名指导教师2010年7 月16 日●课题设计内容与主要功能音像店管理程序设计一个利用文件处理形式实现音像店基本功能的程序,具有增加数据、更新数据、删除数据、租出影碟、归还影碟和重组文件的功能。
删除数据在记录中做删除标志,重组文件文件则在物理上删除做有删除标志的记录。
音像店管理程序的主要功能是在租出影碟时,首先由用户输入片名,然后在影碟库文件中查找是否存在此影碟,如果有,并且副本大于0,则租出该影碟,并将影碟副本数减一,租出过程完成。
否则提示不能租出。
在归还影碟时,首先输入片名,然后在影碟库中查找是否存在此影碟记录,如果有,则将影碟副本数加一,然后提示归还成功。
其中包含如下几个功能。
0:显示全部。
这个功能主要是实现显示所有记录信息。
1:增加数据。
这个功能是实现数据的增加,比如说当一个新电影上市时,音像店需要增加这个电影的相关数据,“增加数据”这个功能就是实现增加新数据的。
2:更新数据。
这个功能主要是实现对影碟库系统里原有数据进行更新,准确的说是对原有影碟的相关数据如数量等进行更新,如果没有相关数据的影碟则无法更新。
3:查询数据。
这个功能主要是实现相关数据的查询,如果影碟库里有客户需要的相关影碟数据,则会显示出此影碟的相关数据,如果没有,则会出现“查询失败,无此影碟!”的字幕。
4:删除数据。
这个功能主要是实现数据的删除。
当影碟库有需要删除的影碟的相关数据,则可以删除,否则,则删除失败,需要重新输入。
5:租出影碟。
此功能主要是实现记录影碟被租出的信息,当某个影碟被租出时,其数量则自动减一。
显示此影碟被成功租出,且数据已被记录。
6:归还影碟。
此功能是实现记录影碟归还的信息,当被租出的影碟被归还时,此影碟的数量自动加一。
显示此影碟已成功归还,欢迎下次光临。
7:重组文件。
这个功能是在文件上删除做有删除标志的记录。
就是把那些删除标记为一的记录从文件中删除。
8:退出。
这个功能是实现退出音像店管理程序的功能。
●课题分析;分析课程设计项目的实现方法设计思路:对于整个工程来说,其实就是对文件的输入输出流就行操作,在流操作过程中进行读和写。
具体实现:首先对文件中记录进行分析,每条记录都是由三个方面组成---影碟名、影碟数、和删除标记。
因此在对文件进行读操作时,只需要逐一将上述三内容读出并用cout语句输出即可。
而对于写操作来说,也就是添加数据来说,可以逐一写进文件,对于查询来说,其实就是一个匹配的过程,用一个strcompare对于两个字符串进行比较就行了。
而对于、租出,归还,更新这几个函数来说,其大致操作是相同的,不同的是他们分别对于不同的分量进行操作。
租出和归还主要是对于影碟数来进行操作,删除的话只是对于某一条记录做一个删除标记,也就是说如果其删除标记值为1,则表明已经删除,为0则表示正常,可以进行更新,查询,租出,归还等操作。
当然在各个功能实现是必不可少的就是查询,也就是匹配,只有匹配成功了才对于那条记录进行操作,否则不能对文件内容进行修改。
在对文件内容进行修改的过程中,我们有必要设置两个辅助型数组,string aa[1000]/int bb[1000],其中aa是用来存放影碟名的,bb是用来存放影碟数的。
在修改过程中,先将文件中的所有内容都分别复制到aa和bb中,如果要对删除标记进行修改的话,还可以设置另一个辅助数组——int t【1000】。
然后通过修改各个数组中相应的值后,在写入文件中写入的属性为ios::out,这样就每次重新写的时候就把原来记录删除后再写。
●程序实现步骤●程序测试结果与结论●程序清单●总结与体会实验心得:此次实验是自己第一次利用面向对象程序设计思想来编写程序。
在整个过程中是十分成功的。
不但完成了实验的要求,而且还更加深刻了自己对面向对象编程的思想:面向对象程序设计是对数据的封装;范式(模板)的程序设计是对算法的封装。
利用面向对象思想编程是可以简化程序员的懒惰,无论是对象,还是函数,如果你输入有问题,那么都会在编译的时候报告出来,方便你修改,而不是在执行的时候出错,害的你到处去捉虫子。
这就是用面向对象思想编程的好处。
通过此次实验,学到了许多知识。
在这,十分感谢欧阳湘江老师的指导!附录:// 文件名路径名: video_store\video_store.h#ifndef __VIDEO_STORE_H_ // 如果没有定义__VIDEO_STORE_H_#define __VIDEO_STORE_H_ // 那么定义__VIDEO_STORE_H_#include<string>using std::string;#include<iostream>using std::endl;// 影碟结构struct VideoType{bool delTag; // 删除标志char videoTitle[1000]; // 片名int numOfCopies; // 影碟拷贝数};// 影碟库类class VideoBase{private:// 数据成员fstream file; // 影碟库文件// 辅助函数void AddData(); // 增加数据void UpdateData(); // 更新数据void SearchData(); // 查询数据void Deletedata(); // 删除数据, 只作删除标志void Pack(); // 在物理上删除作有删除标记的记录void Rent(); // 租出void Return(); // 归还void Printall(); //显示所有记录信息public:// 构造函数, 析构函数与方法VideoBase(); // 无参构造函数virtual ~VideoBase(){ file.close(); }// 析造函数void Run(); // 处理影碟库};// 影碟库类的实现VideoBase::VideoBase() // 无参构造函数{ifstream iFile("video.txt"); // 建立输入文件if (iFile.fail()){ // 打开文件失败,表示不存在文件ofstream oFile("video.txt"); // 建立输出文件if (oFile.fail()) throw("打开文件失败!"); // 抛出异常oFile.close(); // 关闭文件}else{ // 存在文件iFile.close(); // 关闭文件}file.open("video.txt", ios::in|ios::out|ios::binary); // 以读写方式打开文件if (file.fail()) throw("打开文件失败!"); // 抛出异常}void VideoBase::AddData() // 增加数据{VideoType video; // 影碟记录video.delTag = false; // 正常, 未作删除标志file.seekg(0, ios::end); // 定位char videoTitle[1000];int numOfCopies;int m=0;do{cout<<"输入片名:";cin>>videoTitle;cout<<"输入碟影拷贝数:";cin>>numOfCopies;if(!inClientFile){cerr<<"no"<<endl;exit(1);}inClientFile<<videoTitle<<" "<<numOfCopies<<" "<<m<<"\n";cout<<"添加成功,数据存放在video.txt中!"<<endl;}while (UserSaysYes()); // 肯定回答时循环cout<<endl;}void VideoBase::UpdateData() // 更新数据{VideoType video; // 影碟记录char videoTitle[1000];// 片名char videoTitle1[1000];bool st=false;int numOfCopies;string aa[1000];int bb[1000];int m=0;int n=0;cout << "输入要更新的片名:";cin>>videoTitle; // 输入片名file.seekg(0); // 定位file.read((char *)&video, sizeof(VideoType));ifstream inClientFile("video.txt",ios::in);while (!inClientFile.eof()){ // 文件末结束inClientFile>>videoTitle1>>numOfCopies>>n;if (strcmp(videoTitle1, videoTitle) == 0&&n==0){ st=true;break;}}if(st==false){cout<<"更新失败。
没有此影碟,请重新输入!"<<endl;file.clear();}else{int num;cin>>num;ifstream inClientFile("video.txt",ios::in);while (!inClientFile.eof()){ // 文件末结束inClientFile>>videoTitle1>>numOfCopies>>n;if(strcmp(videoTitle1, videoTitle) == 0&&n==0){numOfCopies=num;}string s=videoTitle1;aa[m]=s;bb[m]=numOfCopies;m++;}ofstream ofClientFile("video.txt",ios::out);for(int i=0;i<(m-1);i++){string s1=aa[i];char* a=(char*)s1.c_str();numOfCopies=bb[i];ofClientFile<<a<<" "<<numOfCopies<<" "<<'0'<<"\n";}cout<<"更新成功,数据存放在video.txt中!"<<endl;}cout<<endl;}void VideoBase::SearchData() // 查询数据{VideoType video;// 影碟记录char videoTitle[1000]; // 片名char videoTitle1[1000];int numOfCopies;int m1;bool st=false;cout << "输入要查询的片名:";cin >> videoTitle; // 输入片名file.seekg(0); // 定位file.read((char *)&video, sizeof(VideoType)); // 读记录ifstream inClientFile("video.txt",ios::in);while (!inClientFile.eof()){ // 文件末结束inClientFile>>videoTitle1>>numOfCopies>>m1;if (strcmp(videoTitle1, videoTitle) == 0&&m1==0)st=true;break;}}if (st==true){ // 查询成功cout <<"查询成功"<< videoTitle1 << " (" <<numOfCopies << ")" << endl;cout<<endl;// 输出记录}else{ // 查询失败cout << "查询失败,无此影碟!" << endl;cout<<endl;file.clear(); // 恢复好标志位goodbit}cout<<endl;}void VideoBase::Deletedata() // 删除数据, 只作删除标志{VideoType video; // 影碟记录char videoTitle[1000];// 片名char videoTitle1[1000];bool st=false;int numOfCopies;string aa[1000];int bb[1000];int m=0;int n=0;int t[1000]={0};int num=0;cout << "输入要删除标记的片名:";cin>>videoTitle; // 输入片名file.seekg(0); // 定位file.read((char *)&video, sizeof(VideoType));ifstream inClientFile("video.txt",ios::in);while (!inClientFile.eof()){ // 文件末结束inClientFile>>videoTitle1>>numOfCopies>>n;t[num]=n;num++;if (strcmp(videoTitle1, videoTitle) == 0&&n==0){ st=true;//break;}if(st==false){cout<<"没有此影碟,删除失败,请重新输入!"<<endl;file.clear();}else{ifstream inClientFile("video.txt",ios::in);while (!inClientFile.eof()){ // 文件末结束inClientFile>>videoTitle1>>numOfCopies>>n;if(strcmp(videoTitle1, videoTitle) == 0&&n==0){t[m]=1;}string s=videoTitle1;aa[m]=s;bb[m]=numOfCopies;m++;}ofstream ofClientFile("video.txt",ios::out);for(int i=0;i<(m-1);i++){string s1=aa[i];char* a=(char*)s1.c_str();numOfCopies=bb[i];ofClientFile<<a<<" "<<numOfCopies<<" "<<t[i]<<"\n";}cout<<"删除成功,数据存放在video.txt中!"<<endl;}cout<<endl;}void VideoBase::Pack() // 在物理上删除作有删除标记的记录{VideoType video; // 影碟记录char videoTitle1[1000];// 片名int numOfCopies;string aa[1000];int bb[1000];int m=0;int n=0;file.seekg(0); // 定位ifstream inClientFile("video.txt",ios::in);while (!inClientFile.eof()){ // 文件末结束inClientFile>>videoTitle1>>numOfCopies>>n;if(n==0){string s=videoTitle1;aa[m]=s;bb[m]=numOfCopies;m++;}}ofstream ofClientFile("video.txt",ios::out);for(int i=0;i<(m-1);i++){string s1=aa[i];char* a=(char*)s1.c_str();numOfCopies=bb[i];ofClientFile<<a<<" "<<numOfCopies<<" "<<'0'<<"\n";}cout<<"重组完成,数据存放在video.txt中!"<<endl;cout<<endl;}void VideoBase::Rent() // 租出{VideoType video; // 影碟记录char videoTitle[1000];// 片名char videoTitle1[1000];int numOfCopies;int m1;int n;int m=0;bool st=false;string aa[1000];int bb[1000];int t[1000];cout << "输入要租出的片名:";cin >> videoTitle; // 输入片名file.seekg(0); // 定位file.read((char *)&video, sizeof(VideoType)); // 读记录ifstream inClientFile("video.txt",ios::in);while (!inClientFile.eof()){ // 文件末结束inClientFile>>videoTitle1>>numOfCopies>>m1;if (strcmp(videoTitle1, videoTitle) == 0&&m1==0){break;}}if (st==true){ // 查询成功if (numOfCopies > 0){ // 还有拷贝file.seekg(-sizeof(VideoType), ios::cur); // 定位ifstream inClientFile("video.txt",ios::in);while (!inClientFile.eof()){ // 文件末结束inClientFile>>videoTitle1>>numOfCopies>>n;t[m]=n;string s=videoTitle1;aa[m]=s;bb[m]=numOfCopies;if(strcmp(videoTitle1, videoTitle) == 0&&n==0){bb[m]=bb[m]-1;}m++;}ofstream ofClientFile("video.txt",ios::out);// 写入记录for(int i=0;i<(m-1);i++){string s1=aa[i];char* a=(char*)s1.c_str();numOfCopies=bb[i];ofClientFile<<a<<" "<<numOfCopies<<" "<<t[i]<<"\n";}cout << "《" << videoTitle << "》成功被租出,数据存放在video.txt中!" << endl;// 显示租出成功信息}else{ // 已无拷贝cout << "《" << videoTitle << "》所有拷贝都被租出--此次租出失败!" << endl;// 显示租出失败信息}}elsecout << "影碟库中无此影碟,欢迎购买后再来租出!" << endl;file.clear(); // 恢复好标志位goodbit}cout<<endl;}void VideoBase::Return() // 归还{VideoType video; // 影碟记录char videoTitle[1000];// 片名char videoTitle1[1000];int numOfCopies;int m1;int n;int m=0;bool st=false;string aa[1000];int bb[1000];int t[1000];cout << "输入要租出的片名:";cin >> videoTitle; // 输入片名file.seekg(0); // 定位file.read((char *)&video, sizeof(VideoType)); // 读记录ifstream inClientFile("video.txt",ios::in);while (!inClientFile.eof()){ // 文件末结束inClientFile>>videoTitle1>>numOfCopies>>m1;if (strcmp(videoTitle1, videoTitle) == 0&&m1==0){st=true;break;}}if (st==true){ // 查询成功file.seekg(-sizeof(VideoType), ios::cur); // 定位ifstream inClientFile("video.txt",ios::in);while (!inClientFile.eof()){ // 文件末结束inClientFile>>videoTitle1>>numOfCopies>>n;t[m]=n;string s=videoTitle1;aa[m]=s;bb[m]=numOfCopies;{bb[m]=bb[m]+1;}m++;}ofstream ofClientFile("video.txt",ios::out);// 写入记录for(int i=0;i<(m-1);i++){string s1=aa[i];char* a=(char*)s1.c_str();numOfCopies=bb[i];ofClientFile<<a<<" "<<numOfCopies<<" "<<t[i]<<"\n";}cout << "《" << videoTitle << "》成功被归还,数据存放在video.txt中!" << endl;// 显示归还成功信息}else{ // 查询失败cout << "归还的不是本店影碟,请确认好再来归还!" << endl;file.clear(); // 恢复好标志位goodbit}cout<<endl;}void VideoBase::Printall()//显示所有记录信息{char videoTitle[1000]; // 片名int numOfCopies;int m1;cout<<"影碟名"<<" "<<"影碟数"<<" "<<"删除标记"<<endl;file.seekg(0); // 定位ifstream inClientFile("video.txt",ios::in);while (!inClientFile.eof()){ // 文件末结束inClientFile>>videoTitle>>numOfCopies>>m1;cout<<videoTitle<<" "<<numOfCopies<<" "<<m1<<endl;}cout<<endl;}void VideoBase::Run() // 处理处理影碟库{int select; // 选择菜单cout<<" 选择菜单"<<endl; cout<<endl;cout<<"0.显示全部"<<endl; cout<<"1.增加数据"<<endl; cout<<"2.更新数据"<<endl; cout<<"3.查询数据"<<endl; cout<<"4.删除数据"<<endl; cout<<"5.租出硬碟"<<endl; cout<<"6.归还影碟"<<endl; cout<<"7.重组文件"<<endl; cout<<"8.退出"<<endl;cout<<"输入序号:"; cin>>select;switch(select){case 0:Printall();break;case 1:AddData();break;case 2:UpdateData();break; case 3:SearchData();break; case 4:Deletedata();break; case 5:Rent();break;case 6:Return();break;case 7:Pack();break;case 8:exit(1);}Run();}#endif课程名称:教师签名:日期:(注:1.此页附在课程设计报告之后;2.综合成绩按优、良、中、及格和不及格五级评定。