软件工程课程设计实验报告学生信息管理系统

合集下载

软件工程实验报告-学生信息管理系统

软件工程实验报告-学生信息管理系统

《软件工程》课程设计报告课程设计题目指导教师:卢照____________ 班级:__0902__________ 小组名单:_杨攀张镇东____孙江沛陶大天完成日期:_2012年 6__月_ 计算机科学与技术系目录一.需求分析 (2)1.1引言 (2)1.1.1 编写目的(阐明编写需求说明书的目的,指明读者对象。

) (2)1.1.2 功能分析 (2)1.1.3 任务概述 (3)1.2需求分析1.21对功能的规定 (4)1.22E—R图1.3数据描述 (8)1.3.1动态数据(包括输入数据和输出数据。

).. 错误!未定义书签。

1.3.2数据词典 (9)1.4对性能的规定......................................................... 错误!未定义书签。

1.4.1精度.................................................................. 错误!未定义书签。

1.4.2灵活性.............................................................. 错误!未定义书签。

1.5输人输出要求......................................................... 错误!未定义书签。

二.概要设计 (10)2.1处理流程 (10)2.2总体结构和模块外部设计 (10)2.3功能分配(表明各项功能与程序结构的关系。

) (12)三.详细设计 (14)3.1软件结构 (14)3.2程序逻辑结构描述 (17)3.3限制条件 (19)3.4测试要点 (19)四.测试分析 (20)4.1测试概要 (20)4.2测试结果及发现 (21)4.2.1 整体测试 (21)4.2.2 登陆模块测试计划 (24)4.2.3 登陆模块测试结果 (26)4.2.4 管理模块测试计划 (26)4.2.3 管理模块测试结果 (27)一.需求分析1.1引言1.1.1 编写目的(阐明编写需求说明书的目的,指明读者对象。

软件工程课程设计学生信息管理系统

软件工程课程设计学生信息管理系统

课程设计汇报学生信息管理系统学院年级专业学生姓名指导教师提交日期摘要学生信息管理系统对于学校旳决策者和管理者来说都至关重要是一种教育单位不可缺乏旳部分。

本文简介了学生信息管理系统旳整个开发过程。

将整体划分为可行性分析、需求分析、总体设计、详细设计等几种阶段,并对各个阶段做了详细旳阐明。

在开发措施上本系统运用了软件工程化旳思想和措施,总体上采用老式措施学开发措施,并采用VisualStudio6.0作为开发工具,SQL Server 作为后台数据库。

本系统具有学生信息管理,班级管理,课程管理,成绩管理,信息查询、成绩查询等模块,可分别完毕平常学生信息,班级信息,课程信息,成绩信息旳添加、修改、删除、查询、打印等功能。

关键词信息管理系统、软件工程、老式措施学、数据库。

目录摘要............................................................................. 错误!未定义书签。

第1章绪论 (2)1.1课题背景 (2)1.2 目旳背景与意义1.3 项目开发旳目旳第2章可行性分析..................................................... 错误!未定义书签。

2.1问题定义2.2可行性分析2.2.1技术可行性................................................ 错误!未定义书签。

2.2.2 经济可行性2.2.3 操作可行性2.2.4 法律可行性第3章需求分析…………………………………………………………………………………………………3.1 功能需求3.2 界面需求3.3 性能需求3.4 分析建模3.4.1 数据模型3.4.2 功能模型3.4.3 行为模型第4章总体设计4.1 目旳与任务4.2 设计与思绪4.3 各模块旳功能描述4.4 数据库设计第5章详细设计结论............................................................................... 错误!未定义书签。

软件工程课程设计---学生信息管理系统

软件工程课程设计---学生信息管理系统

软件工程课程设计---学生信息管理系统n1.1 BackgroundWith the XXX。

XXX in size and the number of students and their n is increasing rapidly。

us n management systems for students have emerged to manage student n and improve the efficiency of system management work。

The student n management system combines Eclipse (front-end development) with SQL database (back-end management) and XXX standardized management。

scientific statistics。

and fast queries of student n。

which greatly ces the workload of management.The database plays a very important role in an n management system。

The quality of database structure design XXX of the n system。

Reasonable database structure design can improve the efficiency of database storage。

XXX。

At the same time。

reasonable data structure will also be XXX.1.2 XXX DevelopmentThis system uses Eclipse development tool as the development system program and SQLsever database access XXX query of database n。

软件工程课程设计-学生信息管理系统

软件工程课程设计-学生信息管理系统

数据库设计
数据表设计
01
根据系统需求,设计合理的数据表结构,包括学生信息表、课
程信息表、成绩信息表等。
数据关系设计
02
定义数据表之间的关系,如学生信息表和成绩信计
03
采用加密技术对敏感数据进行加密存储和传输,确保数据的安
全性。
界面设计
界面风格设计
版本控制
Git
关键代码实现
学生信息管理
实现学生信息的增删改查功能 ,包括基本信息、成绩、奖惩 情况等。
课程信息管理
实现课程信息的增删改查功能 ,包括课程名称、学分、任课 教师等。
用户登录验证
通过用户名和密码进行身份验 证,采用MD5加密密码确保安 全性。
班级信息管理
实现班级信息的增删改查功能 ,包括班级名称、班主任、学 生列表等。
THANKS
感谢观看
等。
课程管理
系统应支持课程的添加、修改、查询和删除 ,包括课程名称、课程描述、授课老师等。
用户管理
系统应提供用户注册、登录、权限分配等功 能,确保不同用户角色的操作权限。
非功能性需求
系统性能
系统应保证稳定运行,处理速 度快,响应时间合理。
数据安全
系统应采取必要的数据加密和 备份措施,确保学生信息的安 全性和完整性。
3
学生信息管理系统通常采用B/S或C/S架构,具有 用户界面友好、操作简便、数据安全性高等特点 。
设计目标与要求
实现学生信息的全面管 理,包括基本信息、成 绩信息、课程信息、奖
惩信息等。
01
保证数据的安全性和完 整性,采用合理的权限 控制和数据备份机制。
03
采用先进的软件开发技 术和工具,确保系统的

软件工程课设学生信息管理系统

软件工程课设学生信息管理系统

一.学生信息管理系统需求分析目录1.1.1.系统任务概述………………………………….1.1.2.功能需求……………………………………….1.1.3.数据流图………………………………………1.1.4.数据字典……………………………………..1.1.5.E---R图………………………………………..1.1.6.性能要求………………………………………..1.1.7.运行环境…………………………………………一.学生信息管理系统需求分析1.1.1.系统任务概述目前,大部分高校的学生信息管理已经越来越智能化,越来越简便化,所以对学生信息管理系统的要求也越来越多。

学生信息管理系统的主要任务有:管理员对学生信息的管理,教师对学生信息的更新、查询等,学生对自己信息的查询。

1.1.2.功能需求因为访问学生信息系统的人员的职责和功能的不同,所以要求所实现的功能也不同1.管理员需要对学生信息系统的要求有:建立学生的学籍,对每学期成绩出现特殊情况的学生统计(如:对考试成绩不及格的学生的统计),以及这些学生的详细信息。

2.教师对学生信息系统的要求有:对每位同学学习课程表现的评定,课程结束后对学生考试成绩的录入,对学生成绩的汇总,求学生成绩的平均值以及各分数段的人数。

3.学生对学生信息系统的要求:通过每位学生特有的登录方式登录学生信息管理系统,对自己课程的选定、修改、查询等,对自己课表的查询,对自己所修课程最后成绩及学分的查询以及对自己专业的教学计划的查询。

1.1.3.数据流图首先,对学生信息管理系统的需求分析,该系统主要有三中角色:管理员、教师、学生。

每种角色对系统的要求分别是:管理员:(1).建立学生入学时的学生学籍(2).对学生入学后的学院、专业、班级、宿舍的录入。

(3). 对每学期成绩不及格学生的统计,并查看其详细信息。

(4).对中途辍学、转专业、转校等学生信息的删除、修改等教师:(1).对学生成绩的录入及分析。

(2).对学生课程的评定。

软件工程 学生管理系统 实验报告

软件工程 学生管理系统 实验报告

软件工程学生管理系统实验报告1. 引言学生管理系统是一种常见的软件应用程序,用于在学校或教育机构中管理学生的信息和相关任务。

本实验旨在设计和开发一个简单的学生管理系统,并使用软件工程的方法进行需求分析、设计、编码和测试。

2. 需求分析在进行系统设计之前,我们首先对需求进行分析。

学生管理系统应具备以下功能: - 学生信息维护:包括学生的基本信息(姓名、学号、性别等)以及其他详细信息(联系方式、家庭住址等); - 成绩管理:记录学生的考试成绩,并提供成绩统计功能; - 课程管理:管理学生的选课和退课操作; - 学生出勤记录:记录学生的课堂出勤情况。

3. 设计基于需求分析,我们设计了以下系统结构: - 用户界面(UI):提供用户与系统进行交互的界面,包括菜单、表单等;- 控制层(Controller):处理用户请求,调用逻辑层进行相应的处理; - 逻辑层(Service):实现系统的业务逻辑,包括学生信息管理、成绩管理、课程管理和出勤记录管理等; - 数据访问层(DAO):负责与数据库进行交互,对数据进行增删改查操作。

4. 编码在实际开发过程中,我们使用Java编程语言进行开发,并采用了Spring Boot框架、MyBatis框架和MySQL数据库。

具体的编码过程包括以下几个步骤: 1. 创建项目:使用Spring Initializr创建一个新的Spring Boot项目; 2. 定义实体类:定义学生、成绩、课程和出勤记录等实体类,并使用注解标注属性和关联关系; 3. 实现控制层:编写Controller类,处理用户请求,并调用逻辑层进行相应的处理; 4. 实现逻辑层:编写Service类,实现系统的业务逻辑; 5. 实现数据访问层:编写DAO类,使用MyBatis框架对数据库进行操作; 6. 配置数据库连接:在application.properties文件中配置数据库连接信息; 7. 测试和调试:使用JUnit等工具进行单元测试,并调试程序,保证系统的正常运行。

《软件工程》学生信息管理系统课程设计报告

《软件工程》学生信息管理系统课程设计报告

软件工程课程设计报告本题目:学生信息管理系统专业班级:计算机101班学生:周遥罗晨指导老师:曾婕、董跃华老师2013年7月5日目录一、问题定义 (5)1. 软件名称 (5)2. 项目提出的背景 (5)3. 软件目标及任务 (5)二、可行性研究 (7)1.目的 (7)2.背景及功能 (7)3. 可行性分析 (7)3.1技术可行性 (7)3.2经济可行性 (7)3.3法律可行性 (7)3.4新系统方案设想 (8)4. 分析结论 (8)三、项目开发计划 (9)1. 引言 (9)1.1 编写目的 (9)1.2 项目背景 (9)2. 项目概述 (9)2.1工作内容 (9)2.2条件与限制 (10)2.3主要参加人员 (10)2.4产品 (10)2.5运行环境 (10)2.6验收标准 (10)2.7完成项目的最迟期限 (10)3. 实施计划 (10)3.1工作任务的分解与人员分工 (10)3.2进度 (11)3.3关键问题 (11)4. 支持条件 (11)4.1计算机系统支持 (11)四、需求分析 (12)1. 引言 (12)1.1 编写目的 (12)1.2 项目背景 (12)1.3 查看资料 (12)2. 任务概述 (12)2.1 目标 (12)2.2 用户的特点 (12)2.3 假定与约束 (13)3. 需求规定 (13)3.1 对功能的规定 (13)3.2 对性能的规定 (13)3.3 输入输出要求 (14)3.4 故障处理要求 (14)4. 运行环境规定 (15)4.1设备 (15)4.2支持软件 (15)五、概要设计 (16)1. 引言 (16)1.1 编写目的 (16)1.2 项目背景 (16)1.3 查看资料 (16)2. 总体设计 (16)2.1 需求规定 (16)2.2 运行环境 (17)2.3 基本设计概念和处理流程 (17)2.4 结构 (17)2.5 功能需求与程序的关系 (18)2.6 尚未解决的问题 (18)3. 接口设计 (18)3.1用户接口 (18)3.2外部接口 (19)3.3内部接口 (19)4. 运行设计 (19)4.1运行模块组合 (19)4.2运行时间 (20)5. 系统出错处理设计 (20)5.1出错信息 (20)5.2补救措施 (20)5.3软件维护设计 (20)六、数据库设计 (21)1. 引言 (21)1.1 编写目的 (21)1.2 项目背景 (21)2. 外部设计 (21)2.1标识符和状态 (21)2.2使用它的程序 (21)2.3约定 (21)2.4支持软件 (21)3. 结构设计 (22)3.1概念结构设计 (22)3.2逻辑结构设计 (22)3.3物理结构设计 (22)4. 运用设计 (23)4.1安全保密设计 (23)七、详细设计 (24)1. 引言 (24)1.1 编写目的 (24)1.2 项目背景 (24)2. 程序系统的结构 (24)3. 系统首页面模块的设计说明 (26)3.1程序描述 (26)3.2功能 (26)3.3输入项 (26)3.4输出项 (28)3.5算法 (29)4. 系统功能模块的设计说明 (29)4.1程序描述 (29)4.2功能 (29)4.3输入项 (29)4.4输出项 (43)4.5算法 (47)八、测试报告 (48)1. 引言 (48)1.1 编写目的 (48)1.2 项目背景 (48)1.3 定义 (48)1.4 参考资料 (48)2. 测试概要 (49)3. 测试结果与发现 (49)3.1测试具体实施 (49)4. 对软件功能的结论 (51)4.1功能模块 (51)5. 分析摘要 (51)6. 测试资源消耗 (52)九、用户手册 (53)1. 引言 (53)1.1 编写目的 (53)1.2 项目背景 (53)1.3 参考资料 (53)2. 用途 (53)2.1 功能 (53)2.2 性能 (53)3. 运行环境 (54)3.1 硬件设备 (54)3.2 支持软件 (54)4. 使用过程 (54)十、附录 (58)一、问题定义1.软件名称学生基本信息管理系统。

软件设计课程设计报告 学生信息管理系统

软件设计课程设计报告 学生信息管理系统

软件设计课程设计报告题目:学生信息管理系统系部名称:专业名称:班级:学号:学生姓名:指导教师:时间:一、课程设计目的1)对C 各部分知识的综合应用能力 2)提高程序设计的能力3)提升对于较大程序的抽象分析设计能力 4)学习调试和测试的技巧二、课程设计内容1)熟悉C 实验环境,按给定的上机步骤练习完成; 2)熟悉C 程序的编辑,编译,链接和运行的过程。

3)编译一个应用系统程序,形成一个软件系统。

三、需求分析随着当今社会发展,信息化水平逐步提高,对教务管理有了新的要求,因此,编写一个信息管理系统是十分有必要的。

该软件主要是实现对学生信息进行系统化的管理,首先可以对学生基本信息进行输入和读取,其次查找并显示特定学生的相关信息,然后可以插入学生的相关信息,还有就是可按学生相关信息排序,以求达到简易操作的目的。

四、概要设计1.系统结构图(功能模块图)和数据变量说明2.功能模块说明1.输入模块2.列表模块3.查找模块4.修改模块5.增加模块6.成绩排序五、运行情况1.主菜单2.录入数据3.输出数据4.查找数据5.增加数据5.增加数据6.修改数据7.成绩排序8.退出系统六、设计体会和反思通过两周的上机实习,我对C语言又有了崭新的认识。

C语言的学习是一个系统的过程,需要长期的知识积累和储备并辅以大量的上级实际操作练习,自己也应该有所体会,在实践中成长,在实践中求知。

这次我设计的课题是学生信息管理系统。

课题要求对学生信息实现一系列基本操作。

我选择通过结构体数组来实现这个设计。

通过fread和fwrite两个函数实现对文件的读写,过程比较简洁(这里也有参考《C程序设计》中某例题的思想)。

通过大量的符号和printf语句,使得操作界面更加和谐友善,这些都是我通过这次实习积累的经验。

同时,设计完成后我也发现了代码中的一些不足,例如在录入数据时要求输入序号的值,这个我认为操作比较复杂,但由于时间紧迫,未能提出完美的解决方案,但此问题并不影响程序的运行和要求的实现。

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

软件工程课程实验报告系统名称___ 学生信息管理系统___学院___ 计算机学院信息_ __学生信息管理系统设计文档1.可行性研究1.1技术可行性已经有人开发过,并且我们也都使用过相类似系统,对其一般性的软件和操作环境、编译环境都比较熟悉,所以说在技术上来说是可行的。

1.2经济可行性当前系统只对服务器有关的要求,在服务费用方面,支出在你那个承担的范围,以后的维护及其他设备的总共费用在可以承担的范围。

用当前系统可以节约出能够支付当前系统的直接支出,以后维护费用更是比以前的机制节约很多钱。

1.3操作可行性系统的操作方式在这个用户组织内能行得通。

2.需求分析2.1输入让学生在纸面上填写相关内容,然后等待辅导员或管理员的审批确认后,再输入数据库中保存。

2.2输出学生选择用户选项进入系统后,系统可经有算法程序输出学生基本信息表,学习成绩表等。

2.2.1打印输出可打印基本信息、学习成绩等各种表格以及在对相应信息进行统计操作后的表格。

2.2.2文件输出可将所有打印表格输出到EXCEL文件中,以便用户使用其它的EXCEL软件改变表格的大小及字体。

2.3故障处理2.3.1内部故障处理在开发阶段可以随即修改数据库里的相应内容。

2.3.2外部故障处理对编辑的程序进行重装载时,第一次装载认为错,修改。

第二次运行,在需求调用时出错,有错误提示,重试。

2.4性能要求分析2.4.1系统易操作性所开发的系统应做到操作简单,尽量使系统操作不受用户对电脑知识水平的限制。

2.4.2系统具有可维护性由于系统涉及的信息比较广,数据库中的数据需定期修改,系统可利用的空间及性能也随之下降,为了使系统更好地运转,学院可以对系统数据及一些简单的功能进行独立的维护及调整。

2.4.3系统具有开放性该系统能够在开放的硬件体系结构中运行,并且能与其他系统顺利连接,不会因外部系统的不同面要做在量的修改工作。

3.概要设计3.1基本设计概念和处理流程管理员通过密码认证,进入信息管理页面对学生相关信息的录入、更新、修改、添加等操作,也可以通过查询界面对学生信息进行完全的查询,而学生和相关人员只能通过公共的查询界面对学生信息进行查询,如要对学生信息进行完全查询就需要得到管理员的同意。

3.2接口设计本系统采用快速原型开发工具Visual Basic 6.0进行开发,所提供的不同层次的接口,都具有高度的集成性,本系统没有采用低级语言设计和完成自定义接口,因此接口设计部分已经由不同方式的组件来完成了,以下只做简单说明。

3.2.1用户接口说明将向用户提供的命令和它们的语法结构,以及软件的回答信息。

3.2.2外部接口说明本系统同外界的所有接口的安排包括软件与硬件之间的接口、本系统与3.2.3内部接口说明本系统之内的各个系统元素之间的接口的安排。

数据库接口设计采用4.详细设计4.1控制流程图4.1.1主模块软件结构4.1.2管理员登陆软件结构4.1.3用户查询软件结构4.2源程序流程图5、项目测试功能截图:5.1 登陆界面5.2 学生用户功能界面5.3 学生查询功能5.4 管理员管理界面5.5 管理员输入功能5.6 管理员删除功能5.7 管理员查询功能5.8 管理员修改功能5.9 管理员插入功能5.10 统计功能5.11 分类功能5.12 显示功能5.13 管理员保存功能文件保存名为:STUDENT 路径为:C:\6、项目管理6、1 人员管理团队负责人:陶修赟小组成员:万富,洪鑫,汪贤惠,项鑫6、2产品管理本产品工作于Win-TC工作环境,用于对学生成绩的管理。

学生用户,可进行查询课程成绩;管理员可对学生及其成绩进行录入、修改、查询、排列等功能。

本系统可进行维护,修改。

6、3进程管理可行性分析:5月23日-5月24日标志:提交可行性分析报告项目开发计划:5月25日-5月26日标志:提交项目开发计划需求分析:5月27日-5月27日标志:完成需求分析报告软件设计:5月30日-6月1日标志:完成软件分析与设计文档编程实现:6月2日-6月10日标志:代码编写全部完成软件测试:6月13日-6月14日标志:完成软件测试,可投入使用6、4项目计划甘特图7、编码#include <stdio.h>#include <stdlib.h>#include "string.h"#include "conio.h"#define HEADER1 " ----------------------------STUDENT---------------------------------- \n" #define HEADER2 " | number | name |Comp|Math|Eng | sum | ave |mici | \n"#define HEADER3 " |---------------|---------------|----|----|----|--------|-------|-----| "#define FORMAT " | %-10s |%-15s|%4d|%4d|%4d| %4d | %.2f |%4d |\n"#define DATA p->data.num,p->,p->data.egrade,p->data.mgrade,p->data.cgrade,p->data.total,p->data.a ve,p->data.mingci#define END " --------------------------------------------------------------------- \n"int saveflag=0; /*是否需要存盘的标志变量*/typedef struct student /*标记为student*/{char num[10]; /*学号*/char name[15]; /*姓名*/int cgrade; /*C语言成绩*/int mgrade; /*数学成绩*/int egrade; /*英语成绩*/int total; /*总分*/float ave; /*平均分*/int mingci; /*名次*/};typedef struct node /*定义每条记录或结点的数据结构,标记为node*/{struct student data;struct node *next;}Node,*Link;void menuchoice(){system("cls"); /*清屏.与clrscr()功能相同*/textcolor(10); /*在文本模式中选择新的字符颜色*/gotoxy(7,5);cprintf(" The Students' Grade Management System \n");gotoxy(7,8);printf("\nPlease Enter your choice; 0 enter students' system\n\t\t\t");printf(" ");printf("1 enter teachers' system\n");}void menu() /*菜单函数*/{system("cls"); /*清屏.与clrscr()功能相同*/textcolor(10); /*在文本模式中选择新的字符颜色*/gotoxy(7,5); /*在文本窗口中设置光标,下同*/cprintf(" The Students' Grade Management System \n");gotoxy(7,8);cprintf("*************************Menu********************************\n");gotoxy(7,9);cprintf(" * 1 input record 2 delete record *\n");gotoxy(7,10);cprintf(" * 3 search record 4 modify record *\n");gotoxy(7,11);cprintf(" * 5 insert record 6 count record *\n");gotoxy(7,12);cprintf(" * 7 sort reord 8 save record *\n");gotoxy(7,13);cprintf(" * 9 display record 0 quit system *\n");gotoxy(7,14);cprintf("*************************************************************\n"); /*cprintf()送格式化输出至文本窗口屏幕中*/}void menustudent(){system("cls"); /*清屏.与clrscr()功能相同*/textcolor(10); /*在文本模式中选择新的字符颜色*/gotoxy(7,5); /*在文本窗口中设置光标,下同*/cprintf(" The Students' Grade Management System \n");gotoxy(7,8);cprintf("*************************Menu********************************\n");gotoxy(7,9);cprintf(" *3 search record 0 quit system*\n");gotoxy(7,10);cprintf("*************************************************************\n"); /*cprintf()送格式化输出至文本窗口屏幕中*/}void printheader() /*格式化输出表头*/{printf(HEADER1);printf(HEADER2);printf(HEADER3);}void printdata(Node *pp) /*格式化输出表中数据*/{Node* p;p=pp;printf(FORMA T,DA TA);}void Wrong() /*输出按键错误信息*/{printf("\n\n\n\n\n***********Error:input has wrong! press any key to continue**********\n");getchar();}void Nofind() /*输出未查找此学生的信息*/{printf("\n=====>Not find this student!\n");}void Disp(Link l) /*显示单链表l中存储的学生记录,内容为student结构中定义的数据项*/ {Node *p;p=l->next; /*l存储的是单链表中头结点的指针,该头结点没有存储学生信息,指针域指向的后继结点才有学生信息*/if(!p){printf("\n=====>Not student record!\n");getchar();return;}printf("\n\n");printheader(); /*输出表格头部*/while(p) /*逐条输出链表中存储的学生信息*/{printdata(p);p=p->next; /*移动至下一个结点*/printf(HEADER3);}getchar();}Node* Locate(Link l,char findmess[],char nameornum[]) /*用于定位链表中符合要求的节点,并返回指向该节点的指针,findmess[]保存要查找的具体内容; nameornum[]保存按什么查找;在单链表l中查找;*/{Node *r;if(strcmp(nameornum,"num")==0) /*按学号查询*/{r=l->next;while(r){if(strcmp(r->data.num,findmess)==0) /*若找到findmess值的学号*/return r;r=r->next;}}else if(strcmp(nameornum,"name")==0) /*按姓名查询*/{r=l->next;while(r){if(strcmp(r->,findmess)==0) /*若找到findmess值的学生姓名*/return r;r=r->next;}}return 0;}void stringinput(char *t,int lens,char *notice) /*输入字符串,并进行长度验证(长度<lens)*/ {char n[255];do{printf(notice); /*显示提示信息*/scanf("%s",n); /*输入字符串*/if(strlen(n)>lens)printf("\n Exceed the required length! \n"); /*进行长度校验,超过lens 值重新输入*/}while(strlen(n)>lens);strcpy(t,n); /*将输入的字符串拷贝到字符串t中*/}int numberinput(char *notice) /*输入分数,0<=分数<=100)*/{int t=0;do{printf(notice); /*显示提示信息*/scanf("%d",&t); /*输入分数*/if(t>100 || t<0) printf("\n Score must in [0,100]! \n"); /*进行分数校验*/ }while(t>100 || t<0);return t;}void Add(Link l) /*增加学生记录*/{Node *p,*r,*s; /*实现添加操作的临时的结构体指针变量*/char ch,flag=0,num[10];r=l;s=l->next;system("cls");Disp(l); /*先打印出已有的学生信息*/while(r->next!=NULL)r=r->next; /*将指针移至于链表最末尾,准备添加记录*/while(1) /*一次可输入多条记录,直至输入学号为0的记录结点添加操作*/{while(1) /*输入学号,保证该学号没有被使用,若输入学号为0,则退出添加记录操作*/{stringinput(num,10,"Input number(press '0'return menu):"); /*格式化输入学号并检验*/flag=0;if(strcmp(num,"0")==0) /*输入为0,则退出添加操作,返回主界面*/{return;}s=l->next;while(s) /*查询该学号是否已经存在,若存在则要求重新输入一个未被占用的学号*/{if(strcmp(s->data.num,num)==0){flag=1;break;}s=s->next;}if(flag==1) /*提示用户是否重新输入*/{getchar();printf("=====>The number %s is not existing,try again?(y/n):",num);scanf("%c",&ch);if(ch=='y'||ch=='Y')continue;elsereturn;}else{break;}}p=(Node *)malloc(sizeof(Node));if(!p){printf("\n Allocate memory failure "); /*如没有申请到,打印提示信息*/return ;}strcpy(p->data.num,num); /*将字符串num拷贝到p->data.num中*/stringinput(p->,15,"Name:");p->data.cgrade=numberinput("C language Score[0-100]:"); /*输入并检验分数,分数必须在0-100之间*/p->data.mgrade=numberinput("Math Score[0-100]:");p->data.egrade=numberinput("English Score[0-100]:");p->data.total=p->data.egrade + p->data.cgrade + p->data.mgrade; /*计算总分*/p->data.ave=(float)(p->data.total/3); /*计算平均分*/p->data.mingci=0;p->next=NULL; /*表明这是链表的尾部结点*/r->next=p; /*将新建的结点加入链表尾部中*/r=p;saveflag=1; /*在main()有对该全局变量的判断,若为1,则进行存盘操作*/}return ;}void Qur(Link l) /*按学号或姓名,查询学生记录*/{int select; /*1:按学号查,2:按姓名查,其他:返回主界面(菜单)*/char searchinput[20]; /*保存用户输入的查询内容*/Node *p;if(!l->next) /*若链表为空*/{system("cls");printf("\n=====>No student record!\n");getchar();return;}system("cls");printf("\n =====>1 Search by number =====>2 Search by name\n");printf(" please choice[1,2]:");scanf("%d",&select);if(select==1) /*按学号查询*/{stringinput(searchinput,10,"Input the existing student number:");p=Locate(l,searchinput,"num");/*在l中查找学号为searchinput值的节点,并返回节点的指针*/if(p) /*若p!=NULL*/{printheader();printdata(p);printf(END);printf("press any key to return");getchar();}elseNofind();getchar();}else if(select==2) /*按姓名查询*/{stringinput(searchinput,15,"input the existing student name:");p=Locate(l,searchinput,"name");if(p){printdata(p);printf(END);printf("press any key to return");getchar();}elseNofind();getchar();}elseWrong();getchar();}void Del(Link l) /*删除学生记录:先找到保存该学生记录的节点,然后删除该节点*/ {int sel;Node *p,*r;char findmess[20];if(!l->next){system("cls");printf("\n=====>No student record!\n");getchar();return;}system("cls");Disp(l);printf("\n =====>1 Delete by number =====>2 Delete by name\n");printf(" please choice[1,2]:");scanf("%d",&sel);if(sel==1){stringinput(findmess,10,"input the existing student number:");p=Locate(l,findmess,"num");if(p) /*p!=NULL*/{r=l;while(r->next!=p)r=r->next;r->next=p->next;/*将p所指节点从链表中去除*/free(p); /*释放内存空间*/printf("\n=====>Delete success!\n");getchar();}elseNofind();getchar();}else if(sel==2){stringinput(findmess,15,"input the existing student name");p=Locate(l,findmess,"name"); /*先按姓名查询到该记录所在的节点*/if(p){r=l;while(r->next!=p)r=r->next;r->next=p->next;free(p);printf("\n=====>Delete success!\n");getchar();saveflag=1;}elseNofind();getchar();}elseWrong();getchar();}void Modify(Link l) /*修改学生记录。

相关文档
最新文档