数据结构课程设计报告学生作业完成情况管理系统
数据结构课程设计报告学生信息管理系统
题目2.学生信息管理系统一、课程设计目的1.数据构造课程设计是综合运用数据构造课程中学到的几种典型数据构造,以及程序设计语言〔C语言〕,自行实现一个较为完整的应用系统的设计与开发2.通过课程设计,自己通过系统分析、系统设计、编程调试,写实验报告等环节,进一步掌握应用系统设计的方法和步骤,灵活运用并深刻理解典型数据构造在软件开发中的应用。
3.学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力。
学生信息管理系统:〔1〕熟练掌握链表存储构造及其建立过程和常用操作;〔3〕学会自己调试程序的方法并掌握一定的技巧二、课程设计容建立学生信息管理系统,通过链表实现对学生信息的输入,查找,删除,插入和排序等操作。
三、需求分析1.每位学生的信息有:学号,XX,性别,出生日期,E-mile,,c成绩,数学成绩等,用链表对学生的信息进展存储。
2.全部数据可以只放在存中;3.系统能实现的操作和功能如下:a) 输入学生信息:对不同学生分别输出以下信息:学号,XX,性别,出生日期,E-mile,,c成绩,数学成绩等。
b) 查找学生信息:根据学生的学号或XX对学生的信息进展查找。
c) 删除学生信息:删除某个学生的所有信息。
d) 插入学生信息:将某个学生的信息插入到已经输入的信息中。
e) 显示学生信息:将所有学生的信息显示出来。
f) 排序:将所有学生按某个学科的成绩依次排序。
四、概要设计1.系统构造图〔功能模块图〕2.功能模块说明①.输入学生信息,creat()函数:建立单向链表,组织循环,将学生的信息依次录入。
②:查找学生信息:a.按学号查找,find1〔〕函数;b.按XX查找,find2〔〕函数;③.删除学生信息,del〔〕函数:建立指针,在链表中寻找要删除信息的学生的学号,找到后p->next=p->next->next,将其删除。
④.插入学生信息,insert〔〕函数;输入要插入的信息,建立指针,寻找要插入的节点。
(2023)数据结构课设报告学生成绩管理系统(一)
(2023)数据结构课设报告学生成绩管理系统(一)数据结构课设报告学生成绩管理系统一、背景介绍为了方便教师管理学生的成绩,提高数据处理的效率和准确性,我们团队开发了一款可以管理学生成绩的系统。
二、需求分析•教师可以登录系统,并进行学生信息的录入、修改、查询和删除。
•教师可以录入、修改、查询和删除学生的成绩。
•学生也可以登录系统,并查看自己的成绩。
•教师和学生的密码需要进行加密存储,并能够找回密码。
三、设计方案1. 数据结构设计我们采用链表的数据结构,实现学生信息和成绩的存储。
- 学生信息:学号、姓名、密码。
- 学生成绩:科目、成绩。
2. 模块划分•登录模块:实现教师和学生的登录、密码加密和找回密码。
•学生信息管理模块:实现学生信息的录入、修改、查询和删除。
•成绩管理模块:实现成绩的录入、修改、查询和删除。
•学生成绩查询模块:实现学生查看自己成绩的功能。
3. 界面设计我们采用Java Swing库实现图形化界面,美观易用。
四、开发过程1. 环境配置我们使用Java语言进行开发,并采用MySQL数据库存储数据。
开发工具为Eclipse和Navicat。
2. 实现过程在开发过程中,我们分别完成了登录模块、学生信息管理模块、成绩管理模块和学生成绩查询模块。
同时,我们进行了严格的测试和优化,保证了系统的稳定性和用户体验。
五、总结通过本次课设,我们学习到了如何设计、实现一款简单的大型软件。
同时,我们也深入理解了数据结构的应用和开发过程中需要注意的问题。
未来,我们将继续学习和提升自己的技术水平,为社会创造更多有用的产品。
六、存在的问题和改进计划1. 学生信息和成绩输入需要更为便捷目前的输入方式需要逐一输入每个学生的信息以及成绩,如果要录入多个学生的信息,效率不高。
我们计划实现批量导入的功能,可以通过Excel表格导入学生信息和成绩。
2. 安全性还需要更高的保障目前我们只是简单使用密码加密保护了教师和学生的账户信息,如果系统被攻击者入侵,那么所有的账户信息和成绩信息都会暴露,对学生隐私和数据安全造成极大威胁。
数据结构课设报告--学生成绩管理系统
课程设计(论文)说明书题目:学生成绩管理系统学院:计算机科学与工程学院专业:姓名:学号:指导教师:2012年月日摘要随着科学的发展和社会的进步,许多过去由人工处理的繁杂事务开始交付计算机来完成。
明显地加快了经济信息化和社会信息化的进程。
因此,计算机教育在各国备受重视,计算机知识与能力已成为21世纪人才素质的基本要素之一。
本报告简单叙述了学生管理系统的现状,重点介绍了学生成绩管理系统的实现过程:包括系统分析、数据流程分析、功能设计、系统实现、系统测试和调试。
C语言是一种通用的程序设计语言,c语言在很多方面继承和发展了以往许多高级程序设计语言的成果经验与特色,具有适应性强、应用范围广、书写格式自由、数据类型丰富、数据结构系统化、运行程序质量高、可移植性好和运行效率高等优点。
而《数据结构与算法》则是对数据进行一定的结构化,通过运用各种算法使系统的实现更简便易行。
关键词:管理;需求;模块目录引言 (3)1 系统概述 (3)2 需求分析 (3)2.1安全需求分析 (3)2.2 数据需求分析 (4)2.3 功能需求分析 (4)2.4 界面需求分析 (4)2.5 开发环境 (4)3 详细设计 (4)3.1 系统结构 (4)3.2 各模块功能 (5)3.3 功能模块的设计 (6)3.4 数据结构设计 (8)4 所遇到的问题和分析解决 (9)5 测试结果 (9)6 系统特色和关键技术 (12)7 结论 (12)参考文献 (13)引言背景:21世纪,科学技术突飞猛进,特别是信息技术和网络技术的迅速发展,各个学校的规模也随之不断增大,有关学生成绩管理工作所涉及的数据量越来越大,如若进行的仍是手工的学生成绩管理,学校就不得不靠增加人力、物力来进行学生成绩管理。
即使如此,手工管理仍具有效率低、管理复杂和易出错等诸多问题。
所以在学校这样一个具有超大数据量的机构中,通过应用信息技术和网络技术对学生成绩信息进行系统化的管理是必须的。
数据结构课程设计学生管理系统
#include<stdio.h>#include <malloc.h>#include<string.h>#include<stdlib.h>#include <io.h>//建立结构体struct student{long num;//学号char name[10];//姓名char sex[10];//性别char id[20];//身份证号char adress[80];//家庭地址long tel; //电话号码struct student * next;};/*此学生信息管理系统一共分为八个模块,分别为信息录入、信息浏览、信息查询、信息删除、信息修改、信息插入、信息保存、信息读取,其中信息保存和信息读取为隐藏模块。
系统界面清晰,操作简单,用户输入密码之后就可进入进行各种操作。
*/FILE *fp;//文件指针int count=0;//记录学生数量struct student *head;//学生信息录入struct student *input(){struct student *head=NULL; //定义头指针struct student *p1,*p2; //定义结点while(1){int choice;printf(" |------------------| \n");printf(" | 【1】录入学生信息| \n");printf(" | 【0】退出| \n");printf(" |------------------| \n");printf(" 请输入你的选择:");scanf("%d",&choice);if(choice==1){printf(" *****学生信息录入模块***** \n");p1=(struct student *)malloc(sizeof(struct student));//开辟一个新结点printf(" 请输入学号: ");scanf("%ld",&p1->num);printf(" 请输入姓名: ");scanf("%s",p1->name);printf(" 请输入性别:");scanf("%s",p1->sex);printf(" 请输入身份证号:");scanf("%s",&p1->id);printf(" 请输入家庭住址:");scanf("%s",p1->adress);printf(" 请输入手机号:");scanf("%ld",&p1->tel );count++;if(head==NULL){head=p1;}elsep2->next=p1;//p1指向下一个结点p2=p1;}else if(choice==0)break;elseprintf(" 选择错误!请重新选择!\n");}p1->next=NULL;return head;}//学生信息浏览void displayall(struct student *head){struct student *p1=head;if(head==NULL){printf("无学生信息!\n");return;}else{printf("总共有%d个学生!\n",count);printf(" 所有学生信息为:\n");printf("***************************************************************\n");while(p1!=NULL){printf("\n学号:%ld\n姓名:%s\n性别:%s\n身份证号:%s\n家庭住址:%s\n手机号:%ld\n\n", p1->num, p1->name,p1->sex,p1->id,p1->adress,p1->tel);p1=p1->next;}}}void display(struct student *p1){{printf(" 该学生信息为:\n");printf("***************************************************************\n");printf(" \n学号\t姓名\t性别\t身份证号\t家庭住址\t手机号\n");printf("%ld\t%s\t%s\t%s\t\t%s\t\t%ld\n", p1->num,p1->name,p1->sex,p1->id,p1->adress,p1->tel); }}//查询学生信息struct student *query(struct student *head){ struct student *p1;int choice;int num;char name[10];if(head==NULL) {printf("链表为空或无学生记录!\n");return head;}while(1){printf(" |---------------|\n");printf(" |【1】按学号查询|\n");printf(" |【2】按姓名查询|\n");printf(" |【0】退出|\n");printf(" |---------------|\n");printf(" 请输入你的选择:");scanf("%d",&choice);if(choice==1){printf(" 请输入要查询学生的学号:"); scanf("%ld", &num);p1=head;while(1){if(num == p1->num) {printf(" *****找到该学生信息*****\n"); display(p1);break;}if(p1->next==NULL){printf(" 没有学号为%d的学生信息!\n",num); break;}else p1=p1->next;}}else if(choice==2){printf(" 请输入要查询学生的姓名:"); scanf("%s", name);p1=head;if(strcmp(name, p1->name)==0){printf(" *****找到该学生信息*****\n");}else{while((strcmp(name, p1->name)!=0)&& p1->next!=NULL) { p1=p1->next;if(strcmp(name, p1->name)==0){printf(" *****找到该学生信息*****\n");display(p1);break;}elseprintf(" 没有姓名为%s的学生!\n",name);}}}else if(choice==0)break;elseprintf(" 选择错误!\n");}return (p1);} //删除学生信息struct student *del(struct student *head){struct student * p1, * p2;int num,choice;if(head==NULL){printf(" 链表为空或无学生记录!\n");return head;}printf(" 请输入要删除的学生学号:");scanf("%ld",&num);p1=head;while(1){if(num == p1->num) {printf(" ****找到该学生信息****\n");display(p1);break;}if(p1->next==NULL){printf(" 没有学号为%d的学生信息!\n",num);return head;}else{p2=p1;}}printf(" |-------------|\n");printf(" |【1】确认删除|\n");printf(" |【0】返回|\n");printf(" |-------------|\n");printf(" 请输入你的选择:");scanf("%d",&choice);if(choice==1){count--;if(p1 == head)head=p1->next;elsep2->next=p1->next;free(p1);printf(" 该学生信息已删除!\n");}else if(choice==0)return head;elseprintf("无效选择,请重新输入!");return head;}//修改学生信息struct student *change(struct student *head){ struct student *p1,*p2;int choice;long num;int flog;if(head==NULL){printf(" 链表为空或无学生记录!\n"); return head;}printf(" 请输入要修改的学生的学号:"); scanf("%ld",&num);p1=head;while(1){if(num == p1->num) {flog=1;break;}if(p1->next==NULL){flog=0;break;}else{p2=p1;p1=p1->next;}}if(flog==0){printf(" 没有学号为%d的学生信息!\n",num); }else if(flog==1){printf(" ****找到该学生信息****\n"); display(p1);while(1){printf(" |**********************|\n");printf(" |【1】修改姓名|\n");printf(" |【2】修改性别|\n");printf(" |【3】修改身份证号|\n");printf(" |【4】修改家庭住址|\n");printf(" |【5】修改电话号码|\n");printf(" |【0】退出|\n");printf(" |**********************|\n");printf(" 请输入你的选择:");scanf("%d",&choice);switch(choice){case 1:{printf(" 请输入修改后的姓名:");scanf("%s",p1->name);break;}case 2:{printf(" 请输入修改后的性别:");scanf("%s",p1->sex);break;}case 3:{printf(" 请输入修改后的身份证号:"); scanf("%s",&p1->id);break;}case 4:{printf(" 请输入修改后的家庭住址:"); scanf("%s",p1->adress);break;}case 5:{printf(" 请输入修改后的电话号码:");scanf("%ld",&p1->tel);break;}case 0:return head;default:printf(" 无效选择,请重新输入!\n");}}}return head;}//插入一个学生信息struct student *insert(struct student *head){struct student *p1,*p2,*insertstu;int place,choice,mark=0,num=0;if(head==NULL){printf(" 信息为空请选择信息录入!\n");return head;}while(1){printf(" |-------------|\n");printf(" |【1】继续|\n");printf(" |【0】退出|\n");printf(" |-------------|\n");printf(" 请输入你的选择:");scanf("%d",&choice);if(choice==1){insertstu=(struct student *)malloc(sizeof(struct student));displayall(head);printf(" 请输入要插入的位置:");scanf("%d",&place);if(place==1){mark=1;insertstu->next=head;head=insertstu;}else{for(p2=p1=head,num=1;p1->next !=NULL;p2=p1,p1=p1->next,num++){ if(num==place){mark=1;insertstu->next=p1;p2->next=insertstu;break;}}if(place==num){mark=1;insertstu->next=p1;p2->next=insertstu;}else if(place==num+1){mark=1;p1->next=insertstu;insertstu->next=NULL;}else if(place>num+1){printf(" 超出插入范围,请核对!\n"); continue;}}if(mark==1){printf(" 请输入要插入的学生信息!\n"); printf(" 请输入学号:");scanf("%ld",&insertstu->num);printf(" 请输入姓名:");scanf("%s",insertstu->name);printf(" 请输入性别:");scanf("%s",insertstu->sex);printf(" 请输入身份证号:");scanf("%s",&insertstu->id);printf(" 请输入家庭住址:");scanf("%s",insertstu->adress);printf(" 请输入手机号:");scanf("%ld",&insertstu->tel );count++;display(insertstu);}}else if(choice==0)break;elseprintf("无效选择,请重新输入!\n");}return head;}//学生信息保存int SaveStudent(struct student *head){struct student *p1;p1=head;if((fp=fopen("student.txt","w+"))==NULL){printf("文件打开失败!\n");exit(0);}fprintf(fp,"%d\n",count);fprintf(fp,"学号\t姓名\t性别\t身份证号\t家庭住址\t手机号\n");while(p1!=NULL){fprintf(fp,"%ld\t%s\t%s\t%s\t\t%s\t\t%ld\n", p1->num, p1->name,p1->sex,p1->id,p1->adress,p1->tel);p1=p1->next;}return 1;fclose(fp);}void freeAll(struct student *head){struct student *p1, *p2;p1=p2=head;while(p1){p2=p1->next;free(p1);p1=p2;}}struct student *LoadStudent(){struct student *head;struct student *p1, *p2;fp = fopen("student.txt", "r+");if (!fp){printf("文件打开错误!\n");exit(0);}fscanf(fp,"%d\n", &count);fscanf(fp, "学号\t姓名\t性别\t身份证号\t家庭住址\t手机号\n");head=p1=p2=(struct student *)malloc(sizeof(struct student));fscanf(fp,"%ld%s%s%s%s%ld\n", &p1->num, p1->name,p1->sex,&p1->id,p1->adress,&p1->tel); while(!feof(fp)){p1=(struct student *)malloc(sizeof(struct student));fscanf(fp,"%ld%s%s%s%s%ld\n", &p1->num, p1->name,p1->sex,&p1->id,p1->adress,&p1->tel); p2->next=p1;p2=p1;}p2->next = NULL;fclose(fp);return head;}//主菜单void menu(struct student *head){int n;while(1){int choice;printf(" |*****学生信息系统*****|\n");printf(" |**********************|\n");printf(" |【1】录入学生信息|\n");printf(" |【2】浏览学生信息|\n");printf(" |【3】查询学生信息|\n");printf(" |【4】删除学生信息|\n");printf(" |【5】修改学生信息|\n");printf(" |【6】插入学生信息|\n");printf(" |【0】退出系统|\n");printf(" |**********************|\n");printf(" 请输入你的选择:");scanf("%d",&choice);switch(choice){case 1:{if(head==NULL){head=input();}else{head=insert(head);}break;}case 2:{displayall(head);break;}case 3:{query(head);break;}head=del(head);break;}case 5:{change(head);break;}case 6:{head=insert(head);break;}case 0:{n=SaveStudent(head);freeAll(head);printf("信息已成功保存!\n");return;}default:printf("无效选项,请重新输入!\n");}}}//欢迎界面void welcome(){int choice;printf(" ************************\n"); printf(" * *\n");printf(" * 欢迎使用学生信息系统*\n"); printf(" * *\n");printf(" ************************\n"); printf(" * *\n");printf(" ************************\n"); printf(" |【1】继续|\n");printf(" |【0】退出|\n");printf(" |------------|\n");printf(" 请输入你的选择:");scanf("%d",&choice);system("cls");if(choice==1){if((fp=fopen("student.txt","r+"))==NULL){ menu(head);}head=LoadStudent();menu(head);}}else{return;}}//程序入口void main(){char userName[9];char userPWD[7];int i;for(i=0;i<3;i++){printf("\n\n\n\n\n\n\n");printf("\n请输入您的用户名:");scanf("%s", userName);printf("\n请输入您的密码:");scanf("%s", userPWD);if ((strcmp(userName,"123")==0) && (strcmp(userPWD,"123")==0)){ printf("用户名和密码输入正确!\n");system("cls");//用户名和密码正确,显示欢迎菜单welcome();break;}else{if(i<2){system("cls");//用户名或密码错误,提示用户重新输入printf("用户名或密码错误,请重新输入!");}else{system("cls");//连续3次输错用户名或密码,退出系统。
数据结构课程设计报告(学生作业完成情况管理系统)
目录1. 需求分析 (2)2.概要设计 (2)2.1 学生作业完成情况管理系统 (2)2.1.1 程序设计说明 (2)2.1.2 数据结构类型 (4)2.2 图的建立及存储 (4)2.2.1 程序设计说明 (4)2.2.2 数据结构类型 (4)3.详细设计 (5)3.1 算法流程图 (5)3.1.1 学生作业完成情况管理系统 (5)3.1.2 图的建立及存储 (6)4.调试分析(运行截图) (19)4.1学生作业完成情况管理系统 (19)4.2图的建立及存储 (30)5.课程总结 (32)6.参考文献 (33)1.需求分析(一)学生作业完成情况管理系统假设某门课程一学期要留10次作业,每次老师要进行批改,给出分数后还要进行登记。
学期期末要根据每次作业的成绩计算出最终的平时成绩(满分100)。
该程序应该具有下列功能:(1) 输入信息;(2) 输出信息;(3) 给定条件,修改、删除相应信息;(4) 按条件统计。
(二)图的建立及存储建立图的存储结构(图的类型可以是有向图、无向图),能够输入图的顶点和边的信息,并存储到相应存储结构中,而后输出图的邻接矩阵。
应用环境设定给定某类图的顶点和边的相关信息,要求输出该图的邻接矩阵。
用户界面命令行界面,用户选择所要建立的图的类型,输入相关顶点和边的信息,然后输出该图的邻接矩阵。
输入方式首先输入所要建立的图形类型的代码,然后输入顶点vexnum和边的数量arcnum,再输入顶点信息,边的2个端点v1和v2,如果建立的是网则还要输入权值w。
输出方式输出的是一个邻接矩阵,采用for循环嵌套,输出该图的邻接矩阵。
数据存储方式全部在内存存放,不使用硬盘上的文件或其他数据源,程序执行过程中和结束后不保存数据。
程序功能:1. 输入图的类型;2. 输入相应的图的顶点和边的相关信息;3. 得到图的邻接矩阵。
2.概要设计2.1学生作业完成情况管理系统2.1.1程序设计说明程序整体分为登录部分、获得数据部分、数据处理及处理信息反馈部分、数据导出保存部分,如下结构图1、2所示:图 1图 2该程序具有下列功能:(1) 输入信息;(2) 输出信息;(3) 给定条件,修改、删除相应信息;(4) 按条件统计。
数据结构课程设计报告(附源代码)-学生管理系统
课程设计报告(一)一.报告题目:学生管理系统二.实验目的:1.熟悉线性链表,掌握线性链表的基本操作;2.练习求线性表中指定结点元素及修改指定结点的元素、求指定结点的前驱/后继元素、删除指定结点的元素、在指点节点位置插入元素等。
3.通过文件保存和读取文件来提升文件操作的能力;4.C语言编程能力的提升训练。
三.实验环境:C语言编程,VC++6.0编程工具实现。
四.软件系统结构1.总体架构/层次:2.各功能的实现流程图:函数6:文件装入功能实现流程图函数7:文件保存功能实现流程图函数8:退出菜单功能实现流程图五.软件功能设计:本软件是要编写一个学生管理系统,一个学生有很多相关数据,包括学号、姓名、性别、年龄、家庭住址、练习电话,因此我们利用线性链表的知识来编写程序,这是因为线性链表有很多优良的特点,因此该程序是对线性链表的应用练习。
本软件利用线性链表的特点,结合文件相关函数的运用,它能够实现以下功能:1.用结点的数据域存放学生的学号、姓名、性别、年龄、家庭住址、练习电话;2.利用结点的指针域访问某个结点的前驱或者后继;3.录入新学生信息并按非降序插入到链表中;4.查找给定学号的结点学生信息;5.删除给定学号的结点学生信息;6.修改给定学号的结点学生信息;7.显示全部结点的学生信息;8.将链表中的学生信息全部存入文件;9.将已存在的学生信息文件中的学生信息按学号非降序插入到当前链表中;六.源程序代码:#include<stdio.h>#include<string.h>#include<stdlib.h>#include<windows.h>#define NAMELEN 15#define ADDRLEN 10#define TELLEN 15#define OVERFLOW 0#define ERROR 0#define FALSE 0#define OK 1#define TRUE 1struct stud{ long num;char name[NAMELEN+1];char sex;int age;char Addr[ADDRLEN+1];long rxsj;char lxfs[TELLEN+1];};typedef stud ElemType;//链表结点元素为结构体FILE *fp;typedef struct LNode{ElemType data;LNode *next;} *LinkList;//typedef LNode *;int InitList(LinkList &L){ //操作结果:构造一个空的线性表LL=(LinkList )malloc(sizeof(LinkList));//产生头结点,并使L指向头结点if(!L)//存储分配失败exit(OVERFLOW);L->next=NULL;// 指针域为空return OK;}int ListTraverse(LinkList L,void(*vi)(ElemType)){//条件:线性表已存在//操作结果:一次对L的每个数据元素调用函数vi()。
(完整word版)数据结构课程设计(学生成绩管理系统)(word文档良心出品)
目录一、运行环境 0一、运行环境 (1)二、设计目的和意义 (1)2.1设计目的 (1)2.2设计意义 (1)三、算法思想 (1)四、模块划分 (4)五、数据结构 (5)六、程序流程图 (6)七、程序源代码 (8)八、程序调试过程分析 (18)九、测试数据 (18)十、测试结果及分析 (19)十一、小结 (23)参考文献 (24)一、运行环境硬件环境:电脑软件环境:vc++6.0二、设计目的和意义2.1设计目的此次课程设计的目的是让学生在学习完C、数据结构等课程基础上,进一步掌握设计、实现较大系统的完整过程,包括系统分析、编码设计、系统集成、以及调试分析,熟练掌握数据结构的选择、设计、实现以及操作方法,为进一步的应用开发打好基础。
2.2设计意义此次设计意义在于让我们更好的去掌握C的基本语法、函数以及Visual C++集成编译环境。
掌握树、图、链表等基本数据结构及其应用。
掌握程序流程以及基本应用方法。
应用软件工程方面的知识,熟悉软件开发的流程。
通过本课程设计,培养学生进行软件设计能力。
首先进行需求分析,针对目标对象完成程序结构设计、对象设计、主要数据结构设计、输入输出设计、人机界面设计等。
三、算法思想整个系统除了主函数外,另外还有12个函数,实现十大功能:菜单选择、输入功能、显示功能、查找功能、删除功能、排序功能、插入功能、保存功能、读取功能、修改。
各个函数的详细设计说明分别如下:1、主函数 main()利用无限次循环for(;;)和swithch()实现各函数的调用,系统根据输入的数字选项来调用相应的函数。
2、初始化函数 STUDENT *init()这是一个无参函数,里面只有一个语句,它的作用是使链表初始化,使head的值为NULL。
比如:没有这个函数的话,在你没有输入任何数据的情况下,去执行显示功能的时候会显示一些乱码!3、菜单选择函数 int menu_select();这是一个无参函数,主要实现“功能选择”的界面,在这个界面里有显示系统的九大功能,根据每个功能前面的序号进行选择,中间还显示系统当前的时间。
数据结构课程设计实验报告—学生管理
中南大学“数据结构”课程设计(学生管理系统)专业:计算机类班级:姓名:学号:完成日期:二〇一〇年七月六日目录:1 问题描述2 基本要求3系统分析与设计4 测试数据及结果5 总结6 附录:源程序清单学生信息管理系统1.问题描述设计一个学生信息管理系统,实现对学生基本信息的添加、删除、修改和查询等操作。
2.基本要求:程序采用图形界面下进行交互的工作方式,完成如下功能:(1)多种方式建立学生信息●每个学生信息由学号、姓名、数学、英语和语文组成;●可以通过手工录入每个学生信息,并在StudentFile.txt保存;●也可以导入某个路径下存放学生信息的文本文件。
(2)浏览所有学生信息。
(3)按照学号对所有学生信息进行升序、降序排列,并输出●可选用冒泡、选择、快速排序等算法;●不仅输出屏幕显示,还需要写入存放学生信息的文件。
(4)按姓名、学号等方式,实现对学生信息精确查询、模糊查询,并输出屏幕显示●精确查询结果演示查询“姓名是刘梅”同学信息,则输出学号姓名数学英语语文………..2004112011 刘梅88 90 78 ……....●模糊查询结果演示查询“姓刘”的同学信息,则输出学号姓名数学英语语文………..2004112011 刘梅88 90 78 ……....2004112011 刘强87 80 98 ……....2004112011 刘星86 70 58 ……....●能够实现连续多次查询(5)学生信息的插入、删除、修改。
●通过插入、删除和修改后,保持所有学生信息的有序性;●插入、删除和修改后,对存放所有学生信息的文件及时更新。
(6)数据的统计功能●统计每个学生的平均分和总分;●统计每个科目的平均分和最高分、最低分;●将上述统计结果,写入存放学生信息的文件。
3系统分析与设计流程图:学生信息由一个学生结构体保存其个人信息。
学生结构体存放于一个结构体数组中,即线性表。
各个学生按照学号排序,此处用到了直接插入排序。
数据结构_学生信息管理系统_课程设计_实验报告
数据结构_学生信息管理系统_课程设计_实验报告数据结构课程设计本课程设计已调试通过,请放心使用。
请到:或充值购买word版,省打字,直接修改即可,价格较便宜,在这里百度较贵!搜索:数据结构_学生信息管理系统_课程设计_实验报告设计题目:学生信息管理系统课题名称学生信息管理系统院系年级专业学号姓名成绩课题设计目的与设计意义1、课题设计目的:(1)掌握线性表的一般储存的基本概念及存储结构.(2)利用线性表的一般储存对学生成绩进行基本操作。
包括创建、插入、删除、排序等功能。
功能上要以菜单选项形式体现出来,可以与用户良好的交互。
(3)通过本次设计型实验,使我们在学习完C、数据结构等课程基础上对前面所学的知识做一个总结与回顾。
2、课题设计意义:(1)利用线性表的一般储存具有较强的可应用性和实践性,在课程设计的过程中,不但我们可以独立思考,而且还可以查阅各种资料。
(2)通过该课程设计,使我们对老师课上的讲述有了更深的理解,让我们学有所思。
(3)将线性表的一般储存应用到具体生活中,使我们了解了数据结构这一门课在实际生活中的应用。
指导教师:年月日2目录1、课程设计任务................................................................................................................11.1前言 (1)1.2设计目的和任务....................................................................................................11.3可行性分析............................................................................................................11.3.1系统目标.....................................................................................................11.3.2可行性分析.................................................................................................22、课程设计题目及要求...................................................................................................23、系统设计方案................................................................................................................33.1系统模块如图1:.................................................................................................33.2、系统模块:.........................................................................................................34、数据结构描述与定义...................................................................................................44.1结构体:.. (4)4.2结构体数组:........................................................................................................54.3、程序架构图.......................................................................................................54.4、程序流程图.........................................................................................................65、程序设计语句................................................................................................................76、程序实现.. (1)06、2输入学生信息................................................................................................116、3插入学生信息...................................................................................................116、4排序....................................................................................................................126、5删除学生信息...................................................................................................127、结束语........................................................................................................................... 138、参考文献.. (1)311、课程设计任务1.1前言本课程是继《数据结构—用C语言描述》课程之后,训练学生综合运用本课程知识,结合实际系统运用C语言进行系统设计以及调试,加深对本课程的理解,提高学生综合应用知识的能力、分析问题、解决问题的能力和利用C语言进行综合系统设计的实践技能。
数据结构学生成绩管理系统课程设计
数据结构学生成绩管理系统课程设计一、概述数据结构是计算机科学的重要基础,学生在学习数据结构课程的过程中,需要掌握各种数据结构的原理和实现方法。
为了提高学生对数据结构知识的理解和应用能力,本课程设计以数据结构学生成绩管理系统为主题,通过设计和实现一个完整的学生成绩管理系统,让学生在实践中巩固和应用所学的数据结构知识,提高其编程和问题解决能力。
二、系统设计与功能1. 系统设计本系统采用C++编程语言,使用面向对象的编程方法,通过利用各种数据结构实现学生成绩管理系统的功能,包括学生信息的录入、修改、删除,成绩的查询、统计等。
系统采用模块化设计,将学生信息、成绩管理等功能拆分为不同模块,便于代码的维护和扩展。
2. 系统功能(1)学生信息管理:包括学生的基本信息录入、修改和删除功能。
(2)成绩管理:包括成绩的录入、查询和统计功能。
(3)数据结构应用:利用各种数据结构实现系统的功能,例如链表用于存储学生信息,二叉树用于成绩的查询等。
(4)界面友好:通过控制台和简单的图形界面,使系统操作方便,用户体验良好。
三、系统实现1. 学生信息管理模块(1)学生信息的录入:通过输入学生尊称、学号、性别等信息,将学生信息存入链表中。
(2)学生信息的修改:通过学号或尊称查找学生信息,并进行修改操作。
(3)学生信息的删除:通过学号或尊称查找学生信息,并进行删除操作。
2. 成绩管理模块(1)成绩的录入:通过输入学号和课程成绩,将成绩信息存入二叉树中。
(2)成绩的查询:通过学号或尊称查询学生的成绩信息。
(3)成绩的统计:统计各科成绩的平均值、最高分、最低分等统计信息。
3. 数据结构应用(1)链表:用于存储学生信息,实现对学生信息的增删改查操作。
(2)二叉树:用于存储成绩信息,实现成绩的快速查询和统计操作。
4. 界面友好为了提高用户体验,系统设计了简洁清晰的控制台界面,让用户可以通过简单的操作完成学生成绩管理的各项任务。
四、系统测试与优化1. 系统测试在系统实现后,进行了严格的功能测试和性能测试,确保系统在各种情况下能够稳定运行,并能够高效地完成任务。
数据结构课程设计报告-学生成绩管理系统设计
广东某某学院《数据结构课程设计》题目:学生成绩管理系统设计学号:姓名:年级:学院:专业:指导教师:目录一、问题描述与需求分析 (3)1.1问题描述 (3)1.2需求分析 (3)二、数据结构的设计 (3)2.1数据结构的选择 (3)2.2单链表定义和创建 (3)三、软件模块结构图及程序流程图 (4)3.1大体模块关系图 (4)3.2程序流程图 (5)四、运行界面及用户使用手册 (10)4.1运行界面 (10)4.2测试数据 (15)4.3用户使用手册 (15)五、心得体会 (16)六、附录(源码) (16)一、问题描述与需求分析1.1问题描述设计一个简单的学生成绩管理系统。
完成对学生成绩信息的建立、查找、插入、修改、删除等功能。
1.2需求分析系统设计要求:1、能录入任意条数据,以方便教室录入多条学生成绩,提高教室工作效率,输入的内容包括学号,姓名,数学,英语,c语言成绩。
2、能比较迅速的查询挂科学生信息,合格学生信息,方便老师统计教学结果,且可以通过名字查询学生的信息,并输出该学生是否挂科的信息。
3、能快速准确删除不需要的学生信息,在删除前给出现有数据,可让教师直观了解要删除的数据的学号,删除后,输出删除结果并询问教师是否保存,以免误删。
4、能准确的修改学生的信息,在修改前输出现有数据,让教师直观了解需要修改的数据的学号,修改后,输出修改信息并询问是否保存,以免误删。
5、能够保存输入的数据,下次进入系统时不需要重新输入数据。
6、能够快速准确插入学生信息,并在插入前后输出表格对照。
7、学生也可以查询自己的成绩,但不拥有修改数据的权限。
二、数据结构的设计2.1数据结构的选择课程设计题目要求完成对学生成绩信息的建立、查找、插入、修改、删除等功能,自然而然的,我想到可以用单链表的结构,通过编写相应的功能函数来实现建立,删除,修改,输出,查找,保存节点数据域的内容来满足课程设计题目的要求。
2.2单链表定义和创建先定义单链表节点的数据域,包括学号、姓名、数学、英语、c语言成绩等信息和链表结点,然后再创建表头以及新建链表数据。
数据结构课程设计_学生成绩管理系统报告书
课程设计报告书设计名称:数据结构(C++版)题目:学生成绩管理系统学生姓名:XXX专业:计算机科学与技术班别:计科本XXX班学号:XXXXXX指导老师:XXX日期:2012 年7 月12 日一.问题描述:设计目的:1.掌握线性链表的建立。
2.掌握线性链表的基本操作。
3.掌握查找的基本算法。
设计内容:利用线性链表实现学生成绩管理系统,具体功能:输入、输出、插入、删除、查找、追加、读入、显示、退出,并能在屏幕上输出操作前后的结果。
二.基本要求1.写出系统需求分析,并建模。
2.编程实现,界面友好。
3.输出操作前后的结果。
三.工具/准备工作在此次课程设计中,我们用到了Microsoft Visual C++ V6.0,所以在开始课程设计前我们首先要安装好这个软件。
此外,在开始编程之前要做好相应的系统构思,以及想好实现相应的功能的算法。
四.分析与实现1.系统功能分析本系统主要实现对学生成绩信息进行管理,需要实现以下几个方面的管理功能:(0)创建学生成绩信息:输入学生的信息。
(1)查找学生成绩信息:按学号、姓名查找。
(2)修改学生成绩信息:找到要修改的学号,修改相应信息。
(3)追加学生成绩信息:找到要追加的学生成绩的学号,对相应科目的成绩进行追加。
(4)显示学生成绩信息:显示全部学生的成绩信息(5)插入学生成绩信息:插入一个新的学生。
(6)删除学生成绩信息;按学号、姓名删除。
目或者总分排序。
2.系统模块结构图3.模块分析:3.1系统首页:功能介绍:输入相应功能序号即可进行相应的功能操作。
图1.系统首页相应的代码:#include<stdio.h>#include<stdlib.h>#include<iostream>using namespace std;#define MAX 100typedef struct student{int num;char name[20];int english;int chinese;int math;int total;int length;struct student *next ;}s,*LinkList;int main(){ cout<<"\t\t\t 欢迎登录学生成绩管理系统!"<<endl;cout<<"\t\t\t+------------------------------------------+"<<endl;cout<<"\t\t\t|序号|请选择相应的操作功能的序号:|"<<endl;cout<<"\t\t\t+-----+------------------------------------+"<<endl;cout<<"\t\t\t| 0 |请输入学生的相关信息与成绩:|"<<endl;cout<<"\t\t\t+-----+------------------------------------+"<<endl;cout<<"\t\t\t| 1 |按学生学号查询学生成绩:|"<<endl;cout<<"\t\t\t+-----+------------------------------------+"<<endl;cout<<"\t\t\t| 2 |按学生姓名查询学生成绩:|"<<endl;cout<<"\t\t\t+-----+------------------------------------+"<<endl;cout<<"\t\t\t| 3 |追加学生的成绩信息:|"<<endl;cout<<"\t\t\t+-----+------------------------------------+"<<endl;cout<<"\t\t\t| 4 |显示全部学生的信息:|"<<endl;cout<<"\t\t\t+-----+------------------------------------+"<<endl;cout<<"\t\t\t| 5 |插入学生信息:|"<<endl; cout<<"\t\t\t+-----+------------------------------------+"<<endl; cout<<"\t\t\t| 6 |修改学生信息:|"<<endl; cout<<"\t\t\t+-----+------------------------------------+"<<endl; cout<<"\t\t\t| 7 |删除学生信息:|"<<endl; cout<<"\t\t\t+-----+------------------------------------+"<<endl;int flag=1,flag1=1;LinkList l;l=(LinkList)malloc(sizeof(student));l->next=NULL;char ch,ch2;while(flag){cout<<"请输入你要进行的操作数:"<<endl;cin>>ch;while(ch>'7'||ch<'0'){cout<<"输入有误,请重新输入"<<endl;cin>>ch;}switch(ch){case '0':{input(l);cout<<"学生的基本信息存储成功"<<endl;}break;case '1':{check(l);}break;case '2':check_name(l);break;case '3':add(l);break;case '4':output(l);break;case '5':insert_stu(l);break;case '6':xiugai(l);break;case '7':Delete_stu(l);break;}cout<<"你要继续操作还是退出(y/n)"<<endl;cin>>ch2;while(flag1){if((ch2=='Y')||(ch2=='y')){flag=1;flag1=0;}else if((ch2=='N')||(ch2=='n')){//flag=0;//flag1=0;}else {flag1=1;cout<<"输入有误,请重新输入(y/n)(y:继续)(n:退出)!"<<endl;cin>>ch2;}}}return 0;}3.2输入学生信息功能介绍:输入0,选择进入输入学生信息功能中,输入想输入的学生信息个数,并输入相应的学生信息。
学生成绩管理系统数据结构课程设计报告
学生成绩管理系统数据结构课程设计报告一、背景学生成绩管理系统是学校教务处常用的软件之一,旨在方便学校管理学生成绩信息。
数据结构是计算机科学中的基础课程,对于学生成绩管理系统的设计和实现有着重要意义。
本课程设计报告将针对学生成绩管理系统的数据结构设计展开讨论。
二、需求分析学生成绩管理系统需要存储学生的基本信息和成绩信息,可以进行成绩录入、查询、统计等操作。
系统需要能够高效地处理大量学生信息,并提供快速、准确的查询功能。
三、数据结构设计1. 学生信息存储为了高效地存储学生信息,可以使用链表数据结构。
每个学生信息包括学号、姓名、性别、班级等字段,可以设计一个学生结构体来存储这些信息。
链表节点可以包含一个学生结构体和指向下一个节点的指针,从而构成一个链表来存储所有学生信息。
typedef struct Student {int studentID;char name[50];char gender;char className[50];float score;struct Student* next;} Student;Student* head = NULL;2. 成绩信息存储成绩信息可以存储在一个数组中,数组的每个元素对应一个学生的成绩,可以通过学号索引到对应的成绩信息。
为了方便查询和统计,可以对成绩数组进行排序,例如按学号或成绩值排序。
float scores[1000];四、功能实现1. 成绩录入在管理系统中,可以提供成绩录入功能,输入学生的学号和成绩信息后,将成绩信息存储到成绩数组中。
2. 查询功能查询功能可以根据学生的学号或姓名查询学生的基本信息和成绩信息,可以使用链表和数组的结合来实现高效的查询功能。
3. 成绩统计系统可以根据输入的条件,如班级、科目等进行成绩统计,计算平均成绩、最高分、最低分等统计信息。
五、总结本设计报告对学生成绩管理系统的数据结构设计进行了详细讨论,包括学生信息和成绩信息的存储方式、功能实现等方面。
数据结构C语言课程设计任务书完整版--学生管理系统
数据结构课程设计报告题目一、学生管理系统的设计与实现——采用顺序表结构实现题目二、图的算法实现——采用邻接表和邻接矩阵结构实现班级:__计算机101______________姓名:__刘文辉_________________指导教师:__董跃华_________________成绩:__________________________信息工程学院2012 年06月18 日目录1需求分析 (3)1.1 目的 (3)1.2 功能 (3)2详细设计 (3)2.1 数据类型 (4)2.2 总体功能流程图 (4)2.3 伪码算法 (5)3调试分析 (14)3.1 遇到的问题 (14)3.2 算法的时空分析 (14)3.3改进设想 (14)3.4经验体会 (14)4测试结果 (15)5参考文献 ........................................................................................................................ 错误!未定义书签。
1、需求分析1.1、目的设计并实现一个学生管理系统,即定义一个包含学生信息(学号,姓名,成绩)的的顺序表,可以不考虑重名的情况①熟练查找和排序的数据结构算法②熟练掌握数据结构③复习C语言的各个知识点1.2、功能(1) 根据指定学生个数,逐个输入学生信息;(2) 逐个显示学生表中所有学生的相关信息;(3) 给定一个学生信息,插入到表中指定的位置;(4) 删除指定位置的学生记录;(5) 统计表中学生个数;(6) 利用直接插入排序或者折半插入排序按照姓名进行排序;(7) 利用快速排序按照学号进行排序;(8) 根据姓名进行折半查找,要求使用递归算法实现,成功返回此学生的学号和成绩;(9) 根据学号进行折半查找,要求使用非递归算法实现,成功返回此学生的姓名和成绩。
2、详细设计2.1、数据类型1、本次程序采用顺序存储结构,利用结构体数组的优点进行设计。
数据结构课程设计学生管理系统
淮阴工学院数据结构课程设计报告选题名称:学生管理系统系(院):计算机工程系专业:计算机科学与技术班级:网络1071 姓名:施琦学号: 1071304118 指导教师:张亚红张勇军学年学期:2008 ~ 2009 学年第 2 学期2009 年 6 月20 日设计任务书摘要:随着现在学校在校同学的增加,传统的的学生的信息的管理系统已经不能满足现在的需求,为了能够更加有效地对学生信息进行管理,所以在本次的数据结构课程设计中,目标是运用数据结构中的链表知识在C++中涉及一个能够有效管理学生信息的程序包括:主控程序、学生档案管理子系统、学生成绩管理子系统、学生宿舍管理子系统。
可以对学生信息进行添加,修改,删除,和查看。
关键词:数据结构;链表;学生管理系统目录1.需求分析 (2)2.概要设计 (2)2.1功能模块描述 (2)3.详细设计和实现 (2)3.1类的定义 (2)3.2具体函数的实现 (4)3.3程序流程图 (9)4.调试与操作说明 (9)总结 (12)致谢 (13)参考文献 (14)1.需求分析随着现在学校在校同学的增加,传统的的学生的信息的管理系统已经不能满足现在的需求,所以在本次的数据结构课程设计中,我选择的课题是学生管理系统,目标是运用数据结构中的链表知识在Visual C++编程环境中设计出学生管理系统。
2.概要设计链表是线形表的一种,线形表分为顺序存储结构和链式存储结构。
线形表的顺序存储结构的特点是逻辑关系上相邻的两个元素物理位置上也相邻,因此可以随机存取表中任一元素。
链式存储结构的特点是用一组任意的存储单元存储线形表的数据元素。
链表的最大的优点是对表的添加、删除、查找、排序等操作比较方便,因此采用链表来存储学生相关信息。
本课题分为六个部分:构造单链表,显示所有学生信息的函数,添加学生信息的函数,查找学生信息的函数,删除学生信息的函数,主函数的设计。
2.1功能模块描述void CList::addnode(CNode *pnode) //增加结点void CList::deletelist() //删除链表CNode *CList::deletenode(CNode *pnode) //删除结点CNode *CList::lookup(CData &data) //查询void CList::showlist() //显示学生信息CNode *CList::getnext(CNode *pnode) //获得下个结点int Student::comparename(CData &data) //比较姓名int main() //主函数3.详细设计和实现3.1类的定义定义了CData类,声明了comparename和show函数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录1. 需求分析 (2)2.概要设计 (2)2.1 学生作业完成情况管理系统 (2)2.1.1 程序设计说明 (2)2.1.2 数据结构类型 (4)2.2 图的建立及存储 (4)2.2.1 程序设计说明 (4)2.2.2 数据结构类型 (4)3.详细设计 (5)3.1 算法流程图 (5)3.1.1 学生作业完成情况管理系统 (5)3.1.2 图的建立及存储 (6)4.调试分析(运行截图) (19)4.1学生作业完成情况管理系统 (19)4.2图的建立及存储 (30)5.课程总结 (32)6.参考文献 (33)1.需求分析(一)学生作业完成情况管理系统假设某门课程一学期要留10次作业,每次老师要进行批改,给出分数后还要进行登记。
学期期末要根据每次作业的成绩计算出最终的平时成绩(满分100)。
该程序应该具有下列功能:(1) 输入信息;(2) 输出信息;(3) 给定条件,修改、删除相应信息;(4) 按条件统计。
(二)图的建立及存储建立图的存储结构(图的类型可以是有向图、无向图),能够输入图的顶点和边的信息,并存储到相应存储结构中,而后输出图的邻接矩阵。
应用环境设定给定某类图的顶点和边的相关信息,要求输出该图的邻接矩阵。
用户界面命令行界面,用户选择所要建立的图的类型,输入相关顶点和边的信息,然后输出该图的邻接矩阵。
输入方式首先输入所要建立的图形类型的代码,然后输入顶点vexnum和边的数量arcnum,再输入顶点信息,边的2个端点v1和v2,如果建立的是网则还要输入权值w。
输出方式输出的是一个邻接矩阵,采用for循环嵌套,输出该图的邻接矩阵。
数据存储方式全部在内存存放,不使用硬盘上的文件或其他数据源,程序执行过程中和结束后不保存数据。
程序功能:1. 输入图的类型;2. 输入相应的图的顶点和边的相关信息;3. 得到图的邻接矩阵。
2.概要设计2.1学生作业完成情况管理系统2.1.1程序设计说明程序整体分为登录部分、获得数据部分、数据处理及处理信息反馈部分、数据导出保存部分,如下结构图1、2所示:图 1图 2该程序具有下列功能:(1) 输入信息;(2) 输出信息;(3) 给定条件,修改、删除相应信息;(4) 按条件统计。
2.1.2数据结构类型typedef struct student //学生信息链表{char name[10];int schoolnumber;int classnumber;float score[10];struct student *next;} stu,*stupt;stupt st=NULL;//学生信息的头指针stupt qt=NULL;//学生信息的尾指针FILE* fp;//文件指针2.2图的建立及存储2.2.1程序设计说明本程序通过输入有向图与无向图的顶点、边、权值等信息,存储至用数组建立的邻接矩阵,并输出该邻接矩阵图。
2.2.2数据结构类型基本操作:typedef enum{DG,UDG}GraphKind;//有向图,无向图typedef struct ArcCell{VrType adj; // 顶点关系类型。
对无权图,用1或0表示相邻否;对带权图,则为权值类型。
InfoType *info; // 该弧相关信息的指针}ArcCell, AdjMatrix[20][20];typedef struct{VertexType vertex[20]; // 顶点向量AdjMatrix arcs; // 邻接矩阵int vexnum, arcnum; // 图的当前顶点数和弧(边)数GraphKind kind; // 图的种类标志}MGraph;CreateGraph(MGraph &G)初始条件:图G未创建。
操作结果:创建一个图G。
CreateUDG(MGraph &G);初始条件:无向图G未创建。
操作结果:创建一个无向图并求出其邻接矩阵。
CreateDG(MGraph &G);初始条件:有向图G未创建。
操作结果:创建一个有向图并求出其邻接矩阵。
Display(MGraph G)初始条件:图G已创建。
操作结果:输出图G的邻接矩阵。
3.详细设计3.1算法及流程图3.1.1 学生作业完成情况管理系统程序算法:手动输入学生信息:void inpu(stupt p){int n;int m=0;int flag;while(m<10)//成绩初始化为0{p->score[m]=0;m++;}printf("请输入:姓名:");scanf("%s",p->name);clear();printf("请输入:学号:");scanf("%d",&p->schoolnumber);clear();printf("请输入:班级(如:101):");scanf("%d",&p->classnumber);clear();do{printf("请输入:第几次作业(1~10):");scanf("%d",&n);clear();printf("请输入:该次作业成绩:");scanf("%f",&p->score[n-1]);clear();//清空缓冲区printf("是否继续输入该生成绩,退出请按q,其他键继续:");flag=getchar();clear();//清空缓冲区堆积}while(flag!='q');}从文件中导入学生信息:void readfile(stupt &st,FILE* fp){char flag,flag_1;char filename[90];printf("如导入前有过手动输入,请先导出至文件后再进行导入,否则输入部分的数据将丢失!\n");printf("任意键继续,退出请按q:");flag_1=getchar();//等待接收一个字符clear();if(flag_1=='q'){return;}lab_2:printf("请选择:a.程序默认路径导入(之前导出时需要是默认导出) b.自定义导入路径(请确保导入路径合法):");flag=getchar();clear();if(flag=='b'){printf("请输入导入路径(请确保导入路径合法!)(如c:.\\student_homework_infor.txt):");scanf("%s",filename);clear();if(access(filename,0)==1)//确定文件或文件夹的访问权限即检查文件的存取方式,如果存取方式有效,则返回0,否则返回1{printf("路径不合法或文件不存在,请重新选择!\n");goto lab_2;}fp=fopen(filename,"rb");if(fp==NULL){printf("打开%s文件失败,请返回主菜单重试!\n",filename);return;}elsefilep_read_to_st(st,fp);//导入文件fclose(fp);}else if(flag=='a'){fp=fopen("student_homework_infor.txt","r");if(access("student_homework_infor.txt",0)==1){printf("文件不存在!\n");}if(fp==NULL){printf("打开程序所在目录下的student_homework_infor.txt文件失败,请返回上层菜单重试!\n");return;}elsefilep_read_to_st(st,fp);fclose(fp);}else{printf("非法输入!程序将返回上层菜单...\n");}}查询某学生作业完成情况:void search_1(stupt&st,int snum){stupt p,q;if(st==NULL){printf("未建立学生信息表,请返回上层菜单输入或导入所有学生的信息\n");return;}else{p=st;q=p->next;}if(p->schoolnumber==snum){printf_score(p); //查找成功输出并返回上级函数return;}while(q!=NULL){if(q->schoolnumber==snum){printf_score(q); //查找成功输出并返回上级函数return;}q=q->next;//下一个}printf("查询失败,该学号学生信息不存在\n");}查询某班级所有学生成绩:void search_2(stupt st,int clnum){stupt p,q;int f=0;if(st==NULL){printf("未建立学生信息表,请返回主菜单输入所有学生的信息\n");return;}else{p=st;q=p->next;}printf("班级姓名学号成绩1 成绩2 成绩3 成绩4 成绩5 成绩6 成绩7 成绩8 成绩9 成绩10\n");printf("──────────────────────────────────────\n");if(p->classnumber==clnum){printf_infor(p);f++;}//查找成功输出while(q!=NULL){if(q->classnumber==clnum){printf_infor(q);f++;}//查找成功输出q=q->next;//下一个}if(f==0){printf("没有该班级学生信息\n");}}修改学生信息:void change(stupt&p){char a;printf_help_2();while((a=getchar())!='0'){clear();printf("班级姓名学号成绩1 成绩2 成绩3 成绩4 成绩5 成绩6 成绩7 成绩8 成绩9 成绩10\n");printf("──────────────────────────────────────\n");printf_infor(p);switch(a){case '1':{printf("您选择了:1.修改姓名\n");change_name(p);break;}case '2':{printf("您选择了:2.修改班级\n");change_class(p);break;}case '3':{printf("您选择了:3.修改成绩\n");change_score(p);break;}default:{printf("非法输入,请重新选择!\n");break;}}printf_help_2();}if(a=='0'){clear();printf("您选择了:0.返回\n");}}删除学生信息:void delete_pt(stupt&st,int snum){stupt p,q;if(st==NULL){printf("未建立学生信息表,请返回主菜单输入或导入所有学生的信息\n");return;}else{p=st;q=p->next;}if(p->schoolnumber==snum){st=q; //查找成功删除并返回上级函数printf("班级姓名学号成绩1 成绩2 成绩3 成绩4 成绩5 成绩6 成绩7 成绩8 成绩9 成绩10\n");printf("──────────────────────────────────────\n");printf_infor(p);free(p);printf("上面信息删除成功!\n");return;}while(q!=NULL){if(q->schoolnumber==snum){p->next=q->next; //查找,成功删除并返回上级函数printf("班级姓名学号成绩1 成绩2 成绩3 成绩4 成绩5 成绩6 成绩7 成绩8 成绩9 成绩10\n");printf("──────────────────────────────────────\n");printf_infor(q);free(q);printf("上面信息删除成功!\n");return;}else//下一个{p=q;q=p->next;}}printf("删除失败,该学号学生信息不存在\n");}显示各项统计数据:void statistics_result(stupt &st)//统计结果{char flag;printf_help_3();while((flag=getchar())!='0'){clear();switch(flag){case '1':{printf("您选择了:1.按学号查看学生平均成绩\n");snum_check_aver(st);break;}case '2':{printf("您选择了:2.按班级查看学生平均成绩\n");cnum_check_aver(st);break;}case '3':{printf("您选择了:3.查看学生平均成绩降序序列\n");descending_order_check(st);break;}default:{printf("非法输入,请重新选择!\n");clear();break;}}printf_help_3();}if(flag=='0'){printf("您选择了:0.返回主菜单\n");clear();Printf_help_1();}}导出信息至文件:void creat_files(stupt st,FILE* &fp){char flag;char filename[90];lab_1:printf("请选择:a.默认路径保存(为当前目录下的student_homework_infor.txt) b.自定义保存路径:");flag=getchar();clear();//清除缓存中的回车if(flag=='b'){printf("请输入文件名及保存路径(如c:student_homework_infor.txt):");scanf("%s",filename);clear();if(access(filename,0)==1){printf("路径不合法,请重新输入!\n");goto lab_1;}fp=fopen(filename,"ab+");if(fp==NULL){printf("创建文件至%s失败,请返回主菜单重试!\n",filename);return;}else fileprintf(st,fp);fclose(fp);}else if(flag=='a'){fp=fopen(".\\student_homework_infor.txt","a");if(fp==NULL){printf("创建文件至程序所在目录下的student_homework_infor.txt文件失败,请返回主菜单重试!");return;}else fileprintf(st,fp);fclose(fp);}else{printf("非法输入!程序将返回主菜单...\n");}}学生作业完成情况管理程序流程概图3.1.2 图的建立及存储邻接矩阵表示法:设G=(V,E)是一个图,其中V={V1,V2,V3…,Vn}。