基于链表的学生信息管理系统实验报告(共11页).docx





《基于链表的学生信息管理系统实验报告(共11页).docx》由会员分享,可在线阅读,更多相关《基于链表的学生信息管理系统实验报告(共11页).docx(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上C语言程序设计实训2报告设 计 题 目: 基于链表的学生信息管理系统 学 院 名 称: 信息科学技术学院 专 业: 软件工程 班 级: x班 姓 名: xxx 学 号 xxx 提 交 日 期: 2014年6月 一、实验内容编写并调试程序,实现学校各专业班级学生信息的管理。定义学生信息的链表结点类型,包括:学号、姓名、班级、专业、3门成绩。 二、实验要求 (1)main函数:以菜单形式将各项功能提供给用户,根据用户的选择,调用相应的函数。(2)定义函数CreateList:按学号由小到大,建立有序的链表。逆序输入 n 个学生信息(调用n次input),学号大的先输入,建
2、立带头结点的单链表。(3)定义函数Output:以指向某个学生结点的指针为参数,将学生信息表格化输出。(4)定义函数Save:将某个学生信息存入文件。(5)定义函数Fetch:从文件中随机读取某个学生的信息。(6)定义函数Search_num:查找指定学号的学生,返回指向该学生结点的指针。(7)定义函数InsertList:在函数中输入一个学生的信息,将该学生信息插入到链表中的相应位置,并保持此链表按学号的有序性。(8)定义函数Delete_num:从链表中删除指定学号的学生。(9)定义函数Search_major _subject_score:查找某个专业的、某门课程的成绩小于某个分数的学生
3、,返回指向该学生结点的指针。(10)定义函数Delete_ major _subject:从链表中删除某个专业的、某门课程的成绩小于某个分数的学生。三、算法流程图四、程序清单(关键语句和变量加注释)#include/ 预编译命令#include#includestruct studentint num;/学号char name15;/姓名char major10;/专业(computer,software,network)int classNo;/班级(1-2)int score3;/3门课的成绩(0-2)struct student *next;typedef struct student
4、STU;/-输入-STU *Input()STU *p;if( (p=(STU*)malloc(sizeof(STU)=NULL)printf(头结点建立错误!n); return p; printf(请输入学生的学号:);scanf(%d,&p-num);printf(请输入学生的姓名:);scanf(%s,p-name);printf(请输入学生的专业:); scanf(%s,p-major);printf(请输入学生的班级:);scanf(%d,&p-classNo);printf(请输入学生的成绩0:);scanf(%d,&p-score0);printf(请输入学生的成绩1:);sc
5、anf(%d,&p-score1);printf(请输入学生的成绩2:);scanf(%d,&p-score2);return p;/-建立链表-STU*CreateList(int n)struct student*head,*p,*w;int i=0;printf(n请输入第%d个学生信息n,n);p=Input();while(inext=NULL;elseprintf(n请输入第%d个学生信息n,n-i+1);w=Input();head=w;w-next=p;p=w;return head;/-输出-void Output(STU *p)printf(%dt%st%st%dt%dt%
6、dt%dn,p-num,p-name,p-major,p-classNo,p-score0,p-score1,p-score2);/-输出所有-void print(STU *head)STU *p;p=head;if(head!=NULL)printf(学号t姓名t专业 t班级t成绩0t成绩1t成绩2tn);while(p!=NULL) Output(p);p=p-next;/-储存-void Save(STU*p)FILE*fp;char filename20;printf(n请输入保存文件名:n);gets(filename);if(fp=fopen(filename,wb)=NULL)
7、printf(cannot open filen);return;if(p=NULL)printf(链表为空);while(p!=NULL)if(fwrite(p,sizeof(STU),1,fp)!=1)printf(nwrite file errorn);p=p-next;fclose(fp);/-文件查找-STU Fetch(int n)FILE*fp;struct student tem;char filename20;printf(n请输入打开文件名:n);gets(filename);fp=fopen(filename,rb);fseek(fp,(long)(n*sizeof(ST
8、U),0);fread(&tem,sizeof(STU),1,fp);/读取fclose(fp);return tem;/-查找学号-STU *Search_num(STU *head,int number) if (head=NULL) return NULL;while(head-num!=number)/跳过不符合条件的学号if (head-next=NULL)return NULL; head=head-next;return head;/返回的指针名为head/-插入链表-STU*InsertList(STU*head)STU*p1,*p2,*stu;p1=p2=head;stu=(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 学生 信息管理 系统 实验 报告 11

限制150内