数据结构与算法课程设计 学生成绩管理系统
(2023)数据结构课设报告学生成绩管理系统(一)
(2023)数据结构课设报告学生成绩管理系统(一)数据结构课设报告学生成绩管理系统一、背景介绍为了方便教师管理学生的成绩,提高数据处理的效率和准确性,我们团队开发了一款可以管理学生成绩的系统。
二、需求分析•教师可以登录系统,并进行学生信息的录入、修改、查询和删除。
•教师可以录入、修改、查询和删除学生的成绩。
•学生也可以登录系统,并查看自己的成绩。
•教师和学生的密码需要进行加密存储,并能够找回密码。
三、设计方案1. 数据结构设计我们采用链表的数据结构,实现学生信息和成绩的存储。
- 学生信息:学号、姓名、密码。
- 学生成绩:科目、成绩。
2. 模块划分•登录模块:实现教师和学生的登录、密码加密和找回密码。
•学生信息管理模块:实现学生信息的录入、修改、查询和删除。
•成绩管理模块:实现成绩的录入、修改、查询和删除。
•学生成绩查询模块:实现学生查看自己成绩的功能。
3. 界面设计我们采用Java Swing库实现图形化界面,美观易用。
四、开发过程1. 环境配置我们使用Java语言进行开发,并采用MySQL数据库存储数据。
开发工具为Eclipse和Navicat。
2. 实现过程在开发过程中,我们分别完成了登录模块、学生信息管理模块、成绩管理模块和学生成绩查询模块。
同时,我们进行了严格的测试和优化,保证了系统的稳定性和用户体验。
五、总结通过本次课设,我们学习到了如何设计、实现一款简单的大型软件。
同时,我们也深入理解了数据结构的应用和开发过程中需要注意的问题。
未来,我们将继续学习和提升自己的技术水平,为社会创造更多有用的产品。
六、存在的问题和改进计划1. 学生信息和成绩输入需要更为便捷目前的输入方式需要逐一输入每个学生的信息以及成绩,如果要录入多个学生的信息,效率不高。
我们计划实现批量导入的功能,可以通过Excel表格导入学生信息和成绩。
2. 安全性还需要更高的保障目前我们只是简单使用密码加密保护了教师和学生的账户信息,如果系统被攻击者入侵,那么所有的账户信息和成绩信息都会暴露,对学生隐私和数据安全造成极大威胁。
数据结构-学生成绩管理系统课程设计-源程序
#include"stdio.h"#include"stdlib.h"#include"string.h"#include "conio.h"typedef struct STUDENT{char name[20];//名字char num[10];//学号int score;//成绩struct STUDENT *next;}STUDENT, *StudentList;/*void CreateList(StudentList &L);void Locate(StudentList L);void InsertList(StudentList &L);void DeleteList(StudentList &L);int LengthList(StudentList L); */void PrintList(StudentList H);void Create(StudentList &H){ //建立链表,int a,i;system("cls");//清屏printf("\t\t**************************************************\n");printf("\t\t-------------------成绩链表的输入-------------------\n");printf("输入学生的个数:\n");scanf("%d",&a);//{{创建链表StudentList q=H;for (i=0;i<a;i++){StudentList p;p= (StudentList )malloc(sizeof(STUDENT));printf("输入第%d个学生的信息:\n",i+1);printf("\n输入姓名:\t学号:\t成绩:\n");scanf("%s %s %d",p->name,p->num,&p->score);p->next=NULL;q->next=p;q=q->next;}// H=H->next;PrintList(H);printf("按任意键返回主菜单\n");getch();}void Insert(StudentList &H){system("cls");//清屏printf("\t\t**************************************************\n");printf("\t\t-------------------学生信息插入操作-------------------\n");if(!H->next){printf("错误:链表未创建!\n");printf("按任意键返回主菜单\n");getchar();return ;}int i;printf("插入的位置:");scanf("%d",&i);StudentList p = H;int j = 0;while (p && j < i-1){p = p->next;++j;}if (!p || j > i-1){printf("输入位置错误!") ;printf("按任意键返回主菜单\n");getch();return;}StudentList s = (StudentList )malloc(sizeof(STUDENT));printf("\n输入姓名:\t学号:\t成绩:\n");scanf("%s %s %d",s->name,s->num,&s->score);s->next = p->next;p->next = s;PrintList(H);printf("按任意键返回主菜单\n");getchar();}void Delete(StudentList &H) //删除节点{system("cls");//清屏printf("\t\t**************************************************\n");printf("\t\t-------------------学生信息删除操作-------------------\n");if(!H->next){printf("错误:链表未创建!\n");printf("按任意键返回主菜单\n");getchar();return ;}int i;printf("输入要删除的位置:");scanf("%d",&i);StudentList p = H;int j = 0;while (p->next && j < i-1){p = p->next;++j;}if (!p->next || j > i-1){printf("输入位置错误!") ;printf("按任意键返回主菜单\n");getch();return;}StudentList q=p->next;p->next=q->next;free(q);PrintList(H);// getch();printf("按任意键返回主菜单\n");getchar();}void Locate(StudentList H) //查询{system("cls");//清屏printf("\t\t**************************************************\n");printf("\t\t-------------------学生信息查询操作-------------------\n");if(!H->next){printf("错误:链表未创建!\n");printf("按任意键返回主菜单\n");getchar();return ;}char num[10];// int flag=0;printf("\n输入要查询的学号:");scanf("%s",num);StudentList p=H->next;int i=1;while(p){if(!strcmp(num,p->num)){printf("找到了,它是链表的第%d个元素\n",i);printf("\n姓名\t学号\t成绩\n");printf("%s\t%s\t%d\t\n",p->name,p->num,p->score);break;}p=p->next;i++;}if (!p){printf("你要查询的学号不存在!!\n");getchar();}printf("按任意键返回主菜单\n");getchar();}void Modify(StudentList H){system("cls");//清屏printf("\t\t**************************************************\n");printf("\t\t-------------------学生信息修改操作-------------------\n");if(!H->next){printf("错误:链表未创建!\n");printf("按任意键返回主菜单\n");getchar();return ;}int i;printf("输入要修改的位置:");scanf("%d",&i);StudentList p = H;int j = 0;while (p->next && j < i-1){p = p->next;++j;}if (!p->next || j > i-1){printf("输入位置错误!") ;printf("按任意键返回主菜单\n");getch();return;}StudentList q=p->next;//free(q);*/char name[20];char num[10];int score;printf("\n输入更改的姓名\t学号\t成绩:\n");scanf("%s %s %d",name,num,&score);strcpy(q->name,name);strcpy(q->num,num);q->score=score;PrintList(H);printf("按任意键返回主菜单\n");getchar();}void Sum(StudentList H){system("cls");//清屏printf("\t\t**************************************************\n");printf("\t\t-------------------学生成绩统计-------------------\n");StudentList t=H->next;if(!t){printf("信息系统空,请添加!\n");// printf("按任意键返回主菜单\n");// getchar();return ;}printf("不及格的学生是:\r\n");printf("姓名\t学号\t成绩:\n");while(t){if (t->score<60){printf("%s\t%s\t%d\t\n",t->name,t->num,t->score);}t=t->next;}t=H->next;printf("\n成绩为“及格”的学生是:\r\n");printf("姓名\t学号\t成绩:\n");while(t){if (t->score>=60&&t->score<=70){printf("%s\t%s\t%d\t\n",t->name,t->num,t->score);}t=t->next;}t=H->next;printf("\n成绩为“中”的学生是:\r\n");printf("姓名\t学号\t成绩:\n");while(t){if (t->score>=70&&t->score<80){printf("%s\t%s\t%d\t\n",t->name,t->num,t->score);}t=t->next;}t=H->next;printf("\n成绩为“良”的学生是:\r\n");printf("姓名\t学号\t成绩:\n");while(t){if (t->score>=80&&t->score<90){printf("%s\t%s\t%d\t\n",t->name,t->num,t->score);}t=t->next;}t=H->next;printf("\n成绩为“优”的学生是:\r\n");printf("姓名\t学号\t成绩:\n");while(t){if (t->score>=90){printf("%s\t%s\t%d\t\n",t->name,t->num,t->score);}t=t->next;}printf("按任意键返回主菜单\n");getchar();}void PrintList(StudentList H) //输出链表{StudentList t=H->next;if(!t){printf("信息系统空,请添加!\n");// printf("按任意键返回主菜单\n");// getchar();return ;}printf("\n姓名\t学号\t成绩\n");while(t){printf("%s\t%s\t%d\t\n",t->name,t->num,t->score);t=t->next;}printf("\n");getchar();}void main(){StudentList H;H = (StudentList )malloc(sizeof(STUDENT)); //分配头结点的空间H->next = NULL;while(1){system("cls");//清屏printf("\t\t\t\t学生成绩管理系统\t\t\t\t");printf("1.建立成绩链表\n2.插入\n3.删除\n4.查询\n5.修改\n6.统计\n0.退出\n");printf("请选择:");switch(getch()){case '1':Create(H);break;case '2':Insert(H);break;case '3':Delete(H);break;case '4':Locate(H);break;case '5':Modify(H);break;case '6':Sum(H);break;case '0':exit(0);}}}。
数据结构课程设计__学生成绩管理系统
数据结构课程设计报告学生成绩管理系统学院:信息与工程学院专业:计算机科学与技术班级:090412姓名:邓军学号:09041220指导老师:谢老师日期:2011-06-22目录第一章需求分析1.1课程设计题目及要求1.2课程设计思想及开发环境第二章概要设计2.1总体方案2.2 模板功能分析及其外部设计2.3主要数据结构第三章详细设计第四章调试与操作说明4.1主要模板调试4.2 系统缺陷及原因第五章课程设计总结与体会第六章参考文献第一章 需求分析1.1课程设计题目及要求 题目:学生成绩管理系统 学生成绩表:要求如下:1) 实现对两个文件数据进行合并,生成新文件3.txt2) 抽取出三科成绩中有补考的学生并保存在一个新文件4.txt 3) 对合并后的文件3.txt 中的数据按总分降序排序(至少采用两种排序方法实现)4) 输入一个学生姓名后,能查找到此学生的信息并输出结果(至少采用两种查找方法实现)5) 要求使用结构体,链或数组等实现上述要求.1.2课程设计思想及开发环境设计思想:本课题的实质是完成对学生成绩表的合并、提取、排序、查询等功能,可以首先定义项目的数据结构,然后将每个功能写学生成绩信息文件1(1.txt ),内容如下 姓名 学号 语文 数学 英语 张明明 01 67 78 82 李成友 02 78 91 88 张辉灿 03 68 82 56 王露 04 56 45 77 陈东明 05 67 38 47…. .. .. ..学生成绩信息文件2(2.txt ),内容如下:姓名 学号 语文 数学 英语 陈果 31 57 68 82 李华明 32 88 90 68 张明东 33 48 42 56 李明国 34 50 45 87 陈道亮 35 47 58 77…. .. .. ..成一个函数来完成对数据的操作,最后完成主函数以验证各个函数功能并得出运行结果。
可将此系统分为如下模块,合并两个信息表、从表中提取信息、降序排序模块、按条件进行查询、退出系统。
大数据结构课程设计学生成绩管理系统
数据结构课程设计题目名称:学生成绩管理系统计算机科学与技术学院数据结构综合实验设计———————学生成绩管理系统1.需求分析系统主要管理学生信息及成绩信息排序等事项。
根据需要可以查询学生的信息。
主要功能包括如下。
(1)使用中文菜单,界面升级和用户输入要人性化。
(2)将学生信息保存到文本文档中,具体对学生信息进行插入删除查询操作时,将保存在文本文档中的学生信息提取出来,保存在自己定义的数据结构中,然后在对该数据结构进行操作,所有操作完成,或者在相应的命令后,再将学生信息保存到文本文档中。
(3)具有数据输入功能,输入的数据能最终保存在文件中。
(4)具有数据删除功能,能最终从文件中删除。
(5)排序功能,根据自己设计的数据结构,升级排序算法。
(6)具有多种查询及输出功能。
(7)其他功能。
(8)学生信息的修改。
本程序要求设计一个学生信息管理程序,即用计算机来管理一个学校的各个班级成员的各种信息,实现学生信息管理。
(9)数据的输入形式和输入值得范围:首先输入的是菜单的序号,选择你想要进行的操作,其次根据提示输入相关的班级或学生信息。
(10)结果的输出形式:输出的是班级信息或学生信息。
2.设计概要输入学生成绩输出学生成绩查询学生成绩插入学生成绩按总分排名删除学生信息退出系统3函数Struct Student//结构体{Int term;//学期Int num;//学号Char name[12];姓名Float mrak1;成绩Float mark2;Float mark3;Float sum;//总分Float average;//平均分};void input(list *head) 输入函数void output(list *h) 输出函数void sortsum(list *head) 总成绩排名void sortnum(list *head)按学号排名void find (list *h)查找主函数list *del (list *h)删除函数list *insert(list *h)插入函数全部的功能函数可以实现所有的功能4详细设计:程序代码:#include <stdio.h>#include <stdlib.h>#include <malloc.h>#define MAXLEN 100#define Null 0/**************************/int count = 0;/**************************/typedef struct node {int num; // 学号char name[MAXLEN]; // 姓名/******************************/ char sex[2]; ///性别//char sex;/****************************/float sum; //总分float ave; ///平均分int computer; ///计算机成绩int english; ///英语成绩int math; ///数学成绩int chinese; //语文分数struct node *next; // 指针域}list;/*************************/void input(list *head) ///输入函数/*************************/{list *p,*r;int i,n; // n 为学生人数/*p=(list *)malloc(sizeof(list));p->next=Null;*/r=head;printf("请输入学生人数.\n");scanf("%d",&n);for(i=1;i<=n;i++){p=(list *)malloc(sizeof(list));printf("请输入学生学号:\n");scanf("%d",&p->num);printf("请输入学生性别:\n");scanf("%s",&p->sex);printf("请输入学生姓名:\n");scanf("%s",&p->name);printf("请输入语文成绩:\n");scanf("%d",&p->chinese);printf("请输入英语成绩:\n");scanf("%d",&p->english);printf("请输入数学成绩:\n");scanf("%d",&p->math);printf("请输入计算机成绩:\n");scanf("%d",&p->computer);(p->sum)=(p->chinese)+(p->computer)+(p->math)+(p->english);(p->ave)=(p->sum)/4;p->next=Null;r->next=p;r=r->next;/********************/count ++;/********************/}}void output(list *h) //输出函数{/************************/if (h == NULL)printf("记录为空!");/*************************/list *p;printf("学号\t姓名\t性别\t语文成绩\t数学成绩\t英语成绩\t计算机成绩\t平均分\t总成绩\t\n");p=h->next;while (p!=NULL){printf("%d\n\t%s\t%s\t%d\t%d\t%d\t%d\t%5.1f\t%5.1f\n", p->num,p->name,p->sex,p->chinese,p->math,p->english,p->computer,p ->ave,p->sum);p=p->next;}}输出函数void sortsum(list *head) ///总成绩排序{// struct node temp;// const int n=20;// int i,j,k;// printf("按照总成绩排序:\t");// for(i=0;i<n;i++)// {// k=i;// for(j=i+1;j<n;j++)// if(list[j].sum<list[k].sum)// k=j;// temp=list[k];list[k]=list[i];list[i]=temp; // output(p);// }int i=count, j, k;printf("按照总成绩排序:\n");if (count==0 || count==1){return;}list *p, *temp;while(i > 0){p=head;for(j=0; j<i-1; j++){if(p->next->sum > p->next->next->sum){temp = p->next ;p->next = p->next->next;temp->next = p->next->next;p->next->next = temp;}p = p->next;}i--;}}/*******************************************/利用了冒泡排序的方法把成绩排序:void sortnum(list *head){int i=count, j, k;printf("按照学号排序:\n");if (count==0 || count==1){return;}list *p, *temp;while(i > 0){p=head;for(j=0; j<i-1; j++){if(p->next->num > p->next->next->num){temp = p->next ;p->next = p->next->next;temp->next = p->next->next;p->next->next = temp;}p = p->next;}i--;}}/*******************************************/ /*利用了冒泡排序的方法把学号排序:int sortnum(node *list) ///学号排序{struct node temp;const int n=20;int i,j,k;printf("按照总成绩排序:\t");for(i=0;i<n;i++){k=i;for(j=i+1;j<n;j++)if(list[j].num<list[k].num){k=j;temp=list[k];list[k]=list[i];list[i]=temp;}}return 0;}*/void find (list *h) ///查找函数{int k; // 要找的学生学号list *p;p=h->next;printf("请输入要查找的学生学号:\n");scanf("%d",&k);while (p && p->num!=k)p=p->next;if(p){printf("学号\t姓名\t性别\t语文成绩\t数学成绩\t英语成绩\t计算机成绩\t平均成绩\t总成绩\n");printf("%d\t%s\t%s\t%d\t%d\t%d\t%d%5.1f\t%5.1f\n",p->num,p->name, p->sex,p->chinese,p->math,p->english,p->computer,p->ave,p->sum);}elseprintf("目标没找到\n");}利用遍历按要求查找相应的学生:list *del (list *h) ///删除函数{int k; // 要删除的学生学号list *p,*q;q=h;p=h->next;printf("请输入待删除的学生学号:\n");scanf("%d",&k);while (p && p->num!=k){q=p;p=p->next;}if(p){q->next=p->next;free(p);count --;}elseprintf("没有此学生的记录,无法删除!\n");return (h);}list *insert(list *h) //插入函数{list *p,*q,*r,*head;head=h;r=h;p=h->next; // 下面构造一个学生的信息q=(list *)malloc(sizeof(list));printf("请输入待插入学生的学号:\n");scanf("%d",&q->num);printf("请输入待插入学生性别:\n");scanf("%s",&q->sex);printf("请输入待插入学生的姓名:\n");scanf("%s",&q->name);printf("请输入待插入的语文成绩:\n");scanf("%d",&q->chinese);printf("请输入待插入的英语成绩:\n");scanf("%d",&q->english);printf("请输入待插入的数学成绩:\n");scanf("%d",&q->math);printf("请输入待插入的计算机成绩:\n");scanf("%d",&q->computer);(q->sum)=(q->chinese)+(q->computer)+(q->math)+(q->english);(q->ave)=(q->sum)/4;q->next=Null; // 找到链表的结尾结点count --;while(p!=Null){r=p;p=p->next;} // 将新结点插入表尾r->next=q;r=r->next;return (head);}voidmain() //主函数{list *p;/*****************************/p=(list *)malloc(sizeof(list));p->next=Null;/*****************************/int k; // 控制循环的标志while (1){printf(" ---------------------------------------\n");printf(" | 学生成绩管理系统 |\n");printf(" ---------------------------------------\n");printf(" | 1. 登记成绩 |\n");printf(" | 2. 查询成绩 |\n");printf(" | 3. 插入成绩 |\n");printf(" | 4. 删除成绩 |\n");printf(" | 5. 按学号排序 |\n");printf(" | 6. 按总成绩排序 |\n");printf(" | 7. 输出所有学生成绩 |\n");printf(" | 8. 退出系统 |\n");printf(" ---------------------------------------\n");printf("请输入你的选择\n");scanf("%d",&k);switch(k){case 1:// p=input();/****************/input(p);/****************/break;case 2:find(p);break;case 3:p=insert(p);break;case 4:p=del(p);break;case 5:sortnum(p);output(p);break;case 6:sortsum(p);output(p);break;case 7:output(p);break;case 8:exit(0);default:printf("选择错误,重新开始\n");}}}4调试分析(1):调试过程中在选择功能也就是简易界面出遇到了问题后才去switch case的方法也决问题,在设计函数时第一次只进行了成绩排序,这样使得程序不够完整没有满足要求,之后加上了学号排序这样方便了查找,也方便了阅读。
数据结构课程设计学生成绩管理系统
课程设计报告课程设计题目:1:学生成绩管理系统2:joseph环3:猴子选大王姓名洪军学号201420180706班级1421807指导教师邹国华2015年12月17日1:学生成绩管理系统1, 问题分析;定义一个学生管理系统实现对学生基本数据的管理,录入:输入每位学生的信息;输出:输出每位学生的信息;查询:可以按3学号和4姓名查询某个学生的信息;修改:可以修改学生(按1学号修改,按2成绩修改)的信息;插入:可以插入一个学生的信息;删除:可以删除(按1学号删除,按2成绩删除)满足条件的学生信息;排序:可以按学生的总成绩排序。
2 结构分析首先分析结果我采用的是单链表的存储结构通过此系统可以实现如下功能:定义一个学生类型student(学号,姓名,四门课程成绩),学生链表student,含有学生数组和学生数。
3 实现流程分析定义数据类型typedef struct student⇩初始化结构体并输入学生的数据inputstu(stu &s,int n)⇩重载运算符便于输入输出学生的成绩⇩输出函数输出全部学生的信息output(stu s)⇩查找学生3按学号查找getstu1(stu s,char i[]) 4按姓名查找getstu2(stu s,char c[])⇩插入学生insetstu(stu &s,int i,char nu[],char na[],char se[],int sc[])⇩1按学号删除学生deletestu1(stu &s),2按姓名删除学生deletestu2(stu &s)⇩1按学号修改学生的信息update1(stu &s) 2按姓名修改学生的信息update2(stu &s)⇩对总成绩排序sort(stu &s,struct shu shuzu[])⇩CPP文件实现所有功能4 算法实现头文件status.htypedef int status;#define TURE 1#define FALSE 0#define OK 1#define ERROR 0#define OVERFLOW -2#define N 10typedef struct student{ //学生结构体(链表)char num[9];char name[15];char sex[2];int score[4];student *next;}student,*stu;struct shu{ //辅助结构体数组存储学生总成绩和学号便于排序float allscore;char num[9];}shuzu[10];ostream &operator<<(ostream &os,stu &s); //运算符的重载istream &operator>>(istream &is,stu &s); //运算符的重载void inputstu(stu &s,int n) //初始化并且输入函数{student *p,*r;int i;s=(stu)malloc(sizeof(student)); //申请头节点r=s;for(i=0;i<n;i++){p=(student *)malloc(sizeof(student)); //申请链表空间}status insetstu(stu &s,int i,char nu[],char na[],char se[],int sc[]) //插入学生{student *p=s,*q;int j=0,m;while(j<i-1&&p->next) //找到学生的位置{p=p->next;j++;}if(j==i-1){q=(student*)malloc(sizeof(student)); //申请新结点if(!q)return OVERFLOW; //申请失败返回错误{strcpy(q->name,na); //赋值strcpy(q->num,nu);for(m=0;m<4;m++)q->score[m]=sc[m];strcpy(q->sex,se);q->next=p->next;p->next=q;return OK;}}elsereturn ERROR;}status deletestu1(stu &s) //按学号删除学生{char i[10];cout<<"请输入你要删除学生的学号"<<endl;cin>>i;student *p=s,*r;while(strcmp(p->next->num,i)!=0) //找到修改学生{p=p->next;}if(p) //存在就删除不存在就返回错误{r=p->next;p->next=r->next;free(r);return 0;}elsereturn ERROR;}status deletestu2(stu &s) //按姓名删除学生{char i[10];cout<<"请输入你要删除学生的姓名"<<endl;cin>>i;student *p=s,*r;while(strcmp(p->next->name,i)!=0) //找到修改学生{p=p->next;}if(p){r=p->next;p->next=r->next;free(r);return 0;}elsereturn ERROR;}status update1(stu &s) //按学号修改学生的信息{char i[10];cout<<"请输入你要修改学生的学号"<<endl;cin>>i;student *p=s;while(strcmp(p->num,i)!=0) //找到修改学生{p=p->next;}if(p){cin>>p;return 0;}elsereturn ERROR;}status update2(stu &s) //按姓名修改学生的信息{char i[10];cout<<"请输入你要修改学生的姓名"<<endl;cin>>i;student *p=s;while(strcmp(p->name,i)!=0) //找到修改学生{p=p->next;}if(p){cin>>p;return 0;}elsereturn ERROR;}void sort(stu &s,struct shu shuzu[]) //对总成绩排序{int n=0,i,j,k;student *p=s->next;while(p){ //获取多少个人数n++;p=p->next;};p=s->next;for(i=1;i<=n;i++) //对结构体进行赋值{ shuzu[i].allscore=0;for(j=0;j<4;j++)shuzu[i].allscore=shuzu[i].allscore+p->score[j];strcpy(shuzu[i].num,p->num);p=p->next;}for(i=1;i<n;i++){ //对结构体进行排序k=i;for(j=i+1;j<=n;j++)if(shuzu[j].allscore>shuzu[k].allscore)k=j;if(k!=j){shuzu[0].allscore=shuzu[i].allscore;strcpy(shuzu[0].num,shuzu[i].num);shuzu[i].allscore=shuzu[k].allscore;strcpy(shuzu[i].num,shuzu[k].num);shuzu[k].allscore=shuzu[0].allscore;strcpy(shuzu[k].num,shuzu[0].num);}}for(i=1;i<=n;i++){ //对总成绩从大到小输出p=s->next;while(strcmp(p->num,shuzu[i].num)!=0) //按学号查找相对应的学生信息{p=p->next;}cout<<p<<" 总成绩为:"<<shuzu[i].allscore<<endl;}}ostream &operator<<(ostream &os,stu &s) //输出函数的重载{os<<"学号:"<<s->num<<" 姓名:"<<s->name<<" 性别:"<<s->sex<<"科目 1 "<<s->score[0]<<"科目 2 "<<s->score[1]<<"科目3 "<<s->score[2]<<"科目4 "<<s->score[3]<<endl;return os;}istream &operator>>(istream &is,stu &s) //输入函数的重载{ cout<<""<<"学号"<<"姓名"<<"性别"<<"科目1 "<<"科目2 "<<"科目3 "<<"科目4 "<<endl; is>>s->num>>s->name>>s->sex>>s->score[0]>>s->score[1]>>s->score[2]>>s->score[3];return is;}CPP文件#include<iostream.h>#include<stdio.h>#include<string.h>#include<stdlib.h>#include"Status.h"void menu(){cout<<"* * * * * * * *学生管理系统* * * * * * *"<<endl;cout<<"* * * 1:添加学生* * *"<<endl;cout<<"* * * 2:显示信息* * *"<<endl;cout<<"* * * 3:按学号查找* * *"<<endl;cout<<"* * * 4:按姓名查找* * *"<<endl;cout<<"* * * 5: 插入学生* * *"<<endl;cout<<"* * * 6: 删除学生* * *"<<endl;cout<<"* * * 7: 修改学生* * *"<<endl;cout<<"* * * 8: 学生总成绩排序* * *"<<endl;cout<<"* 其他:返回主菜单"<<endl;cout<<"请选择";}int main(){ stu s;struct shu shuzu[10];int i,k[4],j;char c[9],p[9];char x[20],o[20];char l[3];menu();while(1){static int n;scanf("%d",&n);switch(n){case 1:cout<<"输入多少个学生"<<endl;cin>>n;inputstu(s,n);break;case 2:output(s);break;case 3:cout<<"请输入你要找的学生学号:";cin>>c;getstu1(s,c);break;case 4:cout<<"请输入你要找的学生姓名:";cin>>x;getstu2(s,x);break;case 5:cout<<"需要插入位置,学号,姓名,性别,科目1,科目2,科目3,科目4"<<endl;cin>>i>>p>>o>>l;for(j=0;j<4;j++)cin>>k[j]; insetstu(s,i,p,o,l,k);break;case 6:cout<<"1:按学号删除学生的信息;2:按姓名删除学生的信息"<<endl;cin>>j;switch(j){case 1:deletestu1(s);break;case 2:deletestu2(s);break;};break;case 7:cout<<"1:按学号修改学生的信息;2:按姓名修改学生的信息"<<endl;cin>>j;switch(j){case 1:update1(s);break;case 2:update2(s);break;};break;case 8:sort(s,shuzu);break;default:return 0;}}调试结果5 课程小结我采用的是链表来存储学生的信息,最大的难点就是总成绩的排序,其他的功能实现还是比较简单,总成绩排序我用啦一个辅助结构体struct shu 来存储每个学生的学号char num来记录学生以及便于排序的时候查找,还有总成绩float allscore,且用结构体数组来存储首先对每个学生的学号及总成绩赋值给结构体数组shuzu[],然后对结构体数组进行从大到小排序(选择排序)然后对结构体一一查找相应的信息。
数据结构课程设计-学生成绩管理系统(C++)
课程设计(论文)任务书软件学院学院专业班一、课程设计(论文)学生成绩管理系统的设计与实现二、课程设计(论文)工作自2014年12月22日起至2012年12月27日止三、课程设计(论文) 地点: 创新大楼机房四、课程设计(论文)内容要求:1.本课程设计的目的⑴训练学生灵活应用所学数据结构知识,独立完成问题分析,结合数据结构理论知识,编写程序求解指定问题;⑵初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;⑶提高综合运用所学的理论知识和方法独立分析和解决问题的能力,巩固、深化学生的理论知识,提升编程水平。
2.课程设计的任务及要求1)基本要求:⑴要求从分析题目的需求入手,按设计抽象数据类型、构思算法、通过设计实现抽象数据类型、编写上机程序和上机调试等若干步骤完成题目,最终写出完整的报告;⑵在程序设计阶段应尽量利用已有的标准函数,加大代码的重用率;⑶程序设计语言推荐使用C/C++,程序书写规范,源程序需必要的注释;⑷每位同学需提交可独立运行的程序和规范的课程设计报告。
2)课程设计论文编写要求⑴理论设计部分以课程设计论文的形式提交,格式必须按照课程设计论文标准格式进行书写和装订;⑵课程设计报告(论文)包括中文目录、设计任务、需求分析、概要设计、详细设计、编码实现、调试分析、总结、谢辞、参考文献、附录等;⑶设计部分应包含系统功能模块图,调试分析应包括运行截图等。
3)课程设计评分标准:⑴学习态度:10分;⑵系统设计:20分;⑶编程调试:20分;⑷回答问题:20分;⑸论文撰写:30分。
4)参考文献:⑴严蔚敏,吴伟民. 数据结构(C语言版)[M]. 清华大学出版社. 2010.3⑵严蔚敏,吴伟民. 数据结构题集(C语言版)[M]. 清华大学出版社. 1999.2⑶何钦铭,冯燕等. 数据结构课程设计[M]. 浙江大学出版社. 2007.85)课程设计进度安排⑴准备阶段(4学时):选择设计题目、了解目的要求、查阅相关资料;⑵程序模块设计分析阶段(4学时):程序概要设计、详细设计;⑶代码编写调试阶段(8学时):程序模块代码编写、调试、测试;⑷撰写论文阶段(4学时):总结设计任务和设计内容,撰写设计论文。
数据结构与算法(C语言) 毕业设计_学生成绩管理系统
目录引言1 系统概述1.1 系统功能1.2 系统作用和特点2 需求分析2.1 功能要求2.2 性能要求2.3 数据需求2.4 开发环境3 详细设计3.1 登陆界面与主界面的实现3.2 详细设计思想3.3 系统结构体的设计3.3 各种模块的实现4 所遇到的问题和分析4.1系统存在的不足4.2 制作过程中遇到的问题4.4 问题分析5系统特色及关键技术6结论及心得体会参考文献附录摘要随着计算机的普及,人们的生活和学习都离不开电脑,计算机是提高生产效率的主要工具及途径,所以教育也不例外。
现在基本每个大学都有自己的学生管理系统。
学生成绩管理系统不仅把广大教师从繁重的成绩管理工作中解脱出来、把学校从传统的成绩管理模式中解放出来,而且对学生成绩的判断和整理更合理、更公正,同时也给教师提供了一个准确、清晰、轻松的成绩管理环境。
本系统依据开发要求主要应用于教育系统,学生成绩管理系统借助于计算机强大的处理能力,大大减轻了管理人员的工作量,并提高了处理的准确性。
学生成绩管理系统的开发运用,实现了学生成绩管理的自动化。
主要完成对学生成绩的管理,包括添加、修改、删除,查询,查看信息以及保存入档等六个方面。
每一个表的修改都将联动的影响其它的表,当完成添加或删除操作时系统会自动地完成学生成绩的修改。
查询功能也是系统的核心之一,在系统中主要根据学生姓名和学号进行查询,其目的都是为了方便用户使用。
系统有完整的添加、删除和修改功能,并具备成绩表查询功能。
论文主要介绍了本课题的开发背景,所要完成的功能和开发的过程。
本文主要介绍了本课题的开发背景,所要完成的功能和开发的过程。
重点说明了系统的设计思路、总体设计、各个功能模块的设计与实现。
关键词:学生成绩;成绩管理信息系统;C语言引言几年前,许多学校对于学生成绩的管理还是停留在运用手工操作,随着计算机的飞快发展以及各个学校的规模不断壮大,学生人数逐年增加。
关于学生成绩管理工作所涉及的数据量越来越大,有的学校不得不靠增加人力、物力来进行学生成绩管理。
学生成绩管理系统数据结构课程设计
学生成绩管理系统数据结构课程设计学生成绩管理系统是一个用于管理学生学习成绩的软件系统。
它通常用于学校、教育机构或教师们来跟踪和记录学生的学习进展,并生成报告和分析数据。
在数据结构课程设计中,学生成绩管理系统需要设计合适的数据结构来存储和操作学生成绩数据。
在设计学生成绩管理系统时,可以使用以下数据结构:1. 数组:可以使用数组来存储学生成绩数据。
每个学生的成绩可以用一个数组元素表示,可以将学生按照学号或者其他标识符按顺序存储在数组中。
这样可以方便地通过索引来访问和修改学生成绩。
2. 链表:链表是另一种常用的数据结构,可以用于存储学生成绩数据。
每个学生的成绩可以用一个节点表示,节点可以包含学生的信息和成绩,同时包含指向下一个节点的指针。
这样可以方便地插入、删除和查找学生成绩。
3. 树:树可以用于组织学生成绩数据。
可以使用二叉搜索树或平衡二叉树来存储学生成绩,其中学生的学号或者姓名可以作为关键字。
这样可以方便地进行查找、插入和删除操作,并可支持对学生成绩进行排序。
以上是一些常用的数据结构,用于存储学生成绩管理系统的数据。
在具体的设计中,还可以根据实际需求选择其他合适的数据结构。
除了数据结构,学生成绩管理系统还可能包括其他功能,例如:1. 添加学生:可以通过输入学生的基本信息和成绩,将学生添加到系统中。
2. 删除学生:可以通过学生的学号或其他标识符,从系统中删除某个学生的信息和成绩。
3. 修改成绩:可以根据学生的学号或其他标识符,修改学生的成绩信息。
4. 查询成绩:可以根据学号、姓名或其他条件,查询学生的成绩信息。
5. 成绩统计和分析:可以对学生的成绩进行统计和分析,生成报告和图表,帮助教师或学校了解学生的学习情况。
以上只是学生成绩管理系统可能包含的一些基本功能,具体的设计和实现还需要根据实际需求和要求进行进一步的扩展和深入分析。
通过合适的数据结构和功能设计,可以实现一个高效、易用和功能完善的学生成绩管理系统。
学生成绩管理系统数据结构课程设计
学生成绩管理系统数据结构课程设计近年来,随着信息技术的快速发展,学生成绩管理系统在学校中得到了广泛应用。
学生成绩管理系统是一种基于数据结构的软件系统,旨在帮助学校更好地管理学生的学习成绩。
本文将介绍一个基于数据结构的学生成绩管理系统的设计。
首先,我们需要设计一个合适的数据结构来存储学生的学习成绩。
在这个系统中,我们可以使用一个二维数组来存储学生的成绩信息。
数组的行表示学生的学号,列表示不同科目的成绩。
这样,我们就可以方便地对学生成绩进行增删改查的操作。
接下来,我们需要设计一些基本的功能来实现学生成绩的管理。
首先是添加学生的成绩信息。
当学生入学时,管理员可以通过系统将学生的学号和成绩添加到数组中。
其次是删除学生的成绩信息。
当学生毕业或者转学时,管理员可以通过系统将学生的学号和成绩从数组中删除。
再次是修改学生的成绩信息。
当学生的成绩发生变化时,管理员可以通过系统修改学生的成绩。
最后是查询学生的成绩信息。
管理员可以通过系统查询学生的学号,然后系统会返回该学生的成绩信息。
除了基本的功能,我们还可以设计一些高级功能来提升学生成绩管理系统的实用性。
例如,我们可以设计一个成绩统计功能,用于统计学生的平均成绩、最高成绩和最低成绩。
这样,管理员可以更好地了解学生的学习情况。
另外,我们还可以设计一个成绩排名功能,用于按照成绩对学生进行排名。
这样,管理员可以更方便地找出成绩优秀的学生。
在实际应用中,我们还可以将学生成绩管理系统与其他系统进行集成。
例如,我们可以将学生成绩管理系统与学生信息管理系统进行集成,这样可以更方便地管理学生的学习情况。
另外,我们还可以将学生成绩管理系统与家长端进行集成,这样家长可以通过系统查看孩子的成绩情况,及时了解孩子的学习进展。
总之,学生成绩管理系统是一种基于数据结构的软件系统,可以帮助学校更好地管理学生的学习成绩。
通过合适的数据结构和功能设计,我们可以方便地对学生成绩进行增删改查的操作,并且可以提供一些高级功能来提升系统的实用性。
学生成绩管理系统数据结构课程设计
学生成绩管理系统数据结构课程设计1. 介绍学生成绩管理系统是一种用于管理学生学业成绩的应用软件。
该系统能够帮助教师和学生方便地录入、查询和统计学生的各科成绩,以便更好地进行教学和学习工作。
本文将针对该系统的数据结构进行设计和实现。
2. 系统需求学生成绩管理系统需要满足以下功能要求:•学生信息管理:包括学生姓名、学号、专业等信息。
•课程信息管理:包括课程名称、课程编号、学分等信息。
•成绩信息管理:包括学生的各科成绩。
•信息查询:能够查询学生的个人信息、课程信息和成绩信息。
•成绩统计:能够对学生的各科成绩进行统计和分析。
3. 数据结构设计基于上述需求,我们可以设计以下数据结构:3.1 学生信息数据结构struct Student {int studentId; // 学号string name; // 姓名string major; // 专业};3.2 课程信息数据结构struct Course {int courseId; // 课程编号string name; // 课程名称int credit; // 学分};3.3 成绩信息数据结构struct Score {int studentId; // 学生学号int courseId; // 课程编号float score; // 成绩};3.4 数据存储结构设计3.4.1 学生信息存储使用数组或链表存储学生信息,可以根据学号快速查找和修改学生信息。
struct StudentNode {Student stu;StudentNode* next;};3.4.2 课程信息存储使用数组或链表存储课程信息,可以根据课程编号快速查找和修改课程信息。
struct CourseNode {Course crs;CourseNode* next;};3.4.3 成绩信息存储使用数组或链表存储成绩信息,可根据学生学号和课程编号查找和修改成绩信息。
struct ScoreNode {Score scr;ScoreNode* next;};4. 系统实现4.1 添加学生信息通过输入学生的学号、姓名和专业信息,创建一个学生结构体,并将其插入学生信息存储数据结构中。
数据结构与算法课程设计 学生成绩管理系统
数据结构与算法课程设计学生成绩管理系统学生成绩管理系统是一种用于管理学生的课程成绩和相关信息的软件系统。
该系统旨在帮助学校、教师和学生更好地管理和了解学生的学术表现。
下面是一个标准格式的文本,详细描述了学生成绩管理系统的功能和特点。
一、系统概述学生成绩管理系统是基于数据结构与算法课程设计的一个软件系统。
该系统通过使用合适的数据结构和算法,实现了对学生课程成绩的管理和统计分析。
系统具有用户友好的界面和丰富的功能,能够满足学校、教师和学生的需求。
二、系统功能1. 学生信息管理:系统可以记录学生的基本信息,包括学号、姓名、性别、年级等。
教师和管理员可以通过系统添加、修改和删除学生信息。
2. 课程管理:系统可以管理学校开设的各门课程,包括课程名称、授课教师、学分等信息。
教师和管理员可以在系统中添加、修改和删除课程信息。
3. 成绩录入:教师可以通过系统录入学生的课程成绩。
系统会自动计算每门课程的平均成绩和总评成绩,并将成绩与学生的个人信息进行关联。
4. 成绩查询:学生和教师可以通过系统查询学生的课程成绩。
学生可以查看自己的成绩,教师可以查看所教授课程的学生成绩。
查询结果可以按照学生、课程、成绩等进行排序和筛选。
5. 统计分析:系统可以对学生的课程成绩进行统计分析。
教师和管理员可以查看学生的平均成绩、最高成绩、最低成绩等统计信息,并生成相应的报表。
6. 数据备份与恢复:系统支持对学生信息和成绩数据进行备份和恢复。
管理员可以定期备份数据,以防止数据丢失或损坏。
7. 用户权限管理:系统具有不同的用户角色,包括学生、教师和管理员。
每个用户角色有不同的权限,保证了系统的安全性和数据的保密性。
三、系统特点1. 高效性:系统使用了合适的数据结构和算法,能够快速处理大量的学生信息和成绩数据,提高了系统的响应速度和处理效率。
2. 可扩展性:系统具有良好的可扩展性,可以根据实际需求进行功能的扩展和定制。
例如,可以添加更多的统计分析功能,或者与其他系统进行集成。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构与算法课程设计学生成绩管理系统课程设计说明书题目:数据结构与算法课程设计学院(系):专业班级:学号:学生姓名:指导教师:教师职称:起止时间:课程设计(论文)任务及评语院(系):教研室:软件工程目录目录___________________________________________________________________ 1第1章课程设计目的与要求_________________________________________________ 1 1.1 课程设计目的_______________________________________________________________ 1 1.2 课程设计的实验环境_________________________________________________________ 1 1.3 课程设计的预备知识_________________________________________________________ 1 1.4 课程设计要求_______________________________________________________________ 1第2章课程设计内容_______________________________________________________ 2 2.1题目的选择 _________________________________________________________________ 2 2.2 题目的具体实现_____________________________________________________________ 2 2.3 思考题解析________________________________________________________________ 14总结:________________________________________________________________________ 16参考文献_________________________________________________________________ 17第1章课程设计目的与要求1.1 课程设计目的本课程设计是计算机科学与技术专业、软件工程专业的专业技术实践课。
本实践课的主要目的是:使学生学会利用在课堂中学过的理论知识,解决相应的实际问题,深入理解和灵活掌握所学的内容,培养学生理论和实践相结合的能力,培养学生分析问题解决问题的能力。
同时,在实验步骤规范化、程序设计方法等方面受到比较系统和规范的训练。
通过实践设计使学生进一步加深对程序设计的规范化及对复杂程序设计步骤的理解。
通过课程设计,加深对《数据结构》这一课程所学内容的进一步理解与巩固。
通过课程设计,加深对结构化设计思想的理解,能对系统功能进行分析,并设计合理的模块化结构。
通过课程设计,提高程序开发功能,能运用合理的控制流程编写清晰高效的程序。
通过课程设计,训练C程序调试能力,能将一个中小型各级组织系统联调通过。
通过课程设计,开发一个中小型系统,掌握系统研发全过程。
通话课程设计,培养分析问题、解决实际问题的能力。
1.2 课程设计的实验环境PC机,WindowsXP,C++。
1.3 课程设计的预备知识C语言程序设计、数据结构。
1.4 课程设计要求(1)认真查找资料,分析每个题目应选择的数据结构(逻辑结构和物理结构);(2)按时到实验室调试程序,遵守实验室的规章制度,爱护设备;(3)每个题目编写源程序时,每个子功能定义为相应的子函数,在主函数中调用各子函数,程序结构清晰,有必要的注释,可读性强。
(4)程序健壮性强,当数据输入错误时,要进行相应的处理;(5)分析算法的时间复杂度,要求算法的效率尽可能高;(6)对于排序算法,要验证排序算法的稳定性。
第2章课程设计内容2.1题目的选择6、学生成绩管理系统2.2 题目的具体实现(1)题目应实现的具体功能;○1录入学生成绩信息并保存;○2可查询显示所有学生的个人信息;○3可查询显示所有学生的所学课程信息;○4按学号或姓名查询成绩信息;○5能添加、删除和修改学生的成绩信息;(2)题目所选择的数据结构及存储结构;采用线性数据结构及链式存储结构(3)完整的源程序#include<stdio.h>#include<stdlib.h>#include<string.h>struct stud{long num;char name[20];double score1,score2;};typedef struct stucode{struct stud student ;struct stucode *next;}L;void menu();void createlist(struct stucode **r);void out(struct stucode *r);void search1(struct stucode *r);void search2(struct stucode *r);void del(struct stucode **r);void insert(struct stucode **r);void change(struct stucode **r);void main(){char choose;int flag=1;struct stucode *r=NULL;while(flag){system("cls");menu();choose=getchar();switch(choose){case '1':createlist(&r);out(r);printf("Testing function 1\nPress any key to continue\n"); getchar();getchar();break;search1(r);printf("Testing function 1\nPress any key to continue\n"); getchar();getchar();break;case '3':search2(r);printf("Testing function 1\nPress any key to continue\n"); getchar();getchar();break;case '4':del(&r);out(r);printf("Testing function 1\nPress any key to continue\n"); getchar();getchar();break;case '5':insert(&r);out(r);printf("Testing function 1\nPress any key to continue\n"); getchar();getchar();break;case '6':out(r);printf("Testing function 1\nPress any key to continue\n"); getchar();getchar();break;case '7':change(&r);out(r);printf("Testing function 1\nPress any key to continue\n"); getchar();getchar();break;case '0':flag=0;printf("The end.\n");break;default: printf("\nWrong Selection!(选择错误,请重选!)\n");getchar();}}}void createlist(struct stucode **r){struct stucode *p,*t;long n;char a[20];double s1,s2;if(*r) *r=NULL;printf(" \n请输入:\n 学号姓名分数1 分数2(若要结束请输入四个为零)\n"); scanf("%ld%s%lf%lf",&n,a,&s1,&s2);if(n==0) return;p=(L *)malloc(sizeof(L));p->student.num=n;strcpy(p->,a);p->student.score1=s1;p->student.score2=s2;p->next=NULL;*r=p;scanf("%ld%s%lf%lf",&n,a,&s1,&s2);while(n){t=p;p=(L *)malloc(sizeof(L));p->student.num=n;strcpy(p->,a);p->student.score1=s1;p->student.score2=s2;p->next=NULL;t->next=p;scanf("%ld%s%lf%lf",&n,a,&s1,&s2);}}void search1(struct stucode *r){long x; struct stucode *p=r;if(!r){printf("没有学生信息可查询!\n");return ;}printf(" 请输入要查询的学生信息的学生学号:\n");scanf("%ld",&x);while(p&&p->student.num!=x)p=p->next;if(p==NULL)printf("Error! No such student !\n");elseprintf("%ld%s%.2lf%.2lf\n",p->student.num,p->,p->student.score1,p->student.score2);}void search2(struct stucode *r){char m[20];if(!r){printf("没有学生信息可查询!\n");return ;}printf(" 请输入要查询的学生信息的学生姓名:\n");scanf("%s",m);while(r&&strcmp(r->,m))r=r->next;if(r==NULL)printf("Error! No such student !\n");elseprintf("%ld%s%.2lf%.2lf\n",r->student.num,r->,r->student.score1,r->student.score2);}void del(struct stucode **r){long k;struct stucode *p=*r,*t;if(!(*r)){printf("没有学生信息可删除 !\n");return ;}printf(" 请输入要删除的学生信息的学生学号:\n");scanf("%ld",&k);if(p->student.num==k)*r=(*r)->next,free(p);else{while(p->next&&p->next->student.num!=k)p=p->next;if(p->next==NULL)printf("Error! No such student !\n");else{t=p->next;p->next=p->next->next;free(t);}}}void insert(struct stucode **r){long n;char a[20];double s1,s2;L *p,*t,*k;printf(" 请输入要插入的学生信息的学生学号姓名分数1 分数2 :\n"); scanf("%ld%s%lf%lf",&n,a,&s1,&s2);p=(L *)malloc(sizeof(L));p->student.num=n;p->student.score1=s1;p->student.score2=s2;strcpy(p->,a);if(!(*r)){*r=p;(*r)->next=NULL;return ;}if(p->student.num<(*r)->student.num)p->next=(*r),(*r)=p;else{t=*r;k=t;while(t->next&&t->next->student.num<=p->student.num)t=t->next;p->next=t->next;*r=k;}}void out(struct stucode *r){printf("\n\n");if(!r){printf("没有学生信息可输出!\n");return ;}while(r){printf("%ld%s%.2lf%.2lf\n",r->student.num,r->,r->student.score1,r->student.score2);r=r->next;}printf("\n\n");}void change(struct stucode **r){struct stucode *p=*r;long x;long n;char a[20];double s1,s2;printf("更改的学生的信息\n");printf(" 请输入要查询的学生信息的学生学号:\n");scanf("%ld",&x);while(p&&p->student.num!=x)p=p->next;if(p==NULL)printf("Error! No such student !\n");elseprintf("%ld%s%.2lf%.2lf\n",p->student.num,p->,p->student.score1,p->student.score2);printf(" 请输入要修改的学生信息:\n");scanf("%ld%s%lf%lf",&n,a,&s1,&s2);p->student.num=n;strcpy(p->,a);p->student.score1=s1;p->student.score2=s2;}{printf("\n 学生成绩管理系统\n");printf("\n 菜单\n\n");printf("\n 1建立链表\n");printf("\n 2查找某学号的学生信息\n"); printf("\n 3查找某姓名的学生信息\n"); printf("\n 4删除某学号的学生信息\n"); printf("\n 5插入新的学生信息\n");printf("\n 6显示所有学生的个人信息\n"); printf("\n 7更改学生个人信息\n"); printf("\n 0退出\n");printf("\n 请选择您要执行的选项:\n"); }(4)程序的输入和输出图1 按学生学号查找结果:图2按学生姓名查找:图3 删除某学生的运行结果:图4 插入某学生的运行结果:图5显示所有学生的信息:图6(5)调试程序中遇到的问题及解决方案在调试search1子函数由于在查找中移动了原指针,导致search1中不能查找,解决方法设一结构体类型的指针,将原指针赋给该指针,将该指针进行移动查找。