利用单项链表实现简单的学生信息管理

合集下载

数据结构 用链表实现学生信息管理系统

数据结构 用链表实现学生信息管理系统

3、4、7、#include <iostream>using namespace std;//实现线性表的链式存储结构的类型定义typedef int Elemtype;#define OK 1;#define ERROR -1;struct NODE //结点类型{Elemtype elem;NODE *next;};struct LINK_LIST //链表类型{NODE *head;};//典型操作的算法实现//初始化链表Lint InitList(LINK_LIST *L){L->head = (NODE*)malloc(sizeof(NODE)); //为头结点分配存储单元if (L->head) {L->head->next=NULL; return OK;}else return ERROR ;}//销毁链表Lvoid DestoryList(LINK_LIST *L){NODE *p;while (L->head) //依次删除链表中的所有结点{p=L->head; L->head=L->head->next;free(p);}}//清空链表Lvoid ClearList(LINK_LIST *L){NODE *p;while (L->head->next){ //p指向链表中头结点后面的第一个结点p=L->head->next;L->head->next=p->next; //删除p结点free(p); //释放p结点占据的存储空间}}//求链表L的长度int ListLength(LINK_LIST L){NODE *p;int len;len=0;for(p=L.head;p->next!=NULL; p=p->next)len++ ;return(len);}// 判链表L空否。

学生成绩管理系统源代码 用单向链表实现

学生成绩管理系统源代码 用单向链表实现
int size;
if((fp = fopen("成绩表.dat","rb")) == NULL) { //如果文件不存在,则不进行读取操作
system("pause");
return;
}
else {
fp = fopen("成绩表.dat","rb"); //成功返回一个文件指针
#include"stdio.h"
#include"string.h"
#include"stdlib.h"
typedef struct score { //定义成绩信息结构体
char Number[20];//学号
char Name[20];//姓名
char Chinese[6];//语文成绩
pNodeScore = (p_node_score)malloc(sizeof(node_score));//为节点分配存储空间
if(fread(&pNodeScore->data,sizeof(struct score),1,fp) != 1) //将结构体中的数据以1个单位读入到pNodeScore->data
}
fclose(fp);
}
void View(){
p_node_score pNodeScore;
pNodeScore = headScore;
PrintTitle();//显示标题栏
while(pNodeScore != NULL) {
PrintScore(pNodeScore->data);//输出学生信息和成绩信息

基于单链表的学生信息管理系统源代码

基于单链表的学生信息管理系统源代码
几部分。其功能主要有: ⒈有关学生信息的录入,包括录入学生基本信息、学生考试成绩等。 ⒉学生信息的维护,包括添加修改学生基本信息、考试成绩信息。 ⒊学生信息的查询,包括查询学生的个人基本信息、科目考试成绩。 ⒋信息的报表打印,包括学生的基本信息的报表打印、考试成绩的报表打印。
1.2.2 性能需求 本项目是一个学生信息管理系统,运行环境 VC++6.0,项目运行速率正常,可
(4)本系统主要用于学校学生信息管理,总体任务是实现学生信息关系的系 统化、规范化和自动化,其主要任务是用计算机对学生各种信息进行日常管理,如 查询、修改、添加,另外还考虑到学生考试成绩,针对这些要求设计了学生信息管 理系统。本系统主要包括信息录入、信息维护、信息查询、报表打印、关闭系统这
3
学生信息管理系统
以满足用户需求。 1、时间特性要求:响应时间要低于 5 秒 2、便捷性:在程序运行过程中,系统自动提示用户进行每一步操作,程序功 能明了简洁!
1.3 本章小结
本章介绍了学生信息管理系统的背景意义,并对本系统功能需求和性能需求进 行了分析,可以清晰看到学生信息管理系统在进行信息管理时的优越性。
4
2.1 系统介绍
1.2 需求分析.......................................................................................................................................................................... 3 1.2.1 功能需求................................................................................................................................................................. 3 1.2.2 性能需求................................................................................................................................................................. 4

以单链表为存储结构,对多个班级(以两个班为例)的学生成绩进行操作

以单链表为存储结构,对多个班级(以两个班为例)的学生成绩进行操作

用C语言编写程序,以单链表为存储结构,对多个班级(以两个班为例)的学生成绩进行管理,要求实现如下功能:(1)通过终端或文件输入若干学生的班级号、学号、成绩,将每个班的数据分别保存在不同的单链表中,数据元素按成绩由高到低的顺序存放;然后分别按顺序(由高到低)输出各班的成绩表。

(2)输入班级、学号和成绩变更(如+5,-3),对各班至少1人的成绩进行修正,修正后仍要保持数据按成绩由高到低有序;然后分别按顺序输出各班的成绩表。

(3)分别输出各班的总人数、最高分、最低分、平均分。

#include<stdio.h>#include<string.h>#include<malloc.h>struct student{char number[9];int score;struct student *next;};typedef struct student st;void load(st **);void insert(st **,st);void change(st **,char *,int);st * deleted(st **,st **,st **,char *);void print(st *head[3]);void analysis(st *head[3]);void main(){int i;char *l =(char *)malloc(10);st stu;st *h1 = NULL,*h2 = NULL,*h3 = NULL;st *head[3] = {NULL,NULL,NULL};printf("--------------------------------------------------------\n\nEnter 1 to insert a date.\nEnter 2 to change a date.\nEnter 3 to print the dates.\nEnter 4 to analysis scores.\nEnter 5 to input dates from a file.\nEnter others to end.\n\n--------------------------------------------------------\n\n");scanf("%d",&i);while(i > 0 && i <= 5){switch(i){case 1:printf("Please enter the date.\n");scanf("%s%d",stu.number,&stu.score);insert(head,stu);break;case 2:printf("Please enter the number of change date and the change score.\n");scanf("%s%d",l,&i);change(head,l,i);break;case 3:print(head);break;case 4:analysis(head);break;case 5:load(&head[0]);}printf("--------------------------------------------------------\n\nEnter 1 to insert a date.\nEnter 2 to change a date.\nEnter 3 to print the dates.\nEnter 4 to analysis scores.\nEnter 5 to input dates from a file.\nEnter others to end.\n\n--------------------------------------------------------\n\n");scanf("%d",&i);}}void load(st **head){FILE *fp;st a = {0},b;char *l;l = (char *)malloc(15);printf("Please enter the file name.\n");scanf("%s",l);if((fp = fopen(l,"rt")) == NULL){printf("File open error.\n");}else{fscanf(fp,"%s%d",a.number ,&a.score);do{insert(head,a);b = a;fscanf(fp,"%s%d",a.number,&a.score);}while(b.score != a.score);fclose(fp);printf("File open successful.\n");}}void insert(st **head,st stu){st *p,*c,*n;n = (st *)malloc(sizeof(st));if(n != NULL){strcpy(n -> number,stu.number);n -> score = stu.score;n -> next = NULL;}elseprintf("Not inserted. No menory available.\n");if(stu .number[5] < 52 && stu .number[5] > 48){p = NULL;c = *(head + stu .number[5] - 49);while(c != NULL&& n -> score < c -> score){p = c;c = c -> next;}if(p){p -> next = n;n -> next = c;}else{n -> next = *(head + stu .number[5] - 49);*(head + stu .number[5] - 49) = n;}}elseprintf("Data error.");}st * deleted(st **head,char * dnumber){st *p,*c = NULL;if(*(dnumber + 5) < 52 && *(dnumber + 5) > 48){for(p = *(head + *(dnumber + 5) - 49);strcmp(p -> number,dnumber) && p -> next;p = p -> next){c = p;}if(p){if(c){c -> next = p -> next;return p;}else{*(head + *(dnumber + 5) - 49) = p -> next;return p;}}else{printf("Did not find the number.\n");return NULL;}}else{printf("data error!");return NULL;}}void change(st **head,char * cnumber,int cscore){st * dst = deleted(head,cnumber);if(dst != NULL){dst -> score = dst -> score + cscore;insert(head,*dst);printf("Data changed successful.");}}void print(st *head[3]){int i = 1;for(int j = 0;j < 3;j ++){if(head[j]){printf("Class %d'scores:\n number score| number score| number score| number score| number score|\n",j);for(st *p = head[j];p != NULL;p = p -> next){if(i % 5 == 0)printf("\n");printf("%s%6d ",p ->number,p ->score);i ++;}printf("\n");i = 1;}}}void analysis(st *head[3]){int total[3] = {0,0,0},h[3] = {0,0,0},l[3] = {100,100,1000},h90[3] = {0,0,0},l60[3] = {0,0,0},th = 0,tl = 0,i;double ave[3] = {0,0,0};for(int i = 0;i < 3;i ++){if(head[i]){for(st *p = head[i];p != NULL;p = p -> next){total[i]++;ave[i] += p -> score;if(p -> score > h[i])h[i] = p -> score;if(p -> score < l[i])l[i] = p -> score;if(p -> score > 90)h90[i]++;if(p -> score < 60)l60[i]++;}}}th = h[0];if(th < h[1])th = h[1];if(th < h[2])th = h[2];tl = h[0];if(tl > h[1])tl = h[1];if(tl > h[2])tl = h[2];printf("class NOP highest lowest ave up90 down60\n");for(i = 0;i < 3;i ++){printf("class%d%3d%8d%7d%6.1f%5d%7d\n",i+1,total[i],h[i],l[i],ave[i] / total[i],h90[i],l60[i]);}printf("total %3d%8d%7d%6.1f%5d%7d\n",total[0] + total[1] + total[2],th,tl,(ave[0] + ave[1] + ave[2]) / (total[0] + total[1] + total[2]),h90[0] + h90[1] + h90[2],l60[0] + l60[1] + l60[2]);}--------------------------------------------------------Enter 1 to insert a date.Enter 2 to change a date.Enter 3 to print the dates.Enter 4 to analysis scores.Enter 5 to input dates from a file.Enter others to end.--------------------------------------------------------5Please enter the file name.stu.txtFile open successful.--------------------------------------------------------Enter 1 to insert a date.Enter 2 to change a date.Enter 3 to print the dates.Enter 4 to analysis scores.Enter 5 to input dates from a file.Enter others to end.--------------------------------------------------------3Class 0'scores:number score| number score| number score| number score| number score| 20072101 99 20072103 77Class 1'scores:number score| number score| number score| number score| number score| 20072222 101 20072203 100Class 2'scores:number score| number score| number score| number score| number score| 20072301 88 20072300 66--------------------------------------------------------Enter 1 to insert a date.Enter 2 to change a date.Enter 3 to print the dates.Enter 4 to analysis scores.Enter 5 to input dates from a file.Enter others to end.--------------------------------------------------------1Please enter the date.20072206102--------------------------------------------------------Enter 1 to insert a date.Enter 2 to change a date.Enter 3 to print the dates.Enter 4 to analysis scores.Enter 5 to input dates from a file.Enter others to end.--------------------------------------------------------3Class 0'scores:number score| number score| number score| number score| number score| 20072101 99 20072103 77Class 1'scores:number score| number score| number score| number score| number score|20072206 102 20072222 101 20072203 100Class 2'scores:number score| number score| number score| number score| number score| 20072301 88 20072300 66--------------------------------------------------------Enter 1 to insert a date.Enter 2 to change a date.Enter 3 to print the dates.Enter 4 to analysis scores.Enter 5 to input dates from a file.Enter others to end.--------------------------------------------------------2Please enter the number of change date and the change score.20072206 -5Data changed successful.--------------------------------------------------------Enter 1 to insert a date.Enter 2 to change a date.Enter 3 to print the dates.Enter 4 to analysis scores.Enter 5 to input dates from a file.Enter others to end.--------------------------------------------------------3Class 0'scores:number score| number score| number score| number score| number score| 20072101 99 20072103 77Class 1'scores:number score| number score| number score| number score| number score| 20072222 101 20072203 100 20072206 97Class 2'scores:number score| number score| number score| number score| number score| 20072301 88 20072300 66--------------------------------------------------------Enter 1 to insert a date.Enter 2 to change a date.Enter 3 to print the dates.Enter 4 to analysis scores.Enter 5 to input dates from a file.Enter others to end.--------------------------------------------------------4class NOP highest lowest ave up90 down60 class1 2 99 77 88.0 1 0 class2 3 101 97 99.3 3 0 class3 2 88 66 77.0 0 0 total 7 101 88 89.7 4 0 --------------------------------------------------------Enter 1 to insert a date.Enter 2 to change a date.Enter 3 to print the dates.Enter 4 to analysis scores.Enter 5 to input dates from a file.Enter others to end.--------------------------------------------------------。

C课程设计单链表学生信息管理系统模板

C课程设计单链表学生信息管理系统模板

C课程设计单链表学生信息管理系统学生信息管理系统设计文档一、设计任务描述为了实现学籍管理的简单化,我们基于Visual C++集成开发环境编写了”学生信息管理系统”软件, 该软件适用于所有windows 操作系统, 面向广大用户, 界面简洁, 操作简单。

此软件主要是实现对学生学籍信息进行系统化的管理, 能够对学生基本信息进行添加、删除、查找、修改以及对学生成绩的管理, 主要是根据学生的学号及其姓名进行操作的。

该软件能够更加方便管理者管理学生学籍信息。

功能需求说明该系统所需要的功能有: 1、链表的建立2、学生信息的插入;3学生信息的查询;、4学生信息的输出;、5学生信息的修改;、6学生信息的删除;、7良好的欢迎选择界面。

、三、总体方案设计一、实现任务的方法1、在欢迎选择界面中, 使用Switch 这一选择结构来连接程序的执行和用户的命令;2、在从学生信息的建立直到删除, 都是使用链表的相关知识3、在定义学生信息时,建立一个Inform类;在定义学生课程成绩时,自定义了一个achieve结构体;总体结构ZJ建立链表三、模块划分(1) 链表的建立。

(2) 对链表信息的插入。

(3) 对链表信息的查找。

(4) 对链表信息的输出。

(5) 对链表信息的删除。

(6) 对链表信息的修改。

课程成绩信息作为附加信息,穿插于各个模块中三、数据结构说明」、自定义的数据结构资料内容仅供参考,如有不当或者侵权,请联系本人改正或者删除。

1、achieve (课程成绩)用于存放课程成绩信息包括课程数、课程名、成绩、学分、总分和平均分"谍稈数〃课程名(最參课程数为nn "学分 "总分"平均分 "默认枸匯雷数"计算该学生课程的加权平均分(总咸绩/总学分)2、inform (学生基本信息)用于存放学生基本信息,包括姓名、 学号、性别等。

"元素类型 "姓容 〃学号 “性别 "身份证号"出生年月曰 "家庭地址 "电话号码 "课程咸绩〃谍程咸绩输入 "遥程成缢输出3、结点结构-Nodetype,定义了数据域inform 和指针域next; structNodetype//结点结构{inform data; /7数据域Node type 切氏t; 〃指针域};Student 用于存放处理学生信息的各个功能函数,private 成员是链表的头指针。

数据结构:运用单链表 制作 学生成绩管理系统

数据结构:运用单链表 制作 学生成绩管理系统

单链表操作的实现
int GetElem(Node* head, int i) // 取第i个数据元素 void Insert(Node *head, int i, int d) // 插入数据元素
void Delete(Node *head, int i)
void Clear(Node *head) Node * CreateList(int n)
学生成绩管理系统
Team Members
Content
单链表
1 2 3 4
介绍 操作实现 删除结点 插入结点
学生成绩管理系 运行结果
4
单链表
头指针
头结点
链表为空时, 头结点的指针域为空
空指针

a1
a2
… ... an ^
有时为了操作方便,在第一个结点之前虚 加一个“头结点”,以指向头结点的指针 为链表的头指针。
利用单链表实现四大功能:
(1)输入记录: (2)查询记录: (3)更新记录: (4)输出记录:
主控main()函数的执行流程
若选1 调用add_record()函数,增加学生记录; 若选2 调用delete_record()函数,进行删除操作; 若选3 调用search_record()函数,进行查询操作; 若选4 调用modify_record()函数,进行修改操作;
// 删除数据元素
// 清除链表 // 生成含 n 个数据元素的链表
单链表操作:
(1)单链表中删除节点的示意图如下:
算法表示:p1->next=p2->next;
(2)单链表中插入节点的示意图如下:
算法表示:s>next=p->next;p->next=s;

用链表实现学生信息存储系统

用链表实现学生信息存储系统

#include <stdio.h>#include <stdlib.h>#include <string.h>#define PF printf#define LEN sizeof(struct student)//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆定义结构体◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆struct student{char NO[20];char name[20];int age;char sex[3]; /*'F'表示性别男,'M'表示性别女*/char birthday[10];char address[30];char phone[20];char e_mail[20];struct student *next; //下个结点};typedef struct student STU;STU *head=NULL; //全局指针int n,i=0; //全局变量//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆自定义函数◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆void show_menu(); //显示菜单void menu(); //执行菜单void creat_stu(); //建立链表void insert_stu(); //学生信息录入void print_stu(); //学生信浏览void search_NO(); //以学号方式查询信息void search_name(); //以姓名方式查询信息void arrage_stu(); //排序void del_stu(); //删除学生信息void revise_stu(); //修改学生信息void save(); //保存信息void main(){creat_stu();menu();}//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆创建链表◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆void creat_stu(){FILE *fp;long size;STU *p1,*p2;head=(STU *)malloc(sizeof(STU));head->next=NULL;if((fp=fopen("fname.txt","r"))==NULL){printf("这是新表\n");return;}fseek(fp,0L,2);size=ftell(fp);if(!size){printf("这是空表\n");return;} //开始创建链表rewind(fp); //移动到文件首p2=head->next; //找到但前位置while(!feof(fp)){p1=(STU *)malloc(sizeof(STU));fscanf(fp,"%s %s %d %s %s %s %s %s\n",p1->NO,p1->name,&p1->age,\p1->sex,p1->birthday,p1->address,p1->phone,p1->e_mail);p1->next=NULL;//创建节点完if(head->next==NULL)head->next=p1;elsep2->next=p1;p2=p1;n++;}p2->next=NULL;fclose(fp);//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆执行菜单◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆void menu(){int c;show_menu();while(1){scanf("%d",&c);switch(c){getchar();case 1:insert_stu();break;case 2:print_stu();break;case 3:search_NO(); break;case 4:search_name(); break;case 5:del_stu(); break;case 6:revise_stu(); break;case 7:arrage_stu();break;case 0:exit(0);} //执行菜单选项show_menu();}}//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆显示菜单◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆void show_menu(){PF("\n");PF("\n※※※※※※※※※※※※※※※※※※菜单※※※※※※※※※※※※※※※※※※\n");PF("\t\t◆1.输入学生信息◆\n");PF("\t\t★2.浏览学生信息★\n");PF("\t\t◆3.以学号方式查询信息◆\n");PF("\t\t★4.以姓名方式查询信息★\n");PF("\t\t◆5.删除学生信息◆\n");PF("\t\t★6.修改学生信息★\n");PF("\t\t◆7 排序◆\n");PF("\t\t★0. 退出★\n");PF("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");PF("\n请选择\n");}//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆学生信息录入◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆void insert_stu() //学生信息录入{n=0;STU *p1=NULL,*p2=NULL;p1=(STU *)malloc(sizeof(STU));PF("\n※※※※※※※※※※※※※※※※※※录入学生信息※※※※※※※※※※※※※※※※※※\n"); //录入学生信息PF("\t\t输入学生学号:\t");scanf("%s",p1->NO); //学号PF("\t\t输入学生姓名:\t");scanf("%s",p1->name); //姓名PF("\t\t输入学生年龄:\t");scanf("%d",&p1->age); //年龄PF("\t\t输入学生性别:\t");scanf("%s",p1->sex); //性别PF("\t\t输入学生出生年月:\t");scanf("%s",p1->birthday); //出生年月PF("\t\t输入学生地址:\t");scanf("%s",p1->address); //地址PF("\t\t输入学生电话:\t");scanf("%s",p1->phone); //电话PF("\t\t输入学生E-mail:\t");scanf("%s",p1->e_mail); //E-mailn++;if(head->next==NULL){head=(STU *)malloc(LEN);head->next=p1;}else{for(p2=head;p2->next!=NULL;p2=p2->next); /*找到最后的结点,然后将增加的结点挂在它上面*/p2->next=p1;}p1->next=NULL;save();//保存到文件}//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆学生信息浏览◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆void print_stu() //学生信浏览{STU *p=NULL;if(head==NULL) //判断链表是否为空{PF("文档中无记录!\n");return;}for(p=head->next;p!=NULL;p=p->next) //读出信息{PF("※※※※※※※※※※※※※※※※※※学生信息浏览※※※※※※※※※※※※※※※※※※\n");PF("\t\t学生学号:\t%s\n",p->NO);PF("\t\t学生姓名:\t%s\n",p->name);PF("\t\t学生年龄:\t%d\n",p->age);PF("\t\t学生性别:\t%s\n",p->sex);PF("\t\t学生出生年月:\t%s\n",p->birthday);PF("\t\t学生地址:\t%s\n",p->address);PF("\t\t学生电话:\t%s\n",p->phone);PF("\t\t学生E-mail:\t%s\n",p->e_mail);PF("\n");} //输出信息}//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆学生姓名信息查找◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆void search_name() //学生姓名信息查找{STU *p=NULL;char name[20];if(head==NULL) //判断链表是否为空{PF("文档中无记录!\n");return;}PF("输入学生姓名:");scanf("%s",name);for(p=head->next;p!=NULL;p=p->next) //读出信息{if(!strcmp(p->name,name)){PF("※※※※※※※※※※※※※※※※※※您查找的学生是※※※※※※※※※※※※※※※※※※\n");PF("\t\t学生学号:\t%s\n",p->NO);PF("\t\t学生姓名:\t%s\n",p->name);PF("\t\t学生年龄:\t%d\n",p->age);PF("\t\t学生性别:\t%s\n",p->sex);PF("\t\t学生出生年月:\t%s\n",p->birthday);PF("\t\t学生地址:\t%s\n",p->address);PF("\t\t学生电话:\t%s\n",p->phone);PF("\t\t学生E-mail:\t%s\n",p->e_mail);PF("\n");i=1;}} //输出信息if(!i){PF("无该生信息!请查证:"); } //没找到信息时的处理}//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆学生学号信息查找◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆void search_NO() //学生学号信息查找{STU *p=NULL;char NO[20];if(head==NULL) //判断链表是否为空{PF("文档中无记录!\n");return;}PF("请输入学生学号:");scanf("%s",NO);for(p=head->next;p!=NULL;p=p->next) //读出信息{if(!strcmp(p->NO,NO)){PF("※※※※※※※※※※※※※※※※※※您查找的学生是※※※※※※※※※※※※※※※※※※\n");PF("\t\t学生学号:\t%s\n",p->NO);PF("\t\t学生姓名:\t%s\n",p->name);PF("\t\t学生年龄:\t%d\n",p->age);PF("\t\t学生性别:\t%s\n",p->sex);PF("\t\t学生出生年月:\t%s\n",p->birthday);PF("\t\t学生地址:\t%s\n",p->address);PF("\t\t学生电话:\t%s\n",p->phone);PF("\t\t学生E-mail:\t%s\n",p->e_mail);PF("\n");i=1;}} //输出信息if(!i){PF("无该生信息!请查证:"); } //没找到信息时的处理}//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆修改学生信息◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆void revise_stu(){STU *p=NULL;if(head==NULL) //判断链表是否为空{PF("文档中无记录!\n");return;}char NO[20];PF("请输入学生的学号:\t");scanf("%s",NO);for(p=head->next;p!=NULL;p=p->next){if(!strcmp(p->NO,NO)) //验证信息是否正确{PF("※※※※※※※※※※※※※※※※※※您要修改的学生是※※※※※※※※※※※※※※※※※※\n");PF("\t\t学生学号:\t%s\n",p->NO);PF("\t\t学生姓名:\t%s\n",p->name);PF("\t\t学生年龄:\t%d\n",p->age);PF("\t\t学生性别:\t%s\n",p->sex);PF("\t\t学生出生年月:\t%s\n",p->birthday);PF("\t\t学生地址:\t%s\n",p->address);PF("\t\t学生电话:\t%s\n",p->phone);PF("\t\t学生E-mail:\t%s\n",p->e_mail);PF("\n"); //输出要修改信息i=1;PF("※※※※※※※※※※※※※※※※※※修改学号为%s的学生※※※※※※※※※※※※※※※※※※\n",NO);strcpy(p->NO,NO);PF("\t\t输入修改学生姓名:\t");scanf("%s",p->name);PF("\t\t输入修改学生年龄:\t");scanf("%d",&p->age);PF("\t\t输入修改学生性别:\t");scanf("%s",p->sex);PF("\t\t输入修改学生出生年月:\t");scanf("%s",p->birthday);PF("\t\t输入修改学生地址:\t");scanf("%s",p->address);PF("\t\t输入修改学生电话:\t");scanf("%s",p->phone);PF("\t\t输入修改学生E-mail:\t");scanf("%s",p->e_mail);PF("\n"); //输入修改信息save();}}if(!i){PF("无该生信息!请查证:");} /*没找到信息时的处理*/}//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆删除学生信息◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆void del_stu(){STU *p=NULL;if(head==NULL) //判断链表是否为空{PF("文档中无记录!\n");return;}else{char NO[20];PF("请输入学生的学号:\t");scanf("%s",NO);for(p=head;p!=NULL;p=p->next)if(!strcmp(p->next->NO,NO)) //验证信息是否正确{PF("※※※※※※※※※※※※※※※※※※您要删除的学生是※※※※※※※※※※※※※※※※※※\n");PF("\t\t学生学号:\t%s\n",p->next->NO);PF("\t\t学生姓名:\t%s\n",p->next->name);PF("\t\t学生年龄:\t%d\n",p->next->age);PF("\t\t学生性别:\t%s\n",p->next->sex);PF("\t\t学生出生年月:\t%s\n",p->next->birthday);PF("\t\t学生地址:\t%s\n",p->next->address);PF("\t\t学生电话:\t%s\n",p->next->phone);PF("\t\t学生E-mail:\t%s\n",p->next->e_mail);PF("\n"); //输出要删除的信息i=1;if(p->next->next){printf("第一个\n");p->next=p->next->next;}elsep->next=NULL;n--;save();return;}if(!i){PF("无该生信息!请查证:"); //没找到信息时的处理return;}}}}//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆按学号排序◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆void arrage_stu(){STU *p1,*p2;int in=0,j;if(head->next==NULL) //首先判断{printf("你还没有记录,无法排序\n");return ;printf("n=%d",n);p1=head->next;for(in=0;in<n-1;in++)for(j=0,p1=head->next;j<=n-in-3;p1=p1->next,j++){if(j==0)//第一次比较第一个和第二个节点信息{if(strcmp(p1->NO,p1->next->NO))//比较p1本身和p1下一个节点{p2=p1->next;p1->next=p1->next->next;p2->next=p1;head->next=p2;p1=head->next;//从新给CUR赋值/*p1=head->next;p1=p2;错误:如果一个变量=他前一个节点的NEXT 那么不可以说把另外一个变量赋给它就可以改变它前一个节点的NEXT 他只能操作后节点*/}}if(strcmp(p1->next->NO,p1->next->next->NO))//比较p1下一个和p1下两个节点{p2=p1->next;p1->next=p1->next->next;p2->next=p1->next->next;p1->next->next=p2;}}if(strcmp(head->next->NO,head->next->next->NO))//只有两个节点信息时直接比较他们两个{p1=head->next;head->next=p1->next;p1->next=p1->next->next;head->next->next=p1;if(n==2) //只有两个节点信息时把第二个节点的next赋为空head->next->next->next=NULL;}}//◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆保存信息◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆void save(){printf("※※※※※※※※※※※※※※※※※※保存信息并结束※※※※※※※※※※※※※※※※※※\n");STU *p=NULL;FILE *fp;char *filename="fname.txt";if((fp=fopen("fname.txt","w"))==NULL) //出错检测{printf("\n打不开文件!\n");return;}if(head->next==NULL){printf("\n信息为空!\n");return;}elsep=head->next;while(p!=NULL){fprintf(fp,"%s %s %d %s %s %s %s %s\n",p->NO,p->name,p->age,p->sex,p->birthday,p->address,p->phone,p->e_mail);//存入文件p=p->next;}printf("保存完毕!\n");fclose(fp);}。

学生管理系统(链表版)

学生管理系统(链表版)

first=s; } else { q=first; while(q->next !=p)//查找待插入的节点 p 的前驱节点 q q=q->next ; q->next =s;//将新节点 s 插入在 q 和 p 之间 s->next =p; } return first; } //在 first 指向的单链表中,删除学号为 a 的节点 Lnode *delete_(Lnode **first,int a)//学号为 a { Lnode *q=*first,*p=*first; if(*first==NULL) //如果链表为空链表 return NULL; if((*first)->data.num==a)//如果被删除的节点是首节点 { p=*first; *first=(*first)->next; return p; } for(q=*first;q->next;q=q->next)//如果待删除节点是中间节点 { p=q->next; if(p->data.num==a)//找到符合要求的节点 { q->next=p->next;//删除节点 p return p; } } return NULL; } //在 first 指向的单链表中,查找学号为 num 的节点 Lnode *find(Lnode *first,int num) {
//按数学成绩排序的总算法 Lnode *sortmath(Lnode *first); //按平均分成绩排序的总算法 Lnode *sortaverage(Lnode *first); //在 first 指向的单链表中,按 math 排序 Lnode *sort_math(Lnode *first,Lnode *s); //链表的倒置 Lnode *reverse(Lnode *first); //按计算机最大值排序 void maxcomputer(Lnode *first); //按英语最大值排序 void maxenglish(Lnode *first); //按平均分最大值排序 void maxaverage(Lnode *first); //按数学最大值排序 void maxmath(Lnode *first); //在 first 指向的单链表中,按 average 排序 Lnode *sort_average(Lnode *first,Lnode *s);

数据结构单链表应用(简易学生信息管理系统)

数据结构单链表应用(简易学生信息管理系统)

数据结构单链表应用(简易学生信息管理系统)1这是主文件建立文件“student-main.cpp”粘贴保存#include#include#include#include#include"student-fun.cpp"#define PRINT "%6d %12s %5.2f\n",p->num,p->name,p->score //定义输出格式#define PRINTF " 学号姓名成绩\n"char cmd;int num;lklist L;void jiemian(){ system("cls");printf("\n***************************************************** ****************** *");printf("\n****** 欢迎使用简易班级学生信息系统********");printf("\n**************");printf("\n******i--增加学生d--删除学生q--退出系统********");printf("\n****** f--查询c--修改l--列出所有学生信息********");printf("\n***************************************************** ****************** *\n");}void ReadCommand(){do {printf("\n 请根据提示输入命令: ");fflush(stdin); //清除文件缓冲区,文件以写方式打开时将缓冲区内容写入文件scanf("%c",&cmd);} while (cmd!='i'&&cmd!='d'&&cmd!='l'&&cmd!='q'&&cmd!='f'&&c md!='c');}void Interpret()switch(cmd){case 'i': insert_lklist(L); break;case 'd': del_lklist(L);break;case 'l': list_lklist(L); break;case 'f': find_lklist(L);break;case 'c': cor_lklist(L);break;case 'q': exit(0);}}void main(){L=initial_lklist();do { jiemian();ReadCommand();Interpret();system("pause"); //暂停,按任意键继续。

链表实现学生信息管理

链表实现学生信息管理

实验2利用单链表实现学生信息管理1.实验目的·掌握单链表结构的实现方式;掌握单链表常用算法的实现;·熟悉利用单链表解决问题的一般思路;了解单链表结构的优点与不足。

2.实验内容与要求以学生信息为数据结点建立带头结点的单链表。

一个结点的信息包括学号、姓名、性别、班级和联系电话。

程序用户可通过数字键选择信息浏览、插入信息、修改信息、删除信息等功能。

对程序的具体要求如下:(1)程序启动后,显示下列选项信息:1—信息浏览2—插入信息3—删除信息4-修改信息0—退出程序(2)输入数字“1”显示所有学生信息列表。

(3)输入数字“2”进入插入信息功能模块。

程序依次提示并由用户输入学号、姓名、性别、班级和联系电话,最终实现在线性表头部插入一个学生信息。

(4)输入数字“3”进入删除信息功能模块。

程序提示并由用户输入学号,最终实现按照学号删除某个学生信息。

(5)输入数字“4”进入修改信息功能模块。

程序提示并由用户输入学号,最终实现按照学号修改某个学生信息。

(6)通过输入数字“0”使得程序结束。

(7)当用户执行浏览、插入、删除功能后,程序应继续提示用户通过数字键选择相应功能,直到用户输入数字“0”程序才结束。

3.实验编程指导(1)可仿照本章单链表的定义形式,建立学生信息结点数据,并建立一个空的单链表。

(2)参考本章中单链表的算法描述和例题中的算法实现,在本程序中增加信息浏览、插入结点、删除结点、修改结点内容的算法实现函数。

(3)编写主函数,可通过在while循环结构中嵌入switch分支结构实现操作选择功能。

(4)完善插入、删除功能。

实现插入信息的录入、删除记录的定位等细节。

并完善用户操作界面,给出详细的操作提示。

5.实验报告要求实验报告要求以word文件形式发到老师邮箱。

内容包括:(1)报告封面包括实验名称、班级、姓名、学号以及实验完成日期。

(2)各程序模块名称及功能说明。

并绘制出主要功能函数的程序流程图。

链表实现学生学籍管理系统

链表实现学生学籍管理系统

#include <stdio.h>#include <string.h>#include <stdlib.h>#define N 15 //学号位数#define M 15 //姓名字节数#define L 4 //成绩的科数int aa=0;//记录筛选时打开的文void printf_(struct stu *); //输出单个的学生数据struct stu * scanf1_(); //接收单个的学生数据,返回指针,struct stu * scanf_(); //得到学生的数据,并放入到链表中void print_(struct stu *); //输出链表中的学生信息struct stu *num_paixu(struct stu *); //用链表给学生排序void chaxun(struct stu *); //根据学生的学号查询学生的信息,并把学生的数据输出struct stu * charu(struct stu *); //将学生的数据插入到顺序排放的链表中,并且插入后也是顺序排放的。

struct stu * shanchu(struct stu *); //删除数据void xiugai(struct stu *); //修改学生的信息。

void fprint_(struct stu *); //把数据写入到文件int to_ji(struct stu *); //统计学生的总人数int t_ji_tj(struct stu *); //统计成绩在某一区间内的人数struct stu * ch_ji_paixu(struct stu *); //按成绩排序,默认的是按总成绩排序struct s *shaixuan(struct stu *); //筛选符合条件的数据,得到符合条件的结构体数据的指针。

void shuchu_shai(struct s *); //输出筛选出来的数据void fb_shu_shai(struct s *); //将筛选出来的数据输入到文件中void avrage(struct stu *head,float *); //计算平均成绩void fb_avrage(float *); //将平均成绩放在文件的最后面//建立学生结构体struct stu{char num[N];char name[M];int ch_ji[L];struct stu *next;};//建立一个链表,存放学生结构体的指针struct s{struct stu *p;struct s *ps;};void main(){int i,n,x=1,k=0;float a[L]={0};struct stu *head=NULL;struct s *shead=NULL;char ch;while(x){ system("cls");printf("********************************************************************* **********\n");printf(" 0---退出系统1---录入数据\n");printf(" 2---保存文件3---按成绩排序\n");printf(" 4---查看信息5---按学号排序\n");printf(" 6---统计人数7---按条件筛选\n");printf(" 8---查询信息9---显示筛选结果\n");printf(" 10---插入数据11---保存筛选结果\n");printf(" 12---删除数据13---计算平均成绩\n");printf(" 14---修改数据15---保存平均成绩\n");printf(" 16---按条件统计人数\n");printf("********************************************************************* **********\n");scanf("%d",&n);getchar();//有啥作用switch(n){case 0:x=0;break;case 1:head=scanf_();break;case 2:if(head==NULL||head->next==NULL){printf("请先录入学生的数据!");getchar();break;}elsefprint_(head);break;case 3:if(head==NULL||head->next==NULL){printf("请先录入学生的数据!");getchar();break;}else{head=ch_ji_paixu(head);break;}case 4:if(head==NULL||head->next==NULL){printf("请先录入学生的数据!");getchar();break;}elseprint_(head);break;case 5:if(head==NULL||head->next==NULL){printf("请先录入学生的数据!");getchar();break;}else{head=num_paixu(head);printf("是否显示排序结果Y/N ?");ch=getchar();getchar();if(ch=='y'||ch=='Y'){printf("\n");print_(head);}}case 6:if(head==NULL||head->next==NULL){printf("请先录入学生的数据!");getchar();break;}else{k=to_ji(head);printf("总共有%3d 名学生",k);getchar();break;}case 7:if(head==NULL||head->next==NULL){printf("请先录入学生的数据!");getchar();break;}else{shead=shaixuan(head);if(shead!=NULL&&shead->ps!=NULL){printf("是否显示筛选结果Y/N ?");ch=getchar();if(ch=='y'||ch=='Y'){printf("\n");shuchu_shai(shead);getchar();}}break;}case 8:if(head==NULL||head->next==NULL){printf("请先录入学生的数据!");getchar();}else{chaxun(head);getchar();break;}case 9:if(head==NULL||head->next==NULL) {printf("请先录入学生的数据!");getchar();break;}else{printf("\n");shuchu_shai(shead);getchar();break;}case 10:if(head==NULL||head->next==NULL){printf("请先录入学生的数据!");getchar();break;}elsehead=charu(head);break;case 11:if(head==NULL||head->next==NULL){printf("请先录入学生的数据!");getchar();break;}else{fb_shu_shai(shead);getchar();break;}if(head==NULL||head->next==NULL){printf("请先录入学生的数据!");getchar();break;}else{head=shanchu(head);break;}case 13:if(head==NULL||head->next==NULL){printf("请先录入学生的数据!");getchar();break;}else{avrage(head,a);printf("平均值计算成功!\n是否显示平均成绩Y/N ?");ch=getchar();if(ch=='y'||ch=='Y'){printf("\n 语文数学英语总成绩\n");printf("%-8.2f%-8.2f%-8.2f%-8.2f",a[0],a[1],a[2],a[L-1]);getchar();}break;}case 14:if(head==NULL||head->next==NULL){printf("请先录入学生的数据!");getchar();break;}else{xiugai(head);break;}case 15:if(head==NULL||head->next==NULL){printf("请先录入学生的数据!");getchar();break;}else{fb_avrage(a);printf("平均值保存成功!");getchar();break;}case 16:if(head==NULL||head->next==NULL){printf("请先录入学生的数据!");getchar();break;}else{k=t_ji_tj(head);if(k>0){printf("符合条件的有%3d 名学生!",k);getchar();}else if(k==0){printf("没有符合条件的学生!");getchar();}else if(k==-2)getchar();break;}default :printf("输入有误,请重新输入!");getchar();break;}}}//输出单个的学生数据void printf_(struct stu *p0){int i;printf("学号:");puts(p0->num);printf("姓名:");puts(p0->name);printf("语文数学英语总成绩\n");for(i=0;i<L;i++)printf("%-8d",p0->ch_ji[i]);printf("\n");}//接收单个的学生数据,返回指针,struct stu * scanf1_(){int i,sum=0;struct stu *p0;p0=(struct stu *)malloc(sizeof(struct stu));printf("请输入学生的学号:");gets(p0->num);printf("请输入学生的姓名:");gets(p0->name);printf("请输入学生的三科成绩(语文、数学、英语):");for(i=0;i<L-1;i++){scanf("%d",&p0->ch_ji[i]);sum+=p0->ch_ji[i];}getchar();p0->ch_ji[L-1]=sum;return p0;}//得到学生的数据,并放入到链表中struct stu * scanf_(){struct stu *p1,*p2,*head;int i,sum=0,n=0;printf("注意:当学生学号为0 时输入结束\n\n");p1=(struct stu *)malloc(sizeof(struct stu)); /*得到学生信息*/head=p2=p1;do{ printf("请输入学生的学号:");gets(p1->num);if(strcmp(p1->num,"0")==0)break;printf("请输入学生的姓名:");gets(p1->name);printf("请输入学生的三科成绩(语文、数学、英语):");for(i=0;i<L-1;i++){scanf("%d",&p1->ch_ji[i]);sum+=p1->ch_ji[i];}getchar();printf("\n");p1->ch_ji[L-1]=sum;sum=0;p1=(struct stu *)malloc(sizeof(struct stu));p2->next=p1;p2=p1;n++;}while(1);p1->next=NULL;printf("成绩输入结束!\n");getchar();/*学生的数据被放在链表中*/return head;}/*输出链表中的学生信息*/void print_(struct stu *head){int i;struct stu *p1,*p2;p1=p2=head;while(p1->next!=NULL){printf("学号:");puts(p1->num);printf("姓名:");puts(p1->name);printf("语文数学英语总成绩\n");for(i=0;i<L;i++)printf("%-8d",p1->ch_ji[i]);printf("\n");p1=p2->next;p2=p1;}getchar();}/*用链表给学生排序*/struct stu *num_paixu(struct stu *head){struct stu *p1,*p2,*p3,*p4,*p5,*p6,*p7;int x=1;for(p1=head;p1->next!=NULL;p4=p1,p1=p1->next){p3=p1;for(p2=p1->next,p5=p7=p2;p2->next!=NULL;p7=p2,p2=p2->next){if(strcmp(p3->num,p2->num)>0){p3=p2;p5=p7;}}if(p3!=p1){if(x&&p1==head){p6=p1->next;p1->next=p3->next;p3->next=p6;p5->next=p1;head=p3;p1=p3;x=0;}else{p6=p1->next;p1->next=p3->next;p3->next=p6;p4->next=p3;p5->next=p1;p1=p3;}}printf("排序成功!\n");return head;}//根据学生的学号查询学生的信息,并把学生的数据输出void chaxun(struct stu *head){char a[N];struct stu *p1;printf("请输入要查询的学号:");gets(a);p1=head;while(p1->next!=NULL){if(strcmp(p1->num,a)==0)break;p1=p1->next;}if(p1->next==NULL)printf("没有找到学号为%s 的学生!\n",a);else{printf("要查询的学生信息如下:\n\n");printf_(p1);}}//将学生的数据插入到顺序排放的链表中,并且插入后也是顺序排放的。

数据结构 利用单链表实现学生基本信息管理 课程设计 实验报告

数据结构 利用单链表实现学生基本信息管理 课程设计 实验报告

数据结构课程设计设计题目:利用单链表实现学生基本信息管理目录课题名称利用单链表实现学生基本信息管理院系年级专业学号姓名成绩课题设计目的与设计意义课题设计目的:(1)学会单链表结点的定义(2)掌握单链表的基本运算,熟悉对单链表的一些基本操作和具体函数的定义。

(3)加深对链表的理解,逐步培养解决实际问题的编程能力(4)创建一个初始链表,通过调用定义的基本操作函数来实现单链表上的插入、删除元素等操作。

调试程序并对相应的输出做出分析;修改输入数据,预期输出并验证输出的结果。

加深对有关意义:一般来讲,课程设计教学实验复杂一些,深度更广并且更加接近实用.通过课程设计的综合训练,培养学生实际分析问题,编程和动手能力,使学生对数据结构进行更深一层的了解,培养同学们对学习数据结构这门课程的兴趣, 让同学们学会如何去查找资料和整合处理这些资料的能力, 也为以后的大学毕业设计论文打下了一个初步的基础.这些课程设计都是比较难的,要分成几个小项目, 几个学生一组, 培养团队协作精神. 最终帮助学生系统掌握课程的主要内容, 更好地完成教学任务. 基本掌握面向过程程序设计的基本思路和方法; (2)达到熟练掌握数据结构的基本知识和技能;(3)能够利用所学的基本知识和技能,解决简单的程序设计问题.指导教师:年月日一:课程设计目的和意义...................................................................................................... - 1 -1、课程设计目的:............................................................................................................ - 1 -2、课程设计意义:............................................................................................................ - 1 - 二:需求分析与要求:.......................................................................................................... - 1 -1、程序功能:.................................................................................................................... - 1 -2、基本要求:.................................................................................................................... - 2 -3、功能要求:.................................................................................................................... - 2 -(1)信息录入功能:................................................................................................ - 2 -(2)查询功能:........................................................................................................ - 2 -(3)插入功能:........................................................................................................ - 2 -(4)删除功能:........................................................................................................ - 2 -(5)输出功能:........................................................................................................ - 2 -4、说明:............................................................................................................................ - 2 -5、输入输出的形式:........................................................................................................ - 3 -6、开发环境:.................................................................................................................... - 3 -三、概要设计:.......................................................................................................................... - 3 -四、模块图:.............................................................................................................................. - 5 -五、详细设计:.......................................................................................................................... - 5 -六、运行结果与分析:.......................................................................................................... - 10 -1 、主界面........................................................................................................................ - 10 -2.建立学生信息表............................................................................................................ - 11 -3、查询某学生的所有信息。

学生宿舍管理系统(单链表)

学生宿舍管理系统(单链表)

实验二:学生信息管理(单链表)【实验目的】1. 设计一个学生信息管理系统2. 掌握用C语言定义单链表结构,并实现其创建、插入、删除等基本操作。

【实验内容】本次实验通过单链表的基本操作,实现一个简单的学生信息管理系统,包括:学生信息链表的建立、添加学生信息、查询学生信息、删除学生信息、输出所有学生信息。

【实验要求】本实验是对学生的信息管理作一个简单的模拟,用菜单选择操作方式完成下列功能:链表的建立2.插入学生信息3.查询学生信息4.删除学生信息5.输出所有学生信息0.退出管理系统【知识要点】本实验涉及单链表的各种操作,包括单链表的建立、结点的查找、插入、删除等基本运算。

链表中插入结点的指针变化,删除p所指结点的指针变化。

【实现提示】本题实质是建立学生信息线性表,每条信息由学号、姓名、性别与成绩组成,即链表中每个结点由5个域组成,分别为:学号、姓名、成绩、存放下一个结点地址的next域。

要求完成的五项功能可写成五个函数(0项功能由菜单程序实现),登记学生成绩对应建立学生单链表的功能,2、3、4这三个功能分别对应单链表的插入、查询与删除三大基本操作。

【代码】#include <stdio.h>#include<malloc.h>#include<string.h>typedef struct{char num[8];/*学号*/char name[9];/*姓名*/char gender[3];/*性别*/int score;/*成绩*/}DataType;typedef struct node{DataType data;struct node *next;}ListNode;typedef ListNode *LinkList;LinkList head;/*函数说明*/int menu_select();LinkList createList(void);void printList(LinkList head);int insertNode(LinkList head,ListNode *p,int i);ListNode *findList(LinkList head);void delNode(LinkList head);void main(){ListNode *p;int i;while(1){switch(menu_select()){case 1:printf("**************************************\n");printf(" 学生信息链表的建立\n");printf("***************************************\n");head = createList();break;case 2:printf("**************************************\n");printf("添加学生信息\n");printf("**************************************\n");printf("\n学号(8)姓名(8)性别成绩\n");printf("**************************************\n");p=(ListNode *)malloc(sizeof(ListNode));scanf("%s%s%s%d",p->data.num,p->,p->data.gender,&p->data.score);printf("请输入要插入的位置:\n");fflush(stdin);scanf("%d",&i);if(insertNode(head,p,i)==-1){printf("没有合适的插入点!\n");}else{printf("结点已经插入\n");}break;case 3:printf("**************************************\n");printf("查询学生信息\n");printf("**************************************\n");p=findList(head);if(p!=NULL){printf("\n学号(8)姓名(8)性别成绩\n");printf("-------------------------------------------\n");printf("%s,%s,%s,%d\n",p->data.num,p->,p->data.gender,p->data.score);printf("------------------------------------------------------------------\n");}elseprintf("没查到要查询的学生信息!");break;case 4:printf("**************************************\n");printf("删除学生信息\n");printf("**************************************\n");delNode(head);break;case 5:printf("**************************************\n");printf("输出所有学生信息\n");printf("**************************************\n");printList(head);break;case 0:printf("再见!\n");getchar();return;}}}int menu_select(){int sn;printf("\n 学生信息管理系统\n");printf("=========================================\n");printf(" 1.学生信息链表的建立\n");printf(" 2.插入学生信息\n");printf(" 3.查询学生信息\n");printf(" 4.删除学生信息\n");printf(" 5.输出所有学生信息\n");printf(" 0.退出管理系统\n");printf("==========================================\n");printf("请选择0-5:\n");for(;;){scanf("%d",&sn);if (sn<0 || sn>5)printf("\n\t输入错误,重选0-5\n");elsebreak;}return sn;}LinkList createList(void){ListNode *p,*rear;char flag = 'y';head = (ListNode *)malloc(sizeof(ListNode));rear = head;while(flag=='y' || flag=='Y'){p=(ListNode *)malloc(sizeof(ListNode));printf("\n学号(8)姓名(8)性别成绩\n");scanf("%s%s%s%d",p->data.num,p->,p->data.gender,&p->data.score);rear->next = p;rear = p;printf("继续输入吗?(y/n):");flag = getchar();}rear->next = NULL;return head;}void printList(LinkList head){ListNode *p;p=head->next;printf("\n学号(8)姓名(8)性别成绩\n");printf("-------------------------------------------\n");while(p!=NULL){printf("%s,%s,%s,%d\n",p->data.num,p->,p->data.gender,p->data.score);printf("------------------------------------------------------------------\n");p=p->next;}}int insertNode(LinkList head,ListNode *p,int i){ListNode *p1;int j=1;p1=head;if(p1->next==NULL)/*空表:插入作为第一个结点*/{if(i==0){p1->next=p;p->next=NULL;}elsereturn -1;}while((j<=i-1)&&(p1!=NULL))/*找到第i-1个结点,p1指向该结点*/ {p1=p1->next;j++;}if(p1==NULL)/*没有合适的插入点*/return -1;p->next=p1->next;p1->next=p;return 0;}ListNode *findList(LinkList head){ListNode *p;char num[8];char name[9];int xz;printf("===========================\n");printf("1、按学号查询\n");printf("2、按姓名查询\n");printf("===========================\n");printf(" 请选择:");p=head->next;scanf("%d",&xz);if (xz==1){printf("请输入要查找学生的学号:");scanf("%s",num);while(p && strcmp(p->data.num,num)!=0)p=p->next;}elseif (xz==2){printf("请输入要查找学生的姓名:");scanf("%s",name);while (p && strcmp(p->,name)!=0)p=p->next;}return p;}void delNode(LinkList head){ListNode *p,*q;printf("请先查找您要删除的学生信息:\n");p=findList(head);if(p==NULL){printf("没有查到要删除的学生信息");return;}q=head;while(q!=NULL && q->next!=p) q=q->next;q->next=p->next;free(p);printf("该学生信息已被删除!\n");}。

用链表实现学生成绩信息管理

用链表实现学生成绩信息管理

用链表实现学生成绩信息管理【摘要】计算机已经成为我们学习和工作的得力助手。

今天,计算机的价格已经十分低廉,性能有了长足的进步,它已经被应用于许多领域。

另外,信息技术在管理方面也有了越来越深入而广泛的应用,信息管理系统的实施在技术上已逐步成熟。

信息管理系统是一个不断发展的新型学科,任何一个单位要生存要发展,要高效率地把内部活动有机地组织起来,就必须建立与自身特点相适应的信息管理系统。

尤其是在学校里,要处理海量的学生数据相当麻烦,为了解决传统学生成绩管理所面临着的这些问题,学生成绩管理系统也就应运而生了。

本文阐述了学生成绩管理工作与信息化紧密结合的管理系统的背景和意义,对该系统的总体结构和各功能模块进行了详细的论述。

系统包括了学生成绩查询模块、学生成绩修改和录入模块、学生成绩求总和排序模块等等。

在各个功能模块中对各种信息进行编辑,具体包括添加、修改、删除、查询等基本操作。

把学生成绩管理简单化,以节省更多的人力和不必要的工作。

【关键词】学生成绩管理系统;VC++6.0;指针,链表,类,文件存储与读取目录1系统概述 (3)1.1系统的设计需求 (3)1.2 系统的功能模块划分 (3)2需求分析 (3)2.1系统需求分析 (3)2.2系统数据流图 (4)2.3系统功能介绍 (4)2.4系统功能模块图 (5)3详细设计 (5)3.1程序设计原理 (5)3.2主要代码描述 (5)3.3各功能模块代码 (15)4系统测试 (21)4.1调试过程 (21)4.2调试结果说明 (26)结束语 (26)参考文献 (26)1系统概述该系统实现对若干大学生的学习成绩进行管理,能实现按学期、按班级完成对学生成绩的录入、修改,能按班级统计学生的成绩,求学生的总分及平均分,并能根据学生的平均成绩进行排序能查询学生成绩,不及格科目及学生名单,能按班级输出学生的成绩单等。

1.1系统的设计需求整个系统用VC++进行实现,用指针、链表来实现学生成绩的数据结构设计,系统具有录入、修改、求总、求平均分、输出等功能。

基于单链表的教务管理系统设计与实现

基于单链表的教务管理系统设计与实现

基于单链表的教务管理系统设计与实现随着信息化时代的到来,各个行业都开始迎合信息化的潮流,教育行业自然也不例外。

教务管理系统的出现,极大地方便了学校的管理和教育工作者的工作,提高了工作效率。

在本篇文章中,将介绍一种基于单链表的教务管理系统的设计与实现。

一、系统需求分析首先,为了能够设计一套完整的教务管理系统,必须对教务管理的各个方面进行系统地分析和了解,明确各个方面的需求点,才能够更好地满足用户的需求。

主要需求点分为以下几方面:1. 学生管理:包括学生个人信息的录入、修改、查看、删除等功能;生成学生花名册、班级名单、学生汇总表等;考试成绩的录入和查看。

2. 教师管理:包括教师个人信息的录入、修改、查看、删除等功能;生成教师工作表、教师汇总表等。

3. 课程管理:包括课程信息的录入、修改、查看、删除等功能;生成课程表等。

4. 班级管理:包括班级信息的录入、修改、查看、删除等功能;生成班级花名册、学生名单等。

5. 系统权限管理:指的是管理员对教务系统的权限进行设置和管理。

二、系统设计与实现1. 数据结构选择经过对需求分析的研究,我们发现单链表是一种很好的数据结构。

它可以方便地对学生、教师、课程、班级等各种信息进行存储和管理。

因此,我们选择使用C 语言来设计和实现这个教务管理系统,并使用单链表作为主要的数据结构。

2. 系统模块划分针对以上的需求点,我们将教务管理系统划分为学生管理模块、教师管理模块、课程管理模块、班级管理模块和系统权限管理模块。

每个模块都应该有相应的程序来进行数据的录入、修改、删除、查询、输出等操作,同时需要将不同模块中的数据进行关联,实现教务管理系统的完整功能。

3. 系统功能实现每个模块的功能实现都较为简单,但是需要注意的是,数据之间的联系与关联比较复杂。

举个例子,考试成绩记录需要与学生、课程、教师等信息进行关联,班级名单需要与学生信息、班级信息等多个数据进行关联。

在实现过程中,需要将这些数据进行适当的封装,将其关系建立在单链表节点之间,实现数据的关联和查询。

链表实现学生信息菜单管理系统

链表实现学生信息菜单管理系统

链表实现学生信息菜单管理系统-标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII实验名称:链表实现学生信息菜单管理系统一、实验目的:1、掌握顺序表结构的实现方式;2、掌握顺序表常用算法的实现;3、熟悉利用顺序表解决问题的一般思路;4、参照给定的顺序表的程序样例,验证给出的顺序表的常见算法,领会顺序表结构的优点和不足。

二、实验内容:1、编程完成顺序表的基本操作:建立、删除、查找及显示。

2、按要求完成学生名册管理程序的编写和调试。

三、实验结果:1、创建:2、删除:3、添加:4、退出:四、实验中遇到的问题及解决方法:问题一:地址传递出错解决方案:参考网上资料代码。

问题二:创建时,停止暂停解决方案:输入学号为零时停止输入问题三:创建时需要学号姓名成绩都为零才能停止创建解决方案:占无解决方案五、实验心得体会:链表中指针的使用要注意指针的性质,确保地址正确传递,要改变的值正确改变。

在编程过程中很容易出现地址传递出错的问题,需要有耐心慢慢排查故障,解决故障。

通过本次实验让我明白了链表的操作使用,加深了我对链表的理解,同时也通过不断地练习提高了编程能力,链表的掌握对于这门课程而言十分重要,在今后的学习中,我需要更加努力,才能更好的掌握和使用链表。

源代码:#include <stdlib.h>#include <stdio.h>#define NULL 0#define LEN sizeof(struct student)struct student{int num;char name[20];float score;struct student *next;};int n;struct student *Create(){struct student *head;struct student *p1 = NULL;struct student *p2 = NULL;n = 0;p1 = (struct student *) malloc (LEN);p2 = p1;if(p1==NULL){printf ("\nCann't create it, try it again in a moment!\n");return NULL;}else{head = NULL;printf("请输入第%d个学生学号姓名成绩:\n",n+1);scanf("%d %s %f",&(p1->num),p1->name,&(p1->score));}while(p1->num != 0){n += 1;if(n == 1){head = p1;p2->next = NULL;}else{p2->next = p1;}p2 = p1;p1 = (struct student *) malloc (LEN);printf("请输入第%d个学生学号姓名成绩:\n",n+1);scanf("%d %s %f",&(p1->num),p1->name,&(p1->score));}p2->next = NULL;free(p1);p1 = NULL;return head;}void Print(struct student *head){struct student *p;printf ("\nNow , These %d records are:\n", n);p = head;if(head != NULL){printf("head is %o\n", head);do{printf ("%d\t%s\t%5.1f\n", p->num, p->name, p->score);p = p->next;}while (p != NULL);}}struct student *Del (struct student *head, int num){struct student *p1;struct student *p2;if (head == NULL){printf ("\nList is null!\n");return head;}p1 = head;while (p1->num != num && p1->next != NULL){p2 = p1;p1 = p1->next;}if(p1->num==num){if (p1 == head){head = p1->next;}else{p2->next = p1->next;}free (p1);p1 = NULL;printf ("\ndelete %ld success!\n", num);n -= 1;}else{printf ("\n%ld not been found!\n", num);}return head;}struct student *Insert (struct student *head, int num, struct student *node) {struct student *p1;if (head == NULL){head = node;node->next = NULL;n += 1;return head;}p1 = head;while(p1->num != num && p1->next != NULL){p1 = p1->next;}if (p1->num==num){node->next = p1->next;p1->next = node;n += 1;}else{printf ("\n%ld not been found!\n", num);}return head;}int main(void){struct student *head;struct student *stu;int thenumber;int command,flag=1;while(flag){printf("1、创建管理系统\n2、删除学生信息\n3、添加学生信息\n4、退出\n");printf("当学号姓名成绩都为0时,停止创建\n");printf("输入指令:");scanf("%d",&command);switch(command){case 1:{head = Create();Print(head);break;}case 2:{printf("\nWhich one delete: ");scanf("%d",&thenumber);head = Del(head,thenumber);Print(head);break;}case 3:{stu = (struct student *)malloc(LEN);printf("请输入第%d个学生学号,姓名,成绩:\n",n+1);scanf("%d %s %f",&(stu->num),stu->name,&(stu->score));printf("\n插到哪个学号后面: ");scanf("%d",&thenumber);head = Insert(head,thenumber,stu);Print(head);break;}case 4:flag=0;}}}。

单链表对学生信息的基本操作

单链表对学生信息的基本操作
return ERROR;
printf("请输入学生信息:\n");
scanf("%d%s%f",&e.code,,&e.score);
s=(Linklist)malloc(sizeof(LNode)); //生成新结点
s->data.code=e.code,strcpy(s->,),s->data.score=e.score;
while(p)
{
printf("%d\t%s\t%.1f\n",p->data.code,p->,p->data.score);
p=p->next;
}
}
int main()
{
int i;
Linklist list_1;
printf("请输入学生数目:");
scanf("%d",&i);
free(q); //释放结点
printf("删除的信息为:学号\t姓名\t成绩\n\
%d\t%s\t%.1f\n",e.code,,e.score);
return OK;
}
status Getelem_L(Linklist L,int i) // L为带头结点的单链表的头指针
{
int j=1; // j为计数器
}LNode,*Linklist;
void Createlist_L(Linklist &L,int n) //逆位序输入n个学生信息,建立带头结点的单链表L
{
int i;
Linklist p;
L=(Linklist)malloc(sizeof(LNode));

利用单链表实现学生信息管理

利用单链表实现学生信息管理
head->next=tmp;
length++;
}
void ShowAll(){
current=head->next;
for(int i=0;i<length;i++){
cout<<"ID="<<current->id<<"\tNAME="<<current->name<<"\tSEX="<<current->sex<<"\tGRADE="<<current->grade<<"\tTEL="<<current->tel<<"\tAGE="<<current->age<<endl;
int length;
SeqList(){
head= new Student;
head->next=NULL;
length=0;
}
bool IsListEmpty(){
return length==0;
}
void ListDelete(char ID[]){
previous=head;
current=head->next;
{
char id[10];
char name[10];
char sex[10];
char grade[10];
char tel[20];
int age;
Student *next;
};
class SeqList

单链表实现学生健康管理系统

单链表实现学生健康管理系统

【综设实验题目】实现学生健康情况管理的几个操作功能(新建、插入、删除、从文件读取、写入文件和查询、屏幕输出等功能)。

健康表中学生的信息有学号、姓名、出生日期、性别、身体状况等。

实验内容1.利用单链表来实现2.系统的菜单功能项如下:1------新建学生健康表2------向学生健康表插入学生信息3------在健康表删除学生信息4------从文件中读取健康表信息5------向文件写入学生健康表信息6------在健康表中查询学生信息(按学生学号来进行查找)7------在屏幕中输出全部学生信息8-----退出【中文摘要】这次实验主要用单链表来实现简单的学生健康管理系统,系统的功能包括:向学生健康表插入学生信息,在健康表删除学生信息,从文件中读取健康表信息,向文件写入学生健康表信息,在健康表中查询学生信息(按学生学号来进行查找),在屏幕中输出全部学生信息等。

健康表中学生的信息有学号、姓名、出生日期、性别、身体状况等。

【关键词】单链表学生健康管理系统学生信息【前言】本次实验是为了进一步熟悉和掌握VC环境下的编译、调试和执行的方法及步骤,熟悉单链表存储的实现方式及其应用。

【实验设计】以单链表为储存机制,可以方便的实现插入或删除学生信息。

每个学生的信息储存在一个结构体Sstudent中,并且这个结构体带有输出学生信息的函数ouput()。

然后以这个结构体作为单链表节点的数据类型,这样就实现了学生信息的储存。

为了方便管理,将链表元素按学号的先后进行排序。

在创建单链表对象时将已存储在文件中的学生信息写入链表,在析构函数里实现将学生信息写入文件。

【实验实现】软件平台:VC++ 6.0硬件平台:32位机器主要功能模块分析:1、储存一个学生的信息:/*******************************************************************Sstudent.h 文件*******************************************************************/ #ifndef _Sstudent_h_#define _Sstudent_h_#include<iostream>using namespace std;struct birthday //出生日期{unsigned short day;unsigned short month;unsigned short year;};struct Sstudent //一个学生的基本信息{char number[12]; //学号char name[12]; //名字struct birthday bd; //出生日期char gender[4]; //性别char healthcase[10]; //健康情况void input(); //输入学生的基本信息void output(); //输出学生的基本信息};void Sstudent::input() //输入一个学生的信息{cout<<"请输入学生信息:"<<endl;cout<<"请输入学生的学号:";cin>>number;cout<<"请输入学生的名字:";cin>>name;cout<<"请输入学生的性别:";cin>>gender;cout<<"请输入学生生日的日期(年、月、日):";cin>>bd.year>>bd.month>>bd.day;cout<<"请输入学生的健康情况(良好或差):";cin>>healthcase;cout<<endl;}void Sstudent::output() //输出一个学生的信息{cout<<"学号: "<<number<<endl<<"姓名: "<<name<<endl<<"性别: "<<gender<<endl<<"生日: "<<bd.year<<"/"<<bd.month<<"/"<<bd.day<<endl<<"健康情况: "<<healthcase<<endl<<endl;}#endif2、储存所有学生信息的链表类定义:class LinkList{private:Node *head;int size;public:LinkList();~LinkList();void clear(); //清空Node* index(int i); //寻找指向第i个元素的指针Sstudent gete(int i); //返回第i个元素int leng(); //求长度int loct (char num[]); //通过学号来查找void inst(Sstudent& el); //将el插入链表,同时保持链表的有序性Sstudent dele(int i); //删除loc位置的数据元素bool empt(); //判断线性表是否为空void print(); //输出整个顺序表};3、用文件中的学生健康信息初始化链表LinkList::LinkList(){size=0;head=new Node();head->next=NULL;Sstudent s;fstream file;file.open("student.dat",ios::in|ios::binary);if(!file){cerr<<"student.dat can't open!"<<endl;abort();}while(1){file.read((char*)&s,sizeof(s));if(!file)break;inst(s);}file.close();}4、将链表中的学生信息写进文件LinkList::~LinkList(){fstream file;file.open("student.dat",ios::out|ios::binary);if(!file){cerr<<"student.dat can't open!"<<endl;abort();}Node *p=head->next;while(p!=NULL){file.write((char*)&(p->data),sizeof(p->data));p=p->next;}file.close();delete[] head;}5、向学生健康表插入学生信息//功能为:在带头结点的单链表中插入数据元素值为el的新结点,同时保持链表的有序性(升序);void LinkList::inst(Sstudent& el){Node *p=head;while((p->next!=NULL)&& (strcmp(el.number,p->next->data.number)==1)) //当el的学号大于p所指向元素的学号时p=p->next;Node *temp=new Node(el,p->next);p->next=temp;size++;}6、删除学生信息/*功能:在单链表中删除第i个结点并返回该结点中的元素值.形参:传递一个整数i。

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

利用单项链表实现简单的学生信息管理一、题目:利用单项链表实现简单的学生信息治理(07)二、设计思路1、总体设计1)分析程序的功能创建单项链表储存学生的各项信息,学号、姓名、成绩。

并能够完成学生信息的插入、删除及信息的显示功能。

2)系统总体结构:按照程序要求的功能采纳结构化的设计思想,划分为五个功能模块,即创建链表、插入函数、删除函数、显示函数和主函数。

2、各功能模块的设计:讲明各功能模块的实现方法①头文件:对自己定义的函数进行函数声明。

②主函数:进行函数的调用,实现各函数的功能,达到预期的目的。

③函数定义部分:定义各个功能函数,创建链表函数、插入新信息函数、删除信息函数、显示信息函数。

3、设计中的要紧困难及解决方案1)在插入新信息时,有插入点在表头、中间、表尾三种情形,为此采纳讨论的方法,把三种情形进行讨论使其分开进行。

2)在删除信息时,有删除的为头结点和中间结点的情形,采纳讨论的方法,把两种情形分开来进行。

4、你所设计的程序最终完成的功能1)创建链表、插入新信息、删除信息、显示信息。

2)测试数据①输入的数据99812 LiuLifang 91学号姓名成绩96085 WangLiPing 7798120 ZhangLi 7599912 LiuHai 80 ③删除的数据学号姓名成绩99812 liulifang 91运行结果三、程序清单本程序包含creatlist.cpp、insert.cpp、del.cpp、output.cpp、main.cpp、头文件.h六个文件#include<iostream.h>#include"头文件.h"int n;student *creatlist(){student *head;student *p1;student *p2;n=0;head=NULL;p1=new(student); //创建一个新结点p2=p1;cin>>p1->num>>p1->name>>p1->score;while(p1->num!=0) //链表建立过程终止的判定条件{n++;head=p1;elsep2->next=p1; //原链表结点指向新建结点p2=p1;p1=new(student);cin>>p1->num>>p1->name>>p1->score;}delete(p1);p2->next=NULL;return head; //返回表头}2、insert.cpp文件清单#include<iostream.h>#include"头文件.h"student *insert(student *head,student *t){student *p0; //待插入点student *p1;student *p2; //p0插入p1之前,p2之后p1=head;p0=t;if(p1==NULL) //原链表是空表{head=p0;p0->next=NULL;}elsewhile((p0->num>p1->num)&&(p1->next!=NULL)) //查找待插入点{p2=p1;p1=p1->next;}if(p0->num<=p1->num){if(p1==head) //要插入的位置在表头{head=p0;p0->next=p1;}else //要插入的位置不是表头{p2->next=p0;p0->next=p1;}}else //插入表尾结点之后{p1->next=p0;p0->next=NULL;}}return head; //返回表头}3、del.cpp文件清单#include<iostream.h>#include"头文件.h"student *del(student *head,int num){student *p1;student *p2;if(head==NULL) //原链表是空表{cout<<"List is NULL\n";return head;}p1=head;while((num!=p1->num)&&(p1->next!=NULL)) //查找带要删除的结点{p2=p1;p1=p1->next;if(num==p1->num){if(p1==head) //要删除的是头结点head=p1->next;else //要删除的不是头结点p2->next=p1->next;delete(p1); //开释被删除结点所占的内存空间cout<<"delete: "<<num<<endl;}elsecout<<"not found"<<endl;return head; //返回表头}4、output.cpp文件清单#include<iostream.h>#include"头文件.h"void output(student *head){if(head==NULL) //原链表是空表cout<<"list is NULL\n";else{student *p1;p1=head;cout<<"学生的成绩信息"<<endl;cout<<"学号"<<"\t姓名"<<"\t成绩\n";do //输出链表中各个同学的信息{cout<<p1->num<<"\t"<<p1->name<<"\t"<<p1->score<<endl;p1=p1->next;}while(p1!=NULL);}}5、main.cpp文件清单#include<iostream.h>#include"头文件.h"void main(){student *headl;cout<<"输入学生的成绩信息"<<endl;cout<<"学号"<<"\t姓名"<<"\t成绩"<<endl;headl=creatlist();int k;{cout<<endl;cout<<"--------菜单选项---------"<<endl;cout<<"1.插入新信息 ,请选择:1"<<endl;cout<<"2.删除信息, 请选择:2"<<endl;cout<<"3.显示信息, 请选择:3"<<endl;cout<<"4.终止程序, 请选择:4"<<endl;cout<<" 选择";cin>>k;if(k==1) //插入新信息{int m;cout<<"输入插入学生人数"<<endl;cin>>m;cout<<"学号"<<"\t姓名"<<"\t成绩"<<endl;for(int i=0;i<m;i++){student *stu;stu=new(student);cin>>stu->num>>stu->name>>stu->score;headl=insert(headl,stu);}}else if(k==2) //删除信息{int num;cout<<"输入要删除学生的学号\n";cin>>num;headl=del(headl,num);}else if(k==3) //显示信息{output(headl);}else //终止程序break;};}6、头文件.h文件清单struct student //定义结构体类型{int num;char name[20];student *next;};student *creatlist(); //创建链表函数原型讲明student *insert(student * ,student * ); //插入函数原型讲明student *del(student * ,int ); //删除函数原型讲明void output(student * ); //显示函数原型讲明四、对该设计题目有何更完善的方案1、对自己完成程序进行自我评判。

完成了课程设计的差不多要求,同时在此基础上进行了一些创新,使用了多文件,使程序看起来更清晰更有条理。

但由于能力有限,以及对C++的认识不深,其中还有不够完善合理的地点。

2、对课题提出更完善的方案增加按照成绩对链表进行排序的功能,使学生信息能够按照成绩的高低进行显示,能够更清晰地显示学生的学习情形五、收成及心得体会1、通过本次课程设计,自己在哪些方面的能力有所提高。

加深了对利用C++语言进行程序设计的明白得,提高了对函数的运用能力,提高了软件系统分析能力和使用多文件、归纳总结的能力。

2、收成和心得体会。

通过自己对单项链表的学习,熟悉了链表的建立、插入、删除等操作方法。

通过这次课程设计使我明白了自学的重要性,有了一些自学的学习方法和技巧,同时要积极的与其他同学共同讨论,在讨论中才能找到自己认识的不足,改正自己的错误。

日期:2018年6月20日。

相关文档
最新文档