c语言程序设计报告-链表实现学生信息管理
数据结构 用链表实现学生信息管理系统

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 main(int argc, char* argv[])
{
printf("Hello World!\n");
SeqList GIS2010;
int x=1;
while(x!=0){
printf("请输入以下选项:\n");
printf("1:信息浏览\n");
}
void ;
current=head->next;
for(int i=0;i<length&¤t!=NULL;i++){
//如果当前数据的id等于用户输入要删除数据的id,进行删除操作。
if(strcmp(current->id,ID)==0){
#include <iostream.h>
#include <string.h>
struct Student
{
char id[10];
char name[10];
char sex[10];
char grade[10];
char tel[20];
int age;
Student *next;
};
class SeqList
cout<<"AGE="<<endl;
cin>>newStudent.age;
newStudent.next=NULL;
GIS2010.ListInsert(newStudent);
break;
case 3:
C语言程序设计实验实验报告7

C语言程序设计实验实验报告7实验名称:链表实现学生信息管理系统实验目的:通过设计链表实现学生信息管理系统,掌握链表的操作方法及其应用。
实验内容:设计一个学生信息结构体,包括学号、姓名、性别、年龄和成绩五个成员变量,并选择链式结构存储这些数据。
实现以下功能:1. 添加学生信息:从键盘输入学号、姓名、性别、年龄和成绩等信息,添加到链表中。
2. 删除学生信息:从链表中删除指定学号的学生信息。
5. 按成绩排序:按学生的成绩从高到低排序,并输出所有学生的信息。
7. 退出程序:退出学生信息管理系统。
实验方法:1. 设计学生信息结构体,定义链表节点结构体,并编写初始化链表和销毁链表的函数。
2. 编写添加学生信息函数,新建链表节点并插入链表末尾。
3. 编写删除学生信息函数,根据学号查找需要删除的节点,先将该节点从链表中删除,再释放节点空间。
4. 编写修改学生信息函数,根据学号查找需要修改的节点,并修改其成员变量。
6. 编写按成绩排序函数,使用冒泡排序法对链表进行排序,并输出所有学生的信息。
7. 编写输出所有学生信息函数,遍历链表并输出每个节点的信息。
8. 完成学生信息管理系统的主函数,实现菜单及相应功能的选择。
实验结果:依次选择菜单中的各个功能,添加、修改、删除、查找、排序和输出学生信息都能实现。
经测试,程序稳定运行,功能正常,符合需求。
本次实验主要让我们掌握了链式结构的概念、链表节点的定义、链表的初始化、插入、查找、删除和销毁链表的操作方法,以及在实际应用中如何使用链表来实现数据管理。
虽然链表操作相对于数组稍微有些繁琐,但其可以灵活处理数据结构的长度变化,具有更高的可扩展性和更好的操作效率,可以更好的适应各种实际需求。
在实验中,还需要注意节点指针的正确使用、各个函数之间的调用关系和输入输出数据格式的合理选择等问题,以保证程序能够正常运行。
同时,还需要保持认真细致的态度,严格按照实验需求和要求来完成每个步骤,以达到更好的实验效果和运行效率。
C语言程序设计报告-基于链表的学生信息管理系统

《C语言程序设计实训2》报告设计题目:基于链表的学生信息管理系统学院名称:信息科学技术学院专业:网络工程班级:二班姓名:学号:指导教师:提交日期:一、 实验内容:编写并调试程序,实现学校各专业班级学生信息的管理。
要求一个工程下多个文件。
main 函数以单独的文件main.cpp 存放。
在头文件student.h 中定义学生信息的结构体类型,包括:学号、姓名、专业、班级、3门成绩;和符号常量N (学生数)。
(同一班级的学生可以属于不同的专业,同一专业的学生可以属于不同的班级)。
全局类型的定义如下:二、实验要求:(1) main 函数:以菜单形式将各项功能提供给用户,根据用户的选择,调用相应的函数。
(2) 定义函数STU *CreateList (char * filename ):从二进制文件“studentInfo.dat ”中依次读取12个学生的数据(在文件中学生信息按学号由低到高依次存放),建立带头结点(特殊结点,不放学生信息)的、有序的单链表(链表中各学生信息按学号由低到高依次存放), 返回表头指针。
每次从文件中读一个学生的信息,并将该学生信息插入到链表的表尾。
设置头结点的目的:在链表中第一个学生结点之前插入或者是删除第一个学生结点的时候不必做特殊处理)更灵活的方法:从文件中循环读数据时,根据当前学生信息的next成员的值,决定是否进行下次循环,如果next==NULL,则表明读到最后一个学生信息,循环结束。
(3)定义函数void Output (STU *head):以指向链表头结点的指针为参数,将链表中所有学生的信息表格化输出。
定义函数void OutOneNode(STU *p): 输出参数所指的链表中一个结点的信息。
(4)STU *Max(STU *head):查找总成绩最高的学生,返回指向该学生结点的指针。
考虑特殊情况,找到两个及以上相同最高分同学的情况,如何处理?(5)定义函数STU *Search_num(STU * head ,char *num ):查找指定的学生,返回指向该学生结点的指针。
c语言课程设计报告---学生信息管理系统

题目:学生信息管理系统一、需求分析任务要求:自学C语言中有关链表及外部文件得内容,设计学生信息管理系统。
具体要求如下:◆建立学生信息,信息至少包括名字、性别、年龄、学号、系别、家庭信息等内容;◆能够提供添加、删除与修改学生信息等功能;◆能将通讯录保存在文件中;◆能够按指定方式输出学生信息.系统功能需求分析:★1、为存储学生信息,需定义一个结构体类型,成员名字、性别、年龄、学号、系别、家庭信息等,并建立链表,定义该结构体类型得指针,用于指向各结点;★ 2、分别建立具有添加、删除、修改、查询等功能得子函数,完成相应功能,对程序实现模块化。
这其中要用到对链表得删除、插入等知识。
删除时用一结构体指针指向链表得第一个结点,检查该节点得值就是否等于输入得要删除得学号,若相等就删除,不相等则后移指针,直至表尾。
插入时也要先找到相应结点,再添加.★3、为实现存储功能,需用到文件得相关函数,打开文件,将添加、修改或删除得信息存入磁盘中。
★4、为以表格得形式输出文件,宏定义格式化输出语句,指定输出学生信息。
二、概要设计系统总体设计框架:对程序进行模块化,建立添加、修改、删除、查找与显示功能得子函数,各子函数中运用链表存储数据。
从主函数开始执行,调用各个子函数,并运用文件相关知识将信息存入磁盘中。
系统功能模块图:三、详细设计主要功能模块得算法设计思路如下:1、查询通讯录信息(void chakan())(1)为开辟一个新单元(2)输入查询关键字:(3)读取保存得文件数据输入ASCLL字符:(4)在链表中寻找相应结点;(5)调用输出函数,输出结点信息.2、添加信息函数(void add())(1)定义指向结构体变量得指针;(2)移动指针,找到插入结点;(3)在要插入得结点输入信息;(4)调用保存函数,打开文件,保存输入信息。
3、删除信息函数(void del())(1)定义指向结构体变量得指针;(2)用指针检验链表中就是否有记录,若没记录,返回主函数;(3)根据要修改得编号查找要删除得结点;(4)修改链表,删除对应结点。
C课程设计报告单链表学生信息管理系统

.学生信息管理系统设计文档一、设计任务描述为了实现学籍管理的简单化,我们基于Visual C++集成开发环境编写了“学生信息管理系统”软件,该软件适用于所有windows操作系统,面向广大用户,界面简洁,操作简单。
此软件主要是实现对学生学籍信息进行系统化的管理,可以对学生基本信息进行添加、删除、查找、修改以及对学生成绩的管理,主要是根据学生的学号及其姓名进行操作的。
该软件可以更加方便管理者管理学生学籍信息。
二、功能需求说明该系统所需要的功能有:1、链表的建立;2、学生信息的插入;3、学生信息的查询;4、学生信息的输出;5、学生信息的修改;6、学生信息的删除;7、良好的欢迎选择界面。
三、总体方案设计一、实现任务的方法1、在欢迎选择界面中,使用Switch 这一选择结构来连接程序的执行和用户的命令;2、在从学生信息的建立直到删除,都是使用链表的相关知识;3、在定义学生信息时,建立一个Inform 类;在定义学生课程成绩时,自定义优质范文.了一个achieve 结构体;二、总体结构三、模块划分(1)链表的建立。
(2)对链表信息的插入。
(3)对链表信息的查找。
(4)对链表信息的输出。
(5)对链表信息的删除。
(6)对链表信息的修改。
课程成绩信息作为附加信息,穿插于各个模块中。
三、数据结构说明优质范文..一、自定义的数据结构:1、achieve(课程成绩)用于存放课程成绩信息包括课程数、课程名、成绩、学分、总分和平均分。
2、inform(学生基本信息)用于存放学生基本信息,包括姓名、学号、性别等。
3、结点结构-Nodetype,定义了数据域inform和指针域next;二、类Student 用于存放处理学生信息的各个功能函数,private 成员是链表的头指针。
优质范文..四、各模块设计说明一、建立:首先:建立一个空链表:Student::Student(){head=new Nodetype;表明这是一个空链表head->next=NULL;\n; 请建立链表潣瑵?}然后建立链表优质范文..:二、添加:按照学号从小到大的顺序插入:三、输出:将链表的数据输出,由于上述操作,输出时会按照学号从小到大的顺序输出。
C程序设计基础课程设计设计报告_链表建立学生成绩管理系统

设计题目:班级:姓名:学号:完成日期:目录目录 (1)1. 课程设计目的和要求 (1)1.1课程设计《学生成绩管理系统》的题目要求 (1)2. 课程设计任务内容 (2)2.1《学生成绩管理系统》主要功能实现方式 (2)2.1.1链表处理数据 (2)2.1.2文件读写存储学生信息 (2)2.2创建数据库管理系统(DBMS) (2)3. 详细设计说明 (3)3.1题目设计分析 (3)3.1.1需求分析 (3)3.1.2解题思路分析 (3)3.2设计过程 (3)3.2.1链表(结构体)定义 (3)3.2.2函数编写 (3)3.2.3编译与调试 (5)4. 软件使用说明 (6)4.1主界面介绍 (6)4.2创建学生信息数据表 (6)4.3增加数据信息 (6)4.4删除数据信息 (6)4.5修改信息 (6)4.6查找信息 (6)4.7统计功能 (7)5. 课程设计心得与体会 (7)5.1概述 (7)5.2心得与体会 (7)5.2.1数据库管理系统——链表+文件读写 (7)5.2.2指针与内存 (7)6. 参考文献 (8)7. 附录:部分程序清单 (8)1.课程设计目的和要求1.1课程设计《学生成绩管理系统》的题目要求学生包含以下信息项:学号、姓名、学院、班级、高数成绩、英语成绩、C语言成绩、总分、平均分。
系统的主要功能包括:1. 创建学生成绩信息文件,根据提示输入学生的各项信息,计算出总分和平均分,然后按学号对学生信息进行排序,并将排序后的学生成绩信息存储到一个二进制文件中。
2. 增加学生信息,在原有学生信息文件的基础上增加新的学生成绩信息,要求:增加后的学生信息仍按学号排序,并继续保存至原文件。
3. 删除学生信息,提示用户输入要进行删除操作的学号,如果在文件中有该信息存在,则将该学号所对应的学生信息删除,否则输出提示信息,并提示用户选择是否继续进行删除操作。
4. 修改学生信息,提示用户输入要进行修改操作的学号,如果在文件中有该息存在,则将提示用户输入该学号对应的要修改的选项,结果保存至原文件,并提示用户选择是否继续进行修改操作。
C语言链表实现学生管理系统

C语⾔链表实现学⽣管理系统本⽂实例为⼤家分享了C语⾔链表实现学⽣管理系统的具体代码,供⼤家参考,具体内容如下#include<stdio.h>#include<ctype.h>#include<fstream>#include<stdlib.h>#include<string.h>#include<iostream>using namespace std;typedef struct ndoe{char id[10];char name[10];char sex[3];char num[10];struct node *next;}student;struct Student{student data;struct Student *next;};/********创建学⽣信息**********/Student * insert(Student * head){Student * s,*r;head=(Student *)malloc(sizeof(Student));printf("请输⼊学⽣的个数:");int n;scanf("%d",&n);r=head;printf("按照“学号姓名性别(M or G) ⼿机号”的形式输⼊每个学⽣的信息\n");for(int i=0;i<n;i++){s=(Student *)malloc(sizeof(Student));/*scanf("%s",s->data.id);scanf("%s",s->);scanf("%s",s->data.sex);scanf("%s",s->data.num);*/scanf("%s%s%s%s",s->data.id,s->,s->data.sex,s->data.num);r->next=s;r=s;}r->next=NULL;printf("录⼊成功\n");return head;}/********增加学⽣************/void add(Student *head){Student *s;s=head->next;while(s->next!=NULL)s=s->next;Student *ad=(Student *)malloc(sizeof(Student));ad->next=NULL;s->next=ad;//printf("输⼊新学⽣的信息:\n");scanf("%s%s%s%s",ad->data.id,ad->,ad->data.sex,ad->data.num);printf("添加成功\n");return ;}/*************修改学⽣信息********************/void change(Student * head){printf("输⼊1,按学号搜索学⽣,并修改改学⽣的信息\n");printf("输⼊2,按姓名搜索学⽣,并修改改学⽣的信息\n");Student * s;int n;scanf("%d",&n);switch(n){case 1:{printf("请输⼊学号:");char number[10];scanf("%s",number);s=head->next;while(s!=NULL){if(strcmp(s->data.id,number)==0){printf("请输⼊要修改的信息:");char phone[10];scanf("%s",phone);strcpy(s->data.num,phone);printf("修改成功\n");break;}s=s->next;}break;}case 2:{printf("请输⼊姓名:");char nam[10];scanf("%s",&nam);s=head->next;while(s!=NULL){if(strcmp(s->,nam)==0){printf("请输⼊要修改的信息:");char phone[10];scanf("%s",phone);strcpy(s->data.num,phone);printf("修改成功\n");break;}s=s->next;}break;}}return ;}/**********删除学⽣信息******************/void del(Student * head){printf("输⼊1,按学号搜索学⽣,并删除该学⽣的信息\n"); printf("输⼊2,按姓名搜索学⽣,并删除该学⽣的信息\n"); Student * s,*r;int n;scanf("%d",&n);switch(n){case 1:{printf("请输⼊学号:");char number[10];scanf("%s",number);s=head->next;r=head;while(s!=NULL){if(strcmp(s->data.id,number)==0){r->next=s->next;free(s);printf("删除成功\n");break;}r=s;s=s->next;}break;}case 2:{printf("请输⼊姓名:");char nam[10];scanf("%s",&nam);s=head->next;r=head;while(s!=NULL){if(strcmp(s->,nam)==0){r->next=s->next;free(s);printf("删除成功\n");break;}r=s;s=s->next;}break;}}return ;}/**********查询学⽣的信息**********************/void check(Student * head){printf("输⼊1,按学号搜索学⽣,并展⽰该学⽣的信息\n");printf("输⼊2,按姓名搜索学⽣,并展⽰该学⽣的信息\n");Student * s,r;int n;scanf("%d",&n);switch(n){case 1:{printf("请输⼊学号:");char number[10];scanf("%s",number);s=head->next;while(s!=NULL){if(strcmp(s->data.id,number)==0){printf("%s %s %s %s\n",s->data.id,s->,s->data.sex,s->data.num); break;}s=s->next;}break;}case 2:{printf("请输⼊姓名:");char nam[10];scanf("%s",&nam);s=head->next;while(s!=NULL){if(strcmp(s->,nam)==0){printf("%s %s %s %s\n",s->data.id,s->,s->data.sex,s->data.num); break;}s=s->next;}break;}}if(s==NULL)printf("该学⽣不存在\n");return ;}int main(){Student *head=NULL;Student *a;printf("***欢迎进⼊学⽣管理系统***\n");printf("***1:请录⼊学⽣信息***\n");printf("***2:请修改学⽣信息***\n");printf("***3:请删除学⽣信息***\n");printf("***4:请查询学⽣信息***\n");printf("***5:请添加新学⽣信息**\n");printf("***6: 退出管理系统 ***\n");printf("*************************\n");printf("请输⼊命令:");int n;while(scanf("%d",&n)&&n!=6){switch(n){case 1:{printf("请录⼊学⽣信息:\n");head=insert(a);break;}case 2:{printf("请改学⽣信息:\n");change(head);break;}case 3:{cout<<"请删除学⽣信息:"<<endl;del(head);break;}case 4:{cout<<"请查询学⽣信息:"<<endl;check(head);break;}case 5:{cout<<"请添加新学⽣信息:"<<endl;add(head);break;}default :break;}printf("请继续输⼊命令:");}Student *s,*r;s=head->next;while(s!=NULL){r=s->next;free(s);s=r;}free(head);return 0;}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在这次的程序设计中,老师和同学都是我强大的后盾。比如之前在switch语句下的break的使用和getchar的重要性,还有在小程序里面的循环,每一步的程序都很重要。通过这次的程序设计,我了解到我所感兴趣的东西并不是感兴趣就可以掌握的,要经过不断的练习和调试,在一次一次的失败中找到原因,团结周围的所有力量来突破。
Exit(head);
exit(0);
default:
printf("\n 选择错误,请重新输入!\n");
} // end of switch
} // end of while(1)
return 0;
}
// 浏览学生信息
void Browse(NODE *head)
{
NODE* p=head;
if(p->next==NULL)
另外,在实际编程中,为了提高编程质量,希望学生在书写代码时,对空行、空格和注释严格按要求处理,以建立良好的编程风格。
二.设计项目:学生学籍管理
该课程设计是设计一个模拟学生信息管理程序,要求使用链表来实现。它具有浏览、插入、删除、修改等功能,并且能够对数据进行文件存储和读出操作。
主要功能模块:
1. 浏览学生信息:显示学生的信息。
switch(choice)
{
case 1:
Browse(head);
break;
case 2:
Insert(head);
break;
case 3:
Delete(head);
break;
case 4:
Modify(head);
break;
case 5:
WriteInfo(head);
break;
case 0:
NODE *head;
head=(NODE *)malloc(sizeof(NODE)); // creat head node
head->next=NULL; // install a tail
ReadInfo(head); // get info from disk file if file existed
void Modify(NODE* head);
void WriteInfo(NODE* head);
void ReadInfo(NODE* head);
void FreeList(NODE* head);
void Exit(NODE* head);
// 主程序
int main()
{
int choice; // a variable accept the usntf("无文件记录!请输入学生信息!\n");
return;
}
p=head->next;
printf("numbernameclassessextel\n");
while(1)
{
// 主菜单
printf("\n%s",
" ***** 学生信息管理系统 ******\n"
" * 1. 浏览学生信息 *\n"
" * 2. 插入学生信息 *\n"
" * 3. 删除学生信息 *\n"
" * 4. 修改学生信息 *\n"
" * 5. 保存学生信息 *\n"
" * 0. 退出系统 *\n"
最后在这次的程序设计过程中感谢老师和帮助过我的同学!
六、源程序完整清单
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>
struct node
{
char number[12];
char name[10];
C语言课程设计报告
链表实现学生信息管理
一.课程设计目标
C语言课程设计的目的是通过课程设计的综合训练,培养学生实际分析问题、编程和动手能力,最终目标是通过这种形式,帮助学生系统掌握该门课程的主要内容,更好地完成教学任务。本课程设计具有如下特点:重点在于C语言的基本特征上,涵盖了C语言的重要基础知识。结合了实际应用的要求,使课程设计既涵盖知识点,又接近工程实际需要。通过激发学习兴趣,调动学生主动学习的积极性,并引导他们根据实际编程要求,训练自己实际分析问题的能力以及编程能力,并养成良好的编程习惯。
1. 浏览学生信息
3. 删除学生信息
4. 修改学生信息
5. 保存学生信息
四、详细介绍
1、浏览学生信息
2、插入学生信息
3、删除学生信息
4、修改学生信息
5、信息的写入读出
6、学生信息的保存与释放
五、课程设计实践小节
这是这学期的第一次正式的程序设计,目的是运用链表来实现学生的学籍信息管理。在学习过程中,我不仅把以前的函数循环搭配使用了起来,也接触到链表这些全新的概念。
最重要的收获其实还是写编码的重要性。我这边接触过一些华为之类的程序设计员,他们都有c语言设计规范要求,每种固定程序的编写都有固定的格式,不按照格式的都有相应的处罚。这次的程序设计中我充分的体会到了格式的重要性,我程序的最大的问题就在于switch语句里面格式的不对称导致的出错,最后是老师发现的,这是个极大的问题。
2. 插入学生信息:添加学生的信息。
3. 删除学生信息:通过输入学号删除学生的信息。
4. 修改学生信息:通过输入学号修改学生的信息。
5. 保存学生信息:将学生信息保存到文件。
0. 退出系统:结束程序的运行,结束前询问是否保存信息。
三.具体任务
由老师提供主菜单程序以及第0、2个模块。
学生在这个信息系统中加入四个模块,即:
" *****************************\n"
" 请按功能代码选择(0 ~ 5):");
scanf("%d",&choice); // number with return char into the IO butter
getchar(); // clear the return char from buffer
char sex[6];
char classes[10];
char tel[12];
struct node *next;
};
typedef struct node NODE;
// 函数的声明
void Browse(NODE* head);
void Insert(NODE* head);
void Delete(NODE* head);