学生成绩管理系统系统
则结束
8.插入记录函数 函数原型: struct student * insert(struct student
*head,struct student * stud)功能:根据用户指定将信息插入特定位 置
参数:结构体数组和记录数 要求:输入信息,插入成功后,节点数目加1 9.文件输入函数 函数原型: void print1(struct student *head,int y) 功能:文件输出记录 要求:将数据库文件保存到其他地方,成功将得到提示,否则将提示 创建失败 10.排序函数 函数原型: struct student * sort(struct student * head) 功能:将记录进行排序 参数:结构体数组和记录数 要求:按总成绩比较内存中记录,判断大小并进行交换,交换后显示降 序排序成功 11.修改函数 函数原型:void xiugaiData(struct student * head,char num[10]) 功能:按指定学号修改记录 参数:结构体数组和指定学号 要求:输入学号,修改其姓名、性别、成绩 12.写数据库函数 函数原型:struct student * writeData() 功能:新建数据库,并写入初始数据 参数:结构体数组 要求:输入信息 13.写数据库函数 函数原型:menu() 功能:选择功能 参数: 要求:根据提示选择所需功能
研究内容:学生成绩管理系统 目的和要求:
(1).学习C语言基础知识,掌握C语言编程和程序调试的基本技 能。
(2).根据分析结果完成系统设计,包括详细设计部分内容。 (3).编程:在计算机上实现题目的代码实现。 (4).完成对该系统的测试和调试。
2.参考文献 [1] 黄明等.21世纪进阶辅导 C语言程序设计.大连理工大学出版
教务处: 学校全体成员的信息管理,对考试科目,时间及对所考 科目的编号等进行具体的管理,并对任课老师,班主任等输入的信息进 行存库,对学生的信息进行必要的维护,可打印学生的所有信息。
2.2 系统功能分析
在本章中,我使用模块等分析法进行系统功能分析。 2.2.1模块实现算法,在进入主菜单前,如图2-1所示: 按任意键进入主菜单
N返回主模块
学生姓名 输入4
Y N 返回主模块 信息录入
Y Y任意键返回主模块 查找成功
2-5查找模块 2.2.7插入纪录到表中模块,算法,如图2-7所示:
N返回主模块
学号 输入6
Y N 返回主模块 信息录入
Y Y任意键返回主模块 成功插入
2-7插入纪录模块 2.2.8将所有学生成绩排序模块,算法,如图2-9所示:
1.显示内存动态记录数据函数 函数原型:void create()
功能:初始化显示内存里的记录 参数:记录数组和记录条数 要求:报告是否有记录及记录成绩内容 2.输入信息函数 函数原型:int print(struct student *head) 功能:输出记录 参数:结构体数组. 要求: 如果内存已经存在记录.则将记录在控制台输出,如果还没有建立记录 链表,则提示链表为空. 3.打开数据库函数 函数原型:struct student * openDatabase(struct student *head) 功能:打开已经创建的数据库 参数:记录数组 要求:输入地址打开数据库 4.删除记录函数 nt *head,char num[10]) 功能:删除内存链表中的指定结点 参数:记录数组和记录条数,成绩 要求:如果不存在制定学号节点,则提示没有找到该学号 5.按序号显示记录函数 函数原型: void searchNum(struct student * head,char num[10]) 功能:根据用户需求输出记录 要求:判断内存中记录的序号与输入的是否相等,如果相等则输出,否 则结束 6. 按姓名显示记录函数 函数原型: void searchName(struct student * head,char name[10]) 功能:根据用户需要输出记录 参数:记录数组和记录成绩以及姓名s 要求:判断内存中记录的名字与输入的是否相等,如果相等则输出,否 则结束 7. 按成绩显示记录函数 函数原型: void searchScore(struct student * head,float score) 功能:根据用户需要输出记录 参数:记录数组和记录成绩以及姓名s 要求:判断内存中记录的成绩与输入的是否相等,如果相等则输出,否
sort(struct student * head) 按成绩从高到低排序函数
Menu_select()
主菜单函数
print1(struct *head,int y)
student 用文件输出链表函数
xiugaiData(struct student * 修改数据函数 head,char num[10])
大多的语法错误在通过书本参考下能够修改。主要是平时看书不仔 细、不太注意而产生的。如没有注意具体数据使用是有一定的范围限 定;过分重视分号的重要性而在for、if、while语句中画蛇添足加分 号;在使用文件的时候忘记将文件先打开,对打开的方式与使用的情况 不太注意而造成不匹配;还有漏掉形参的定义是值不能传递等等。这些 语法错误有信息框的提示一般是能够排除的。
合法用户
进入各功能模块
2-1进入主菜单模块 2.2.2进入主菜单,此时流程在3.4软件结构会描述清楚。 2.2.3 建立学生表格,算法实现模式,如图2-2所示:
N返回主模块
进行编辑 输入1
Y N 返回主模块 信息录入
Y Y任意键返回主模块 继续输入
2-2建立学生表格模块 2.2.4从表中删除原有纪录模块,算法,如图2-3所示:
第四章 程序调试
在设计该程序的时候我采用了结构化程序方法编辑,并在源代码的 基础上添加了中文注释。但是在该系统的编写过程中仍然有许多错误, 主要的有:注释文字的排版,定义错误,句式的语法错误。
在完善程序时,我将源代码先打印下来反复的捉摸和研究,力图在 上机运行时先改正一些低级错误.如缺少”;”之类.在仔细检查之后, 将源代码上机调试—进行编译,在编译和连接过程中发现错误,屏幕上 显示了出错信息,根据提示找到出错的位置,加以改正……直到顺利显 示我预期的。 1、首先,在本次调试过程中我碰到了在上机前根本没有想到的错误: 在注释的时候,注释文字应写在一起中间不能有中断,不能再其中包含 c语言的语句。否则会引起错误,例如格式不正确或是多了字符等。 2、缺少变量定义或是定义位置不正确;
3.2设计方法
本软件采用传统的软件开发生命周期的方法,采用自定向下,逐步 求精的结构化的软件设计方法。
3.3软件结构
根据以上模块可得到总体结构系统才层次图,如图3-1所示:
学生成绩管理 初始化
建立学生成绩表格 删除记录 修改记录 按姓名查找记录
保存数据库 插入记录到表中
按成绩查找记录
将所有学生成绩排序 按学号查找记录 退出
长江师范学院
数学与计算机学院
课程设计
课程名称 软件设计师总论
题目名称 学生成绩管理系统系统
专业班级 2008级
_
组员姓名 王承浩,胡江华,李林蔚,田堤,田一蛟
组员学号 147,102,138,201,123(后
3位)
目的及要求:
1. 设计(研究)内容和要求(包括设计或研究内容、主要指标与 技术参数,根据课题性质对学生提出具体要求)
学生成绩查询系统对学校加强学生成绩管理有着极其重要的作用。 由于各个大学都在持续扩招,学生的数量日益庞大,传统的手工成绩管 理不仅工作量大,而且容易出现问题。从而需要对学生成绩管理等工作 方面提高精确度。
经过我对学校情况和师生需求的的具体分析,初步设计了一套有 关“学生成绩管理”的程序,希望可以帮助学校改善以往需求紧张的管理 系统,为广大师生提供方便,节省时间,提高工作效率,从而树立良好 的办学形象。
N返回主模块
进行删除 输入2
Y N 返回主模块 信息录入
Y Y任意键返回主模块 删除成功
2-3删除原有纪录模块 2.2.5显示单链表中所有记录模块,算法,如图3-4所示:
N返回主模块
进行输入 输入3
Y N 返回主模块 信息输出
Y Y任意键返回主模块 显示信息
2-4显示纪录模块 2.2.6按照姓名查找纪录模块,算法,如图2-5所示:
社,2005 [2] 马靖善等.C语言程序设计.清华大学出版社,2005 [3] 谭浩强.C语言程序设计(第二版).北京:高等教育出版社,
2002
第一章 概述 1 1.1项目背景 1 1.2工作环境 1
第二章 系统分析 2
目录
2.1系统需求分析 2 2.2 系统功能分析 2
2.2.1模块实现算法 2 2.2.2进入主菜单。 3 2.2.3 建立学生表格 3 2.2.4从表中删除原有纪录 3 2.2.5显示单链表中所有记录 3 2.2.6按照姓名查找纪录 3 2.2.7插入纪录到表中 4 2.2.8将所有学生成绩排序 5 2.2.9退出 5 第三章 总体设计 6 3.1软件描述 6 3.2设计方法 6 3.3软件结构 6 3.4文件及函数组成 7 第五章 使用说明 10 第六章 工作总结 16 参考文献(参考书或论文或文章) 17
3-1总体结构系统层次图
3.4文件及函数组成
如表1-1所示:
函数名
解释
Menu()
菜单函数
Create()
创建链表函数
del(struct
student 删除记录函数
*head,char num[10])
print(struct student *head) 显示所有记录函数
writeData()
向数据库中写数据函数
由于该程序相对来讲稍有些长,前后有些变量很难联系起来,但是 在错误信息的提示下一般还是很是可以找到。不过需要注意的是在定义 的时候有些函数使用同样的变量名而表示不同的作用,因而使用要很小 心,定义及定义的位置要特别留意。为减少这样的错误我后来还是用不 同的变量名来表示,结果引起的那些错误解决了。 3、句式的语法错误;