数据库课程设计 2

合集下载

学生档案系统数据库课程设计

学生档案系统数据库课程设计

学生档案系统数据库课程设计1. 引言本文档旨在设计一个学生档案系统数据库,以提供学校管理学生档案的功能。

该数据库将存储学生的个人信息、课程成绩、奖励和处罚记录等内容,方便学校进行学生管理和查询工作。

2. 数据库设计2.1 学生信息表学生信息表将存储学生的基本信息,包括学号、姓名、性别、出生日期、联系电话等字段。

此表将作为其他表的主键,用于建立表间的关系。

2.2 课程成绩表课程成绩表将记录学生所修课程的成绩情况。

每条记录将包括学生学号、课程编号、成绩等字段。

此表将与学生信息表关联,用于查询学生的课程成绩。

2.3 奖励和处罚记录表奖励和处罚记录表将记录学生因表现优秀或违纪而获得的奖励和处罚情况。

每条记录将包括学生学号、奖励/处罚类型、奖励/处罚日期等字段。

此表将与学生信息表关联,用于查询学生的奖励和处罚记录。

2.4 教师信息表教师信息表将存储教师的基本信息,包括教师编号、姓名、性别、职称等字段。

此表将与课程成绩表关联,用于查询教师所教授的课程成绩。

2.5 课程信息表课程信息表将存储课程的基本信息,包括课程编号、课程名称、学分等字段。

此表将与课程成绩表关联,用于查询课程的成绩情况。

3. 系统功能设计学生档案系统数据库将提供以下功能:- 学生信息管理:包括学生信息的增加、修改和删除。

- 成绩管理:包括成绩的录入、查询和统计功能。

- 奖励和处罚管理:包括奖励和处罚记录的添加和查询。

- 教师信息管理:包括教师信息的增加、修改和删除。

- 课程信息管理:包括课程信息的增加、修改和删除。

- 数据查询功能:包括学生个人信息、成绩、奖励和处罚记录等的查询。

4. 总结本文档设计了一个学生档案系统数据库,包括学生信息表、课程成绩表、奖励和处罚记录表、教师信息表和课程信息表等。

系统提供了学生和教师信息管理、成绩录入和查询、奖励和处罚管理以及数据查询功能。

通过该系统,学校可以更方便地管理学生档案,并提供相关信息的查询和统计功能。

网上书店数据库课程设计

网上书店数据库课程设计

网上书店数据库课程设计一、课程目标知识目标:1. 让学生掌握数据库的基本概念,了解网上书店数据库的结构和设计原理;2. 使学生学会使用数据库管理系统(DBMS)进行网上书店数据的存储、查询和管理;3. 帮助学生掌握数据库设计的基本方法,能够根据实际需求设计合理的网上书店数据库。

技能目标:1. 培养学生运用数据库技术解决实际问题的能力,能够独立完成网上书店数据库的设计与搭建;2. 提高学生运用数据库管理系统进行数据处理和分析的能力,为网上书店的运营提供数据支持;3. 培养学生团队协作能力,能够在小组合作中共同完成数据库设计与优化任务。

情感态度价值观目标:1. 激发学生对数据库技术的兴趣,培养其探索精神和创新意识;2. 引导学生关注数据库在电子商务领域的应用,提高其对互联网行业发展趋势的认识;3. 培养学生尊重知识产权,树立正确的网络道德观念。

分析课程性质、学生特点和教学要求,本课程目标旨在使学生在掌握数据库基础知识的基础上,学会运用数据库技术解决实际问题。

课程将结合网上书店的实际案例,引导学生从需求分析、概念结构设计、逻辑结构设计等方面进行数据库设计,培养学生实际操作能力。

通过小组合作与讨论,提高学生的团队协作能力,使其在课程学习过程中形成积极向上的情感态度和价值观。

最终实现将理论知识与实践相结合,为未来从事相关领域工作打下坚实基础。

二、教学内容1. 数据库基本概念:介绍数据库的定义、作用、分类及发展历程;讲解数据库管理系统(DBMS)的功能和原理。

2. 数据模型:阐述实体-关系模型、关系模型、层次模型和网状模型等常见数据模型,重点讲解关系模型及其应用。

3. 关系数据库设计:分析网上书店需求,引导学生学习实体、属性、关系的定义,掌握E-R图绘制方法;讲解关系数据库的设计原则和步骤。

4. SQL语言:讲解SQL语言的基本语法,包括数据定义、数据查询、数据更新和数据控制等功能;结合网上书店案例,让学生学会编写SQL语句进行数据库操作。

VisualFoxPro数据库及程序设计基础实验指导第二版课程设计 (2)

VisualFoxPro数据库及程序设计基础实验指导第二版课程设计 (2)

VisualFoxPro数据库及程序设计基础实验指导第二版课程设

一、实验目的
本实验旨在通过学生的实际操作,使其对VisualFoxPro数据库及程序设计基础有一个清晰的认识,掌握VisualFoxPro数据库和程序设计的基本操作,能够进行VisualFoxPro数据库应用程序的设计和开发。

二、实验内容
本实验内容包括以下五个部分:
1. VisualFoxPro数据库的基本操作
1.创建数据库及表格
2.插入、修改、删除记录
3.查询、排序、过滤数据
4.外键、索引、约束
5.数据库备份与恢复
2. VisualFoxPro程序设计的基本操作
1.窗体和控件的使用
2.编写代码
3.调试程序
4.打包发布
3. 实验环境搭建
1.下载VisualFoxPro安装文件
2.安装VisualFoxPro
1。

数据库应用课程设计内容和要求

数据库应用课程设计内容和要求

数据库应用课程设计内容和要求一、课程设计目的与要求1.1课程设计目的本课程的课程设计实际是电子商务专业学生学习完《数据库应用》课程后,进行的一次全面的综合训练,其目的在于加深对数据库基础理论和基本知识的理解,掌握运用数据库应用系统开发软件的基本方法。

1.2课程设计的实验环境硬件要求能运行Windowx 9.X操作系统的微机系统。

数据库应用系统开发软件可以选用:FoxPro for Windows;Visual FoxPro;Microsoft Access,或其他数据库管理系统。

1.3课程设计的预备知识熟悉数据库的基本知识及一种以上数据库系统开发软件。

1.4课程设计要求按课程设计指导书提供的课题,应根据下一节给出的基本需求独立完成八个方面的设计,标有“可选”的部分可根据设计时间的安排及工作量的大小适当选择。

选用其他课题或不同的数据库管理系统,可以组成设计小组,分模块进行,共同协作完成一个应用系统的开发任务。

要求书写详细的设计说明书,对复杂的代码段和程序段,应画出程序流程图。

在界面设计中,画出每个窗口的布局,有多个窗口时,按模块调用的方式画出窗口调用图。

用手工画好报表和标签样式。

严禁相互抄袭。

1.5课程设计的考核要求设计完成后,必须提交设计说明书,软件数据盘。

由指导教师按优秀、良好、中等、及格和不及格五级分制评定成绩。

成绩不及格者不能获得学分,其余可获得3学分。

1.6 课程性质与学分该课程设计为3学分,54学时,供电子商务专业信息管理方向进行课程设计时参考。

二、课程设计内容2.1数据库设计与基本操作1.数据项间的联系根据课题给出的用户基本需求,写出各数据实体的数据项和联系实体的活动以及活动要使用的数据项,通过E—R图来表示。

由E—R图建立适当的表,并按照不同范式的定义,对表进行规范化。

2.建立数据库及数据字典对规范化的表,根据用户需求,定义字段名、类型、宽度和小数点,建立数据库结构。

根据每张规范化表,对应建立一个数据库文件。

数据库原理与课程设计

数据库原理与课程设计

数据库原理与课程设计一、教学目标本课程旨在让学生掌握数据库原理的基本概念、设计方法和应用技术,培养学生运用数据库技术解决实际问题的能力。

具体目标如下:1.知识目标:(1)理解数据库的基本概念,如数据、数据库、数据模型等。

(2)掌握关系模型、实体-关系模型等数据库设计方法。

(3)了解数据库管理系统的基本原理和常用技术。

(4)熟悉SQL语言及其应用。

2.技能目标:(1)能够使用数据库管理系统进行数据库的创建、维护和管理。

(2)能够运用数据库设计方法独立完成简单数据库的设计和实现。

(3)具备使用SQL语言进行数据查询、插入、更新和删除的能力。

3.情感态度价值观目标:(1)培养学生对数据库技术的兴趣,认识到数据库技术在现代社会的重要性。

(2)培养学生严谨的科学态度,提高解决实际问题的能力。

(3)培养学生团队协作精神,提高沟通与协作能力。

二、教学内容本课程的教学内容主要包括以下几个部分:1.数据库基本概念:数据、数据库、数据模型等。

2.数据库设计方法:关系模型、实体-关系模型等。

3.数据库管理系统:基本原理、常用技术、SQL语言等。

4.数据库应用实例:数据库设计、实现和应用。

教学大纲安排如下:第1-2周:数据库基本概念和数据模型。

第3-4周:数据库设计方法。

第5-6周:数据库管理系统的基本原理和常用技术。

第7-8周:SQL语言及其应用。

第9-10周:数据库应用实例。

三、教学方法本课程采用多种教学方法,以激发学生的学习兴趣和主动性:1.讲授法:讲解基本概念、原理和方法。

2.案例分析法:分析实际案例,引导学生运用数据库技术解决问题。

3.实验法:上机操作,让学生动手实践,巩固理论知识。

4.讨论法:分组讨论,培养学生的团队协作能力和沟通能力。

四、教学资源本课程所需教学资源包括:1.教材:选用权威、实用的数据库原理教材。

2.参考书:提供相关领域的参考书籍,丰富学生的知识体系。

3.多媒体资料:制作课件、演示文稿等,辅助教学。

《数据库原理》课程设计

《数据库原理》课程设计

《数据库原理》课程设计一、课程设计的性质、目的和意义《数据库原理》课程设计是实践性教学环节之一,是《数据库系统原理》课程的辅助教学过程,是计算机科学与技术专业的必修课。

通过课程设计,结合实际的操作和设计,巩固课堂教学内容,使学生掌握数据库系统的基本概念、原理和技术,将理论与实际相结合,应用现有的数据建模工具和数据库管理系统软件,规范、科学地完成一个小型数据库的设计与实现,把理论课与实验课所学内容综合为一,并在此基础上强化学生的实践意识、提高其实际动手能力和创新能力,从而为后续课程的学习,毕业设计环节以及将来的实际工作打好坚实的基础。

二、课程设计的具体内容数据库系统原理的课程设计要求学生综合利用本课程的有关知识,在教师的指导下,利用特定的数据库设计环境,针对具体的问题,完成从系统的需求分析、数据库的概念设计、数据库的逻辑设计,到数据库实现等设计过程,最终实现一个较为完整的反映应用需求的数据库系统。

因此,在设计中,要求学生应该全面考虑各个设计环节以及它们之间的相互联系。

下面是各个设计阶段的具体内容。

1.系统需求分析需求分析是数据库系统设计的一个重要的环节。

本阶段应该对整个应用情况作全面的、详细的调查,确定特定数据库应用环境下的设计目标,收集该应用环境下针对系统设计所需要的基础数据以及对这些数据的具体存储要求,从而确定用户的需求。

用户对数据库的需求包括:⑴处理需求。

即用户要完成什么处理功能等。

学生在设计中应根据具体的课题要求确定系统应该实现的功能,一些基本的功能通常是必须具备的,如用户的管理与维护,基本数据的维护,灵活的信息查询等。

⑵信息需求。

即在数据库中需要存储哪些数据。

学生应该根据具体的课题,认真分析有关的要求,确定本设计的信息需求。

⑶安全性和完整性功能。

实践中这是一个需要与用户不断交流才能逐步确定的需求。

本课程设计要求学生在自己的设计中能反映出基本的安全性和完整性功能。

本阶段的设计结果(即系统需求分析)应该在课程设计报告中进行详细描述,画出系统的数据流图,写出较为详细的数据字典,作为本课程设计的验收依据之一。

华工数据库课程设计

华工数据库课程设计

华工数据库课程设计一、教学目标本课程的教学目标是使学生掌握数据库的基本概念、原理和操作技能,能够使用华工数据库进行数据管理和分析。

具体分为以下三个部分:1.知识目标:学生需要了解数据库的基本概念,掌握数据库的设计和实现原理,熟悉华工数据库的架构和功能。

2.技能目标:学生需要能够使用华工数据库进行数据建模、查询、更新和管理,具备一定的高级数据操作技能。

3.情感态度价值观目标:通过课程的学习,使学生对数据库技术产生浓厚的兴趣,培养学生的创新意识和解决实际问题的能力。

二、教学内容本课程的教学内容主要包括以下几个部分:1.数据库基本概念:介绍数据库、数据库管理系统、数据库系统等基本概念,使学生了解数据库的发展历程和现状。

2.数据库设计:讲解数据库设计的原则和方法,引导学生掌握实体-关系模型,并能够运用华工数据库进行数据库设计。

3.数据库操作:教授学生使用华工数据库进行数据查询、更新和管理的方法,使学生熟练掌握数据操作技能。

4.数据库管理:介绍数据库管理的知识,包括数据安全、数据备份与恢复、性能优化等内容,帮助学生掌握数据库维护和管理的方法。

三、教学方法为了提高教学效果,本课程将采用多种教学方法相结合的方式,包括:1.讲授法:教师讲解数据库的基本概念、原理和操作方法,引导学生掌握知识点。

2.案例分析法:通过分析实际案例,使学生了解数据库在实际应用中的作用和价值。

3.实验法:安排实验室实践环节,让学生亲手操作华工数据库,提高学生的实际操作能力。

4.小组讨论法:学生分组讨论,培养学生的团队协作能力和解决问题的能力。

四、教学资源为了保证教学质量,我们将准备以下教学资源:1.教材:选用权威、实用的数据库教材,为学生提供系统的理论知识。

2.参考书:提供相关领域的参考书籍,丰富学生的知识体系。

3.多媒体资料:制作精美的PPT、教学视频等多媒体资料,提高学生的学习兴趣。

4.实验设备:保障实验室设备的齐全和正常运行,为学生提供良好的实践环境。

计082班施磊磊的数据库课程设计-高校图书馆管理信息系统

计082班施磊磊的数据库课程设计-高校图书馆管理信息系统

数据库课程设计题目:高校图书馆管理信息系统学号:0813022057专业班级:计082班姓名:施磊磊指导老师:程晨完成日期:2011年6月24日摘要在计算机日益普及的今天,对个人而言若采用一套行之有效的图书管理系统来管理自己的书籍,会方便许多。

对图书管理部门而言,以前单一的手工检索已不能满足人们的要求,往往是投入了大量的人力和财力却得不到高效的管理效率。

为了便于图书资料的管理需要有效的图书管理软件,减轻工作人员的工作量,方便工作人员对它的操作,提高管理的质量和水平,做到高效、智能化管理,达到提高图书借阅信息管理效率的目的。

采用数据库技术生成的图书馆借阅管理系统将会极大地方便借阅者并简化图书馆管理人员和工作人员的劳动,使工作人员从繁忙、复杂的工作进入到一个简单、高效的工作中。

基于这个问题,开发了大学图书馆借阅系统。

系统采用C/S模式,实现了借还书的方便、高效性、有效性和及时性。

本文通过作者设计和开发一个中小型高校图书馆管理系统的实践,阐述了高校图书管理软件中所应具有的基本功能、设计、实现。

分别从设备管理和用户管理等角度进行处理,并对需求分析、概念设计、逻辑设计、物理设计、数据库实施和维护进行了阐述,实行设备管理的计算机自动化。

关键字:图书借阅;人员管理目录1 引言 (1)1.1 本课设的研究意义 (1)1.2 本课程设计的目标与任务 (1)2 数据库设计 (2)2.1 需求设计 (2)2.1.1引言 (2)2.1.2需求分析阶段的目标和任务 (2)2.1.3处理对象 (2)2.1.4处理功能及要求 (2)2.1.5安全性和完整性要求 (3)2.1.6 需求分析阶段成果 (3)2.2概念设计阶段 (8)2.2.1引言 (8)2.2.2任务与目标 (8)2.2.3阶段结果 (8)2.3逻辑设计阶段 (9)2.3.1逻辑设计的任务与目标 (9)2.3.2数据组织 (10)2.3.3数据处理 (12)2.4物理设计阶段 (13)2.4.1物理设计的任务与目标 (13)2.4.2数据存储方面 (13)2.4.3系统功能模块 (13)2.5数据库实施阶段 (15)2.5.1建立数据库、数据表、视图、索引 (15)2.5.2数据入库 (17)2.5.3创建各个功能的存储结构 (17)2.6系统调试和测试 (17)3实践心得 (17)4存在问题和建议 (18)致谢 (18)参考文献 (19)附录1存储过程的定义 (20)附录2数据查看和存储过程功能验证 (25)附录3所有的SQL语句 (35)1 引言当今时代是飞速发展的的信息时代。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《数据结构》课程设计报告(2011--2012学年第二学期)题目:集合交、并、差、对称差运算学号:姓名:指导教师:信息科学与工程系1设计内容、任务及具体要求1.1设计内容编写一个程序,实现集合(同一集合中可以存在重复的元素,函数将自动过滤) 的并、交、差和对称差。

1.2设计任务及具体要求 1、用顺序表表示集合,在建立顺序表时,自动清除同一集合中的相同元素,并根据长度定位元素位置;2、集合的元素限定为字母;3、要求实现的算法: 1)两个集合的并运算 2)两个集合的交运算 3)两个集合的差运算 4)两个集合的对称差运算4、运行界面要人性化,便于使用,提示清楚,操作简单。

问题补充:要求数据是无序的,不能顺序表示,通过函数(插入、删除)完成集合间的运算。

2概要设计2.1该系统的功能简介建立顺序表,通过顺序表进行集合间并、交、差、对称差的运算。

使用者只需根据程序提示,进行必要步骤的输入和选择,就能实现集合间的简单运算。

2.2 总体程序框图2.3各个模块之间的主要关系主函数m a i n( )函数 输入函数初始化创建链表菜单输出函数输入函数输入函数 输入函数初始化 模块3系统功能模块的具体设计3.1各个模块的程序流程图及运行界面 1.初始化顺序表模块1 12.求长模块3. 插入模块对称差模块交集模块差集模块并集模块 输出 模块创建链表 模块菜单 模块求长 模块插入 模块求长 模块取元素模块差集 模块并集 模块 删除 模块 插入 模块 交集 模块 定位模块插入模块定位 模块取元素模块 求长 模块 取元素模块 删除 模块初始化模块 取元素模块求长模块插入 模块求长 模块 初始化模块 Over lowl.length=0; l.listsize=LIST_INIT_SIZE; l.elem return(l.length)开始 开始返回o k结束开 始是否超长申请内存内存足够开辟空间P >=q结束申请空间1 1 10 04.创建顺序表1 15. 取元素16. 比较模块17. 定位模块*(p+1)=*p;--p;returnOK *q=e;++L.length;开始returnOK 求长i<=na<=a[i]<=z元素插入是否超长开始结束return ERROR;e=*(L.elem+i-1);return OK;开始e1>e2return OKreturn ERROR;结束开始e结束大于长结束结束118. 删除模块1 10 09.并集模块 01110.交集模块11111.差集模块 0e1>e 22*p=l.elemreturn ERROreturn ERRORreturn OK;大于长 P<q*p=&l.elem[i-1] *q=l.elem+l.len gth-1; e=*p *p=*(p+1);++p开始 结束--length ; return OKreturn ERROR开 始开始结束开 始开 始结束定位元素相等i< lbP<qP<qP<q i< l1u=ei< lc删除元素开辟空间开辟空间 开辟空间取元素i ++插入l1, l2, Lc 分别求 长取元素初始化l c开辟空间取元素i++求l1,l2的交lc; l1,l2,l3, Lc 分别求长11112.对称差模块13.输出模块0 1 0114.菜单模块3.2关键代码分析说明 a.插入模块中 while(p>=q)开 始结束开始开 始结束开 始 i<l.len gthL为空对lc,ld 求长对lc,ld 求并集求ll,l2的差集lc求l2,l1的差集ld空集打印 i++初始化lc,ld返回参数界面打印输入返回值{*(p+1)=*p;--p;} //插入位置后的元素右移当原始申请内存不足时if(!newbase) exit(OVERFLOW);L.elem=newbase;L.listsize+=LISTINCREMENT;b.删除模块中if(i<1||i>L.length)return ERROR;//删除位置不合理c.定位模块中ElemType *p=L.elem; //p指向第一个元素int i=1; //i始终为p所指向元素的位序while(i<=L.length&&!(*compare)(*p++,e))++i;if(i<=L.length)return(i);elsereturn 0;d.main()函数中重新输入数据时,用er做goto语句的跳转标e.其它见源代码注释。

4程序调试分析a.界面测试底面粉红字体深蓝提示语输出欢迎使用集合计算器b.测试空表:1.执行程序2退出程序对应选择2 退出c.测试建表:1二执行程序2退出程序对应选择1 继续请输入第一个集合:a b c d e f请输入第一个集合:d e f g h id.测试输入不符合要求(a---z)程序能否自动过滤1执行程序2退出程序对应选择1 继续请输入第一个集合:1 2 a b c d e f请输入第一个集合:d e f g h i 2 41交集2并集3差集4对称差5清屏6重新输入其它退出对应选择1输出d e fe.测试输入不符合顺序程序能否执行1执行程序2退出程序对应选择1 继续请输入第一个集合:f e d c b a请输入第一个集合:i h g f e d1交集2并集3差集4对称差5清屏6重新输入其它退出对应选择1输出f e df.测试功能1执行程序2退出程序对应选择1 继续请输入第一个集合:a b c d e f请输入第一个集合:d e f g h i1交集2并集3差集4对称差5清屏6重新输入其它退出对应选择1输出d e f1交集2并集3差集4对称差5清屏6重新输入其它退出对应选择2输出a b c d e f g h i1交集2并集3差集4对称差5清屏6重新输入其它退出对应选择3输出a b c1交集2并集3差集4对称差5清屏6重新输入其它退出对应选择4输出a b c g h i1交集2并集3差集4对称差5清屏6重新输入其它退出对应选择5输出1交集2并集3差集4对称差5清屏6重新输入其它退出对应选择6输出请输入第一个集合A输入b c d e f请输入第一个集合B输入d e f g h输出1交集2并集3差集4对称差5清屏6重新输入其它退出对应选择1输出 d e f输出1交集2并集3差集4对称差5清屏6重新输入其它退出对应选择其它退出程序5程序使用说明1、用顺序表表示集合,在建立顺序表时,自动清除同一集合中的相同元素,并自动定位元素位置;2、集合的元素限定为字母;3、要求实现的算法:1)两个集合的并运算2)两个集合的交运算3)两个集合的差运算3)两个集合的对称差运算4)清空界面5)重新输入6)其它退出4、根据界面提示操作。

6总结程序的编译要注意以下几点:1、要求算法精简全面,没有逻辑错误和漏洞。

2、要求界面美观,操作方便,功能全面。

3、代码要注意结构清晰,便于复查。

4、调用函数名要注意清晰易懂。

5、尽量要将常用函数模块化,调用方便,编写简单。

6、代码的书写注意细致,区分大小写,参数要有规律。

7、其它。

致谢李印清教授关于数据结构知识,算法的指导。

方瑞英老师对算法优化,代码语言规范化的指导。

参考文献《C语言程序设计第二版(机械工业出版社)》关于程序测试的方法。

李印清教授《学生档案管理系统》参考示例及代码分析。

《数据结构上机指导(清华大学出版社)》实例分析及算法指导。

附:源程序//文件名《简单集合计算器》//##########################源代码######################### /* 制作人:杨世杰;指导老师:方瑞英;完成时间:2012.3.25;修改时间:2012.4.03 基本算法的代码化;2012.4.07 基本算法的实现;2012.4.15 参数值函数名的标准化;2012.4.16 函数界面的优化;2012.4.25 完成数据的测试.定稿时间:2012.4.30。

*/// 程序的头文件#include<stdio.h>#include<malloc.h>#include<stdlib.h>#include<string.h>// 函数返回值#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2#define LISTINCREMENT 10#define LIST_INIT_SIZE 100 //顺序表的初始大小typedef int Status; //返回状态类型typedef char ElemType; //元素类型//结点类型指针类型typedef struct{ElemType *elem;int length;int listsize;}SqList;Status chushihua(SqList &l){/******************初始化顺序表******************调用函数:无;**参数:无;**返回值:OK. ***************************************************/ l.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));if(!l.elem) exit(OVERFLOW);l.length=0;l.listsize=LIST_INIT_SIZE;return OK;}int qiuchang(SqList l){/******************求顺序表的长度******************调用函数:无;**参数:无;**返回值:l.length***************************************************/ return(l.length);}Status charu_Sq(SqList &L,int i, ElemType e){/******************在i处插入元素e******************调用函数:无;**参数:L,i,e;i,L.elem,*p**返回值:ERROR,OK. ***************************************************/ if(i<1||i>L.length+1)return ERROR;if(L.length>=L.listsize){ElemType*newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType));if(!newbase) exit(OVERFLOW);L.elem=newbase;L.listsize+=LISTINCREMENT;}ElemType *q=&L.elem[i-1], *p=&L.elem[L.length-1];while(p>=q){*(p+1)=*p;--p;} //插入位置后的元素右移*q=e;++L.length;return OK;}Status chuangjian(SqList &l,ElemType a[],int n){/******************创建顺序表*********************调用函数:charu(),qiuchang();**参数:L,a[i],n;len,l **返回值:ERROR,OK. ***************************************************/int len=qiuchang(l);for(int i=0;i<n;i++){if(a[i]>='a'&&a[i]<='z')charu_Sq(l,++len,a[i]);}return OK;}Status quyuansu(SqList L,int i,ElemType &e){/**************取顺序表中元素******************调用函数:无;**参数:L,i,e;L.elem**返回值:ERROR,OK. ***************************************************/if(i<=0||i>L.length)return ERROR;elsee=*(L.elem+i-1);return OK;}Status bijiao(ElemType e1,ElemType e2){/*****************比较元素的值******************调用函数:无;**参数:e1,e2;e1,e2**返回值:ERROR,OK. ***************************************************/if(e1==e2)return OK;elsereturn ERROR;}int dingwei_Sq(SqList L, ElemType e, Status (*compare)(ElemType,ElemType)) {/**************定位顺序表中元素位置******************调用函数:无;**参数:L,i,e;**返回值:i,0. ***************************************************/ ElemType *p=L.elem; //p指向第一个元素int i=1; //i始终为p所指向元素的位序while(i<=L.length&&!(*compare)(*p++,e))++i;if(i<=L.length)return(i);elsereturn 0;}Status shanchu(SqList &L,int i,ElemType &e){/**********在顺序表L中删除第i个元素,用e返回其值********** *调用函数:无;**参数:L,i,e;i,p,q,e,L.length**返回值:ERROR,OK. ************************************************************/ if(i<1||i>L.length)return ERROR;//删除位置不合理ElemType *p=&L.elem[i-1],*q=L.elem+L.length-1;e=*p;while(p<q){*p=*(p+1); ++p;} //删除位置后的元素左移--L.length;return OK;}void bingji(SqList &La,SqList Lb){/******************实现集合的并******************调用函数:qiuchang();charu();dingwei();quyuansu()**参数:La,Lb,la_len,lb_len;L,i,e**返回值:ERROR,OK. ***************************************************/ //将所有在线性表Lb中而不在La中的元素插入Laint la_len , lb_len;ElemType e;la_len=qiuchang(La);lb_len=qiuchang(Lb);for(int i=1;i<=lb_len;++i){quyuansu(Lb,i,e);if(dingwei_Sq(La,e,bijiao)==0)charu_Sq(La,++la_len,e);}}Status JiaoJi(SqList l1,SqList l2, SqList &l3){/*****************求集合的交集*********************调用函数:qiuchang();quyuansu();charu();**参数:l1_len,l2_len,l3_len,e,u;i,j,l1,l2,l3;**返回值:OK. ***************************************************/ int l1_len, l2_len,l3_len,i=1,j=1;ElemType e,u;l1_len=qiuchang(l1);l2_len=qiuchang(l2);l3_len=qiuchang(l3);for(i=1;i<=l1_len;i++){quyuansu(l1,i,e);for(j=l2_len;j>=1;j--){quyuansu(l2,j,u);if(e==u){charu_Sq(l3,++l3_len,u);break;}elsecontinue;}}return OK;}Status chaji(SqList &l1,SqList l2){/**************求顺序表的差集******************调用函数:qiuchang();quyuansu();chushihua();shanchu()**参数:l1_len,l2_len,count,e,u,f; l1,l2**返回值:OK. ***************************************************/ SqList lc;int lc_len,l1_len,l2_len;ElemType e,u,f;chushihua(lc);JiaoJi(l1,l2,lc);lc_len=qiuchang(lc);l1_len=qiuchang(l1);l2_len=qiuchang(l2);for(int i=1;i<=lc_len;i++){quyuansu(lc,i,e);for(int j=1;j<=l1_len;j++){quyuansu(l1,j,u);if(u==e){shanchu(l1,j,f);}}}return OK;}Status duichencha(SqList &l1,SqList l2){/******************求顺序表的对称差集**********************调用函数:chushihua();qiuchang();bingji();chaji().**参数:lc,ld,lc_len,ld_len,l1_len,l2_len;l1,l2**返回值:OK. ************************************************************/ SqList lc;int lc_len,l1_len,l2_len;ElemType e,u,f;chushihua(lc);lc_len=qiuchang(lc);l1_len=qiuchang(l1);l2_len=qiuchang(l2);JiaoJi(l1,l2,lc);lc_len=qiuchang(lc);//求出交集l2_len=qiuchang(l2);l1_len=qiuchang(l1);bingji(l1,l2); //求出并集l1_len=qiuchang(l1);chaji(l1,lc); //(l1Ul2)-(l2nl1)求对称差return OK;}void shuchu(SqList &L){/******************输出函数**********************调用函数:无;**参数:l.length,i;L;**返回值:ERROR,OK. ***************************************************/if(0==L.length)printf("空集!");elsefor(int i=0;i<L.length;++i){printf("%c",*(L.elem+i));}}int caidan(){/********************菜单*************************调用函数:无;**参数:cn;**返回值:cn. ***************************************************/int cn;printf("**********************************************************\n");printf(" # 求集合的交请按1 #求集合的并请按2 \n");printf(" # 求集合的差请按3 #求集合的对称差请按4 \n");printf(" # 清屏请按5 #重新输入请按6 \n");printf(" # 退出请按其它键\n");printf("**********************************************************\n");printf("请输入选项:");scanf("%d",&cn);return cn;}void main(){/**************程序的主函数******************调用函数:chushihua();chuangjian();chaji();bingji();chaji();duichencha();shuchu();caidan();**参数:c,i,j,l1,l2,l3,a1,la,lb,n1,n2,;**返回值:ERROR,OK. ***********************************************/system("color d1");printf("*****************************************************************\n");printf("* *\n");printf("# 欢迎使用集合计算器!#\n");printf("* *\n");printf("* 注意:此集合运算器仅适用于字母间运算*\n");for(1;;){int c;printf("*********************########################*********************\n");printf("# 1 执行程序 2 退出程序#\n");printf("******************************************************************\n");printf("请按键选择(1或2): ");scanf("%d",&c);er:getchar(); //goto语句跳转标志printf("\n");if(c==1){SqList l1,l2,l3,la;int n1,n2,i,j;char a1[30], a2[30];chushihua(l1);chushihua(l2);chushihua(l3);chushihua(la);printf("请输入第一个集合: ");gets(a1);n1=strlen(a1);for(i=n1-1;i>=0;i--) //从最后一个开始依次与前面的比较重复赋值为0{for(j=0;j<i;j++){if(a1[j]==a1[i])a1[i]=0;}}chuangjian(l1,a1,n1);la=l1;printf("请输入第二个集合: ");gets(a2);n2=strlen(a2);for(i=n2-1;i>=0;i--) //同上{for(j=0;j<i;j++){if(a1[j]==a1[i])a1[i]=0;}}chuangjian(l2,a2,n2);int a;while(1){a = caidan();switch(a){case 1:{printf("集合的交集是: ");JiaoJi(l1,l2,l3);shuchu(l3);printf("\n");break;}case 2:{printf("集合的并集是: ");bingji(l1,l2);shuchu(l1);printf("\n");break;}case 3:{printf("集合的差集是: ");chaji(la,l2);shuchu(la);printf("\n");break;}case 4:{printf("集合的对称差集是: ");duichencha(la,l2);shuchu(la);printf("\n");break;}case 5:{system("cls");continue;}case 6:{system("cls");printf("输入新的集合");goto er;//goto语句标志及跳转点}default:{exit(0);}}}}else{exit(0);}}}指导教师评语:成绩:指导教师签名:年月日。

相关文档
最新文档