计算机高级语言课程设计(C)学生成绩管理系统

合集下载

C语言程序设计与应用课程设计

C语言程序设计与应用课程设计

C语言程序设计与应用课程设计一、课程设计的背景C语言是一种广泛应用于计算机编程的高级程序语言,它通常被认为是现代计算机科学中最重要的编程语言之一。

C语言因其高效性、可移植性和广泛的硬件支持而成为许多领域中使用最广泛的编程语言之一。

为了帮助学生更好地掌握和应用C语言,本课程设计旨在为学生提供一种系统的教学方法和实践环境,帮助他们更好地理解和应用C语言程序设计。

二、课程设计的目标本课程设计旨在帮助学生:1.熟悉C语言程序设计的基本概念和技术;2.学会使用C语言解决实际问题;3.掌握常见的程序设计技巧和方法;4.能够通过课程设计实践来提高自己的编程水平。

三、课程设计的内容本课程设计包括以下几个部分:1. 设计题目本课程设计的设计题目为“学生成绩管理系统”。

该系统旨在帮助教师轻松管理学生成绩,包括增加、删除、修改和查询学生成绩等功能。

该系统可以通过命令行界面进行操作,也可以通过图形界面进行操作。

2. 要求该系统需要满足以下要求:1.能够向系统中增加新的学生成绩,包括学号、姓名、各科成绩等信息;2.能够删除系统中的学生成绩;3.能够查询学生的各科成绩,并按照总成绩排序;4.能够修改学生的各科成绩;5.系统需要记录每个学生的学科成绩并能够进行数据的统计和分析;6.系统需要有命令行和图形界面两种操作方式。

3. 设计思路本课程设计采用C语言进行编写。

设计思路包括以下几个步骤:1.确定系统要求和功能;2.设计数据结构,并建立相应的数据库;3.设计系统的主要模块,如增加、删除、修改和查询模块;4.实现各个模块的功能,并进行调试和测试。

4. 设计方案和实现本课程设计采用了以下技术和工具:1.数据结构:链表和结构体;2.编译器:Code::Blocks;3.GUI界面库:GTK+。

在系统的实现过程中,主要采用了C语言的各种数据结构和算法技术,如链表、结构体、指针和数组等。

此外,也采用了GTK+库实现了系统的图形用户界面。

学生成绩管理系统设计说明书

学生成绩管理系统设计说明书

版本号日期“学生成绩管理系统”软件设计说明书姓名班级学号完成日期指导老师目录目录 (2)1 引言 (4)1.1 编写目的 (4)1.2 范围 (4)1.3 定义 (5)1.4 参考资料 (5)2 项目概述 (5)2.1 产品描述 (5)2.2 产品功能 (6)2.3 用户特点 (7)2.4 一般约束 (7)2.5 假设和依据 (7)3 具体需求 (8)3.1 功能需求 (8)3.2 行为需求 (10)3.3 数据需求 (10)3.4 外部接口需求 (11)3.4.1 用户接口 (11)3.4.2 硬件接口 (11)3.4.3 软件接口 (12)3.5 性能需求 (12)3.6 设计约束 (12)3.6.1 其他标准的约束 (12)3.6.2 硬件的限制 (13)3.7安全性 (13)3.8 可维护性 (13)3.9 可转移\转换性 (13)3.10 数据库 (13)4 总体设计 (14)4.1运行环境 (14)4.2基本设计概念和处理流程 (14)4.3系统结构 (15)4.4 接口设计 (15)4.4.1用户接口 (15)4.4.2内部接口 (15)4.5功能需求与程序的关系 (16)4.6人工处理过程 (16)4.7尚未问决的问题 (16)5 详细设计 (17)5.1系统数据结构设计 (17)5.1.1逻辑结构设计要点 (17)5.1.2物理结构设计要点 (18)5.2模块设计说明 (19)5.2.1模块描述 (19)5.2.2功能 (19)5.2.3性能 (20)5.2.4输入项 (20)5.2.5输出项 (20)5.2.6设计方法(算法) (21)5.2.7流程逻辑 (25)5.2.8接口 (26)5.2.9存储分配 (26)5.2.10注释设计 (26)5.2.11限制条件 (26)5.2.12测试计划 (26)5.2.13尚未解决的问题 (27)5.3 运行设计 (27)5.3.1运行模块组合 (27)5.3.2运行控制 (28)5.3.3运行时间 (28)5.4系统出错处理设计 (28)5.4.1出错信息 (28)5.4.2补救措施 (29)5.5系统维护设计 (30)附录: (31)1 引言1.1 编写目的此软件需求说明书是针对所开发的【成绩管理系统】进行详细解释说明。

学生成绩排名系统课程设计

学生成绩排名系统课程设计

《程序设计基础》课程设计------学生成绩排名系统第一章课程设计的目的和要求高级语言课程设计的主要目的是培养学生能够提高综合应用语言的能力,通过课程设计的训练,使学生能及时巩固已学的知识,补充未学的但有必要的内容,掌握应用计算机解决实际问题的基本方法,熟悉程序开发的全过程,提高综合应用语言的能力。

高级语言程序设计的主要任务是要求学生遵循软件开发过程的基本规范,运用结构程序设计的方法按照课程设计的题目要求,分析,编写,调试和测试高级语言程序及编写设计报告。

1.1课程设计的目的1.巩固和掌握高级语言程序设计基本概念;2.掌握基本的程序设计方法;3.掌握开发软件所需的需求定义能力;4.提高书写程序设计说明文档的能力;5.提高综合运用高级语言的能力,强化编程和调试能力。

1.2 课程设计的基本要求1.根据所给的课程设计题目,分析课程设计题目的要求;2.对系统功能模块进行分析,写出详细的设计说明文档;3.编写程序代码,调试所编写程序使其能正确运行;4.设计完成的软件便于完成和使用;5.设计完成后提交课程设计报告;第二章课程设计任务内容2.1 考核内容2.1.1 编写的C++语言程序●针对编写的C++程序,应该主要考查下列内容:●是否符合题目要求,是否完成了主要功能;●是否存在语法错误、逻辑错误及运行错误;●程序设计是否合理;●程序是否具有良好的可读性和可靠性;●是否符合结构化程序设计所倡导的基本理念;●用户界面是否友好。

2.1.2 课程设计报告●针对提交的课程设计报告,应该主要考查下列内容:●程序设计的报告内容是否全面,观点是否正确;●设计过程是否符合结构化程序设计方法的基本原则;●层次是否清楚,语言是否通顺;●各种图表是否规范;是否具有良好的程序设计习惯。

2.2 课题10、学生信息管理系统设计实现以下功能:1) 系统以菜单方式工作;2) 学生信息录入功能(学生信息用文件保存);3) 学生信息浏览功能;4) 查询、排序功能(至少两种查询依据和两种排序依据);5) 学生信息删除、修改功能。

《C语言高级程序》课程作业——学生成绩管理系统报告

《C语言高级程序》课程作业——学生成绩管理系统报告

为达到题目说的参加考试的学生人数不超过 30 人,故在程序开
头采用宏定义“#define N 30”已达到系统控制人数的目的。 为保证每次输入的数据的有效性,在输入考生人数和选项的地方
采用防御式编程,减少由于输入错误造成的系统终止。
三、程序代码
#include <stdio.h>
#include <string.h>
姓名查询信息函数、统计各学科各类别的学生人数及所占百分比函数
及输出所有考生信息的函数。
为减少程序长度,单独建立一个供输出单个学生学号、姓名、数
学成绩、英语成绩、物理成绩、总分、平均分的函数。有结构体数组
做函数参数,具体如下:
void menu(struct student stu[]); // 选择菜单
}stu[N]; // 全局变量
3
int num,select;
struct student t;
float math_sum=0.0 0english_aver,
physics_sum=0.0, physics_aver;
// 函数声明
void menu();
一、题目分析 (一)作业题目
学生成绩管理系统 某班有最多不超过 30 人(由键盘输入)参加考试。考试科目为 数学、英语和物理,定义结构体类型,用结构体数组做函数参数,实 现以下可供用户选择的菜单项。 (0)exit; (1)录入每个学生的学号、姓名和各科考试成绩; (2)计算每门课程的总分和平均分; (3)计算每个学生的总分和平均分; (4)按每个学生的总分由高到低排出名次表; (5)按每个学生的总分由低到高排出名次表; (6)按学号由小到大排出成绩表; (7)按姓名的字典顺序排出成绩表; (8)按学号查询学生排名及其考试成绩; (9)按姓名查询学生排名及其考试成绩; (10)按优秀(90~100)、良好(80~89)、中等(70~79)、及格(60~69)、 不及格(0~59)五个类别。对每门课程分别统计每个类别的人数以及 所占的百分比; (11)输出每个学生的学号、姓名、各科考试成绩,以及每门课 程的总分和平均分。 (二)题目分析 1、程序要能做什么 根据题意,本系统要能做到手动输入学生人数以及考生相关信息 (学号、姓名、三科成绩),并能对输入的考生信息进行相应的分析 并显示结果,能根据要求进行查找相关数据信息。 2、程序处理什么 对输入的考生的三科成绩进行各自求和、取平均值; 对数学、英语、物理三科进行分析即求其各自平均值、统计各类 别的学生人数及所占百分比; 分别按学号顺序、姓名、考生总分高低对考生进行排序并输出; 根据提示,分别按给定学号和姓名进行查找并输出。 二、编程思想

c语言课程设计音频信息管理(修改自学生成绩管理系统)

c语言课程设计音频信息管理(修改自学生成绩管理系统)

.一引言在现在的日常生活中,人们对娱乐的要求越来越高。

因为随着科技的突飞猛进,娱乐形式、娱乐设备也越来越多。

而听音乐则是其中一种十分重要而实现起来又十分简单的娱乐形式,所以说,音乐无处不在。

因此,我们对音乐的管理就十分有必要了。

现在的生活节奏越来越快,人们想要更加方便而快捷的管理自己的音乐,节省自己的时间。

而目前我们学习过如何使C语言来进行编程,所以就有了这个简单的设计。

随着各种便携式音乐播放器以及电子计算机的普及,人们所拥有的音乐越来越多,风格,演唱者,各不相同,而人们在不同的心情,不同的天气时对音乐的爱好是不同的。

人们需要更加快捷而方便的管理自己的音乐,让自己的音乐列表井然有序。

可以根据不同的场合,不同的心情快速的找到自己所需要的音乐。

让音乐匹配自己的心情,通过音乐来表达自己的感受是很多人习惯。

音乐是一种娱乐,同时也是一种特别的表达方式。

歌手通过歌曲来表达自己的某种情感,产生与听众的共鸣。

当听众想要表达相同的情感时,直接就可以引用自己听过的歌。

我们让这种娱乐,或者更着重于对自己情感的表达实现起来更加容易。

运用音乐管理程序可以更加方便而快捷的管理自己喜欢的音乐,省去了繁琐的过程,让听音乐更加方便快捷,节省自己的宝贵时间。

音乐管理是每个音乐播放器必须实现的功能之一。

随着各个电子厂商退出自己的便携是播放器,只有高效便捷的的音乐管理方式才能在竞争中脱颖而出。

好的音乐管理程序是对消费者的负责,更是对自己责任的负责。

以前的操作系统等系统软件主要是由汇编语言编写的(包括UNIX操作系统在)。

由于汇编语言指令时机器所不能直接识别、理解和执行的,最好改用高级语言,但一般高级语言难以实现汇编语言的某些功能(汇编语言可以直接对硬件进行操作,例如,对存地址的操作、位操作等)。

人们设想能否找到一种既具有一般高级语言特性,又具有低级语言特性的语言,集它们的优点于一身。

于是,C语言就在这种情况下应运而生了。

本次课设我选择歌曲管理程序的设计,考察我对结构体,数组的操作,以及C语言算法的掌握。

c语言课程设计优秀案例

c语言课程设计优秀案例

c语言课程设计优秀案例C语言是一门广泛应用于计算机科学领域的编程语言,它具有高效、简洁、可移植等特点,因此在计算机科学领域中得到了广泛的应用。

在C语言课程设计中,学生需要通过实践来掌握C语言的基本语法和编程思想,同时也需要通过设计优秀的案例来提高自己的编程能力。

下面是10个优秀的C语言课程设计案例。

1. 学生成绩管理系统这个案例要求学生设计一个学生成绩管理系统,可以实现学生信息的录入、查询、修改和删除,同时还可以计算学生的平均成绩、最高成绩和最低成绩等统计信息。

2. 简单计算器这个案例要求学生设计一个简单的计算器,可以实现加、减、乘、除等基本运算,同时还可以实现括号、小数点和负数等高级运算。

3. 迷宫游戏这个案例要求学生设计一个迷宫游戏,可以实现玩家在迷宫中寻找出口的过程,同时还可以实现随机生成迷宫、计时和计分等功能。

4. 图书管理系统这个案例要求学生设计一个图书管理系统,可以实现图书信息的录入、查询、修改和删除,同时还可以实现借书和还书等功能。

5. 简单的文件管理器这个案例要求学生设计一个简单的文件管理器,可以实现文件的创建、删除、复制和移动等基本操作,同时还可以实现文件夹的创建和删除等高级操作。

6. 简单的网络聊天程序这个案例要求学生设计一个简单的网络聊天程序,可以实现用户之间的文字聊天和文件传输等功能,同时还可以实现用户登录和注册等操作。

7. 简单的音乐播放器这个案例要求学生设计一个简单的音乐播放器,可以实现音乐的播放、暂停、停止和跳转等基本操作,同时还可以实现音乐列表的管理和歌词显示等高级功能。

8. 简单的游戏开发这个案例要求学生设计一个简单的游戏,可以实现玩家的移动、攻击和防御等基本操作,同时还可以实现关卡设计和游戏难度调整等高级功能。

9. 简单的人工智能程序这个案例要求学生设计一个简单的人工智能程序,可以实现基本的语音识别、图像识别和自然语言处理等功能,同时还可以实现机器学习和深度学习等高级功能。

学生成绩管理系统课设报告

在Student类的基础下定义了一个Manage类,这个类的私有数据成员为一个Student类数据类型的容器stu;函数成员包括增加学生成绩(AddScore),删减学生成绩(DeleRecord),成绩修改(ChangeRecord),成绩查看(Search),总体成绩分析(Analyse),按学号查找(SearchId),按姓名查找(SearchName),显示全班成绩(Display),平均分计算(Average),标准差计算(Standard),合格率计算(Pass),对成绩进行排序(Sort),查看某分数段的功能(SearchScore),文件输入函数(InFile),文件输出函数(OutFile)。
按学号查找:intSearchId();
提示用户输入正确的学号,得到id,通过for循环,从容器中第一个元素开始,依次通过GetId()函数获取每一名学生的m_Id进行比较,每比较一次t+1,相等时跳出循环,通过Show()函数输出该生所有信息。若没有相同的学号(t==stu.size()),则重新提示用户输入,结束后返回该生在容器中的位置t。
2.主界面功能
开始自动导入学生成绩(Infile();)主界面显示各模块功能选项,选择数字执行对应模块。 结束后输出欢迎使用本系统.
3.各模块的设计与实现
模块实现所需的基础函数:
文件输入函数:voidInFile();
创建一个文件输入流对象ifile,打开储存的文本文件并判断是否成功打开文件,然后通过while设置一个循环,依次读入学生学号(i),姓名(n),数学(m),英语(e)和物理(p),并创建Student类对象s(i,n,m,e,p),尾插到容器stu中,直至读到结束符EOF时,跳出循环。关闭文件。
3.voidSort();使用嵌套的for循环对总成绩进行排序,排序完成后继续使用嵌套for循环,如果总成绩相同则按照数学成绩进行排序,若都相同则按照英语成绩进行排序。将结果显示到屏幕上(voidDisplay();)并询问是否保存结果至文本,保存则执行OutFile()。

学生成绩管理系统实验报告

学生成绩管理系统实验报告《高级语言程序设计》课程设计实验报告题目:学生成绩管理系统专业:班级:姓名:成绩:指导教师:完成日期:2008年06月24日一、目的1(进一步掌握和利用C语言进行程设计的能力; 2、进一步理解和运用结构化程设计的思想和方法; 3、初步掌握开发一个小型实用系统的基本方法; 4、学会调试一个较长程序的基本方法; 5、学会利用流程图或N-S图表示算法;6、掌握书写程设计开发文档的能力(书写课程设计报告);二、内容与设计思想.(1)(系统功能与分析(填写你所设计的菜单及流程图)。

(2).数据结构(3)。

模块设计根据功能需要:源文件函数名功能(3)总体设计思想:(4)调试过程:测试数据及结果,出现了哪些问题,如何修改的(5)程序有待改进的地方及本次实习的收获和建议(7)源程序清单(主要代码)最佳答案C语言课程设计任务书一、题目: 学生成绩管理二、目的与要求1。

目的:(1)基本掌握面向过程程序设计的基本思路和方法;(2)达到熟练掌握C语言的基本知识和技能;(3)能够利用所学的基本知识和技能,解决简单的程序设计问题 2. 要求基本要求:1。

要求利用C语言面向过程的编程思想来完成系统的设计; 2。

突出C语言的函数特征,以多个函数实现每一个子功能; 3。

画出功能模块图;4。

进行简单界面设计,能够实现友好的交互;5。

具有清晰的程序流程图和数据结构的详细定义;6。

熟练掌握C语言对文件的各种操作。

创新要求:在基本要求达到后,可进行创新设计,如系统用户功能控制,对管理员级和一般级别的用户系统功能操作不同三、信息描述输入一个班10个学生的学号和每个学生考试三门功课(数学、英语、计算机基础)的成绩。

编程计算出每个学生的总分和平均分,并按学生成绩优劣排序,最后打印一张按高分到低分名次排序的成绩单。

要求:1)排序用一个函数实现。

2)打印的成绩单表项包括:序号,学号、数学、英语、计算机、总分、平均分。

3)按实验报告电子模板格式填写实验内容。

心得体会 c,课程成绩管理系统心得体会

c,课程成绩管理系统心得体会c,课程成绩管理系统心得体会信息技术工程学院C语言课程设计报告题目:学生成绩管理系统(studentachievementmanagement system)目录一设计目的................................................................................................................. .. (3)二课程设计的内容................................................................................................................. ..3三课程设计的要求与数据 (4)四课程设计应完成的工作 (4)五总体设计(包含几大功能模块) (5)六详细设计................................................................................................................. .. (6)6.1各个模块的功能和实现 (6)6.2流程图................................................................................................................. (7)(管理员模式流程图) (7)(来宾模式流程图)............................................................................................................. ..8 ..................................................................................................................... .. (8)七调试分析(各模块测试结果) (9)7.1源代码................................................................................................................. .. (9)7.2各模块测试结果 (23)八总结................................................................................................................. .. (26)九参考资料................................................................................................................. (27)一设计目的通过本课程设计巩固《C语言程序设计》课程的教学成果,深入理解结构体、指针、链表、动态分配内存和文件操作的等C程序设计中的中高级技术,通过课程设计的综合训练,培养学生实际分析问题、编程和动手能力、提高学生利用C语言进行程序设计的能力,初步培养良好的编程习惯和编程风格,初步学习程序的文档的撰写方法。

C语言成绩查询菜单的设计

S a f ( d & e e t );s i c (e e t {a e 0 出* p i t c n ”% ”, s l c ” w t h s l c ) c s :/ 退 /rn f
c 言一 共只 有 3个 关键 字 ,种控 制 语 句 。程 序书 写 自由, 主要 用 小 语 2 9 写 字母 表示 。 它把 高级 语言 的基 本结 构 和语 句与 低级 语 言 的实用 性 结合起
具有 多种循环 、条件 语句 控制 程序 流 向, 而使 程序完 全 结构化 。允 许程序 从
编 写 者有较 大 的 自由度 。既 具有 高级 语 言 的功 能, 又具 有低 级语 言 的许 多 功能 ,能够象 汇编 语言 一样对 位 、字节 和地 址进行 操作 , 而这三 者是 计算 机
最 基本 的工 作 单元 ,可 以用 来 写系统 软 件 。本软 件 完成 的功 能 :根据 输 入
绩 是% \ ”,, cr [] j) u+ so e i [] ae ae sm6 r dn Jso e i [] ;sm =c r [] J;) vr g=u / ;p i
n f “ 生 的平均 成 绩 是% \ ”,v rg ) ra ; cs :/根 据科 目 t( 学 dn aea e :b ek a e2 } 号统计 成绩 *p it ( 输入 科 目号 :”) cn (“ d &) o (= : / rn f “ ;sa f % ”, j;fr i 1
15 i+ {r n f( “ % 学 生 本 科 成 绩 是 % l ” ,, cr [] j ) ; < :+) p it 第 号 d n iso e i []
sm= cr [] j ;)v rg= u/ ;p it ( 本科 平均 成绩 是% \ ”, u +s oe i [] a ea esm 4 rn f “ dn A ea e ;be k a e :/根 据科 目号 和学 号查询 成绩 *p it ( 输入 vr g ) r a ;cs 3 } /rn f “ 学号 和科 目号 : ”) cn ;sa f(“ dd & , j %% ”,i& );p it (“ d 学 生 r nf 第% 号
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

本科生课程论文封面课程名称计算机高级语言课程设计(C)教师姓名本科生姓名本科生学号本科生专业所在院系类别日期目录目录 (1)1. 题目要求 (2)2. 需求分析 (2)3.总体设计 (2)3.1功能模块划分及流程图 (2)3.2数据结构设计 (2)4.详细设计 (3)4.1主函数 (3)4.2各功能模块设计 (7)5.上机操作 (15)5.1数据源说明 (15)5.2编译、链接和运行 (15)5.3运行结果 (16)6.总结 (19)7.致谢 (20)参考文献 (20)1.题目要求某学期某班级学生成绩见文件“lecture_grade.txt”,该学期课程的相关信息见“lecture.txt”,请根据上述两个文件编写代码实现如下功能:(1)统计该班级学生的学习科目数、总分、所修学分数、不及格科目数、不及格学分;(2)计算各个学生的成绩绩点;课程绩点计算方式(成绩/10.0 - 5)学分绩点计算方式∑(课程绩点*该课程学分*该课程权重) / ∑(课程学分)2.需求分析根据题目要求,由于学生成绩信息与学期课程相关信息存放于文件中,所以应提供文件的读取,输出等操作;在程序中需要根据相应数据进行计算,所以应提供显示、查找、排序等操作;另外,还应提供键盘式的选择菜单来实现功能选择。

3.总体设计3.1功能模块划分及流程图根据上面的需求分析,可以将该系统的设计分为大模块,即查询模块、浏览模块、统计模块、排序模块、输出模块、退出模块。

3.2数据结构设计本系统的实现,全部采用链表这种数据结构,用链表实现课程的查询、浏览、统计、学生成绩信息、挂科情况、以及绩点排序输出,读入的课程信息、读入的学生成绩信息、学生信息统计采用的是结构体这种数据结构。

struct student //读入学生成绩信息结构体{char sno[11]; //学号char name[10]; //姓名int g[LEC_SIZE]; //所选课程}stu[STU_SIZE];struct lecture //读入课程信息结构体{char lname[30]; //课程名称float credit; //学分char type[5]; //课程类型}lec[LEC_SIZE];struct stu_grade //学生信息统计结构体{char sno[11]; //学号char name[10]; //姓名int number; //课程数目int sum; //总分float credit; //学分int fail; //挂科科目float failc; //挂科学分float gpa; //绩点}stug[STU_SIZE];4.详细设计4.1主函数【程序】void main(){int i = 0,j = 0;FILE *fp1,*fp2;char file[50];int flag = 1;for(i = 0;i < LEC_SIZE;i++){for(j = 0;j < 30;j++){lecturename[i][j] = '\0';//课程名称}}printf("********************************************************************** **********\n");printf(" 欢迎使用学生课程查询系统\n");printf(" 制作人:174131班王雪峰\n");printf("************************************************************************** ******");printf("开始读取lecture_grade.txt文件...\n");fp1 = fopen("lecture_grade.txt","rb");//打开第一个文件if(fp1 == NULL){printf("!!!无法读取文件\n");return;}else{i = 0;j = 0;int n = 0;char str[500];fgets(str,500,fp1);while(str[i] != '\n') //统计学习科目{if(str[i] == ' ')//''空格号{if(str[i+1] == ' '){}else{lecturesum++;}}i++;}lecturesum -=1;i = 10;while(str[i] != '\n') //读取学习科目名称{if(str[i] == ' '){lecturename[j][n++] = '\0';//‘\0’是字符串结束符}else{lecturename[j][n++] = str[i];}if(str[i] == ' '){if(str[i+1] == ' '){}else{n = 0;j++;}}i++;}lecturename[13][27] = '\0';for(i = 0;i < STU_SIZE;i++) //读取学习科目成绩{fscanf(fp1,"%s %s",stu[i].sno,stu[i].name);for(j = 0;j < lecturesum;j++){fscanf(fp1,"%d",&stu[i].g[j]);}}}printf("读取完毕\n");printf("开始读取lecture.txt文件...\n");//读取第二个文件fp2 = fopen("lecture.txt","rb");if(fp2 == NULL){printf("!!!无法读取文件\n");return;}else{char str[500];fgets(str,500,fp2);for(i = 0;i < LEC_SIZE;i++){fscanf(fp2,"%s %f %s",lec[i].lname,&lec[i].credit,lec[i].type);}}for(i = 0;i < lecturesum;i++) //读取课程信息{for(j = 0;j < LEC_SIZE;j++){if(strcmp(lecturename[i],lec[j].lname) != 0){credit[i] = lec[j].credit;if(strcmp(lec[j].type,"必修")){quanzhong[j] = 1.2;}else if(strcmp(lec[j].type,"选修")){quanzhong[j] = 1.0;}else{quanzhong[j] = 1.1;}}}}printf("读取完毕\n");fclose(fp1);fclose(fp2);count(); //统计4.2各功能模块设计(1)具体功能菜单模块【需求分析】功能菜单模块设计比较简单,主要功能为提供数据查询,处理,选择和部分函数的调运。

其中各功能菜单模块用菜单方式选择。

【流程图】【程序】while(flag){int n = 0;int i = 0;int j = 0;int w;printf("********************************************************************** **********\n");printf("| 1-查询学生信息|\n");printf("| 2-浏览挂科信息|\n");printf("| 3-绩点排序输出|\n");printf("| 4-退出查询系统|\n");printf("************************************************************************** ******");printf("请输入相应数字进行查询:");scanf("%d",&n);if(n ==1){int m = 0;printf("********************************************************************** **********\n");printf("| 1-查看各位成绩信息|\n");printf("| 2-查看同学各科成绩|\n");printf("| 3-请返回上一层菜单|\n");printf("********************************************************************** **********\n");printf("请输入相应数字进行查询:");scanf("%d",&m);if(m == 1){char s[20];printf("**************************\n");printf("请输入学号或姓名进行查询:\n");printf("**************************\n");scanf("%s",s);if(s[0] == '1'){for(i = 0;i < STU_SIZE;i++){if(strcmp(stug[i].sno,s) == 0){printf("学号:%s\n",stug[i].sno);printf("姓名:%s\n",stug[i].name);printf("该学生的学习科目数:%d\n",stug[i].number);printf("学分绩点:%f\n",stug[i].gpa);printf("总分:%d\n",stug[i].sum);printf("所修学分数:%.f\n",stug[i].credit);printf("不及格科目数:%d\n",stug[i].fail);printf("不及格学分:%.1f\n",stug[i].failc);printf("\n");}}}else{for(i = 0;i < STU_SIZE;i++){if(strcmp(stug[i].name,s) == 0){printf("学号:%s\n",stug[i].sno);printf("姓名:%s\n",stug[i].name);printf("该学生的学习科目数:%d\n",stug[i].number);printf("学分绩点:%f\n",stug[i].gpa);printf("总分:%d\n",stug[i].sum);printf("所修学分数:%.f\n",stug[i].credit);printf("不及格科目数:%d\n",stug[i].fail);printf("不及格学分:%.1f\n",stug[i].failc);}}}}else if(m == 2){char s[20];printf("|请输入学号或姓名进行查询|:\n");scanf("%s",s);if(s[0] == '1'){for(i = 0;i < STU_SIZE;i++){if(strcmp(stug[i].sno,s) == 0){printf("学号:%s\n",stug[i].sno);printf("姓名:%s\n",stug[i].name);printf("学分绩点:%f\n",stug[i].gpa);for(j = 0;j < lecturesum;j++){printf("%s",lecturename[j]);printf("\n");printf("%d\n",stu[i].g[j]);}printf("\n");}}}else{for(i = 0;i < STU_SIZE;i++){if(strcmp(stug[i].name,s) == 0){printf("学号:%s\n",stug[i].sno);printf("姓名:%s\n",stug[i].name);printf("学分绩点:%f\n",stug[i].gpa);for(j = 0;j < lecturesum;j++){if(stu[i].g[j]>0){printf("%s",lecturename[j]);printf("\n");printf("%d\n",stu[i].g[j]);}}}}}}}else if(n ==2){printf("\n本学期挂科学生有如下: \n");for(i = 0;i<STU_SIZE;i++){if(stug[i].fail != 0){printf("\n**********************************\n");printf("*学号*:%s *姓名*:%s\n",stug[i].sno,stug[i].name);printf("**********************************\n");printf("**挂科科目有**:\n");printf("**********************************\n");int p=0;for(j = 0;j<lecturesum;j++){if((stu[i].g[j] < 60)&&(stu[i].g[j] > 0)){printf("%s\n",lecturename[j]),p++; //挂科项目}}printf("共挂科 %d 门\n",p);}}}else if(n == 3){sort(); //排序}else if(n == 4){printf("\n****************!请按任意键退出!*********************\n");printf("\n");return;}else{if(n<1||n>5){w=1;getchar();printf("\n!!!!!!!!!!!!!您的输入有误,请重新重新输入!!!!!!!!!!!\n");}else w=0;}}}(2)挂科统计模块【需求分析】该功能模块主要根据题目要求,通过上述数据显示,进行相关挂科统计得到的相应信息。

相关文档
最新文档