前言

关于这个系统是我们专业要求做的一个课程设计,本来是上个学期交的,我也是上个学期弄好的,打算发出来,但是一直没交上去(怕交上去之前发出来老师说我作弊。。。),今天就把我做的这个系统分享给大家,不足之处一起改进。下面的大量文字来源于我的实验报告,这报告写了我差不多一个星期,足足写了一万三千字,可能会有人觉得没有必要弄这么多,但是我觉得既然是一次设计,那就认真一点吧,认真对待每一次设计也是每个软件开发者必备的思想吧,哈哈哈,进入正题吧。

运行环境

开发工具:Dev C+

需求分析

此课程设计的题目为学生成绩管理系统,该系统模拟学校在考完试之后对学生成绩的处理。为了方便管理者对学生成绩的处理,本系统设有录入、显示、查找、修改、排序、删除、保存、读取、退出等九大功能。为了可以永久性保存学生信息,该系统才用以文件存储数据的形式进行设计,系统功能尚算齐全。学生信息暂时设有姓名、学号、性别、年龄、数学、英语、计算机以及总分。

系统功能

该系统功能有:录入、显示、查找、修改、排序、删除、保存、读取、退出共9个主要功能(有些功能里还有次要功能)。下面将一一介绍这些功能:
1、录入功能
该功能是模拟对学生成绩的录入。
2、显示功能
将当前所有学生的成绩显示出来,方便预览。此外会统计当前信息库中的学生总人数。
3、查找功能
该功能是对某个学生进行查找,考虑到可能存在同名同姓的学生,故该功能可设两个辅助查找功能——即按姓名查找以及按学号查找。因为姓名可能不唯一,但是学号肯定是唯一的。学生成绩管理者还可通过该功能查找本校同名同姓的学生,并且统计同名同姓者人数。
4、修改功能
为了模拟老师可能因为失误以至于输入错误的学生信息,系统增设修改功能。主要目的是对信息有误的学生信息进行修改。该功能在修改时会把学生的信息都重新输入一遍,当然了,也可以修改指定的信息,但是为了简洁本系统中并不设此功能。
5、排序功能
为了便于查看每科或者总分的最高分以及成绩优异的那一批人,本系统设计了排序功能。排序时会用到冒泡排序算法,在对学生成绩进行排序算法设计的过程中,联想到老师既然想看最高分,也有可能想看最低分,所以此功能还会对学生成绩进行升序排序。
6、删除功能
此功能主要是删除某个学生的信息。例如如果学生毕业之后,那他的成绩信息就可以去除了,铁打的学校流水般的学生,说的好像就是这个道理吧。
7、保存功能
为了便于将学生信息进行永久性的保存,系统开设了保存信息的功能。在保存的时候还应该考虑信息追加和信息更新。
8、读取功能
意如其名,字面意思就是从文本文件中读取学生的信息。方便于老师可以在不同的时间段工作。
9、退出功能
即直接推出该系统。

系统结构图

算法概要设计

就放一张主函数的图的,因为图片有点多,比较占位置。。。

心得体会(瞎写的吧)

做了这个课程设计之后,我的收获还是蛮大的。先来说说自己的感受吧,我觉得做这个课程设计,非常有必要,也很有意义。从一开始的选题,到设计系统结构,再到制定所用到的功能,接着开始写代码,每完成一个功能就测试一下,这过程并不是很顺利。比如说对于指针那一块有点忘记了,然后又在图书馆里复习了指针和结构体以及结构体指针。然后老师要求用文本的形式进行存储数据,我又新学了FILE文件指针。
在一开始制作之前,在CSDN上参考了很多大神的课程设计,主要是看一下他们的思路,和他们都设计了哪些功能,CSDN真的是一个好东西,在那上面可以学到很多东西,也正因如此,我就在参考的过程中学会system语句。不得不说这个语句真的挺实用的,把它用到我的代码里去,可以使系统在运行之后更有序。
写这个系统前后用了6天的时间吧,初步完成后是557行代码,然后加上注释以及更新了一部分功能就变成了700多行代码,每天都在图书馆里,基本上每天完成1-2个功能。这其中也有很多苦。比如在bug出现的时候,有时会盯着自己写的代码看很久,绞尽脑汁去解决这个bug,甚至有些bug是我在去食堂的路上,突然就想到了解决的方法。说真的,一开始写代码的时候,我感觉完成这个课程设计有点困难,因为之前从来没有试过去做这样一个项目,但是在把最后一个bug解决好的那一刻,真的就是特别快乐,特别的激动,从0到1,这个过程虽然艰辛,但是特别过瘾。
其实做这个学生成绩管理系统,就相当于做了一个小软件吧,因为它同做软件的流程是一样的,先是需求分析,然后概要设计,详细设计,之后开始编程,编程完成后还要开始测试,还有之后的更新维护。所以我觉得做这样一个课程设计特别有意义。
在做这个管理系统的过程中,我也有意外的发现,如果说代码是习武之人常说的招式,那么支撑招式的内力就是理论和概念。之前我不怎么喜欢理论和概念的东西,因为比较枯燥,所以我更喜欢实际一点的东西,但是现在我觉得,一个卓越的软件工程师,其理论知识也会特别扎实。所以在接下来的学习里,我会好好的复习和学习理论知识,比如现在所学的OS和计算机组成原理。此外,每天的算法题也要坚持去做。
“哪怕只有痛苦作伴也要勇往直前…”一句歌词送给自己吧,去追求那充满鲜花的世界,励志成为一名卓越的软件工程师。

部分效果图演示




详细代码(干货来咯~我很菜,心灵脆弱,大佬们别喷)

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>// 定义学生信息结构体
typedef struct Students{char name[20]; //姓名 int number; //学号,学号定义为整型,8位数,例如:18241024 char sex[3]; //性别 int age; //年龄 int math; //数学成绩 int english; //英语成绩 int computer; //计算机成绩 int TatolScore; //总分 struct Students *next; //指向下一个节点
}Students;Students *head=NULL; //把head作为全局变量 // 定义一个菜单
void Menu(){printf("*****************************************\n");printf("*\t欢迎使用学生成绩管理系统\t*\n");printf("*****************************************\n");printf("*\t系统功能如下所示\t\t*\n");printf("*****************************************\n");printf("*\t1、录入学生成绩\t\t\t*\n");printf("*\t2、显示学生成绩\t\t\t*\n");printf("*\t3、查找学生信息\t\t\t*\n");printf("*\t4、修改学生信息\t\t\t*\n");printf("*\t5、学生成绩排序\t\t\t*\n");printf("*\t6、删除学生信息\t\t\t*\n");printf("*\t7、保存学生信息\t\t\t*\n");printf("*\t8、读取学生信息\t\t\t*\n");printf("*\t9、退出管理系统\t\t\t*\n");printf("*****************************************\n");
}//定义一个函数,在排序时用于交换数据,减少代码冗余
void Swap(int *a,int *b){int temp;temp=*a;*a=*b;*b=temp;
}//定义一个函数,用于交换两节点之间的信息
void SwapStudent(Students *p){char TmpName[20],TmpSex[3];Swap(&p->math,&p->next->math);Swap(&p->age,&p->next->age);Swap(&p->english,&p->next->english);Swap(&p->computer,&p->next->computer);Swap(&p->TatolScore,&p->next->TatolScore);Swap(&p->number,&p->next->number);strcpy(TmpName,p->name);strcpy(p->name,p->next->name);strcpy(p->next->name,TmpName);strcpy(TmpSex,p->sex);strcpy(p->sex,p->next->sex);strcpy(p->next->sex,TmpSex);
}//冒泡排序法对学生成绩进行排序
//len表示当前链表节点个数,p为当前的链表,choose表示选择
void BubbleSort(int len,Students *p,int choose){int i,j;for(i=0;i<len-1;i++){p=head;for(j=0;j<len-i-1;j++){if(choose==1){        //按计算机成绩降序排序 if(p->computer<p->next->computer)SwapStudent(p);   //调用学生信息交换函数,交换两节点之间的信息 p=p->next;}else if(choose==2){     //按数学成绩降序排序 if(p->math<p->next->math)SwapStudent(p);p=p->next;}else if(choose==3){        //按英语成绩降序排序 if(p->english<p->next->english)SwapStudent(p);p=p->next;}else if(choose==4){      //按总成绩降序排序 if(p->TatolScore<p->next->TatolScore)SwapStudent(p);p=p->next;}else if(choose==5){     //按计算机成绩升序排序 if(p->computer>p->next->computer)SwapStudent(p);p=p->next;}else if(choose==6){       //按数学成绩升序排序 if(p->math>p->next->math)SwapStudent(p);p=p->next;}else if(choose==7){        //按英语成绩升序排序 if(p->english>p->next->english)SwapStudent(p);p=p->next;}else if(choose==8){      //按总成绩升序排序 if(p->TatolScore>p->next->TatolScore)SwapStudent(p);p=p->next;}}}
}//定义一个函数,被主查找函数进行调用
//该函数以学生姓名查找学生信息,该查找不排除同名同姓的情况
void FindStuName(){char StuName[10];Students *p;p=head; //指向头节点 int flag=1; //flag用于标记 int people=0;if(head==NULL){ //如果头节点为空,表示查找失败 printf("查找失败:目前尚无任何信息可查\n");system("pause"); //system函数,用于停顿 system("cls");    //system函数,用于清屏 return; //结束该函数 }//如果头节点不为空 printf("请输入你所需要查找的姓名:");scanf("%s",StuName); printf("_____________________________________________________________________________________________________________\n");while(p!=NULL){if(strcmp(StuName,p->name)==0){printf("%d-----姓名:%s   学号:%d   性别:%s   年龄:%d   数学:%d   英语:%d   计算机:%d   总分:%d\n",people+1,p->name,p->number,p->sex,p->age,p->math,p->english,p->computer,p->TatolScore);flag=0;people++;}p=p->next;}//当flag置零时表示信息库中没有此人 if(flag){printf("查找失败:学生信息库中暂无此人\n");system("pause"); //任意键继续 system("cls"); //清屏 return;    //结束函数 }//查到信息后会显示出来 printf("查找完毕,共有%d条结果\n",people);system("pause");    //任意键继续 system("cls");        //清屏
}//定义一个函数,被主查找函数调用
//该函数目的在于以学号的方式对学生进行查找,查找结果唯一,因为学号唯一
void FindStuNum(){Students *p;p=head;//如果头节点为空,则表示查找失败 if(head==NULL){printf("查找失败:目前尚无任何信息可查\n");system("pause");system("cls");return;}int StuNum;printf("请输入你所需要查找的学号:");scanf("%d",&StuNum);printf("_____________________________________________________________________________________________________________\n");while(p!=NULL&&p->number!=StuNum)p=p->next;//p为NULL时,表示并未查到该学号 if(p==NULL){printf("查找失败:学生信息库中并未查到该学号\n");system("pause");system("cls");return;}printf("姓名:%s   学号:%d   性别:%s   年龄:%d   数学:%d   英语:%d   计算机:%d   总分:%d\n",p->name,p->number,p->sex,p->age,p->math,p->english,p->computer,p->TatolScore);printf("查找完毕\n");system("pause");system("cls");
}//该系统功能之一,录入功能
void InputStudent(){system("cls");    //清屏 Students *NewStudent;  //表示一个新同学的节点 Students *tail;    //链表的尾节点 tail=head;     NewStudent=(Students*)malloc(sizeof(Students));   //为新同学节点分配 NewStudent->next=NULL;   //下一个节点置NULL //查找尾节点 while(head!=NULL&&tail->next!=NULL)tail=tail->next;//如果头节点为空,则表示当前录入的是第一个同学 if(head==NULL)head=NewStudent;elsetail->next=NewStudent; //不为空则令尾节点指向该同学 //录入开始 printf("***开始录入信息,请确保信息正确***\n");printf("请输入姓名:");scanf("%s",NewStudent->name);printf("请输入学号:");scanf("%d",&NewStudent->number);printf("请输入性别:");scanf("%s",NewStudent->sex);printf("请输入年龄:");scanf("%d",&NewStudent->age);printf("请输入数学成绩:");scanf("%d",&NewStudent->math);printf("请输入英语成绩:");scanf("%d",&NewStudent->english);printf("请输入计算机成绩:");scanf("%d",&NewStudent->computer);NewStudent->TatolScore=NewStudent->math+NewStudent->english+NewStudent->computer;printf("你本次录入的同学是%s,总分为:%d\n",NewStudent->name,NewStudent->TatolScore);printf("录入完毕\n");system("pause");system("cls");
}//该系统主要功能之一,浏览(显示)功能,将全部学生成绩打印出来
void PrintStuInfo(){system("cls");Students *StuInfo;int people=0;    //people用于统计人数 StuInfo=head;//相当于头节点为空  if(StuInfo==NULL){printf("暂无学生信息,请输入后再试。\n");system("pause");system("cls");return;}//头节点不为空就打印信息 else{printf("*************************************************************************\n");printf("|姓名\t|学号\t\t|性别\t|年龄\t|数学\t|英语\t|计算机\t|总分\t|\n"); while(StuInfo){people++;printf("*************************************************************************\n");printf("|%s\t|%d\t|%s\t|%d\t|%d\t|%d\t|%d\t|%d\t|\n",StuInfo->name,StuInfo->number,StuInfo->sex,StuInfo->age,StuInfo->math,StuInfo->english,StuInfo->computer,StuInfo->TatolScore);StuInfo=StuInfo->next;}}printf("*************************************************************************\n");printf("以显示全部,合计%d人\n",people); //报告学生人数 system("pause");system("cls");
}//该系统主要功能之一,用于查找学生信息
void FindStudent(){system("cls");//考虑到姓名可能不唯一但是学号一定唯一的情况,定义了两种查询方式//即按学号查询以及按姓名查询 printf("*****************************************\n");printf("*\t学生成绩查询\t\t\t*\n");printf("*****************************************\n");printf("*\t请选择您所需要的查找方式:\t*\n");printf("*\t1、按学号查找\t\t\t*\n");printf("*\t2、按姓名查找\t\t\t*\n");printf("*****************************************\n");int choose;printf("请选择:");scanf("%d",&choose);switch(choose){case 1:FindStuNum();    //调用按学号查询函数 break;case 2:FindStuName();     //调用按学生姓名查询函数 break;default:    //不小心按错,则退出该功能 printf("选择错误!因为不存在此项选择!\n");system("pause");system("cls");break; }
}//该系统主要功能之一,用于修改学生信息,因为学号是唯一的,所以该函数以学号去查找学生信息
void ChangeStudent(){system("cls");Students *p;p=head;//头节点为空,表示学生信息库中没有任何信息 if(head==NULL){printf("修改失败:学生信息库中暂无任何信息!\n");system("pause");system("cls");return;}int StuNum;int choose1;    //choose用于确保进行修改时没有输入错误的学号 printf("请输入你将修改的学生的学号:");scanf("%d",&StuNum);//查找学号 while(p!=NULL&&p->number!=StuNum)p=p->next;//如果没有找到 if(p==NULL)printf("修改失败:学生信息库中查找不到此学号!\n");//找到学号后,先显示学生信息 else{printf("\n*********系统为你查找到以下信息*********\n");printf("_____________________________________________________________________________________________________________\n");printf("姓名:%s   学号:%d   性别:%s   年龄:%d   数学:%d   英语:%d   计算机:%d   总分:%d\n",p->name,p->number,p->sex,p->age,p->math,p->english,p->computer,p->TatolScore);printf("_____________________________________________________________________________________________________________\n");    //确保没有输入错误学号 printf("请再次确认你是否需要修改该学生信息(是选择1,否选择2)\n");printf("请选择:");scanf("%d",&choose1);switch(choose1){case 1:break;case 2:printf("修改失败:你否认了修改指令!\n");system("pause");system("cls");return; }//可以修改单个的信息,也可以修改全部信息,choose2为选择结果 system("cls");printf("*****************************************\n");printf("*\t请选择你需要修改的信息\t\t*\n");printf("*****************************************\n");printf("*\t1、学生姓名\t\t\t*\n");printf("*\t2、学生学号\t\t\t*\n");printf("*\t3、学生性别\t\t\t*\n");printf("*\t4、学生年龄\t\t\t*\n");printf("*\t5、数学成绩\t\t\t*\n");printf("*\t6、英语成绩\t\t\t*\n");printf("*\t7、计算机成绩\t\t\t*\n");printf("*\t8、全部信息\t\t\t*\n");printf("*****************************************\n");//定义新信息 int choose2;int NewNumber;int NewAge;int NewMath;int NewEnglish;int NewComputer;int NewTatolScore;char NewName[20];char NewSex[3];printf("请选择:");scanf("%d",&choose2);switch(choose2){case 1:printf("请输入姓名:");scanf("%s",NewName);strcpy(p->name,NewName);break;case 2:printf("请输入学号:");scanf("%d",&NewNumber);p->number=NewNumber;break;case 3:printf("请输入性别:");scanf("%s",NewSex);strcpy(p->sex,NewSex);break;case 4:printf("请输入年龄:");scanf("%d",&NewAge);p->age=NewAge;break;case 5:printf("请输入数学成绩:");scanf("%d",&NewMath);p->math=NewMath;break;case 6:printf("请输入英语成绩:");scanf("%d",&NewEnglish);p->english=NewEnglish;break;case 7:printf("请输入计算机成绩:");scanf("%d",&NewComputer);p->computer=NewComputer; break;case 8:printf("请输入姓名:");scanf("%s",p->name);printf("请输入学号:");scanf("%d",&p->number);printf("请输入性别:");scanf("%s",p->sex);printf("请输入年龄:");scanf("%d",&p->age);printf("请输入数学成绩:");scanf("%d",&p->math);printf("请输入英语成绩:");scanf("%d",&p->english);printf("请输入计算机成绩:");scanf("%d",&p->computer);break;}//如果修改了成绩,那么总成绩也肯定要变 p->TatolScore=p->math+p->english+p->computer;printf("修改数据成功!\n");}system("pause");system("cls");
} // 函数主要功能之一,用于学生成绩的排序
void SortStudents(){system("cls");Students *p,*q;int len; //统计节点个数,即学生个数 int choose;   //用于选择排序方式 len=0;q=head;//如果头节点为空 if(head==NULL){printf("排序失败:学生信息库中暂无任何信息!\n");system("pause");system("cls");return;}//统计节点 while(q!=NULL){q=q->next;len++;}printf("*****************************************\n");printf("*\t学生成绩排序\t\t\t*\n");printf("*****************************************\n");printf("*\t你有以下8种排序方式可选:\t*\n");printf("*\t1、按计算机成绩降序\t\t*\n");printf("*\t2、按数学成绩降序\t\t*\n");printf("*\t3、按英语成绩降序\t\t*\n");printf("*\t4、按总成绩降序\t\t\t*\n");printf("*\t5、按计算机成绩升序\t\t*\n");printf("*\t6、按数学成绩升序\t\t*\n");printf("*\t7、按英语成绩升序\t\t*\n");printf("*\t8、按总成绩升序\t\t\t*\n");printf("*****************************************\n");printf("请选择:");scanf("%d",&choose);//通过选择不同的方式进行排序,调用冒泡排序算法函数 switch(choose){case 1:BubbleSort(len,p,choose);break;case 2:BubbleSort(len,p,choose);break;case 3:BubbleSort(len,p,choose);break;case 4:BubbleSort(len,p,choose);break;case 5:BubbleSort(len,p,choose);break;case 6:BubbleSort(len,p,choose);break;case 7:BubbleSort(len,p,choose);break;case 8:BubbleSort(len,p,choose);break;default:    //防止输入错误选择 printf("选择错误!因为不存在此项选择!\n");system("pause");system("cls");break; }printf("排序成功!请在功能2中查看!\n");   //排序成功后可以通过显示函数查看排序结果 system("pause");system("cls");
}//函数主要功能之一,用于删除某个学生的信息,此处也是以学号进行查找,因为姓名会有同名的情况
void DeleteStuInfo(){system("cls");Students *p,*BeforeNode;p=head;int StuNum;int choose;//如果头节点为空 if(head==NULL){printf("暂无学生信息,请输入后再试。\n");system("pause");system("cls");return;}printf("请输入你将删除的学生的学号:");scanf("%d",&StuNum);//查找学号 while(p!=NULL&&p->number!=StuNum){BeforeNode=p;p=p->next;}//查找失败,可能是输入学号错误或者信息库中没有该学号 if(p==NULL){printf("删除失败:学生信息库中并未查到该学号\n");system("pause");system("cls");return;}printf("你将删除的学生是:%s,学号为:%d\n",p->name,p->number);   //显示将要删除的学生的学号和姓名 printf("你确认要删除该同学的信息吗?(是选择1,不是选择2)\n");   //防止失误将学生信息删除的情况 printf("请选择:");scanf("%d",&choose);switch(choose){case 1:if(p==head)  //如果删除的学生是在头节点 head=p->next;else    //如果删除的学生是在尾节点或者是中间节点 BeforeNode->next=p->next;printf("删除成功!\n");break;case 2:printf("删除失败:你否认了删除指令!\n");break;}system("pause");system("cls");
}//函数主要功能之一,用于保存学生信息,该保存功能有覆盖以及追加两个功能
void SaveStuInfo(){system("cls");FILE *fp;    //文件指针 int choose;  //choose用于选择 printf("*****************************************\n");printf("*\t学生信息保存\t\t\t*\n");printf("*****************************************\n");printf("*\t你可以选择以下两种保存方式\t*\n");printf("*\t1、追加学生信息\t\t\t*\n"); //追加 printf("*\t2、更新学生信息\t\t\t*\n");  //覆盖 printf("*****************************************\n");printf("请选择:");scanf("%d",&choose);//选择 switch(choose){  case 1:fp=fopen("D:\\学生成绩管理系统\\StuInfo.txt","a"); //其中\为转义字符,用fopen函数打开D盘中学生成绩管理系统中的StuInfo文件,a表示追加 break;case 2:fp=fopen("D:\\学生成绩管理系统\\StuInfo.txt","w");    //用法同上,w表示删除之前的数据后再进行保存,即覆盖、更新 break;} if(fp==NULL){printf("打开文件失败!\n");system("pause");system("cls");return;}Students *p;p=head;//保存学生信息 while(p!=NULL){fprintf(fp,"\n%d\t%s\t%s\t%d\t%d\t%d\t%d\t%d",p->number,p->name,p->sex,p->age,p->math,p->english,p->computer,p->TatolScore);p=p->next;}printf("保存信息成功!\n");fclose(fp);   //用fclose函数关闭文件,一定要关闭 system("pause");system("cls");
}//函数主要功能之一,用于读取学生信息库的信息
//如果在读取学生信息之前录入了新同学信息,则一定要保存,读取之后头节点指向StuInfo文本里第一个同学
void ReadStuInfo(){system("cls");Students *p;FILE *fp;    //文件指针 Students *tail;tail=head;    head=NULL;    //经测试,头节点要置空,若不置空,就会出现在运行程序时读取多次后,学生信息叠加的情况 fp=fopen("D:\\学生成绩管理系统\\StuInfo.txt","r"); //以只读的形式打开学生信息库文本 if(fp==NULL){printf("打开文件失败!\n");system("pause");system("cls");return;}while(!feof(fp)){p=(Students *)malloc(sizeof(Students));   //为当前节点分配 p->next=NULL; //下个节点置空 //寻找尾节点 while(head!=NULL&&tail->next!=NULL)tail=tail->next; //形成链表 if(head==NULL){head=p;tail=head;}elsetail->next=p;//读取信息 fscanf(fp,"%d%s%s%d%d%d%d%d",&p->number,p->name,p->sex,&p->age,&p->math,&p->english,&p->computer,&p->TatolScore);}p=NULL;  //此时的p是尾节点的下一个节点,要置空 printf("读取信息成功!\n");fclose(fp); //关闭 system("pause");system("cls");
}//该系统的主函数
int main()
{int choise;while(1){Menu();    //先调用菜单函数 printf("请选择:");scanf("%d",&choise);//九大功能 switch(choise){case 1:InputStudent();    //录入功能 break;case 2:PrintStuInfo(); //显示功能 break;case 3:FindStudent();  //查找功能 break;case 4:ChangeStudent();    //修改功能 break;case 5:SortStudents(); //排序功能 break;case 6:DeleteStuInfo();    //删除功能 break;case 7:SaveStuInfo();  //保存功能 break;case 8:ReadStuInfo();  //读取功能 break;case 9:    //退出程序 printf("你已退出学生成绩管理系统,欢迎下次使用!");return 0;break;default:   //防止输入错误 printf("选择错误!因为不存在此项选择!\n");system("pause");system("cls");break;}}return 0;
}

干货干货~C语言版学生成绩管理系统【数据结构课程设计,百行代码实现功能强化版(内附源码)】相关推荐

  1. c语言学生管理系统结点,学生管理系统(数据结构课程设计之完整代码)

    <学生管理系统(数据结构课程设计之完整代码)>由会员分享,可在线阅读,更多相关<学生管理系统(数据结构课程设计之完整代码)(14页珍藏版)>请在人人文库网上搜索. 1.数据结构 ...

  2. 免费开源的高精度OCR文本提取,支持 100 多种语言、自动文本定位和脚本检测,几行代码即可实现离线使用(附源码)

    免费开源的高精度OCR文本提取,支持 100 多种语言.自动文本定位和脚本检测,几行代码即可实现离线使用(附源码). 要从图像.照片中提取文本吗?是否刚刚拍了讲义的照片并想将其转换为文本?那么您将需要 ...

  3. C语言学生成绩管理系统(课程设计报告书)

    今天再跟大家分享一份课程设计报告:C语言学生成绩管理系统源码 程序设计组成框图: #include<stdio.h> #include<conio.h> #include< ...

  4. 学生成绩管理系统mysql课程设计_学生成绩管理系统数据库课程设计报告.doc

    目 录 TOC \o "1-2" \h \z \u HYPERLINK \l "_Toc303696065" 1.开发背景 PAGEREF _Toc303696 ...

  5. 【学生成绩管理系统】课程设计

    一.设计目的: 高级语言综合设计是学习"高级语言程序设计"课程后进行的一次全面的综合练习.其目的在于加深对高级语言程序设计基础理论和基本知识的理解,进一步了解和应用丰富的C语言函数 ...

  6. 学生成绩管理系统mysql课程设计_数据库课程设计(极其简单的学生成绩管理系统)...

    这个是我大三上学期的时候刚开始学习数据库课程的时候做的一个很稀烂的课程设计的源代码,当时刚刚开始学习Java和Oracle,而且当时就花了今年元旦3天假,做的这个C/S程序中没有加入触发器和存储过程等 ...

  7. 基于mysql学生成绩管理论文_StuSystem: 学生成绩管理系统毕业/课程设计源代码加论文 Spring+SpringMVC+Mybatis+Mysql...

    项目简介 项目来源于:https://gitee.com/z77z/StuSystem 本系统是基于JSP+SSM+Mysql实现的学生成绩管理系统.主要实现的功能有教师管理.学生管理.课程管理.学生 ...

  8. c语言程序员写贪吃蛇代码28,厉害了,程序员28行代码写贪吃蛇游戏,附源码!...

    对于贪吃蛇游戏,大家基本上都玩过,但是作为一个程序员,大家是否想过要自己去写一个贪吃蛇,毕竟玩别人写的游戏和自己写的游戏是两种截然不同的感受,而且也可以通过制作来提升自己的技术! 其实贪吃蛇的逻辑并不 ...

  9. 学生成绩管理系统python课程设计,简易学生成绩管理系统Python

    # -*- coding: utf-8 -*- import random #成绩管理系统 score={} #录入成绩 score={"数学":{"小明":9 ...

最新文章

  1. Another hard to gain financial feedback 又是一个融不到资金的创业项目
  2. python多线程详解_Python多线程详解
  3. VIRT,RES,SHR,虚拟内存和物理内存(转)
  4. Spring MVC 接收json自动转换JSONObject
  5. 史上最强之《Pyqt》写游戏
  6. 【数据结构】NOJ016—计算二叉树叶子结点数目
  7. Android移动端库存管理系统
  8. 办公室网络还能这么搭建?从入门到精通,看这里
  9. Matlab:如何批量修改图片名称(图像处理)
  10. IT从业者的职业规划
  11. WKT (Well Known Text)
  12. 并查集——加边的无向图
  13. 操作无法完成错误0x0000709再次检查打印机名称解决方法!
  14. discuz论坛图片无法显示之图片流问题
  15. php随机壁纸api,【编码书生】Bing 随机壁纸 API
  16. java程序将多张图片合成一张
  17. Hystrix断路器原理及实现(服务降级、熔断、限流)
  18. 二进制 算法相关的题目
  19. MMSystem.h头文件
  20. 如何用matlab求出覆冰图像像素点,输电线路覆冰图像的Canny算子改进算法研究

热门文章

  1. 【software】常见流氓软件
  2. 2021Android高级面试题总结:字节跳动Android岗经典面试真题,面经解析
  3. 提取epub文件中的图片名字,重命名
  4. 美团上交开源PromptDet:无需标注,开放世界的目标检测器
  5. UE打包时候生成多个PAK
  6. 台式机设置声音快捷键
  7. final cut pro 最快速,最简单的批量字幕制作方法!
  8. 小米3刷android 6.0,安卓6.0版MIUI7曝光:小米3/小米4/小米Note将尝鲜
  9. 隐马尔可夫模型(一)概念
  10. 【iOS】苹果登录Sign in with Apple