C语言课程设计报告书

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

(此文档为word格式,下载后您可任意编辑修改!) 高级语言程序设计课程设计报告

系部名

电子与信息工程系

学生姓名

专业名称电子信息工程

班级

学号

指导教师

时间

实验题目学生信息管理系统

一、实验目的

1.熟悉C语言程序的编辑、编译链接和运行的过程,至少能够用一种编译器较熟练地编辑、编译及调试程序。

2.掌握C语言数据类型,如何定义一个整型、字符型和实型的变量,以及对它们赋值的方法。

3.熟练运用if语句和switch语句以及嵌套应用。涉及循环调用的,了解并掌握三种控制语句while、do-while和for语句。

4.学习并掌握C语言定义函数的基本方法、声明函数及调用函数的方法和过程。

5. 掌握文件和文件指针的概念以及文件的定义方法,认识文件打开、关闭、读、写等文件基本操作函数。

6.掌握结构体类型变量、数组的定义和使用。

7.了解指针和链表的概念,掌握指针的定义和使用指针变量的方法以及链表的正确用法。灵活使用链表来储存学生信息。

8.掌握数组的定义、引用以及输入输出的方法、通过字符数组存储字符串,进一步使用字符串

二、实验内容

学生管理程序具有下列功能:

一、输入部分

通过键盘输入多位学生的学生信息。学生的信息包含有:学生姓名、性别、学号、出生年月日、年龄、成绩。

二、输出部分

输出当前已存储的学生信息

三、更新部分

此部分分为了三个目录:

①插入让用户自定义在哪个学生的左侧插入一个新的学生的信息

②删除删除用户指定的学生信息

③修改修改用户指定的学生信息

四、查询部分

分为两个目录

①按名字查询输出用户查询的学生信息

②按学号查询输出用户查询的学生信息

查询用户指定的学生信息

五、排序

此部分分为了两个目录:

①按学号排序

②按成绩排序

六、统计

此部分也分为了两个目录:

①统计当前一共存储了多少个学生的信息

②统计当前存储的学生信息中的男生或女生的人数

③统计及格人数

④统计不及格人数

七、释放

开发工具—-Win-TC

运行平台——中文DOS运行环境

三、需求分析

一、函数功能描述

⑴输入部分

通过键盘输入多位学生的学生信息。学生的信息包含有:学生姓名、性别、学号、出生年月日、年龄、成绩。/*此次做的学生管理系统是利用链表而完成的程序,故第一部分想要实现建立链表*/

⑵、输出部分

输出当前已存储的学生信息/*通过链表的头结点的地址来依次输出每个结点中的值域中的内容,直至尾结点来实现输出学生信息*/

⑶、更新部分

此部分分为了三个目录:

①插入让用户自定义在哪个学生的左侧插入一个新的学生的信息/*这部分的功能是让用户自定义插在哪个个学生左边,并输入该学生的学号,找到其在链表中存储的结点处插入一个新的结点,而这个新的结点的中的值域存储的是一个新的学生信息,从而实现插入一个新的学生信息*/

②删除删除用户指定的学生信息/*这部分的功能是输入学生的学号,找到其在链表中存储的结点处,并将这整个结点删除,再把该结点的前驱结点和后驱节点连接,来实现这个学生信息的删除*/

③修改修改用户指定的学生信息/*这部分是利用输入学生的学号,来找到存储该学生信息的结点,通过该结点的链域来修改其中的值域,来实现对学生信息的修改*/

⑷、查询部分

查询用户指定的学生信息

①按名字查询输出用户查询的学生信息/*这部分是利用输入学生的姓名,来找到存储该学生信息的结点,输出该结点的值域中的内容,来实现对学生信息的查询功能*/

②按学号查询输出用户查询的学生信息/*同上,只是查询条件为学号*/

⑸、排序

此部分分为了两个目录:

①按学号排序/*此部分程序设计较为复杂,但大致是通过对链表中个结点的值域比较,按小到大的顺序排序,但必须要修改相应的链域,才能实现排序的功能*/

②按成绩排序/*此部分和大致内容和按学号排序一样,但不同的是,此处是按大到小的顺序排序*/

⑹、统计

此部分也分为了两个目录:

①统计当前一共存储了多少个学生的信息/*通过输出学生的信息,每输入一个总和数加一,最后输出总和数来实现统计人数*/

②统计当前存储的学生信息中的男生或女生的人数/*从头结点开始,一个一个结点的去查看其值域,若性别为男生或女生,总和数加一,最后输出总和数来实现统计男生或女生的人数*/

③统计及格人数/*从头结点开始,一个一个结点的去查看其值域,若成绩大于60,总和数加一,最后输出总和数来实现统计及格的人数*/

④统计不及格人数/*从头结点开始,一个一个结点的去查看其值域,若成绩小于60,总和数加一,最后输出总和数来实现统计不及格的人数*/

⑺、释放

这个部分和动态存储分配中的释放空间有着类似的概念,即所建立的链表所申请的存储空间全部释放,也就是说把当前录入的所有学生信息全部删除,本着申请动态存储空间最后要释放的原则,设计了这个部分

二、问题的提出

如何完成排序部分这个功能的呢?

因为使用链表,感觉上排序似乎是整个程序设计中最难的部分,因为要根据结点中值域的内容来对应的修改链域,而链域中的指针问题若不考虑清楚,则很有可能造成链表的混乱,造成某些结点没有连接上或等其他情况,因此本人将排序这部分作为整个程序设计的重点。

三.程序可以满足以下功能:

1.各模块间通过菜单切换和调用

2.主函数通过调用菜单函数实现对各功能模块的调用,各功能模块间根据需要可相互调用。

3.程序能够保证各模块功能的独立和数据共享。/*不使用全局变量则能保证函数之间的独立性,利用形参与实参之间的数值传递来实现数据共享*/

4.相近功能以级联菜单的形式集成。

四、概要设计

1.方案设计

2.数据结构说明

struct date

{

int year,month,day; /*这个结构体的成员代表的是学生的出生年月日*/

};

struct Student /*这个结构体的成员分别代表了学生的学号、电话、名字、性别、年龄、

{ 成绩、出生年月日*/

long num,tel;

相关文档
最新文档