软件工程学生成绩管理系统
- 作者: 小护士一枚
- 来源: 51数据库
- 2020-04-15
软件工程的综合实验是学生成绩管理系统,有需求分析DFD图,结构...
#include using namespace std; #define max 100; class student { public: student *next; public: string name;//姓名 long num;//学号 int x,y,z;//数学,语文,英语 int AA;//总分 void play(){coutname1>>num1>>x1>>y1>>z1; q=new student(name1,num1,x1,y1,z1); q->next=0; q->AA=x1+y1+z1; if(stu) { student *t; t=stu; if(t->num==num1) { coutnum==num1) { coutnext=q; } else { stu=q; } coutnum1; //查找要删除的结点 student *p1,*p2; p1=stu; while(p1) { if(p1->num==num1) break; else { p2=p1; p1=p1->next; } } //删除结点 if(p1!=NULL)//若找到结点,则删除 { p1->play(); coutc; if(toupper(c)!='Y') return; if(p1==stu) //若要删除的结点是第一个结点 { stu=p1->next; delete p1; } else //若要删除的结点是后续结点 { p2->next=p1->next; delete p1; } coutnum1; //查找要修改的结点 student *p1,*p2; p1=stu; while(p1) { if(p1->num==num1) break; else { p2=p1; p1=p1->next; } } if(p1!=NULL) { coutp1->name>>p1->x>>p1->y>>p1->z; p1->AA=p1->x+p1->y+p1->z; coutc; switch (c) { case '1': { long num1; coutnum1; //查找要查询的结点 student *p1,*p2; p1=stu; while(p1) { if(p1->num==num1) break; else { p2=p1; p1=p1->next; } } if(p1!=NULL) { coutname1; //查找要查询的结点 student *p1,*p2; p1=stu; while(p1) { if(p1->name==name1) break; else { p2=p1; p1=p1->next; } } if(p1!=NULL) { coutnext; } coutp1->next->num) // 如果头结点大于第二个的 { p2=p1->next; p1->next=p1->next->next; p2->next=p1; //头结点交换 stu=p2; } p1=stu; while(p1->next->next) //中间的交换 { p2=p1; p1=p1->next; if(p1->num>p1->next->num) { p2->next=p1->next; p1->next=p1->next->next; p2->next->next=p1; p1=p2->next; //交换 } } } p1=stu; do { p1->play(); p1=p1->next; }while(p1); } void cla::psx()//按数学成绩排序 { student *p1,*p2; int n; p1=stu; n=1; while(p1->next) { n++; p1=p1->next; } coutp1->next->x) // 如果头结点大于第二个的 { p2=p1->next; p1->next=p1->next->next; p2->next=p1; //头结点交换 stu=p2; } p1=stu; while(p1->next->next) //中间的交换 { p2=p1; p1=p1->next; if(p1->x>p1->next->x) { p2->next=p1->next; p1->next=p1->next->next; p2->next->next=p1; p1=p2->next; //交换 } } } p1=stu; do { p1->play(); p1=p1->next; }while(p1); } void cla::pyw()//按语文成绩排序 { student *p1,*p2; int n; p1=stu; n=1; while(p1->next) { n++; p1=p1->next; } coutp1->next->y) // 如果头结点大于第二个的 { p2=p1->next; p1->next=p1->next->next; p2->next=p1; //头结点交换 stu=p2; } p1=stu; while(p1->next->next) //中间的交换 { p2=p1; p1=p1->next; if(p1->y>p1->next->y) { p2->next=p1->next; p1->next=p1->next->next; p2->next->next=p1; p1=p2->next; //交换 } } } p1=stu; do { p1->play(); p1=p1->next; }while(p1); } void cla::pyy()//按英语成绩排序 { student *p1,*p2; int n; p1=stu; n=1; while(p1->next) { n++; p1=p1->next; } coutp1->next->z) // 如果头结点大于第二个的 { p2=p1->next; p1->next=p1->next->next; p2->next=p1; //头结点交换 stu=p2; } p1=stu; while(p1->next->next) //中间的交换 { p2=p1; p1=p1->next; if(p1->z>p1->next->z) { p2->next=p1->next; p1->next=p1->next->next; p2->next->next=p1; p1=p2->next; //交换 } } } p1=stu; do { p1->play(); p1=p1->next; }while(p1); } void cla::pAA()//按总分排序 { student *p1,*p2; int n; p1=stu; n=1; while(p1->next) { n++; p1=p1->next; } coutp1->next->AA) // 如果头结点大于第二个的 { p2=p1->next; p1->next=p1->next->next; p2->next=p1; //头结点交换 stu=p2; } p1=stu; while(p1->next->next) //中间的交换 { p2=p1; p1=p1->next; if(p1->AA>p1->next->AA) { p2->next=p1->next; p1->next=p1->next->next; p2->next->next=p1; p1=p2->next; //交换 } } } p1=stu; do { p1->play(); p1=p1->next; }while(p1); } void cla::staxis()//排序 { system("cls"); char c; coutc; switch (c) { case '1':pxh(); break; case '2':psx(); break; case '...
学生成绩管理系统c++课程设计
展开全部 #include #include #include #include using namespace std; #define max 100; class student { public: student *next; public: string name;//姓名 long num;//学号 int x,y,z;//数学,语文,英语 int AA;//总分 void play(){coutnext; delete stu; stu=p; } stu=0; } void sadd(); //添加 void sremove(); //删除 void samend(); //修改 void ssearch(); //查询 void staxis(); //排序 void ssave(); //保存 void sload(); //读取 //排序函数 void pxh(); void psx(); void pyw(); void pyy(); void pAA(); private: student *stu; //头接点 }; void cla::sadd()//添加 { student *q; string name1; long num1; int x1,y1,z1; system("cls"); cout>name1>>num1>>x1>>y1>>z1; q=new student(name1,num1,x1,y1,z1); q->next=0; q->AA=x1+y1+z1; if(stu) { student *t; t=stu; if(t->num==num1) { coutnext) { if(t->num==num1) { coutnext; } t->next=q; } else { stu=q; } cout>num1; //查找要删除的结点 student *p1,*p2; p1=stu; while(p1) { if(p1->num==num1) break; else { p2=p1; p1=p1->next; } } //删除结点 if(p1!=NULL)//若找到结点,则删除 { p1->play(); cout>c; if(toupper(c)!='Y') return; if(p1==stu) //若要删除的结点是第一个结点 { stu=p1->next; delete p1; } else //若要删除的结点是后续结点 { p2->next=p1->next; delete p1; } cout>num1; //查找要修改的结点 student *p1,*p2; p1=stu; while(p1) { if(p1->num==num1) break; else { p2=p1; p1=p1->next; } } if(p1!=NULL) { coutnamexyz>p1->name>>p1->x>>p1->y>>p1->z; p1->AA=p1->x+p1->y+p1->z; cout>c; switch (c) { case '1': { long num1; cout>num1; //查找要查询的结点 student *p1,*p2; p1=stu; while(p1) { if(p1->num==num1) break; else { p2=p1; p1=p1->next; } } if(p1!=NULL) { coutnamexyz>name1; //查找要查询的结点 student *p1,*p2; p1=stu; while(p1) { if(p1->name==name1) break; else { p2=p1; p1=p1->next; } } if(p1!=NULL) { coutnumxyznext) { n++; p1=p1->next; } coutnum>p1->next->num) // 如果头结点大于第二个的 { p2=p1->next; p1->next=p1->next->next; p2->next=p1; //头结点交换 stu=p2; } p1=stu; while(p1->next->next) //中间的交换 { p2=p1; p1=p1->next; if(p1->num>p1->next->num) { p2->next=p1->next; p1->next=p1->next->next; p2->next->next=p1; p1=p2->next; //交换 } } } p1=stu; do { p1->play(); p1=p1->next; }while(p1); } void cla::psx()//按数学成绩排序 { student *p1,*p2; int n; p1=stu; n=1; while(p1->next) { n++; p1=p1->next; } cout<<"共有"<<n<<"条信息..."...
c语言学生成绩管理系统
#include #include #include #include #define MAX 80 //学生最大人数#define max 3 //科目数量struct classname //科目结构体,科目名称,该科目分数{ char name[20]; float score;};struct student //学生结构体,学号,学生姓名,科目,平均分,总分{ char no[20]; char std_name[20]; struct classname km[max]; float ave; float sum; int save; //检验数,没有添加删除函数,此变量没有作用,可删除,但是注意删除要把初始函数里的初始语句也删除};struct student stu[MAX];//全局变量,结构体数组int nu=0;//全局变量 文件已存人数void chushi()//程序初始化函数,对全局变量stu初始化{ int i,j; for(i=0;i<MAX;i++) { for(j=0;j<20;j++) { stu[i].no[j]='\0'; stu[i].std_name[j]='\0'; stu[i].km[j].name[j]='\0'; stu[i].km[j].score=0; } stu[i].ave=0; stu[i].sum=0; stu[i].save=0; }}void av()/*求平均值*/{ int i; for(i=0;i<nu;i++) { stu[i].sum=stu[i].km[0].score+stu[i].km[1].score+stu[i].km[2].score; stu[i].ave=stu[i].sum/3; }}void first_check(){ FILE *p;//文件指针 int i,j; struct classname frist[max];//临时变量,接收第一次输入的科目名称 for(i=0;i<max;i++) { for(j=0;j<20;j++) frist[i].name[j]='\0'; frist[i].score=0; } if ((p=fopen("e:\\kemu.txt","r"))==NULL)//如果文件不存在,执行下面语句 { printf("您好,欢迎使用学生成绩管理系统\n\n因为您是第一次使用,请输入科目名称(三科)\n\n"); p=fopen("e:\\kemu.txt","w");//建立科目文件,保存c盘根目录 printf("输入课程1名称:"); scanf("%s",frist[0].name); fprintf(p,"%s\n",frist[0].name);//课程写入文件 printf("输入课程2名称:"); scanf("%s",frist[1].name); fprintf(p,"%s\n",frist[1].name);//同上 printf("输入课程3名称:"); scanf("%s",frist[2].name); fprintf(p,"%s\n",frist[2].name);//同上 } system("cls");//清屏函数 fclose(p);}void save_nu()//往人数文件写入人数信息{ FILE *p; p=fopen("e:\\renshu.txt","w"); fprintf(p,"%d\n",nu); fclose(p);}void Save_add(int n)//写入成绩信息,成绩文件已存在,在文件内部末尾追加写入{ FILE * p; int i; p= fopen("e:\\chengji.txt","at"); if (p == NULL) { printf("文件不存在!!\n"); exit(0); } save_nu(); for (i = 0;i<n;i++) if(stu[i].save==1) { stu[i].sum=stu[i].km[1].score+stu[i].km[2].score+stu[i].km[3].score; stu[i].ave=stu[i].sum/3; fprintf(p,"%s %s %2.1f %2.1f %2.1f %2.1f %2.1f \n",stu[i].no,stu[i].std_name,stu[i].km[0].score,stu[i].km[1].score,stu[i].km[2].score,stu[i].ave,stu[i].sum); } fclose(p);}void Save()//写入成绩信息,成绩文件不存在,新建成绩文件并写入信息{ FILE * p; int i; p= fopen("e:\\chengji.txt","w"); if (p == NULL) { printf("文件不存在!!\n"); exit(0); } save_nu(); for (i = 0;i<nu;i++) if(stu[i].save==1) { av(); fprintf(p,"%s %s %2.1f %2.1f %2.1f %2.1f %2.1f \n",stu[i].no,stu[i].std_name,stu[i].km[0].score,stu[i].km[1].score,stu[i].km[2].score,stu[i].ave,stu[i].sum); } fclose(p);}int read_nu()//读取人数文件中存在的人数信息{ FILE *p; char ch,s[10]={'\0'}; int i=0; p=fopen("e:\\renshu.txt","r"); if(p==NULL) { save_nu(); return 0; } ch=fgetc(p); while(ch!='\n') { s[i]=ch; ch=fgetc(p); i++; } nu=atoi(s); fclose(p); return 0;}int read_km()//读取科目文件中存储的科目信息{ FILE *p; int i,j=0; char s[20]={'\0'}; chushi(); p=fopen("e:\\kemu.txt","r"); if(p==NULL) { printf("ERROR read_km"); return 0; } fgets(s,20,p); while(strlen(s)!=0) { for(i=0;i<strlen(s);i++) if(s[i]==10) { s[i]='\0'; break; } for(i=0;i<=nu;i++) strcpy(stu[i].km[j].name,s); for(i=0;i<20;i++) s[i]='\0'; j++; fgets(s,20,p); } return 0;}void read()//重要函数!读取成绩文件中以存储的学生成绩信息并存入内存{ FILE *p; int i,j,n,k,z=0; char s[50]={'\0'}; char o[10]={'\0'}; p=fopen("e:\\chengji.txt","r"); if(p==NULL) printf("ERROR_read"); chushi(); read_km(); fgets(s,50,p); while(strlen(s)!=0) { j=0; for(i=0;i<50;i++) { if(s[i]!='\n') { n=0; while(j==0) { if(s[i]!=' ') { stu[z].no[n]=s[i]; n++;i++; } else break; } while(j==1) { if(s[i]!=' ') { stu[z].std_name[n]=s[i]; n++;i++; } else break; } while(j==2) { if(s[i]!=' ') { o[n]=s[i]; n++;i++; } else { stu[z].km[0].score=atoi(o); break; } } while(j==3) { if(s[i]!=' ') { o[n]=s[i]; n++;i++; } else { stu[z].km[1].score=atoi(o); break; } } while(j==4) { if(s[i]!=' ') { o[n]=s[i]; n++;i++; } else { stu[z].km[2].score=atoi(o); break; } } while(j==5) { if(s[i]!=' ') { o[n]=s[i]; n++;i++; } else { stu[z].ave=atoi(o); break; } } while(j==6) { if(s[i]!=' ') { o[n]=s[i]; n++;i++; } else { stu[z].sum=atoi(o); break; } } for(k=0;k<10;k++) o[k]='\0'; } else break; j++; } for(i=0;i<50;i++) s[i]='\0'; fgets(s,50,p); z++; }}void putin()//功能函数,录入学生成绩信...
求一个用C+编写的题目为学生学籍信息管理系统设计,整个系统要设...
没法传图,自己想一下怎么改吧……一.开发目的:总结软件开发过程中的方法和技巧,更好的应用和数据库技术1.开发内容:开发一套学生成绩管理系统软件采取的研究方法:采用面向对象的编程,结合网络和数据库技术,实现控制和管理。
通过系统分析、需求分析、概要设计、详细设计、编写代码、软件测试、软件维护、经验方法总结等一系列实验方案,实验软件的开发。
2.具体开发方案:分七个阶段进行:系统分析、需求收集和分析概念设计第一阶段:系统分析、需求收集和分析这一阶段首先进行系统分析,分析确定系统的规模和范围,确定软件的总体要求以及所需要的硬件和支撑软件,确定待开发软件与外界的接口,根据用户的情况确定软件对操作的要求,以及待开发软件总体上的约束和限制,完善项目计划。
在这之后,这一阶段的大部分时间将被用来进行需求收集和分析。
向学校管理人员及学生了解情况,确定软件系统的综合要求,分析软件系统的数据要求,导出系统的逻辑模型,修正项目开发计划。
采用结构化分析方法,生成数据流图、数据词典及加工逻辑说明。
估计阶段跨度:2006年某月初至某月中旬第二阶段:概要设计在这一阶段将确定软件系统的结构,对全局数据结构进行设计,进行模块划分,确定每个模块的功能 接口以及模块间的调用关系。
采用与结构化方法衔接的结构化设计方法,生成结构图及概念设计说明书。
估计阶段跨度:2006年某月中旬至某月底第三阶段:详细设计为每个模块设计实现的细节将成为这个阶段的主要任务,还要对局部数据结构进行设计。
采用结构化设计方法。
采用自顶向下逐步求精的设计方法和单入口单出口的控制结构。
使得程序具有良好的结构,增强程序的可读性。
生成程序流程图及详细设计说明书。
详细设计时,如果不满意,须回到概要设计中重新完善设计。
估计阶段跨度:2006年某月初至某月中旬第四阶段:编写代码这一阶段用来根据详细设计说明书编写代码。
采用计算机语言编写。
追求高质量的代码,生成源程序代码、内部文档。
估计阶段跨度:2006年某月中旬至某月底第五阶段:软件测试这将是一个很重要也将是一个很耗时间和精力的阶段。
在这一阶段中将尽可能多地发现软件中的错误和缺陷。
如果有错,还将退回到编码阶段进行调试。
测试过程分为单元测试、集成测试和确认测试。
估计阶段跨度:2006年某月初至某月中旬第六阶段:完善各项文档及和报告,从整个开发过程和这些文档中总结经验和教训,罗列各种方法和技巧。
估计阶段跨度:2007年某月中旬至某月底。
需求分析说明书一,引言21世纪以高科技为核心的知识经济将占主导地位,国家的综合国力和国际竞争力将越来越取决于科学技术创新水平。
教育作为知识创新、传播和应用的基础,培养和输送人才的摇篮,已经成为经济发展和社会进步的基础。
尽管人类进步的程度随着不同时代,不同地区而有所变化,教育的口径却在不断扩宽,以便使过去仅供少数人使用的教育资源能够为更多各种年龄、不同社会阶层和背景的人们所用。
在信息爆炸的时代,传统教学管理面临着诸多挑战。
1.编写目的:开发基于互联网的学生选课系统,提高管理工作的效率、提高信息的开放性、改善学生和教师对其最新信息查询的准确性。
2.背景说明随着学校规模的不断扩大,专业、班级、学生的数量急剧增加,有关学生选课的各种信息量也成倍增长,而目前许多高校的学生选课管理仍停留在复杂的人工操作上,重复工作较多,工作量大,效率低,因此,迫切需要开发基于互联网的体育课信息管理系统来提高管理工作的效率。
基于互联网的学生选课管理系统,在学生选课的规范管理、科学统计和快速查询方面具有较大的实用意义。
它提高了信息的开放性,大大地改善了学生、教师对其最新信息查询的准确性。
3.术语定义及参考资料1. (美) Grady Booch,James Rumbaugh,Ivar Jacobson,《UML用户指南》,机械工业出版社,2001年8月2.Microsoft,MSDN3.Microsoft, SQL Server2000联机手册4.Roger S. Pressman。
软件工程——实践者的研究方法。
机械工业出版社,19975.IPL。
Software Testing and Software Development Lifecycles。
IPL,19966.Karl E. Wiegers《软件需求》机械工业出版社,19997.张海藩《软件工程导论》清华大学出版社。
4任务概述4.1. 目标系统开发的总体任务是实现学生选课信息关系的系统化、规范化和自动化。
4.2. 系统技术 学生选课系统要求具有信息处理的开发性,方便教师上传学生成绩、学生上网选课和查询选课信息及成绩等,因此本系统设计为基于WWW的网络数据库应用系统,使用ASP脚本以Access为数据库的开发技术,运行在支持ASP的服务器上。
4.3基本设计概念和处理流程采用基于SQL Server 的分布式数据库管理系统。
三层结构是目前用得最多的,这种结构比传统的C/S结构增加了一个应用程序服务器,应用程序服务器包括了统一的界面、业务规则和数据处理逻辑等等,这样客户端程序就可以做得比较小,也就是常说的瘦客户,更由于业务规则和数据处理逻辑的集中在服务器上统一管理,客户端无须进行复杂的计算,也不会...
软件工程专业课程
软件工程专业 软件工程专业本专业培养计算机软件工程研究与应用高级人才。
本专业培养计划与国际接轨,通过培养计划实施及理论、抽象、设计实验等教育过程,使学生掌握软件工程技术,具备从事大型软件工程组织、管理、开发能力。
主要课程:离散数学,数据结构,汇编语言程序设计,计算机组成原理与系统结构,操作系统,编译原理,数据库系统原理,计算机网络,Internet技术,多媒体技术,软件工程导论,软件需求工程,软件项目管理,软件测试,JAVA语言程序设计,XML技术,软件质量控制,软件工具与环境,CMM与ISO9000,软件过程,电子商务基础等。
学生毕业后,可胜任教育、企业、事业及软件产业部门的教学、管理、研究与开发工作,或在本学科、相关学科及国外继续深造。
转载请注明出处51数据库 » 软件工程学生成绩管理系统
