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

  • 格式:doc
  • 大小:270.50 KB
  • 文档页数:31

下载文档原格式

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

*********大学

课程设计报告

课程名称高级语言程序设计

设计题目学生信息管理系统

专业计算机科学与技术

班级

学号

姓名

完成日期

【问题描述】

学生信息管理软件设计。对学生信息进行管理,学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。试设计一个学生信息管理软件。【基本要求】

一、输入的形式和输入值的范围

形式:用scanf输入学生的学号,姓名,年龄,性别,出生年月,地址,电话,E-mail。输入一个学生信息一个回车。用输入的学号p1->num来控制输入,当输入的学号为0时,用break跳出循环。即if(p1->num==0)break。

输入值的范围:

学号、年龄为整型long num; int age;

姓名为字符串型15个字节char name[15];

性别为字符串型,10个字节char sex[10];

出生为字符串型,20个字节char chushen[20];

地址为字符串型,30个字节char dizhi[30];

邮箱为字符串型,输入11位数字char email[11]。

二、输出的形式

输出是以表格的形式输出,即表格的每一行都能显示第一个学生的信息,第二行是显示第二个学生的信息。

三、程序所能达到的功能

对学生信息进行管理,学生信息包括职学号,姓名,年龄,性别,出生年月,地址,电话,E-mail。

(1)系统以菜单方式工作

(2)学生信息录入功能。

(3)输出学生信息、浏览学生信息功能。

(4)查询和排序功能:(至少一种查询方式),如按学号查询、按姓名查询等。

(5)学生信息删除、修改功能(任选项)。

(6)添加学生信息。

【测试数据】

输入:设输入四个学生信息,以最后一个学生的学号为0来结束输入,学号是整型。

预期的输出结果:预期的输出结果请参见程序后的运行结果。

【数据结构】

排序记录的数据元素表采用一维数组存储结构,每个元素包含8个关键字段,其类型描述为:

#include

#include //分配size字节的存储区

#include //包含字符串处理函数的头文件,可以直接

调用现有的字符串处理的一系列函数#define len sizeof(struct student) //宏定义求字节运算符

#include //清屏功能

struct student //声明一个结构体类型struct student

{

long num; //定义学号为long型数据

char name[15]; //定义姓名

int age; //定义年龄

char sex[3]; //定义性别

char chushen[10]; //定义出生

char dizhi[20]; //定义出生地址

char phone[11]; //定义电话

char email[20]; //定义邮箱

struct student *next; //next是指针变量,指向结构体变量

【算法思想】

利用一维结构体存放所有学生的信息,输入后,在输出时要对学生按学号的高低排序,然后可以执行按学号查询学生信息,输入学号,删除学生信息,输入学号可以找出该学生信息,然后选择修改学生信息,如果来了新学生,还可以添加学生信息。

【总体设计】

主菜单包括:输入函数、学号排序、浏览函数、删除函数、修改函数、添加函数。

图1-1学生管理总体设计

【模块划分】

一、主函数:main()

显示系统工作菜单,显示该系统的所有功能。告诉使用者所有将会调用的被调函数,再运用选择函数switch即可根据使用者所输入的学号进入对应的功能程序。并且对菜单做了一个循环,进行完一个选择后,按回车键可进行清屏功能,把屏幕上除了主菜单以外都清空,然后可以继续选择那些可以使用的功能,这样可以方便使用者使用,并且每一步都很清晰。以8退出系统。

二、输入函数:struct student *creat()

在该程序的前面已经定义了一个结构体struct student用来储存学生的所有信息,(学号、年龄、姓名、性别、出生日期、地址、电话、邮箱)。定义p1和p2,struct student *p1,*p2;p1,p2是指向struct student类型数据的指针变量。定义一个n=0,n是输入的个数,主要作用是:如果输入一个学生信息,首地址指向p1,head=p1;否则p2的下一个地址指向p1,p2指向p1.

p2->next=p1;p2=p1;学号控制循环。

三、排序函数:void paixu(struct student *head)

用一个for语句做循环,不是NULL的话,指针指向下一个,按学生学号高低排序。整形直接交换,字符型用strcpy交换,类型相当于两个数据之间的交换。

四、输出函数:void printlist(struct student *head)

在主函数里边用while控制循环,输出学生信息,然后指针指向下一个。

五、查询函数:void findList_num(struct student *head) 和

void findList_num(struct student *head)

输入一个学号或姓名,做一个for循环,即指针pt指向第一个地址,再定义一个指针p1,让它等于pt,他是紧跟着pt后面的一个指针,让p1->next不等于NULL,pt指向下一个地址。这样就能修改最后一个学生信息了。如果要查询的学生的学号在学生里,就输出该学生信息,否则,就输出查询的学生信息不存在。

六、删除函数:int shanchu(struct student *head)

输入一个学号,先找到这个学生的信息。如果输入的学号在学生信息中,就进行以下循环:如果输入的是第一个学生的话,就head等于第二个学生信息;如果输入的学生信息是最后一个,就让倒数第二个等于NULL;否则的话,就让下一个学生信息覆盖前一个。如果输入的学号不在学生信息中,输出“此学生信息不存在”。

七、修改函数:struct student *delList(struct student *head,long del_num)

输入要修改的学号,找到该学生并且输出该学生的信息。然后屏幕上会出现学生信息的所有项目,用switch进行选择修改的项目。选择后输入新的学生信息,用它来覆盖原来的学生信息。

八、添加函数:void insert(struct student *head)

用一个while语句while(p2->next!=NULL)控制循环,p2的指针指向下一个地址,即p2=p2->next;这是找到最后一个地址,然后开辟动态存储区,

p1=(struct student *)malloc(len);输入要添加的学号,用学号为0来终止循环,如果不为0,就继续输入学生信息。

【源程序】

#include

#include //分配size字节的存储区

#include //包含字符串处理函数的头文件,可以直