数据结构教务管理系统项目

 2025-01-12 23:48:01  阅读 776  评论 0

摘要:IT行业,数据库确实是一门相当重要的课程。但是在大学里面,对待数据库原理及应用这么课程以及其课程设计的重视程度就相差很大了,各个学校要求也不一样。如果是要学好,那确实要下工夫;如果只是完成课程设计,交差了事,其实相当简单。既然是课程设计,也算是个小小的项目,

IT行业,数据库确实是一门相当重要的课程。但是在大学里面,对待数据库原理及应用这么课程以及其课程设计的重视程度就相差很大了,各个学校要求也不一样。如果是要学好,那确实要下工夫;如果只是完成课程设计,交差了事,其实相当简单。

既然是课程设计,也算是个小小的项目,既然是项目,也就离不开需求分析、数据库设计、部署实现等环节。当然,这个小小的项目只需要前面的部分:需求和数据库设计,数据库设计是重点。

需求分析就不用多说,和所有其他项目一样,无非就是用户需求,功能需求,系统需求等,找任何一本关于需求分析的书都是可以,除了那些个空话之外,更多的是要根据设计需要进行分析。

数据结构教务管理系统项目

数据库设计就比较复杂一点,首先得把数据库原理搞清楚,比如:符合什么样的范式,怎么画ER图,如何理解用例图。在设计数据库之前,有一系列的分析要做:面向对象分析,用例分析,类和对象分析等等。分析到位是数据库设计成功的重要保障。分析完成之后才是设计,比如:逻辑结构设计,关系模式设计,存取方法设计,存储结构设计,数据完整性设计,参考完整性设计,Check约束,Default约束,触发器设计,视图设计,存储过程设计,权限设计等。这些都完成了,最后一步才是写SQL代码实现这些设计,创建数据库及相关的数据表,关联,视图,触发器,存储过程等一些列的看得见的数据库参数。

上面说的比较理论,也比较笼统。我想我可以用一个简单例子告诉你我要表达的意思。例子很简单,其中很多地方都不是太好,不过或许可以给你一个直观的思路。

数据库应用课程设计报告书

网上超市管理系统 

成    绩:

学    号:

姓    名:

指导教师:

20    年  月  日

目录

任务书......................................... (3)

1.    需求调查、分析................................. (4)

1.1.         企业介绍.................................... (4)

1.2.         需求调查及分析.............................. (5)

2.    面向对象分析和设计............................. (7)

2.1.  用例分析 (7)

2.2.类和对象设计   (12)

3.    逻辑结构设计.................................. (15)

3.1.  类和对象向关系模式转换............................................ (15)

3.2. 关系模式优化   (16)

4.    数据库物理结构设计............................ (16)

4.1. 存取方法设计   (16)

4.2.  存储结构设计   (17)

5.    数据库完整性设计.............................. (17)

5.1. 主键及唯一性索引  (17)

5.2.  参照完整性设计 (18)

5.3.  Check约束  (18)

5.4.  Default约束   (18)

5.5. 触发器设计  (19)

6.    数据库视图设计................................ (19)

7.    数据库存储过程设计............................ (20)

8.    权限设计...................................... (20)

9.    总结.......................................... (21)

参考资料......................................... (21)

网上超市管理系统

摘要:

网上超市管理系统,是以网上管理方式为实例而设计的一种实用型管理系统。本系统最大的特点是通用性、简单操作性,适用于超市的管理。随着商品的增多,商品管理人员的负担越来越重,为了让所有商品管理人员能从繁重的工作中解脱出来,实现无纸化办公;也为了使工作更有条理,更方便,更有效率,更为了超市在经营中提高利润而开发出这套网上超市管理系统。

1 需求调查、分析

1.1      企业介绍

在Internet飞速发展的今天,互联网成为人们快速获取、发布和传递信息的重要渠道,它在人们政治、经济、生活等各个方面发挥着重要的作用。在政府的大力提倡和支持下,我国电子商务已走上了健康发展的轨道。各行业纷纷建立自己的网站,开展网上产品信息发布,进行网上洽谈、签约,开展网络营销。将超市办成网上超市已经是大势所趋,甚至一些小型的超市也可以开展网上交易。总之,电子商务以互联网为媒介,以信息传播速度快、受众广泛、低成本动作的优势决定着其必然成为未来营销的主导,我国企业要充分重视由此带来的机遇和挑战,才能在激烈的国际竞争中立于不败之地。

在超市经营中,随着超市规模的不断扩大,人们对超市服务的要求不断提高,使用一款适合的网上超市管理系统将更加迫切。利用网上超市,人们可以在家里逛超市,只需要办理会员卡,就可以为本地顾客送货上门。不仅如此,把超市办成网上经营和管理将大大提高效率和收益。因此,开发一个网上超市管理系统是非常有必要和好处的。

1.2 需求调查及分析

1.2.1顾客需求

为方便用户购买商品,网上超市客户系统应该提供如下所示几种功能:

(1)商品分类:网上超市与传统超市相比的一个优势是,当用户明确自己要买哪类商品时,用户可以使用商品分类功能快速找到需要的商品。

(2)商品预览:以列表的方式显示商品信息,这样可以在页面显示大量的商品信息,同时可以提供更多的商品浏览方式,如分类浏览、热门商品等。

(3)商品显示:当用户找到感兴趣的商品后需要显示商品的详细信息,包括商品简介、出产商、价格等。

(4)购物帮助:当用户在购物中遇到什么问题时,可以查看购物帮助获得相关信息。管理员会根据顾客反映的情况及时更改或增添购物帮助的内容。

(5)购物车:当用户找到需要的商品时,可以先将商品加入购物车,然后继续允许找其他的商品,购物车中存储当前用户打算购买的所有商品。

(6)商品订单:当用户在网上超市中找到了所有需要的商品后,决定购买,可以下订单。管理员会定期处理用户下达的订单,并根据用户订单的信息向用户送货。

(7)用户注册:提供用户注册功能以及相关的用户信息修改、密码维护等。

1.2.2销售管理员需求

网上超市的销售部分的管理员功能是维护销售的正常工作,它需要提供如下功能:

(1)商品管理:商品是网上超市的内容所在,管理员需要能够维护超市中的商品信息。同时与商品相关的商品类型等信息也需要管理员维护。

(2)会员管理:由于有注册用户,所以管理员需要对拥护账号进行管理,如删除一些无效账号等。

(3)订单处理:在用户下达订单后,管理员需要对用户订单进行处理,为用户准备订购的商品,并组织送货、收取货等。

(4)购物帮助管理:管理员要根据用户反映的情况及时修改购物帮助的内容,使用户得到即时的帮助。

1.2.3采购、仓存管理员需求

网上超市的系统中将采购员和仓存管理员统一为采购、仓存管理员,其主要需求如下:

(1)录入商品信息:商品是网上超市的内容所在,当有新进的货物时,采购管理员需要维护超市中的商品信息。

(2)维护供应商信息:采购管理员在进行采购工作时,就需要对供应商信息的查询。

(3)维护仓库信息:有多上仓库,什么商品存放在哪个仓库,这些都需要采购仓存管理员来维护。

1.2.4系统管理员需求

网上超市的系统管理员功能是维护系统的正常工作,它需要提供如下功能:

(1)对系统中用户的管理:系统中顾客,销售管理员,采购、仓存管理员都是系统的用户,这些用户就需要系统管理员进行统一管理。

(2)会员管理:由于有注册用户,所以管理员需要对拥护账号进行管理,如删除一些无效账号等。但这样的一个功能可以授权于销售管理员去处理。

1.2.5数据库需求分析

用户的需求具体体现在各种信息的提供、保存、更新和查询。这就要求数据库结构能够充分地满足各种信息的输入和输出。收集基本数据、数据结构和数据处理流程,为下一步的具体设计做好充分的准备。

网上超市管理系统要处理的数据流程图:

2 面向对象分析和设计

2.1      用例分析

     2.2     类和对象设计

3 逻辑结构设计

3.1 类和对象向关系模式转换

顾客信息(姓名、顾客编号、性别、出生年月、家庭地址、邮政编码、是否居住本地区、联系电话、身份证号、备注信息)

供应商信息(供应商编号、公司名称、联系人姓名、联系地址、所在城市、邮政编码、电话号码、传真号码、备注信息)

购物车(商品编号、顾客编号、商品名称、商品规格、时间、备注信息)

商品信息(商品编号、商品名称、单价、商品规格、商品产地、保质期、类别、备注信息)

订单信息(订单编号、商品编号、顾客编号、商品名称、商品规格、数量、顾客姓名、时间、备注信息)

员工信息(姓名、职工号、部门编号、性别、出生年月、家庭地址、邮政编码、联系电话、身份证号、备注信息)

进货信息(进货信息编号、供应商编号、公司名称、联系人姓名、商品编号、商品名称、商品规格、商品产地、商品数量、商品单价、进货日期、备注信息)

部门信息(部门编号、部门名称、负责人姓名)

销售信息(销售信息编号、顾客编号、顾客姓名、商品编号、商品名称、商品规格、商品产地、商品数量、商品单价、销售日期、折扣、备注信息)

仓库信息(仓库编号、仓库名称、存放商品类别、容量、负责人编号,负责人姓名)

留言信息(留言编号、留言标题、留言内容、留言日期、顾客编号、回复人编号、回复日期)

积分信息(积分编号、顾客编号、顾客姓名、积分)

商品入库(仓库编号、仓库名称、商品编号、商品名称、库存量、入库时间)

3.2 关系模式优化

顾客信息(姓名、顾客编号、性别、出生年月、家庭地址、邮政编码、是否居住本地区、联系电话、身份证号、备注信息)

供应商信息(供应商编号、公司名称、联系人姓名、联系地址、所在城市、邮政编码、电话号码、传真号码、备注信息)

购物车(商品编号、顾客编号、时间、备注信息)

商品信息(商品编号、商品名称、单价、商品规格、商品产地、保质期、类别、备注信息)

订单信息(订单编号、商品编号、顾客编号、数量、时间、备注信息)

员工信息(姓名、职工号、部门编号、性别、出生年月、家庭地址、邮政编码、联系电话、身份证号、备注信息)

进货信息(进货信息编号、供应商编号、商品编号、商品名称、商品规格、商品数量、商品单价、进货日期、备注信息)

部门信息(部门编号、部门名称、负责人姓名)

销售信息(销售信息编号、顾客编号、商品编号、商品数量、商品单价、销售日期、折扣、备注信息)

仓库信息(仓库编号、仓库名称、存放商品类别、容量、负责人编号)

留言信息(留言编号、留言标题、留言内容、留言日期、顾客编号、回复人编号、回复日期)

积分信息(积分编号、顾客编号、积分)

商品库存(仓库编号、商品编号、库存量、入库时间)

4 数据库物理结构设计

4.1       存取方法设计

4.2       存储结构设计

为了提高查询时间和空间的利用率,对网上超市管理系统的数据库作如下设计:

首先将网上超市管理系统日志文件存放在磁带上,因为数据库的数据备份和日志文件等只在故障恢复的时候才要使用,而且数据量很大。第二,把所有的基本表(如:顾客信息表)存放在一块磁盘上,而所有的索引则存放在另一块磁盘上。这样分开存放的目的在于查询时多个磁盘驱动器并行工作,提高了物理I/O读写效率,也加快了存取速度。

5 数据库完整性设计

5.1 主键及唯一性索引

5.2       参照完整性设计

1、由于员工信息表中的部门编号必须在部门信息中存在,而部门编号又是部门信息表中的主键,所以员工信息表中将属性部门编号设计为外键。

2、订单信息表中属性商品编号对应于商品信息表中的商品编号,因此将其设计为外键。

订单信息表中字段顾客编号对应于顾客信息表中的顾客编号,而顾客编号又是顾客信息的主键,所以将顾客编号作为订单信息表的外键。

3、进货信息表中属性商品编号对应于商品信息表中的商品编号,因此将其设计为外键。

进货信息表中字段供应商编号对应于供应商信息表中的供应商编号,而供应商编号又是供应商信息表的主键,所以将供应商编号作为进货信息表的外键。

4、销售信息表中字段顾客编号对应于顾客信息表中的顾客编号,而顾客编号又是顾客信息表的主键,所以将顾客编号作为销售信息表的外键。此外,销售信息表中的商品编号必须在商品信息表中存在,所以将商品编号也设计为改表的外键。

5、留言信息表中顾客编号需要在顾客信息表中存在记录,把顾客编号作为该表的外键。留言信息表中的属性回复人编号必须是员工信息表在存在的记录,所以把回复人编号也设为留言信息表的外键。

6、积分表中的属性顾客编号对应于顾客信息表中的顾客编号,而顾客编号是主键,所以将其设计为积分表的外键。

5.3 Check约束

1、对积分表中的积分字段设计check约束:积分必须是大于或者等于0的。

2、订单信息表、进货信息表和销售信息表对数量、商品数量设计check约束:即这些属性值必须取大于或者等于0的值。

5.4 Default约束

1、积分表中的积分字段设计default约束:积分默认值为0。

2、订单信息表中属性值数量默认为1单位。

5.5       触发器设计

1、 当采购完成后,即在进货信息表中添加信息时,建立该表上的插入触发器。该触发器的功能是当进货信息表中插入信息时,将进货的商品信息自动添加到商品信息表中以及在商品库存表在自动增加库存量。在这些动作完成之后,将进货信息表中添加的该信息删除。

2、 在订单信息表上建立插入触发器。如果订单中要添加的商品信息在商品信息表中不存在,则不予以添加。当订单信息成功提交,即订单信息表在成功插入新记录时,首先根据该顾客的积分情况自动生成折扣,然后自动将订单信息表中的记录添加到销售信息表中,并且将积分信息表中的记录更新或添加。在这些动作完成之后,再将订单信息表在的该记录删除。

3、 在商品库存量不足的时候需要系统提示工作人员及时的进行采购,所以在商品库存表上建立一个触发器就可以完成以上功能。当商品库存量到达一定的底线时,自动给采购、库存管理员留言,即在留言信息表中添加信息。这样可以对商品库存情况动态掌握。

6              数据库视图设计

1、为了方便查看部门信息,建立部门信息视图。显示部门信息表中的全部内容。

2、商品查询在网上超市管理系统中查看的非常频繁,需要建立商品信息视图。显示商品信息表中的全部信息。

3、建立顾客信息视图,显示顾客信息表中的全部内容。

4、在采购的时候,采购人员需要对供应商的信息进行查询,因此需要建供应商信息视图,显示该表中的全部内容。

5、当顾客在网上逛过超市后会将自己喜欢的商品先放入购物车中备选,这时就需要对购物车进行查询。所以有必要建立购物车信息视图。除了显示购物车表中的全部信息外,还需要连接查询并显示商品信息表中的商品名称和商品规格以及其他的商品信息。

6、顾客确定要购买商品的时候,需要提交订单信息,而在提交之前必须对其进行查询,所以需要建立订单信息视图。显示订单信息,以及连接查询并显示商品信息表中的商品名称和商品规格以及其他的商品信息。

7、对于网上超市的各部门的负责人来说,经常需要对员工的信息查看,故建立员工信息视图。除显示员工信息表中全部信息外,还要通过连接查询并显示部门名称。

8、采购人员在采购前后都需要对进货信息进行查询,这就需要建立进货信息视图。除显示进货信息表中全部信息外,还要通过连接查询并显示供应商的公司名称、联系人姓名、联系电话和商品名称、商品规格、商品产地、数量及单价。

9、每隔一段时间,都要查看一下收益如何,即查询销售情况。因此需要建立一个销售信息视图。显示销售信息表中的全部信息和通过连接查询并显示商品名称、商品规格、商品产地、数量及单价。除此之外,还要计算并显示销售总额。

10、建立仓库信息视图,显示仓库信息表中的所有信息即可。

11、建立留言信息视图。显示留言信息表中的全部信息以及通过连接查询并显示顾客姓名和回复人的姓名。

12、对积分的查询也是顾客经常查询的项目。所以非常有必要建立积分信息视图。显示积分信息表在的所有信息和连接查询并显示顾客姓名。

13、不管是在销售还是在采购的时候,都要对商品的库存量进行查询。因此要建立商品库存信息视图。显示库存信息以及通过连接查询并显示仓库名称和商品名称、商品规格等其他商品信息。

7              数据库存储过程设计

1、 顾客是网上超市管理系统的最主要的用户,也需要经常的添加和删除,故建立顾客删除存储过程。在删除某个顾客信息的时候,如果他的购物车中还有记录,则将其删除;若他提交了订单信息,也要把订单信息中的记录删除;最后还要把留言信息表和积分表中与该顾客相关的信息一并删除。

2、 建立删除员工的存储过程。如果该员工是某个部门的负责人,则一般情况下不予以删除,如果要删除,则必须对部门信息表中的负责人进行更新。若该员工是留言信息表中的回复人,则要对留言信息表在回复人编号进行修改或者删除。

3、 建立删除商品的存储过程。如果某个商品已经过了保质期或者已经被淘汰了,则要对这样的商品进行删除。首先要在商品信息表中把这些商品删除,在商品库存表将其删除,其次若果有顾客将该商品选入了购物车,甚至提交了订单,则要对顾客予以说明并将其从购物车表和订单信息表中删除。

8              权限设计

9 总结

理论联系实际才能做好一件事,学习一门课程同样是这样。通过一周的数据库课程设计实习,我受益匪浅,从中学到了许多新知识,这些知识是在课堂中不能学到或者说很难学到的。并且对数据库应用这一门课程有了更深一步的理解。在做课程设计中,我们可以把课堂上所学的理论知识和实践联系起来,在所要开发的系统中渐渐学会了融会贯通。同样通过对SQL的应用,也使我们熟练和巩固了对SQL的理解。这样我们对开发系统的整个过程也有了一个系统的了解。

这次课程设计,我选择的课题是《教务管理系统》,在教务管理系统的开发中采用了完整的数据库设计的全过程,从需求分析到概念结构设计,到逻辑结构设计,再到物理结构设计,最后到数据库的实施和维护,每一步都认真的分析和实施。当然,在本次课程设计的成果中还存在许多的不足之处,这就需要我们学习更多的知识,进行更深研究。

在这次实习中,我们完全投入到了开发系统的世界里。结束后明白了理论和实践要想充分地结合,需要非常扎实的基本功。这就说明学好基础知识是理论付诸实践的前提。在开发教务管理系统中我学到了很多,希望在以后能充分利用实习的机会充实自己,用所学的理论知识充分去实践,在实践中又要努力去巩固理论知识。只有这样,才能把一门课程甚至一门学科学精、学透

参考资料

1.     萨师煊,王珊.数据库系统概论.高等教育出版社.第三版.2000

2.     龚波等译. SQL SERVER 2000教程.北京希望电子出版社

3.     史嘉权,史红星,李博等.数据库系统概论习题、实验与考试辅导.清华大学出版社.2006

4.     赵乃真等.信息系统设计与应用.清华大学出版社.2005

注:由于这里不好排版,文章中的表格和图片没有显示出来,我打包成附件了,可以下载查看。

数据结构课程设计-学生成绩管理系统的设计

一、需求分析

1. 系统菜单的主要功能

(1)输入若干条记录

(2)查找并修改记录

(3)查找并删除记录

(4)成绩排序

(5)查找并显示一条记录

(6)将数据载入内存中

(7)将所有数据写入文件中

(0)退出程序

2. 功能分析

功能1为输入一条记录到结构体中去。

功能2、3和5算法相似,都是先查找成绩,2、3在此基础上再对查找出的信息进行操作。因为学生姓名定义成了字符数组的形式,因此在运用选择法进行排序的时候,要用到strcmp,strcpy等函数

功能4为成绩排序,可按学生学号排序或某单科成绩或总分排序,并输出相关的学生信息等。

功能6和7是对文件的操作,提前准备好数据。

二、总体设计

“学生成绩管理系统”包括:成绩录入、修改、删除、成绩统计和信息保存、载入这几个模块。

1、 主函数 main()

利用无限次循环while(1)和swithch()实现各函数的调用,系统根据输入的数字选项来调用相应的函数。

2、 菜单选择函数showmenu ()

这是一个无参函数,主要实现“功能选择”的界面,在这个界面里有显示系统的各项功能选单,根据每个功能前面的序号进行选择。等执行完每一个函数功能后,按任一键回到主界面也要通过这个函数来实现!3、 输入记录函数addstudent (stu *s)这是一个带参函数,用来执行第学生成绩记录的输入,当学生为0时停止输入。

算法:利用函数参数s,并将s->next设为NULL。每输入一个数据就声明一个新节点p,把p->next设为NULL,并且链接到之前列表的尾端。

4、 显示记录函数showstudent (stu *s)这是一个不返回值的有参函数,形参为“链表头的指针”,负责对全部学生成绩记录的输出,不足之处就是不能对学生成绩进行分页显示。算法:先将p结点的指针指向第一个结点,将p结点(即第一个结点)的数据输出。然后再将p结点的指针指向p指针的的指针(即下一结点),将p结点(即第一结点)的数据输出。重复执行此步聚直到p指针指向NULL为止。

5、 查找记录函数findstudent (stu *s)这是一个不返回值的有参函数,形参为“链表头的指针”,实现按学号对某个学生进行查找,并显示所查找到的记录。算法:采用线性查找法往下一个节点查找。输入所要查找的学生的学号s,设一个指针变量p,先指向第一个结点,当strcmp(p->name,s) &&p != NULL时,使p后移一个结点,如果p!=NULL,输出p所指的结点。

6、 删除记录函数delstudent (stu *s)这是一个有参函数,形参为“链表头的指针”,先输入要删除的学生记录的学号,找到后显示该学生信息,等确认后便可按“Y”进行删除。算法:从p指向的第一个结点开始,检查该结点中的num值是否等于输入的要求删除的那个学号。如果相等就将该结点删除,如不相等,就将p后移一个结点,再如此进行下去,直到遇到表尾为止。

7、保存数据到文件函数savestudent (stu *s)这是一个不返回值的有参函数,形参为“链表头的指针”,可以把学生记录保存在电脑上由自己任意命名的二进制文件。

8、从文件读数据函数loadstudent (stu *s)这是一个不返回值的有参函数,形参为“链表头的指针”,根据输入的文件地址进行读取。

三、程序流程图

1)成绩统计:

2)信息录入:

3)信息修改:

4)信息删除:

4)信息查询:

4)信息保存:5)主函数:

四、程序调试及体会

1)程序演示:

2)程序调试:

(1)刚开始没有那个初始化函数,程序运行后,没有输入任何数据就试得去执行显示功能,结果显示的是一些乱码!加入初始化函数后,这种现象也随之消失。

(2)刚开始执行输入函数,按学号顺序输入十个学生的成绩,输完后执行显示功能,学生成绩记录是按学号的反顺序显示的,试着在其中增加一些语句,希望能把学号按正常顺序显示,但暂时没有成功,所以在输入成绩时只能按学号反顺序输入,最后就按学号正常顺序输出了。

(3)刚开始时,先把成绩按平均分排序,再插入一个学生的成绩,执行显示功能,虽然插入的学生的成绩能正常插入,但该学生的名次为0。后来,在插入成绩之后,调用排序函数,把所有成绩重新排序一次。

(4)在输入函数中设了一个无限循环,可以输入无数个学生的成绩信息,当学号为0的时候则停止输入。

(5)输入太多个学生的成绩时,屏幕显示不能控制为一页一页显示,所以为了方便起见,不要输入太多记录,十七左右为最佳。

(6)在没有输入任何信息的情况下,去执行排序功能,最后显示有一个记录,学号、姓名为空白,成绩都为0,名次为1。

(7)在输入选项时不能输入字母,否则会死循环,建议不要乱输字母。

3)心得体会:

经过一个星期的课程设计,感觉自己收获不少!

首先是:链表是数据结构的基本体现,所以这个课程设计里面主要都是用链表,而已要达到这样的功能,使用链表相当方便,但不容易理解,所以在这方面我很了很多的时间看课本和参考课外书,使C语言的知识强化了不少。

其次,在做课程设计的过程中,发现了平时很多没有注意到的问题,例如:返回值函数和不返回值函数两者在主函数中的调用是不同的…………

更重要的是,这次课程设计虽然花了我不少时间,但正是这些时间,让我见识到了要学好C语言,数据的处理是相当重要的。这个学生成绩管理系统都是在自己知识范围内完成的,所以界面清晰简单,可能不是很好看,但绝对实用!

从这里我也得到一个体会,做一个程序,或者开发一个软件,应该着重从它的后台制作入手,不能做出一个中看不中用的程序或者软件。

相信这次的课程设计为我以后继续从事计算机工作打了一个小小的开头。

参考书目;

[1]谭浩强. C程序设计(第三版) . 北京:清华大学出版社, 2006

[2]谭浩强. C程序设计上机指导(第三版) . 北京:清华大学出版社, 2005

[3]严蔚敏、吴伟民. 数据结构(C语言版) . 北京:清华大学出版社, 2006

计算机科学与技术系课程设计评分表

数据结构 程序设计 用双向循环链表建立一个学生管理系统,要求实现插入,删除,排序,修改等功能。

好像没有数据结构的 你试试c++语言面向对象程序设计课程设计

这个网站能免费下几个,不能免费下的就要收费了

本站免费计算机课程设计论文下载

本人原创计算机类课程设计免费下载,销售计算机毕业论文

请把我的网站介绍给同学们.谢谢支持本站

ACCESS课程设计库存管理工资管理系统 sqlserver数据库课程设计 c++语言面向对象程序设计课程设计 vb课程设计学生成绩系统

asp留言板(没有论文) 计算机实训计算机组装与维护课程设计

简单的网页设计没有论文 office课程设计 操作系统课程设计

另有以上没有列出的计算机课程设计为收费材料30元一份 更多

用一下我的吧

是我大一时写的

有什么问题可以追问

#include<iostream.h>

#include<string.h>

typedef struct

{

char name[10]

long num

float score

}student

void creat(student stu[])

void insert(student stu[])

void Delete(student stu[])

void lookup(student stu[])

void update(student stu[])

void stat(student stu[])

int length(student stu[])

void print(student stu[])

void creat(student stu[])

{

cout<<"请输入学生人数:"

int n

cin>>n

cout<<"姓名"<<'t'<<"学号"<<'t'<<"成绩"<<endl

for(int i=1i<=ni++)

{

char newname[10]

long newnum

float newscore

cin>>newname

strcpy(stu[i].name,newname)

cin>>newnum

stu[i].num=newnum

cin>>newscore

stu[i].score=newscore

}

strcpy(stu[i].name," ")

stu[i].num=0

stu[i].score=0

}

void print(student stu[])

{

cout<<"姓名"<<'t'<<"学号"<<'t'<<"成绩"<<'n'

int i=1

while(i<=length(stu))

{

cout<<stu[i].name<<'t'<<stu[i].num<<'t'<<stu[i].score<<'n'

i++

}

cout<<'n'

}

void lookup(student stu[])

{

cout<<"请输入你要查询的学号:"

long num

cin>>num

int i=1

while(stu[i].num)

{

if(stu[i].num==num)

{

cout<<"姓名"<<'t'<<"学号"<<'t'<<"成绩"<<'n'

cout<<stu[i].name<<'t'<<stu[i].num<<'t'<<stu[i].score<<'n'

break

}

i++

}

if(!stu[i].num)

{

cout<<"你要查询的学号不存在,请重新输入!"<<'n'

lookup(stu)

}

cout<<'n'

}

void insert(student stu[])

{

if(length(stu)==100)

{

cout<<"存储空间已满,不能进行插入操作!"<<'n'

}

else

{

cout<<"请输入要插入的位置:"

int m

cin>>m

int n=length(stu)

if(m>n+1)

{

cout<<"插入位置不正确,请重新插入!"<<'n'

insert(stu)

}

else

{

for(int i=n+1i>=mi--)

{

strcpy(stu[i+1].name,stu[i].name)

stu[i+1].num=stu[i].num

stu[i+1].score=stu[i].score

}

cout<<"请依次输入姓名,学号,成绩"<<'n'

char newname[10]

long newnum

float newscore

cin>>newname

strcpy(stu[m].name,newname)

cin>>newnum

stu[m].num=newnum

cin>>newscore

stu[m].score=newscore

}

}

}

int length(student stu[])

{

int i=1

while(stu[i].num)

{

i++

}

return (i-1)

}

void Delete(student stu[])

{

cout<<"请输入你要删除的学号:"

long num

cin>>num

int i=1

while(stu[i].num)

{

if(stu[i].num==num)

{

int n=length(stu)

for(int j=ij<nj++)

{

strcpy(stu[i].name,stu[i+1].name)

stu[i].num=stu[i+1].num

stu[i].score=stu[i+1].score

}

strcpy(stu[j].name," ")

stu[j].num=0

stu[j].score=0

break

}

i++

}

if(!stu[i].num)

{

cout<<"你要删除的学号不存在,请重新输入!"<<'n'

Delete(stu)

}

}

void stat(student stu[])

{

cout<<"不及格的学生是:"<<'n'

cout<<"姓名"<<'t'<<"学号"<<'t'<<"成绩"<<'n'

int i=1

while(stu[i].num)

{

if(stu[i].score<60)

{

cout<<stu[i].name<<'t'<<stu[i].num<<'t'<<stu[i].score<<'n'

}

i++

}

cout<<'n'

cout<<"成绩为‘良’的学生是:"<<'n'

cout<<"姓名"<<'t'<<"学号"<<'t'<<"成绩"<<'n'

i=1

while(stu[i].num)

{

if(stu[i].score>=60 &&stu[i].score<75)

{

cout<<stu[i].name<<'t'<<stu[i].num<<'t'<<stu[i].score<<'n'

}

i++

}

cout<<'n'

cout<<"成绩为‘中’的学生是:"<<'n'

cout<<"姓名"<<'t'<<"学号"<<'t'<<"成绩"<<'n'

i=1

while(stu[i].num)

{

if(stu[i].score>=75 &&stu[i].score<90)

{

cout<<stu[i].name<<'t'<<stu[i].num<<'t'<<stu[i].score<<'n'

}

i++

}

cout<<'n'

cout<<"成绩为‘优’的学生是:"<<'n'

cout<<"姓名"<<'t'<<"学号"<<'t'<<"成绩"<<'n'

i=1

while(stu[i].num)

{

if(stu[i].score>=90)

{

cout<<stu[i].name<<'t'<<stu[i].num<<'t'<<stu[i].score<<'n'

}

i++

}

cout<<'n'

}

void update(student stu[])

{

cout<<"请输入要修改的位置:"

int m

cin>>m

if(m>length(stu))

{

cout<<"你要修改的位置不存在,请重新输入!"<<'n'

update(stu)

}

else

{

cout<<"请依次输入更改后的姓名,学号,成绩"<<'n'

char newname[10]

long newnum

float newscore

cin>>newname

strcpy(stu[m].name,newname)

cin>>newnum

stu[m].num=newnum

cin>>newscore

stu[m].score=newscore

}

}

void main()

{

cout<<"首先建立学生管理系统!"<<'n'

student stu[101]

creat(stu)

print(stu)

cout<<"len:"<<length(stu)<<endl

int j=100

cout<<"请选择您要进行的操作(1为插入,2为删除,3为查找,4为修改,5为统计,0为取消操作)"

while(j)

{

cout<<"请您选择要进行的操作:"

cin>>j

switch(j)

{

case 1:

{

insert(stu)

print(stu)

break

}

case 2:

{

Delete(stu)

print(stu)

break

}

case 3:

{

lookup(stu)

break

}

case 4:

{

update(stu)

print(stu)

break

}

case 5:

{

stat(stu)

break

}

default:

break

}

}

cout<<"线性表中共有"<<length(stu)<<"个学生"

}

以上就是关于数据库sql 的课程设计怎么做,要借哪些书看,求大神指教全部的内容,如果了解更多相关内容,可以关注,你们的支持是我们更新的动力!

版权声明:我们致力于保护作者版权,注重分享,被刊用文章【数据结构教务管理系统项目】因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!;

原文链接:https://www.yxiso.com/zhishi/955065.html

发表评论:

关于我们
院校搜的目标不仅是为用户提供数据和信息,更是成为每一位学子梦想实现的桥梁。我们相信,通过准确的信息与专业的指导,每一位学子都能找到属于自己的教育之路,迈向成功的未来。助力每一个梦想,实现更美好的未来!
联系方式
电话:
地址:广东省中山市
Email:beimuxi@protonmail.com

Copyright © 2022 院校搜 Inc. 保留所有权利。 Powered by BEIMUCMS 3.0.3

页面耗时0.0351秒, 内存占用2.07 MB, 访问数据库23次

陕ICP备14005772号-15