vc学生成绩管理系统数据结构课程设计课程设计
- 格式:doc
- 大小:42.00 KB
- 文档页数:15
c语言学生成绩管理系统课程设计一、课程目标知识目标:1. 学生能理解C语言在开发学生成绩管理系统中的应用,掌握基本的程序结构和语法。
2. 学生能运用C语言实现对学生成绩的录入、查询、修改、删除和排序等功能。
3. 学生了解并掌握数组、结构体、文件操作等C语言核心知识在学生成绩管理系统中的运用。
技能目标:1. 学生能够独立设计并编写简单的C语言程序,实现学生成绩管理系统的基本功能。
2. 学生能够运用调试工具对程序进行调试,找出并修正程序中的错误。
3. 学生能够通过分析实际需求,提出合理的解决方案,提高编程解决问题的能力。
情感态度价值观目标:1. 学生通过学习C语言学生成绩管理系统,培养对计算机编程的兴趣和热情。
2. 学生在团队协作中,学会沟通、分享、合作,培养良好的团队精神和编程习惯。
3. 学生通过解决实际问题,体会编程带来的成就感,增强自信心,培养积极向上的学习态度。
课程性质:本课程属于实践性较强的课程,旨在让学生通过动手实践,掌握C 语言编程技能,并能够应用于实际问题的解决。
学生特点:学生已经具备一定的C语言基础,对编程有一定的了解,但对复杂程序的设计和开发尚处于起步阶段。
教学要求:结合学生特点和课程性质,本课程要求教师注重实践操作,引导学生通过动手实践掌握编程技能,并在实践中提高解决问题的能力。
同时,注重培养学生的团队协作和沟通能力,提高学生的综合素质。
通过本课程的学习,使学生能够达到上述课程目标,并为后续相关课程的学习打下坚实基础。
二、教学内容1. C语言基础知识回顾:包括数据类型、运算符、控制结构等,为后续课程打下基础。
(对应教材章节:1-3章)- 数据类型、变量定义- 运算符、表达式- 顺序结构、分支结构、循环结构2. 数组与函数:介绍数组的使用以及函数的定义与调用,为成绩管理系统提供数据存储和处理方法。
(对应教材章节:4-5章)- 一维数组、二维数组- 函数的定义、调用、参数传递- 递归函数3. 结构体与文件操作:讲解结构体的定义和使用,以及文件操作的基本方法,为成绩管理系统提供数据存储和读取功能。
1.2.3.4.题目:学生成绩管理系统5.基本要求(1)要求用Visual C++语言来实现一个简单的学生成绩管理系统,该系统完成之后,基本上要能够无错运行,能达到学生成绩管理系统的基本要求。
(2)各个功能分别使用函数来完成,主函数和各个函数分别存放在不同的.CPP文件中,要求使用头文件。
(3)准备系统模拟的数据,不得少于10条。
(4)成绩管理程序至少应具备以下功能:1)输入:学生的基本信息,包括学号.姓名.性别.籍贯. Visual C++成绩.英语成绩.物理成绩等;2)计算:每个学生的总成绩.平均成绩.所有学生单科的平均成绩,找出总成绩和单科成绩最高的学生并输出;3)查询:可以按学号.姓名. Visual C++成绩查询4)4)排序:可以按学号.姓名. Visual C++成绩. 英语成绩.物理成绩.总成绩.平均成绩等进行排序并输出;5)删除:删除某条记录;6)帮助和关于;7)退出:退出整个系统的运行。
8)可以增加更多的菜单项,比如设置颜色.字体风格等。
程序如下:#include<iostream.h>#include<string.h>struct node{int num;char name[10];char sex[10];char jiguan[10];float Cscore;float Escore;float Pscore;float sum;float average;node *next;};node *create(){node *head;node *p,*pend;int a;char b[10];char c[10];char f[10];float d1,d2,d3;cout<<"请输入学号,姓名,性别,籍贯,C++成绩,英语成绩,物理成绩:";cin>>a>>b>>c>>f>>d1>>d2>>d3;head=0;int i=0;while(i<2){p=new node;p->num=a;strcpy(p->name,b);strcpy(p->sex,c);strcpy(p->jiguan,f);p->Cscore=d1;p->Escore=d2;p->Pscore=d3;p->sum=(d1+d2+d3);p->average=(d1+d2+d3)/3;if(head==0){head=p;pend=p;}else{ pend->next=p;pend=p;}i++;cout<<"请输入学号,姓名,性别,籍贯,C++成绩,英语成绩,物理成绩:";cin>>a>>b>>c>>f>>d1>>d2>>d3;}if(head) pend->next=0;return head;}void print(node *head){node *p;float m,n,k;p=head;while(p){m+=p->Cscore;n+=p->Escore;k+=p->Pscore;p=p->next;}m/=3;n/=3;k/=3;node *p1,*p2,*p3,*p4,*p5;p1=p2=p3=p4=p5=head;while(p2){ if(p2->sum>p1->sum) p1=p2;if(p2->Cscore>p3->Cscore) p3=p2;if(p2->Escore>p4->Escore) p4=p2;if(p2->Pscore>p5->Pscore) p5=p2;p2=p2->next;}cout<<"总成绩最高的学生:";cout<<p1->num<<'\t'<<p1->name<<'\t'<<p1->sex<<'\t'<<p 1->jiguan<<'\t'<<p1->Cscore<<'\t'<<p1->Escore<<'\t'<<p1->Pscore<<endl;cout<<"C++成绩最高的学生:";cout<<p3->num<<'\t'<<p3->name<<'\t'<<p3->sex<<'\t'<<p 3->jiguan<<'\t'<<p3->Cscore<<'\t'<<p3->Escore<<'\t'<<p3->Psc ore<<endl;cout<<"英语成绩最高的学生:";cout<<p4->num<<'\t'<<p4->name<<'\t'<<p4->sex<<'\t'<<p 4->jiguan<<'\t'<<p4->Cscore<<'\t'<<p4->Escore<<'\t'<<p4->Psc ore<<endl;cout<<"物理成绩最高的学生:";cout<<p5->num<<'\t'<<p5->name<<'\t'<<p5->sex<<'\t'<<p 5->jiguan<<'\t'<<p5->Cscore<<'\t'<<p5->Escore<<'\t'<<p5->Psc ore<<endl;}void search(node *head,int data){node *p;int m=0;p=head;if(head->num==data){m=1;}while(p->next&&p->num!=0)p=p->next;if(p->num==data){m=1;}if(m==1)cout<<p->num<<'\t'<<p->name<<'\t'<<p->sex<<'\t'<<p->jiguan <<'\t'<<p->Cscore<<'\t'<<p->Escore<<'\t'<<p->Pscore<<endl;else cout<<"查询失败"<<endl;}void search(node *head,char n[10]){node *p;int m=0;p=head;if(strcmp(head->name,n)==0){m=1;}while(p->next&&(p->name,n)!=0)p=p->next;if(strcmp(p->name,n)==0)m=1;}if(m==1)cout<<p->num<<'\t'<<p->name<<'\t'<<p->sex<<'\t'<<p->jiguan <<'\t'<<p->Cscore<<'\t'<<p->Escore<<'\t'<<p->Pscore<<endl;else cout<<"查询失败"<<endl;}node *sort1(node *head){node *p=head,*p1,*p2;while(p->next!=0){ p1=p;p2=p->next;while(p2!=0){if(p2->num<p1->num)p1=p2;p2=p2->next;}if(p!=p1)int r;char x[10];float s,t,i,j,h;r=p->num;strcpy(x,p->name);s=p->Cscore;t=p->Escore;i=p->Pscore;j=p->sum;h=p->average;p->num=p1->num;strcpy(p->name,p1->name);p->Cscore=p1->Cscore;p->Escore=p1->Escore;p->Pscore=p1->Pscore;p->sum=p1->sum;p->average=p1->average;p1->num=r;strcpy(p1->name,x);p1->Cscore=s;p1->Escore=t;p1->Pscore=i;p1->sum=j;p1->average=h;}p=p->next;}return head;}node *sort2(node *head){node *p=head,*p1,*p2;while(p->next!=0){ p1=p;p2=p->next;while(p2!=0){if(strcmp(p2->name,p1->name)<0) p1=p2;p2=p2->next;}if(p!=p1){int r;char x[10];float s,t,i,j,h;r=p->num;strcpy(x,p->name);s=p->Cscore;t=p->Escore;i=p->Pscore;j=p->sum;h=p->average;p->num=p1->num;strcpy(p->name,p1->name);p->Cscore=p1->Cscore;p->Escore=p1->Escore;p->Pscore=p1->Pscore;p->sum=p1->sum;p->average=p1->average;p1->num=r;strcpy(p1->name,x);p1->Cscore=s;p1->Escore=t;p1->Pscore=i;p1->sum=j;p1->average=h;}p=p->next;}return head;}node *sort3(node *head){node *p=head,*p1,*p2;while(p->next!=0){ p1=p;p2=p->next;while(p2!=0){if(p2->Cscore<p1->Cscore)p1=p2;p2=p2->next;}if(p!=p1){int r;char x[10];float s,t,i,j,h;r=p->num;strcpy(x,p->name);s=p->Cscore;t=p->Escore;i=p->Pscore;j=p->sum;h=p->average;p->num=p1->num;strcpy(p->name,p1->name);p->Cscore=p1->Cscore;p->Escore=p1->Escore;p->Pscore=p1->Pscore;p->sum=p1->sum;p->average=p1->average;p1->num=r;strcpy(p1->name,x);p1->Cscore=s;p1->Escore=t;p1->Pscore=i;p1->sum=j;p1->average=h;}p=p->next;}return head;p=head;}node *sort4(node *head){node *p=head,*p1,*p2;while(p->next!=0){ p1=p;p2=p->next;while(p2!=0){if(p2->Escore<p1->Escore)p1=p2;p2=p2->next;}if(p!=p1){int r;char x[10];float s,t,i,j,h;r=p->num;strcpy(x,p->name);s=p->Cscore;t=p->Escore;i=p->Pscore;j=p->sum;h=p->average;p->num=p1->num;strcpy(p->name,p1->name);p->Cscore=p1->Cscore;p->Escore=p1->Escore;p->Pscore=p1->Pscore;p->sum=p1->sum;p->average=p1->average;p1->num=r;strcpy(p1->name,x);p1->Cscore=s;p1->Escore=t;p1->Pscore=i;p1->sum=j;p1->average=h;}p=p->next;}return head;}node *sort5(node *head){node *p=head,*p1,*p2;while(p->next!=0){ p1=p;p2=p->next;while(p2!=0){if(p2->Pscore<p1->Pscore)p1=p2;p2=p2->next;}if(p!=p1){int r;char x[10];float s,t,i,j,h;r=p->num;strcpy(x,p->name);s=p->Cscore;t=p->Escore;i=p->Pscore;j=p->sum;h=p->average;p->num=p1->num;strcpy(p->name,p1->name);p->Cscore=p1->Cscore;p->Escore=p1->Escore;p->Pscore=p1->Pscore;p->sum=p1->sum;p->average=p1->average;p1->num=r;strcpy(p1->name,x);p1->Cscore=s;p1->Escore=t;p1->Pscore=i;p1->sum=j;p1->average=h;}p=p->next;}return head;}node *sort6(node *head) {node *p=head,*p1,*p2;while(p->next!=0){ p1=p;while(p2!=0){if(p2->sum<p1->sum)p1=p2;p2=p2->next;}if(p!=p1){int r;char x[10];float s,t,i,j,h;r=p->num;strcpy(x,p->name);s=p->Cscore;t=p->Escore;i=p->Pscore;j=p->sum;h=p->average;p->num=p1->num;strcpy(p->name,p1->name);p->Cscore=p1->Cscore;p->Escore=p1->Escore;p->Pscore=p1->Pscore;p->average=p1->average;p1->num=r;strcpy(p1->name,x);p1->Cscore=s;p1->Escore=t;p1->Pscore=i;p1->sum=j;p1->average=h;}p=p->next;}return head;}node *sort7(node *head) {node *p=head,*p1,*p2;while(p->next!=0){ p1=p;p2=p->next;while(p2!=0){if(p2->average<p1->average)p1=p2;p2=p2->next;}if(p!=p1){int r;char x[10];float s,t,i,j,h;r=p->num;strcpy(x,p->name);s=p->Cscore;t=p->Escore;i=p->Pscore;j=p->sum;h=p->average;p->num=p1->num;strcpy(p->name,p1->name);p->Cscore=p1->Cscore;p->Escore=p1->Escore;p->Pscore=p1->Pscore;p->sum=p1->sum;p->average=p1->average;p1->num=r;strcpy(p1->name,x);p1->Cscore=s;p1->Escore=t;p1->Pscore=i;p1->sum=j;p1->average=h;}p=p->next;}return head;}void out(node *head){node *p=head;while(p){cout<<p->num<<'\t'<<p->name<<'\t'<<p->sex<<'\t'<<p->ji guan<<'\t'<<p->Cscore<<'\t'<<p->Escore<<'\t'<<p->Pscore<<en dl;p=p->next;}}node *delete_d(node *head ,int g){node *p1,*p2;if (head->num==g){p2=head;head=head->next;delete p2;cout<<"成功删除记录"<<endl;}else{ p1=p2=head;while(p2->num!=g&&p2->next!=0) { p1=p2;p2=p2->next;}if(p2->num==g){ p1->next=p2->next;delete p2;cout<<"成功删除记录"<<endl;}else cout<<"没有找到要删除的记录"<<endl;}return head;}void main(){cout<<"学生成绩管理统系"<<endl;cout<<"菜单:"<<endl;cout<<"1:输入"<<'\t'<<"2:计算"<<'\t'<<"3:查询"<<'\t'<<"4:排序"<<'\t'<<"5:删除"<<'\t'<<"6:帮助和关于"<<'\t'<<"7:退出"<<endl;int m;cout<<"输入选项:";cin>>m;node *head;int k,data,g,f;char n[10];switch (m){case 1:{ cout<<"输入:"<<endl;head=create();}case 2:{ cout<<"计算:"<<endl;print(head);}case 3:{ cout<<"查询:"<<endl;cout<<"选择查询的方式:";cin>>k;if(k==1){ cout<<"按学号查询:"<<endl;cout<<"输入学号:";cin>>data;search(head,data);}if(k==2){ cout<<"按姓名查询:"<<endl;cout<<"输入姓名:";cin>>n;search(head,n);}}case 4:{cout<<"排序:"<<endl;cout<<"选择排序的方式:";cin>>f;if(f==1){ cout<<"按学号排序:"<<endl;sort1(head);out(head);}if(f==2){ cout<<"按姓名排序:"<<endl;sort2(head);}if(f==3){ cout<<"按VC++成绩排序:"<<endl;sort3(head);out(head);}if(f==4){ cout<<"按英语成绩排序:"<<endl;sort4(head);out(head);}if(f==5){ cout<<"按物理成绩排序:"<<endl;sort5(head);out(head);}if(f==6){ cout<<"按总成绩排序:"<<endl; sort6(head);out(head);}{ cout<<"按平均成绩排序:"<<endl;sort7(head);out(head);}}case 5:{ cout<<"删除:"<<endl;cout<<"要删除的记录的学号为:";cin>>g;delete_d(head,g);}case 6:{ cout<<"帮助和关于"<<endl;}case 7:{ cout<<"退出";break;}}}。
1.2.3.4.题目:学生成绩管理系统5.基本要求(1)要求用Visual C++语言来实现一个简单的学生成绩管理系统,该系统完成之后,基本上要能够无错运行,能达到学生成绩管理系统的基本要求。
(2)各个功能分别使用函数来完成,主函数和各个函数分别存放在不同的.CPP文件中,要求使用头文件。
(3)准备系统模拟的数据,不得少于10条。
(4)成绩管理程序至少应具备以下功能:1)输入:学生的基本信息,包括学号.姓名.性别.籍贯. Visual C++成绩.英语成绩.物理成绩等;2)计算:每个学生的总成绩.平均成绩.所有学生单科的平均成绩,找出总成绩和单科成绩最高的学生并输出;3)查询:可以按学号.姓名. Visual C++成绩查询4)4)排序:可以按学号.姓名. Visual C++成绩. 英语成绩.物理成绩.总成绩.平均成绩等进行排序并输出;5)删除:删除某条记录;6)帮助和关于;7)退出:退出整个系统的运行。
8)可以增加更多的菜单项,比如设置颜色.字体风格等。
程序如下:#include<iostream.h>#include<string.h>struct node{int num;char name[10];char sex[10];char jiguan[10];float Cscore;float Escore;float Pscore;float sum;float average;node *next;};node *create(){node *head;node *p,*pend;int a;char b[10];char c[10];char f[10];float d1,d2,d3;cout<<"请输入学号,姓名,性别,籍贯,C++成绩,英语成绩,物理成绩:";cin>>a>>b>>c>>f>>d1>>d2>>d3;head=0;int i=0;while(i<2){p=new node;p->num=a;strcpy(p->name,b);strcpy(p->sex,c);strcpy(p->jiguan,f);p->Cscore=d1;p->Escore=d2;p->Pscore=d3;p->sum=(d1+d2+d3);p->average=(d1+d2+d3)/3;if(head==0){head=p;pend=p;}else{ pend->next=p;pend=p;}i++;cout<<"请输入学号,姓名,性别,籍贯,C++成绩,英语成绩,物理成绩:";cin>>a>>b>>c>>f>>d1>>d2>>d3;}if(head) pend->next=0;return head;}void print(node *head){node *p;float m,n,k;p=head;while(p){m+=p->Cscore;n+=p->Escore;k+=p->Pscore;p=p->next;}m/=3;n/=3;k/=3;node *p1,*p2,*p3,*p4,*p5;p1=p2=p3=p4=p5=head;while(p2){ if(p2->sum>p1->sum) p1=p2;if(p2->Cscore>p3->Cscore) p3=p2;if(p2->Escore>p4->Escore) p4=p2;if(p2->Pscore>p5->Pscore) p5=p2;p2=p2->next;}cout<<"总成绩最高的学生:";cout<<p1->num<<'\t'<<p1->name<<'\t'<<p1->sex<<'\t'<<p 1->jiguan<<'\t'<<p1->Cscore<<'\t'<<p1->Escore<<'\t'<<p1->Pscore<<endl;cout<<"C++成绩最高的学生:";cout<<p3->num<<'\t'<<p3->name<<'\t'<<p3->sex<<'\t'<<p 3->jiguan<<'\t'<<p3->Cscore<<'\t'<<p3->Escore<<'\t'<<p3->Psc ore<<endl;cout<<"英语成绩最高的学生:";cout<<p4->num<<'\t'<<p4->name<<'\t'<<p4->sex<<'\t'<<p 4->jiguan<<'\t'<<p4->Cscore<<'\t'<<p4->Escore<<'\t'<<p4->Psc ore<<endl;cout<<"物理成绩最高的学生:";cout<<p5->num<<'\t'<<p5->name<<'\t'<<p5->sex<<'\t'<<p 5->jiguan<<'\t'<<p5->Cscore<<'\t'<<p5->Escore<<'\t'<<p5->Psc ore<<endl;}void search(node *head,int data){node *p;int m=0;p=head;if(head->num==data){m=1;}while(p->next&&p->num!=0)p=p->next;if(p->num==data){m=1;}if(m==1)cout<<p->num<<'\t'<<p->name<<'\t'<<p->sex<<'\t'<<p->jiguan <<'\t'<<p->Cscore<<'\t'<<p->Escore<<'\t'<<p->Pscore<<endl;else cout<<"查询失败"<<endl;}void search(node *head,char n[10]){node *p;int m=0;p=head;if(strcmp(head->name,n)==0){m=1;}while(p->next&&(p->name,n)!=0)p=p->next;if(strcmp(p->name,n)==0)m=1;}if(m==1)cout<<p->num<<'\t'<<p->name<<'\t'<<p->sex<<'\t'<<p->jiguan <<'\t'<<p->Cscore<<'\t'<<p->Escore<<'\t'<<p->Pscore<<endl;else cout<<"查询失败"<<endl;}node *sort1(node *head){node *p=head,*p1,*p2;while(p->next!=0){ p1=p;p2=p->next;while(p2!=0){if(p2->num<p1->num)p1=p2;p2=p2->next;}if(p!=p1)int r;char x[10];float s,t,i,j,h;r=p->num;strcpy(x,p->name);s=p->Cscore;t=p->Escore;i=p->Pscore;j=p->sum;h=p->average;p->num=p1->num;strcpy(p->name,p1->name);p->Cscore=p1->Cscore;p->Escore=p1->Escore;p->Pscore=p1->Pscore;p->sum=p1->sum;p->average=p1->average;p1->num=r;strcpy(p1->name,x);p1->Cscore=s;p1->Escore=t;p1->Pscore=i;p1->sum=j;p1->average=h;}p=p->next;}return head;}node *sort2(node *head){node *p=head,*p1,*p2;while(p->next!=0){ p1=p;p2=p->next;while(p2!=0){if(strcmp(p2->name,p1->name)<0) p1=p2;p2=p2->next;}if(p!=p1){int r;char x[10];float s,t,i,j,h;r=p->num;strcpy(x,p->name);s=p->Cscore;t=p->Escore;i=p->Pscore;j=p->sum;h=p->average;p->num=p1->num;strcpy(p->name,p1->name);p->Cscore=p1->Cscore;p->Escore=p1->Escore;p->Pscore=p1->Pscore;p->sum=p1->sum;p->average=p1->average;p1->num=r;strcpy(p1->name,x);p1->Cscore=s;p1->Escore=t;p1->Pscore=i;p1->sum=j;p1->average=h;}p=p->next;}return head;}node *sort3(node *head){node *p=head,*p1,*p2;while(p->next!=0){ p1=p;p2=p->next;while(p2!=0){if(p2->Cscore<p1->Cscore)p1=p2;p2=p2->next;}if(p!=p1){int r;char x[10];float s,t,i,j,h;r=p->num;strcpy(x,p->name);s=p->Cscore;t=p->Escore;i=p->Pscore;j=p->sum;h=p->average;p->num=p1->num;strcpy(p->name,p1->name);p->Cscore=p1->Cscore;p->Escore=p1->Escore;p->Pscore=p1->Pscore;p->sum=p1->sum;p->average=p1->average;p1->num=r;strcpy(p1->name,x);p1->Cscore=s;p1->Escore=t;p1->Pscore=i;p1->sum=j;p1->average=h;}p=p->next;}return head;p=head;}node *sort4(node *head){node *p=head,*p1,*p2;while(p->next!=0){ p1=p;p2=p->next;while(p2!=0){if(p2->Escore<p1->Escore)p1=p2;p2=p2->next;}if(p!=p1){int r;char x[10];float s,t,i,j,h;r=p->num;strcpy(x,p->name);s=p->Cscore;t=p->Escore;i=p->Pscore;j=p->sum;h=p->average;p->num=p1->num;strcpy(p->name,p1->name);p->Cscore=p1->Cscore;p->Escore=p1->Escore;p->Pscore=p1->Pscore;p->sum=p1->sum;p->average=p1->average;p1->num=r;strcpy(p1->name,x);p1->Cscore=s;p1->Escore=t;p1->Pscore=i;p1->sum=j;p1->average=h;}p=p->next;}return head;}node *sort5(node *head){node *p=head,*p1,*p2;while(p->next!=0){ p1=p;p2=p->next;while(p2!=0){if(p2->Pscore<p1->Pscore)p1=p2;p2=p2->next;}if(p!=p1){int r;char x[10];float s,t,i,j,h;r=p->num;strcpy(x,p->name);s=p->Cscore;t=p->Escore;i=p->Pscore;j=p->sum;h=p->average;p->num=p1->num;strcpy(p->name,p1->name);p->Cscore=p1->Cscore;p->Escore=p1->Escore;p->Pscore=p1->Pscore;p->sum=p1->sum;p->average=p1->average;p1->num=r;strcpy(p1->name,x);p1->Cscore=s;p1->Escore=t;p1->Pscore=i;p1->sum=j;p1->average=h;}p=p->next;}return head;}node *sort6(node *head) {node *p=head,*p1,*p2;while(p->next!=0){ p1=p;while(p2!=0){if(p2->sum<p1->sum)p1=p2;p2=p2->next;}if(p!=p1){int r;char x[10];float s,t,i,j,h;r=p->num;strcpy(x,p->name);s=p->Cscore;t=p->Escore;i=p->Pscore;j=p->sum;h=p->average;p->num=p1->num;strcpy(p->name,p1->name);p->Cscore=p1->Cscore;p->Escore=p1->Escore;p->Pscore=p1->Pscore;p->average=p1->average;p1->num=r;strcpy(p1->name,x);p1->Cscore=s;p1->Escore=t;p1->Pscore=i;p1->sum=j;p1->average=h;}p=p->next;}return head;}node *sort7(node *head) {node *p=head,*p1,*p2;while(p->next!=0){ p1=p;p2=p->next;while(p2!=0){if(p2->average<p1->average)p1=p2;p2=p2->next;}if(p!=p1){int r;char x[10];float s,t,i,j,h;r=p->num;strcpy(x,p->name);s=p->Cscore;t=p->Escore;i=p->Pscore;j=p->sum;h=p->average;p->num=p1->num;strcpy(p->name,p1->name);p->Cscore=p1->Cscore;p->Escore=p1->Escore;p->Pscore=p1->Pscore;p->sum=p1->sum;p->average=p1->average;p1->num=r;strcpy(p1->name,x);p1->Cscore=s;p1->Escore=t;p1->Pscore=i;p1->sum=j;p1->average=h;}p=p->next;}return head;}void out(node *head){node *p=head;while(p){cout<<p->num<<'\t'<<p->name<<'\t'<<p->sex<<'\t'<<p->ji guan<<'\t'<<p->Cscore<<'\t'<<p->Escore<<'\t'<<p->Pscore<<en dl;p=p->next;}}node *delete_d(node *head ,int g){node *p1,*p2;if (head->num==g){p2=head;head=head->next;delete p2;cout<<"成功删除记录"<<endl;}else{ p1=p2=head;while(p2->num!=g&&p2->next!=0) { p1=p2;p2=p2->next;}if(p2->num==g){ p1->next=p2->next;delete p2;cout<<"成功删除记录"<<endl;}else cout<<"没有找到要删除的记录"<<endl;}return head;}void main(){cout<<"学生成绩管理统系"<<endl;cout<<"菜单:"<<endl;cout<<"1:输入"<<'\t'<<"2:计算"<<'\t'<<"3:查询"<<'\t'<<"4:排序"<<'\t'<<"5:删除"<<'\t'<<"6:帮助和关于"<<'\t'<<"7:退出"<<endl;int m;cout<<"输入选项:";cin>>m;node *head;int k,data,g,f;char n[10];switch (m){case 1:{ cout<<"输入:"<<endl;head=create();}case 2:{ cout<<"计算:"<<endl;print(head);}case 3:{ cout<<"查询:"<<endl;cout<<"选择查询的方式:";cin>>k;if(k==1){ cout<<"按学号查询:"<<endl;cout<<"输入学号:";cin>>data;search(head,data);}if(k==2){ cout<<"按姓名查询:"<<endl;cout<<"输入姓名:";cin>>n;search(head,n);}}case 4:{cout<<"排序:"<<endl;cout<<"选择排序的方式:";cin>>f;if(f==1){ cout<<"按学号排序:"<<endl;sort1(head);out(head);}if(f==2){ cout<<"按姓名排序:"<<endl;sort2(head);}if(f==3){ cout<<"按VC++成绩排序:"<<endl;sort3(head);out(head);}if(f==4){ cout<<"按英语成绩排序:"<<endl;sort4(head);out(head);}if(f==5){ cout<<"按物理成绩排序:"<<endl;sort5(head);out(head);}if(f==6){ cout<<"按总成绩排序:"<<endl; sort6(head);out(head);}{ cout<<"按平均成绩排序:"<<endl;sort7(head);out(head);}}case 5:{ cout<<"删除:"<<endl;cout<<"要删除的记录的学号为:";cin>>g;delete_d(head,g);}case 6:{ cout<<"帮助和关于"<<endl;}case 7:{ cout<<"退出";break;}}}。
学生成绩管理系统c语言课程设计1. 介绍学生成绩管理系统是一种可以帮助学校或教育机构管理学生的成绩信息的软件系统。
它能够记录和管理学生的各门课程的成绩,提供成绩查询、统计分析以及生成报表的功能。
在这个项目中,我们将使用C语言来设计和实现一个简单的学生成绩管理系统。
2. 功能需求2.1 学生信息管理•添加学生信息:输入学生的学号、姓名、性别、年龄等基本信息,并将其保存到系统中。
•修改学生信息:根据学生的学号或姓名,找到对应的学生信息,并允许修改其基本信息。
•删除学生信息:根据学生的学号或姓名,找到对应的学生信息,并从系统中删除。
2.2 成绩管理•录入学生成绩:输入学生的学号或姓名,根据学号或姓名找到对应的学生信息,并记录其各门课程的成绩。
•查询学生成绩:根据学生的学号或姓名,找到对应的学生信息,并显示其各门课程的成绩。
•统计学生成绩:计算学生的总分、平均分等统计信息,并按照成绩排名进行排序并显示。
•生成成绩报表:将学生的成绩信息按照一定的格式输出到文件中,以方便查阅和打印。
2.3 界面设计•主菜单:显示系统的功能选项,包括学生信息管理、成绩管理、退出等选项。
•学生信息管理菜单:显示学生信息管理的功能选项,包括添加学生信息、修改学生信息、删除学生信息等选项。
•成绩管理菜单:显示成绩管理的功能选项,包括录入学生成绩、查询学生成绩、统计学生成绩、生成成绩报表等选项。
•输入提示:在功能选项中,根据需要给出相应的输入提示,以引导用户正确地操作系统。
3. 设计思路3.1 数据结构设计为了实现学生成绩管理系统,我们需要设计合适的数据结构来存储学生信息和成绩。
在这个项目中,我们可以使用结构体来表示学生信息,如下所示:struct Student {int id; // 学号char name[20]; // 姓名char gender[10]; // 性别int age; // 年龄float grades[5]; // 各门课程成绩};3.2 模块设计为了实现功能需求中的各项功能,我们需要设计相应的模块来实现。
成绩管理系统c语言课程设计一、课程目标知识目标:1. 让学生掌握C语言基础,包括数据类型、控制结构、函数等基本概念。
2. 使学生理解成绩管理系统的需求分析、功能模块划分及系统设计流程。
3. 帮助学生掌握文件操作、内存分配等C语言高级应用。
技能目标:1. 培养学生运用C语言解决实际问题的能力,能独立完成成绩管理系统的设计和实现。
2. 提高学生的编程技能,使其能够熟练使用C语言编写模块化、结构化的程序代码。
3. 培养学生团队协作、沟通表达的能力,能在项目开发过程中进行有效的分工与合作。
情感态度价值观目标:1. 激发学生对计算机编程的兴趣和热情,培养其主动学习和探索的精神。
2. 培养学生严谨、细心的编程态度,使其认识到编程过程中细节的重要性。
3. 增强学生的自信心和责任感,使其在项目实践中体验到成功的喜悦和团队合作的乐趣。
课程性质:本课程为实践性较强的课程,要求学生动手编程实现成绩管理系统,将理论知识与实际应用相结合。
学生特点:学生已经具备一定的C语言基础,具有较强的学习能力和好奇心,但可能缺乏项目实践经验。
教学要求:结合学生特点,注重理论与实践相结合,强调编程实践,提高学生解决实际问题的能力。
在教学过程中,关注学生的个体差异,进行个性化指导,确保课程目标的实现。
通过课程学习,使学生达到预定的学习成果,为后续相关课程打下坚实基础。
二、教学内容1. C语言基础知识回顾:数据类型、变量、运算符、控制结构(顺序、选择、循环)及基本输入输出函数。
2. 函数与模块化编程:函数定义、调用、参数传递及模块化设计理念。
3. 结构体与指针:结构体的定义与应用、指针的概念及指针操作。
4. 文件操作:文件打开、关闭、读写操作以及文件指针的使用。
5. 成绩管理系统需求分析:系统功能模块划分、界面设计及功能描述。
6. 成绩管理系统功能实现:学生信息管理、课程信息管理、成绩录入与查询等功能模块的编写。
7. 系统测试与优化:单元测试、集成测试、性能优化及错误处理。
VC++课程设计设计项目:学生成绩管理系统设计者:张守阳(20102973)班级:计本10级二班使用软件: VC++6.0使用数据库: ACCESS设计流程一、设计理念开发一款学生成绩管理程序,实现学生基本信息的录入、查询及浏览和修改操作。
以及学生成绩的录入、查询、浏览以及统计分析等功能。
以上功能以可视化界面方式进行操作,并将学生成绩信息保存。
二、数据库设计在这个程序中,所用到的数据库是ACCESS数据库。
在数据库中,添加了8个表,分别是NO1OBJECT、NO1STUDENT、NO1STUINFO、NO1TEACHER、NO2OBJECT、NO2STUDENT、NO2STUINFO、NO2TEACHER.这8个表分别记录着两个班的:成绩概况、学生成绩、学生信息、教师信息。
三、程序设计此成绩管理系统共有两个模块:一个是学生成绩管理模块,一个是学生信息管理模块。
在登录成功后(登录用户名和密码都是:admin)会出现主窗口。
在主窗口中可以通过单击两个模块的按钮实现来实现两个模块间的切换。
学生成绩模块所实现的功能是:根据班级选项显示学上成绩信息,并且实现成绩的添加、修改、删除、查询功能。
学生信息模块能够实现学生信息的显示、添加、修改和删除功能。
四、此程序的介绍此程序是基于对话框的MFC程序。
所有的弹出式对话框是模态对话框,由于用到的对话框较多,所以定义的类较多,看起来有点眼花缭乱。
由于我对MFC掌握程度有限,这个程序做的有点粗糙,既不美观,在功能上也有许多不尽人意的地方,或许还会存在bug。
五、程序的实现1)、修改APP类由于此程序用到数据库,所以需要先连接数据源。
此程序通过采用代码来连接到所设计的数据源。
首先将设计的数据库复制到工程所在根目录下,再在APP中的initInstance()函数中添加如下代码:///////加载数据源if (!AfxSocketInit()){AfxMessageBox(IDP_SOCKETS_INIT_FAILED);return FALSE;}CString sPath;GetModuleFileName(NULL,sPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);sPath.ReleaseBuffer ();int nPos;nPos=sPath.ReverseFind ('\\');sPath=sPath.Left (nPos);nPos=sPath.ReverseFind('\\');sPath=sPath.Left (nPos);CString lpszFile = sPath + "\\mydb.mdb";char* szDesc;int mlen;szDesc=new char[256];sprintf(szDesc,"DSN=%s? DESCRIPTION=TOC support source? DBQ=%s?FIL=MicrosoftAccess? DEFAULTDIR=%s?? ","mydb",lpszFile,sPath);mlen = strlen(szDesc);for (int i=0; i<mlen; i++){if (szDesc[i] == '?')szDesc[i] = '\0';}if (FALSE == SQLConfigDataSource(NULL,ODBC_ADD_DSN,"Microsoft Access Driver (*.mdb)\0",(LPCSTR)szDesc))AfxMessageBox("SQLConfigDataSource Failed");try{CString strConnect;strConnect.Format("DSN=mydb;");if(!m_DB.OpenEx(strConnect,CDatabase::useCursorLib)){AfxMessageBox("Unable to Connect to the Specified Data Source");return FALSE ;}}catch(CDBException *pE){pE->ReportError();pE->Delete();return FALSE;}//////////////////////////////其中m_DB是定义的一个CDatabase 对象,用来指向数据库mymdb。
c语言学生成绩管理系统课程设计一、课程目标知识目标:1. 学生能理解C语言在开发学生成绩管理系统中的应用和重要性。
2. 学生掌握C语言中的基本数据类型、运算符、控制结构等基础知识,并能运用到成绩管理系统的设计与实现中。
3. 学生能掌握文件操作、数组、结构体等C语言高级特性,用以存储、查询和管理学生成绩。
技能目标:1. 学生能够运用所学知识,设计并编写一个简单的学生成绩管理系统。
2. 学生通过实际操作,培养解决问题的能力,包括分析需求、设计算法、编写程序和测试代码。
3. 学生通过小组合作,提升团队协作能力和项目管理的实践技能。
情感态度价值观目标:1. 学生在学习过程中培养对编程的兴趣和热情,增强对信息技术的认同感。
2. 学生通过解决实际问题,体会编程带来的成就感,激发进一步学习的动力。
3. 学生在团队合作中学会相互尊重、倾听和沟通,培养积极向上的情感态度。
课程性质:本课程是计算机科学与技术学科的一门实践性课程,强调理论与实践相结合,注重培养学生的实际操作能力和创新思维。
学生特点:高年级学生对C语言有一定的基础知识,具备一定的编程能力和问题解决能力。
教学要求:课程要求学生在理解基本概念的基础上,通过项目驱动的教学方式,动手实践,将理论知识转化为实际应用。
通过课程学习,学生应达到以上设定的知识、技能和情感态度价值观目标,为后续的深入学习打下坚实基础。
二、教学内容本课程教学内容主要包括以下几部分:1. C语言基础知识回顾:数据类型、变量、运算符、控制结构等,确保学生具备扎实的编程基础。
2. 文件操作:文件打开、关闭、读写等操作,为成绩管理系统中的数据持久化提供支持。
3. 数组与字符串:数组的使用、字符串处理,用于存储和管理学生成绩信息。
4. 结构体:自定义结构体类型,用于表示学生信息和成绩。
5. 函数:模块化编程,提高代码可读性和可维护性。
6. 项目实践:设计并实现一个学生成绩管理系统,涵盖以下功能:- 录入学生信息- 修改学生信息- 删除学生信息- 查询学生信息- 成绩排名- 成绩统计分析7. 教学大纲:- 第一周:C语言基础知识回顾,数组与字符串操作- 第二周:结构体、函数,文件操作- 第三周:项目需求分析,设计系统框架- 第四周:编写代码,实现各功能模块- 第五周:系统测试,优化代码,撰写项目报告教学内容与教材关联性:本课程教学内容紧密结合教材中的相关章节,如数据类型、控制结构、文件操作等,确保学生所学知识的系统性和科学性。
c语言学生成绩管理系统课程设计一、教学目标本课程的教学目标是使学生掌握C语言学生成绩管理系统的开发方法,培养学生的编程能力和实际应用能力。
具体分为以下三个部分:1.知识目标:学生需要掌握C语言的基本语法、数据结构、函数、文件操作等编程知识,了解学生成绩管理系统的需求分析和系统设计方法。
2.技能目标:学生能够运用C语言独立完成一个学生成绩管理系统的设计和实现,具备一定的编程实践能力和问题解决能力。
3.情感态度价值观目标:培养学生对计算机科学的兴趣和热情,增强学生对技术改变生活的认识,培养学生的创新精神和团队合作意识。
二、教学内容教学内容以教材《C语言程序设计》为主线,结合实际应用需求,安排如下:1.C语言基础知识:数据类型、运算符、控制结构、数组、字符串等。
2.函数与模块化编程:函数定义与调用、局部变量与全局变量、递归、文件操作等。
3.数据结构:链表、栈、队列、树等。
4.学生成绩管理系统设计:需求分析、系统设计、模块划分、编程实现等。
5.调试与优化:调试方法、性能分析、代码优化等。
三、教学方法本课程采用讲授法、案例分析法、实验法等多种教学方法相结合,以激发学生的学习兴趣和主动性。
1.讲授法:用于传授C语言基本语法和编程原理,帮助学生建立扎实的理论基础。
2.案例分析法:通过分析实际案例,让学生了解学生成绩管理系统的需求分析和设计方法,提高学生的实际应用能力。
3.实验法:安排实验课,让学生动手编写代码,培养学生的编程实践能力和问题解决能力。
四、教学资源教学资源包括教材、多媒体资料、实验设备等,以支持教学内容和教学方法的实施,丰富学生的学习体验。
1.教材:《C语言程序设计》。
2.多媒体资料:教学PPT、视频教程、在线编程练习等。
3.实验设备:计算机、网络设备、编程环境等。
五、教学评估教学评估是检验学生学习成果的重要手段,主要包括以下几个方面:1.平时表现:通过课堂参与、提问、讨论等方式评估学生的学习态度和积极性。
C简单学生成绩管理系统C课程设计Newly compiled on November 23, 2020C++学生成绩管理系统要求用C++语言编写学生成绩管理系统,要求能进行添加删除修改输入输出等的操作,并能使用面相对像原理对此系统进行实现。
学生成绩管理系统分析:学生成绩管理系统分为8个模块,分别是:添加学生信息,输出学生成绩,查找学生成绩,修改学生成绩,删除学生成绩,学生成绩排序,保存数据到文件和读取文件中学生成绩的模块。
学生成绩管理系统结构:各个子函数功能及其流程:1.首先定义一个学生类Class Student;并定义其各个私有变量和公有函数2.Student();构造函数,用于初始化学生类中的各个变量并记录3.Add();函数:用于添加学生信息的函数包括学号姓名成绩等的内容4.Output();函数:用于输出学生信息,包括学号姓名各科及总分平均成绩5.Find();函数:用于查找学生各项信息。
6.modify();函数:用于修改学生各项信息。
7.delete();函数:用于删除学生信息。
();函数:对学生各项信息进行排序操作。
8.save()和load();函数:将学生信息保存到文件中,并在需要的时候调用该文件将其中的学生信息显示出来9.“=”“<<”“>>”符号的重载:在各个函数处理数据过程中对这些的调用处理函数源代码:此函数源代码在VisualC++环境下编译通过。
具体如下:#include""#include""#include""#include""#include""#include""#include""class student ame,n1)==0){temp=stu[j];f3=1;}}if(f3==0)cout<<"对不起,没有你要查找的学生成绩"<<endl;else{cout<<" ---------------------------------------------------------------------------\n";cout<<" number name sex math C++ English total average\n";cout<<" --------------------------------------------------------------------------- \n";cout<<" "<<<<" "<<<<" "<<<<" "<<[0]<<" "<<[1]<<" "<<[2]<<" "<<<<" "<<<<endl;}getch();}void student::modify() ame,n2)==0){t=j;f4=1;}}if(f4==0)cout<<"对不起,没有你要修改的学生成绩"<<endl;else{cout<< "请输入学号: ";cin>>stu[t].number;cout<< " 姓名: ";cin>>stu[t].name;cout<< " 性别 : ";cin>>stu[t].sex;cout<< " 数学成绩: ";cin>>stu[t].score[0];cout<< " C++成绩: ";cin>>stu[t].score[1];cout<< " 英语成绩: ";cin>>stu[t].score[2];stu[t].total=stu[t].score[0]+stu[t].score[1]+stu[t].score[2];stu[t].average=stu[t].total/3;cout<<" 修改成功 !"<<endl;}getch();}void student::deleted() ame)==0){f5=1;n--;do{stu[i]=stu[i+1];i++;}while(i<=n);}}if(f5==0)cout<<"您要求删除的对象本来就不存在!";cout<<"要继续删除吗(y/n)"<<endl;cin>>c;if(toupper(c)!='Y'&&toupper(c)!='N'){cout<<"输入指令错误!请重新输入Y或N!"<<endl;cin>>c;}}while(toupper(c)=='Y');getch();}void student::sort() verage>stu[i].average)k=j;if(k!=i){s3=stu[i];stu[i]=stu[k];stu[k]=s3;}}cout<<"\n\n排序成功!\n\n";}void student::save() ame<<' '<<stu[i].sex<<' '<<stu[i].number<<' '<<stu[i].score[0]<<' '<<stu[i].score[1]<<' '<<stu[i].score[2]<<''<<stu[i].total<<' '<<stu[i].average<<' ';cout<<"保存成功!"<<endl;}();getch();}void student::load() ame>>stu[i].sex>>stu[i].number>>stu[i].score[0]>>stu[i].score[1]>>stu[i].score[2]>>stu[i].total>>stu[i].average;}cout<<"文件已读取成功!"<<endl;}();getch();}student & student::operator=(student & T) 加学生信息 "<<endl;cout<<"2.输出学生信息 "<<endl;cout<<"3.查找学生信息 "<<endl;cout<<"4.修改学生信息 "<<endl;cout<<"5.删除学生信息 "<<endl;cout<<"6.学生信息排序 "<<endl;cout<<"7.保存数据 "<<endl;cout<<"8.读出数据 "<<endl;cout<<"9.退出系统 "<<endl;cout<<"\n\n请选择(1~9)并按回车键确认:";}int main() //主函数{int choose;student s;do{menu();cin>>choose;switch(choose){case 1: (); break;case 2: (); break;case 3: (); break;case 4: (); break;case 5: (); break;case 6: (); break;case 7: (); break;case 8: (); break;default : break;}}while(choose!=0);}。
c语言课程设计报告学生成绩管理系统一、教学目标本课程旨在让学生掌握C语言的基本语法和编程技巧,通过实现一个学生成绩管理系统,培养学生运用C语言解决实际问题的能力。
具体目标如下:1.知识目标:–掌握C语言的数据类型、运算符、控制结构、函数等基本语法。
–理解结构体和文件操作等相关知识。
2.技能目标:–能够运用C语言编写简单的程序。
–学会使用C语言实现数据的输入、输出和处理。
–掌握使用结构体创建学生成绩数据结构,并实现对成绩的增删改查等操作。
3.情感态度价值观目标:–培养学生对编程的兴趣,增强自信心。
–培养学生的团队协作能力和解决问题的能力。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构、文件操作等。
具体安排如下:1.C语言基本语法:数据类型、变量、运算符、控制结构、函数等。
2.数据结构:结构体、数组、指针等。
3.文件操作:文件的打开、关闭、读写等。
4.学生成绩管理系统:实现一个学生成绩管理系统,包括学生的增删改查、成绩的排序、统计等功能。
三、教学方法本课程采用讲授法、案例分析法和实验法相结合的教学方法。
1.讲授法:用于讲解C语言的基本语法和概念。
2.案例分析法:通过分析实际案例,让学生学会运用C语言解决实际问题。
3.实验法:让学生动手实践,编写程序,培养实际编程能力。
四、教学资源1.教材:《C程序设计语言》或《C语言入门教程》。
2.参考书:《C Primer Plus》、《C语言编程思想》等。
3.多媒体资料:教学PPT、视频教程等。
4.实验设备:计算机、网络等。
五、教学评估本课程的评估方式包括平时表现、作业、考试等。
评估方式应客观、公正,能够全面反映学生的学习成果。
具体安排如下:1.平时表现:占课程总评的30%,包括课堂参与度、提问回答、小组讨论等。
2.作业:占课程总评的30%,包括课后练习、编程作业等。
3.考试:占课程总评的40%,包括期中考试和期末考试。
六、教学安排本课程的教学安排如下:1.教学进度:按照教材的章节进行教学,确保在有限的时间内完成教学任务。
学生成绩管理系统c语言课程设计一、课程目标知识目标:1. 让学生掌握C语言中结构体、数组、函数等基本知识点的综合运用,能够设计并实现一个学生成绩管理系统;2. 让学生了解并掌握文件操作在C语言中的实现方法,能够完成数据的存储与读取;3. 让学生理解模块化编程的思想,能够将复杂的程序分解为多个简单、独立的功能模块。
技能目标:1. 培养学生运用C语言解决实际问题的能力,提高编程技巧;2. 培养学生分析问题、设计算法、编写程序、调试程序的能力;3. 培养学生团队协作能力,能够与他人共同完成一个项目。
情感态度价值观目标:1. 培养学生对待编程的兴趣和热情,激发学生学习C语言的积极性;2. 培养学生认真负责、严谨细致的工作态度,养成良好的编程习惯;3. 培养学生善于思考、勇于创新的精神,提高学生的自主学习能力。
分析课程性质、学生特点和教学要求,本课程将目标分解为以下具体学习成果:1. 能够独立设计并实现一个具备基本功能的学生成绩管理系统;2. 能够运用所学知识,完成对学生成绩的增、删、改、查等操作;3. 能够通过团队协作,优化系统功能,提高系统性能;4. 能够对编程过程中遇到的问题进行自主分析、解决,并在实践中不断总结经验,提高编程能力。
二、教学内容根据课程目标,本章节的教学内容主要包括以下几部分:1. C语言基础回顾:结构体、数组、函数的定义与使用;2. 文件操作:文件的打开、关闭、读写操作;3. 模块化编程:功能模块的划分、接口设计、实现与调用;4. 学生成绩管理系统需求分析:功能模块划分、数据结构设计;5. 学生成绩管理系统的设计与实现:各功能模块的具体实现;6. 团队协作与项目实践:项目分工、进度安排、协作沟通。
具体教学大纲安排如下:1. 复习C语言基础知识,明确课程所需掌握的基本概念(1课时);2. 讲解文件操作原理,并通过示例演示文件操作在C语言中的实现(2课时);3. 介绍模块化编程思想,分析学生成绩管理系统功能模块划分及接口设计(2课时);4. 分析学生成绩管理系统需求,引导学生进行数据结构设计(2课时);5. 指导学生进行学生成绩管理系统的设计与实现,分阶段完成各功能模块(6课时);6. 安排团队协作项目实践,确保学生在实践中掌握所学知识,提高编程能力(4课时)。
c语言学生成绩管理系统课程设计一、教学目标本课程旨在通过学习C语言学生成绩管理系统的设计与实现,使学生掌握C语言编程的基本技能,培养其软件开发和项目管理的能力。
具体目标如下:1.知识目标:学生需掌握C语言的基本语法、数据结构、函数、指针等核心概念,并理解学生成绩管理系统的需求分析和系统设计方法。
2.技能目标:学生能运用C语言独立编写简单的程序,并具备成绩管理系统的基本开发能力,包括数据库设计、界面实现和功能编程。
3.情感态度价值观目标:通过项目驱动的教学方式,培养学生团队协作的精神、创新意识和解决实际问题的能力。
二、教学内容本课程的教学内容围绕C语言学生成绩管理系统的开发展开,具体包括:1.C语言基础知识:C语言概述、数据类型、运算符、控制语句等。
2.数据结构:数组、链表、栈和队列等。
3.函数和指针:函数定义、调用、指针运算和应用。
4.文件操作:文件读写、文件管理等。
5.学生成绩管理系统设计:需求分析、数据库设计、界面实现、功能编程、测试与调试。
三、教学方法为提高学生的学习兴趣和主动性,本课程将采用多种教学方法,包括:1.讲授法:用于传授C语言基础知识和系统设计方法。
2.案例分析法:分析实际案例,引导学生学会解决实际问题。
3.实验法:学生动手编写代码,实现成绩管理系统各功能。
4.小组讨论法:分组完成项目,培养团队协作和沟通能力。
四、教学资源为实现课程目标,我们将提供以下教学资源:1.教材:《C程序设计语言》(K&R)、《C语言编程实践》等。
2.参考书:《C Primer Plus》、《C和指针》等。
3.多媒体资料:教学PPT、视频教程、在线代码示例等。
4.实验设备:计算机、网络环境、编程软件(如Visual Studio、Code::Blocks等)。
五、教学评估本课程的教学评估将采用多元化评价方式,全面客观地评价学生的学习成果。
评估方式包括:1.平时表现:考察学生的课堂参与度、提问回答、小组讨论等,占总评的20%。
c 设计学生成绩管理系统课程设计一、教学目标本课程旨在让学生掌握学生成绩管理系统的设计与实现方法,培养学生的编程能力、逻辑思维能力和问题解决能力。
具体目标如下:1.知识目标:使学生了解并掌握C语言的基本语法、数据结构、函数、文件操作等相关知识。
2.技能目标:培养学生能够运用C语言独立设计并实现一个学生成绩管理系统的能力。
3.情感态度价值观目标:培养学生对编程事业的热爱,增强其团队协作意识,提高其面对挑战的勇气和信心。
二、教学内容教学内容以教材《C程序设计》为主线,结合实际情况进行调整。
具体内容包括:1.C语言基本语法和数据类型。
2.控制结构:顺序结构、分支结构、循环结构。
3.函数:函数的定义、调用、参数传递、返回值。
4.数组和字符串:一维数组、多维数组、字符串的基本操作。
5.指针:指针的概念、指针的运算、指针与数组、指针与函数。
6.结构体和联合体:结构体的定义、使用、联合体的定义和使用。
7.文件操作:文件的打开、关闭、读写。
8.学生成绩管理系统的设计与实现:系统需求分析、系统设计、系统实现。
三、教学方法本课程采用讲授法、案例分析法、实验法等多种教学方法,以激发学生的学习兴趣和主动性。
1.讲授法:通过讲解C语言的基本语法、数据结构、函数等内容,使学生掌握相关知识。
2.案例分析法:分析典型的学生成绩管理系统的案例,使学生了解实际应用中的问题解决方法。
3.实验法:引导学生动手实践,设计和实现一个学生成绩管理系统,提高学生的实际操作能力。
四、教学资源为支持教学内容和教学方法的实施,丰富学生的学习体验,我们将提供以下教学资源:1.教材:《C程序设计》。
2.参考书:提供相关的编程实践书籍,以供学生课后自主学习。
3.多媒体资料:制作精美的PPT,以便于讲解和展示。
4.实验设备:提供计算机实验室,让学生能够进行实际的编程练习。
五、教学评估为全面、客观、公正地评估学生的学习成果,本课程采用以下评估方式:1.平时表现:考察学生在课堂上的参与程度、提问回答、小组讨论等,占总评的20%。
c学生成绩管理系统课程设计一、课程目标知识目标:1. 让学生理解学生成绩管理系统的重要性,掌握其基本概念和功能。
2. 使学生掌握数据库的基本操作,如数据录入、查询、更新和删除。
3. 帮助学生掌握数据表之间的关系,了解外键的作用和使用方法。
技能目标:1. 培养学生运用数据库技术设计和实现学生成绩管理系统的能力。
2. 培养学生运用所学知识解决实际问题的能力,如优化数据库性能、处理数据异常等。
3. 提高学生的团队协作能力,学会在项目中分工合作、共同完成任务。
情感态度价值观目标:1. 培养学生对计算机技术的兴趣和热情,提高其学习积极性。
2. 培养学生认真负责的工作态度,养成良好的编程习惯。
3. 增强学生的自信心,使其勇于面对挑战,克服困难。
课程性质分析:本课程属于信息技术学科,结合数据库知识,针对学生成绩管理系统进行设计与实践。
学生特点分析:学生已具备一定的计算机操作能力和编程基础,具有较强的学习能力和探究精神。
教学要求:1. 紧密联系课本知识,注重实践操作,提高学生的实际应用能力。
2. 结合实际案例,引导学生掌握学生成绩管理系统的设计方法和步骤。
3. 注重培养学生的团队协作能力和沟通能力,提高其在项目中的参与度。
二、教学内容1. 学生成绩管理系统概述- 了解学生成绩管理系统的背景和意义- 掌握系统的主要功能和模块划分2. 数据库基础知识- 复习数据库的基本概念和原理- 学习数据库设计的基本步骤和方法3. 数据表设计与操作- 学习创建数据表,定义字段和数据类型- 掌握外键约束的使用,建立数据表之间的关系4. 数据库操作语言- 学习SQL语言的基本语法和操作命令(如SELECT、INSERT、UPDATE、DELETE)- 掌握数据库的查询、插入、更新和删除操作5. 学生成绩管理系统功能实现- 分析系统需求,设计系统功能模块- 学习使用数据库技术实现学生信息、成绩管理等功能6. 系统测试与优化- 掌握系统测试的基本方法,对系统进行功能测试和性能测试- 学习优化数据库性能,提高系统运行效率7. 项目实践与团队协作- 分组进行项目实践,分工合作完成学生成绩管理系统的设计与实现- 学习在项目中沟通协作,解决问题,提高团队工作效率教学内容安排与进度:本课程教学内容分为七个部分,按照以下进度进行:1. 第1周:学生成绩管理系统概述、数据库基础知识2. 第2周:数据表设计与操作3. 第3周:数据库操作语言4. 第4周:学生成绩管理系统功能实现5. 第5周:系统测试与优化6. 第6周:项目实践与团队协作7. 第7周:课程总结与评价教材关联:本教学内容与教材《数据库原理与应用》第3章至第6章内容密切相关,涵盖了数据库设计、数据操作、SQL语言及系统测试等知识点。
1 系统需求说明书1.1系统软件界面介绍1.1系统界面介绍本系统的软件界卖弄是使用C语言编译生成的一个系统操作菜单。
操作菜单界面总共有七个选项可以供用户操作选择,分别为策划给你记录入、成绩查询、成绩删除、成绩修改、成绩统计、成绩查询、显示所有信息、退出系统。
菜单页面下方有可供用户选择操作项目的指令,当用户选择并输入0-6中的任意数字,系统便会进入相应的功能操作。
如果出现错误操作,系统会给出输入错误请从新输入等提示或者自动跳出回到主菜单界面。
1.2系统设计要求本系统设计要求使用C语言以及数据与结构的知识点对系统进行编译。
要求学生熟练掌握数据结构的线性表和链表,以及C怨言的文件读一些操作,结构体、指针等知识点,并且学以致用,熟练应用。
在处理数据时要求采用线性表存放成绩信息,结点的数据域可包括:班级、学号、姓名、课程名称、选课学期和成绩,程序退出时采用文件的形式永久保存成绩信息。
1.3系统设计要求系统的设计主要从以下几大块进行设计体现:头文件的定义,包括数据结构中的函数头、结构体的定义,进行一个总体的规划布局。
将与学生有关的个人信息如班级、学号、姓名等都定义为一个节点型的数据然后在创建链表和指向各个数据的节点。
利用抽象数据类型将不同类型的数据进行管理!其次是主函数的定义和设计,主函数申请并创建一个链表,然后将系统所有的函数功能通过Switch条件语句进行统筹,从而实现对各个子函数的调用。
并且通过文件读写将系统的数据保存到文件当中。
最后便是系统中各个函数块的功能实现。
在写子函数时必须统筹兼顾,考虑到各个方面。
入系统类存的合理分配,如果内存一旦出错系统就回崩溃,信息就有可能出错。
2 系统的分析与设计2.1系统分析系统的主要工作流程图如下,当进入操作主菜单界面时,会有相应的不同的操作选项供用户选择,但操作完成后就晚会到系统主菜单。
图2.1 系统操作流程图2.2系统功能分析系统主要石油几大函数块来实现整个系统的功能。
c 学生成绩管理系统课程设计一、课程目标知识目标:1. 学生能够理解学生成绩管理系统的重要性,掌握其基本功能模块和使用方法。
2. 学生能够运用数据库基础知识,创建并管理学生信息表、成绩表等相关数据表。
3. 学生能够运用结构化查询语言(SQL)进行成绩查询、统计和分析。
技能目标:1. 学生能够运用所学编程语言,设计并实现一个简单的学生成绩管理系统。
2. 学生能够通过实践操作,掌握数据库的设计、创建、查询和优化等技能。
3. 学生能够运用问题解决策略,针对实际需求,对系统进行改进和优化。
情感态度价值观目标:1. 学生能够认识到信息技术在现实生活中的广泛应用,增强对信息技术的学习兴趣。
2. 学生能够在团队协作中发挥自己的优势,培养合作精神和沟通能力。
3. 学生能够遵循道德规范,保护个人隐私,树立正确的价值观。
分析课程性质、学生特点和教学要求:1. 本课程为信息技术课程,旨在培养学生运用信息技术解决实际问题的能力。
2. 学生为初中生,具有一定的计算机操作基础,对编程和数据库知识有一定了解。
3. 教学要求注重实践操作,鼓励学生动手实践,培养实际操作能力。
二、教学内容1. 学生成绩管理系统的基本概念与功能模块介绍- 系统需求分析- 功能模块划分- 数据库设计基本原理2. 数据库基础知识- 数据表创建与管理- 数据类型与约束- 关系运算与SQL语句3. 编程语言应用- 界面设计- 业务逻辑实现- 数据库操作方法4. 学生成绩管理系统实践操作- 系统设计- 编程实现- 测试与优化5. 教学内容安排与进度- 第一周:学生成绩管理系统基本概念与功能模块介绍- 第二周:数据库基础知识学习与应用- 第三周:编程语言应用与系统设计- 第四周:实践操作与测试优化6. 教材章节及内容列举- 第二章 数据库设计基础- 第三章 SQL语言- 第四章 界面设计与编程- 第五章 系统测试与优化教学内容科学性和系统性:本教学内容依据课程目标,结合教材章节,确保学生能够系统掌握学生成绩管理系统的设计与实现。
c语言学生成绩管理系统-数据结构课程设计报告-课程设计c语言学生成绩管理系统-数据结构课程设计报告-课程设计c语言学生成绩管理系统-数据结构课程设计报告|数据结构课程设计要求是这样的1、用c语言编写一个简单的学生信息管理程序,能实现对学生信息的简单管理。
2、具体要求:建立一个4个学生的信息登记表,每个学生的信息包括:学号,姓名,和3门课程的成绩(FOX,C,ENGLISH。
程序运行时显示一个简单的菜单,例如:(1):信息输入(INPUT(2):总分统计(COUNT(3):总分排序(SORT(4):查询(QUERY其中:(1):对4个学生的信息进行输入;(2):对每个学生的3门课程统计总分;(3):对4个学生的总分按降序排序并显示出来;(4):查询输入一个学号后,显示出该学生的有关信息;偶先写了个…#i nclude#i nclude struct stude nt{int num;char n ame[20];int foxscore;int cscore;int en glishscore;struct stude nt *n ext; };void menu() {cout<<" welecome to my student grade management system"<<endl;< p="">cout<<" please follow everyone step in the menu"<<endl;< p="">cout<<" 1.input information"<<endl;< p="">cout<<" 2.total scores"<<endl;< p="">cout<<" 3.sort"<<endl;< p="">cout<<" 4.query"<<endl;< p="">cout<<" ***************************************************"< <endl;< p="">}struct student *creat(struct student *head) // 函数返回的是与节点相同类型的指针{struct student *p1,*p2;p1=p2=(struct student*) malloc(sizeof(struct student)); // 申请新节点cin>>p1->num>>p1->name>>p1->foxscore>>p1->cscor e>>p1- >englishsc ore; // 输入节点的值p1-> next = NULL; // 将新节点的指针置为空while(p1->num>0){if (head==NULL) head=p1; // 空表,接入表头else p2->next=p1; // 非空表,接到表尾p2 = p1;p1=(struct student *)malloc(sizeof(struct student));// 申请下一个新节点cin>>p1->num>>p1->name>>p1->foxscore>>p1->cscore>> p1->englishscore;// 输入节点的值}return head; // 返回链表的头指针}void count(struct student *head){struct student *temp;temp=head; // 取得链表的头指针while(temp!==NULL){ int m; m=temp->foxscore+temp->cscore+temp->englishscore;cout<<m<<="">temp=temp->next; // 跟踪链表增长}void sort(struct student *head){struct student *tp;tp=head;int a;// 定义总分数组int i,j,k;while(temp!==NULL){ a[i]=tp->foxscore+tp->cscore+tp->englishscore;tp=tp->next;i=i+1;}for(j=1;j<=3;j++)// 冒泡法排序for(k=1;k<=4-j;k++)if(a[k]<a[k+1])< p="">{int t=a[k];a[k]=a[k+1];a[k+1]=t;}for(i=1;i<5;i++) cout<<a[i]<<endl;< p="">}void query(struct student *head){struct student *temper;temper=head;int number;cin>>number;for(int i=1;i<=4;i++){if(number==temper->num){cout<<" name is:"<name<<<"="" fox="" p="" score<=""> is:"<foxscore<<endl;< p="">cout<<" c score is:"<cscore<<endl;< p="">cout<<" English score is:"<englishscore<<endl;< p="">cout<<" congratulation,syetem have found what you want to search"<<endl;< p="">}temper=temper->next;}void main(){menu();cout<<" firstly,please input information:"<<endl;< p="">struct student *head;head=NULL; /* 建一个空表*/ head=creat(head); /* 创建单链表*/ cout<<"secondly,count the total score each student:"<<="" p=""> cout<<" thirdly,sorting the total score:"<<endl;< p="">sort(head);}cout<<" enter num that you can search each shtudent''s information"<<endl;< p="">query(head);cout<<" thanks you for use my student grade management system"<<endl;< p="">}编译时候都没有错..debug 输入时候出现了错误..调试运行后发现原来是while 循环出了问题啊修改后#i nclude#i ncludestruct student{int num; char name[20];int foxscore;int cscore;int englishscore; struct student *next;};void menu(){cout<<" welecome to my student grade management system"<<endl;< p="">cout<<" please follow everyone step in the menu"<<endl;< p="">cout<<" 1.input information"<<endl;< p="">cout<<" 2.total scores"<<endl;< p="">cout<<" 3.sort"<<endl;< p="">cout<<" 4.query"<<endl;< p="">cout<<" ***************************************************"< <endl;< p="">}struct student *creat(struct student *head) // 函数返回的是与节点相同类型的指针{struct student *p1,*p2;p1=p2=(struct student*) malloc(sizeof(struct student)); // 申请新节点cin>>p1->num>>p1->name>>p1->foxscore>>p1->cscor e>>p1- >englishsc ore; // 输入节点的值p1-> next = NULL; // 将新节点的指针置为空for(int i=1;i<=4;i++){if (head==NULL) head=p1; // 空表,接入表头else p2->next=p1; // 非空表,接到表尾p2 = p1;p1=(struct student *)malloc(sizeof(struct student));// 申请下一个新节点if(i<=3){ cin>>p1->num>>p1->name>>p1->foxscore>>p1->csco re>>p1- >englishscore ;}// 输入节点的值}return head; // 返回链表的头指针}void count(struct student *head)struct student *temp;temp=head; // 取得链表的头指针for(int i=1;i<=4;i++){int m; m=temp->foxscore+temp->cscore+temp->englishscore;cout<<m<next; // 跟踪链表增长</m<}void sort(struct student *head){struct student *tp;tp=head;int a;// 定义总分数组}int i,j,k;a=tp->foxscore+tp->cscore+tp->englishscore;tp=tp->next;a=tp->foxscore+tp->cscore+tp->englishscore;tp=tp->next;a=tp->foxscore+tp->cscore+tp->englishscore;tp=tp->next;a=tp->foxscore+tp->cscore+tp->englishscore;for(j=1;j<=3;j++)// 冒泡法排序for(k=1;k<=4-j;k++)if(a[k]<a[k+1])< p="">{int t=a[k];a[k]=a[k+1];a[k+1]=t;}for(i=1;i<5;i++) cout<<a[i]<<endl;< p="">void query(struct student *head){struct student *temper;temper=head;int number;cin>>number;for(int i=1;i<=4;i++){if(number==temper->num){cout<<" name is:"<name<<<"="" fox="" p="" score<=""> is:"<foxscore<<<"="" is:"<cscore<<endl;< p="">cout<<" English score is:"<englishscore<<endl;< p="">cout<<" congratulation,syetem have found what youwant to search"<<endl;< p="">}temper=temper->next;void main(){menu();cout<<" firstly,please input information:"<<endl;< p="">struct student *head;head=NULL; /* 建一个空表*/ head=creat(head); /* 创建单链表*/cout<<" secondly,count the total score each student:"<<="" p="">cout<<" thirdly,sorting the total score:"<<endl;< p="">sort(head);cout<<" enter num that you can search each shtudent''sinformation"<<endl;< p="">query(head);cout<<" thanks you for use my student grade management system"<<endl;< p="">} 可以在vc6.0 上面编译通过 ...... 在vc++.net 同样可以...}}</endl;<></endl;<></endl;<></endl;<></endl;<></endl;<></endl;<></a[i]<<endl;<></a[k+1])<></endl;<></endl;<></endl;<></endl;<></endl;<></endl;<></endl;<></endl;<></endl;<></endl;<></endl;<></endl;<></endl;<></endl;<></endl;<></a[i]<<endl;<> </a[k+1])<></m<</endl;<></endl;<></endl;<></endl;<></endl;<></endl;<></endl;<>。
c语言课程设计报告学生成绩管理系统一、课程目标知识目标:1. 学生能理解并掌握C语言基础,包括变量定义、数据类型、运算符、控制结构等。
2. 学生能运用C语言实现学生成绩管理系统的基本功能,如添加、删除、修改、查询学生成绩。
3. 学生了解并掌握文件操作在C语言中的应用,实现对数据的持久化存储。
技能目标:1. 学生能够运用结构体数组管理大量数据,培养数据组织和管理的实际操作能力。
2. 学生通过编程实践,掌握模块化编程方法,提高代码的复用性和可维护性。
3. 学生通过团队协作,培养沟通与协作能力,共同完成学生成绩管理系统的设计与实现。
情感态度价值观目标:1. 学生通过解决实际问题,培养对编程的兴趣,激发探究精神。
2. 学生在团队协作中,学会尊重他人意见,培养合作精神,提高解决问题的信心。
3. 学生认识到编程在生活中的实际应用,增强对计算机科学的认识和热爱。
课程性质:本课程为实践性较强的学科,结合C语言编程知识,以项目驱动的方式进行教学。
学生特点:学生为高中一年级学生,已具备一定的计算机操作能力,对编程有一定了解,但实际操作经验不足。
教学要求:教师需引导学生掌握C语言基础知识,注重实践操作,鼓励学生主动探究、团队协作,培养解决实际问题的能力。
在教学过程中,将课程目标分解为具体的学习成果,以便进行有效的教学设计和评估。
二、教学内容根据课程目标,教学内容分为以下三个部分:1. C语言基础知识:- 变量定义、数据类型、常量与变量- 运算符、表达式、语句- 控制结构:顺序、选择、循环- 函数的定义与调用- 指针与数组2. 学生成绩管理系统功能实现:- 结构体的定义与使用- 结构体数组操作- 系统功能模块划分:添加、删除、修改、查询学生成绩- 函数调用关系分析,实现模块化编程3. 文件操作与数据持久化:- 文件打开、关闭、读写操作- 学生成绩数据的存储与读取- 文件错误处理与异常处理教学大纲安排:第一周:C语言基础知识复习,学习结构体和结构体数组第二周:学生成绩管理系统功能设计,编写添加、删除、修改、查询功能的代码第三周:文件操作学习,实现学生成绩数据的持久化存储,优化系统性能第四周:项目测试、调试与优化,总结交流教学内容与教材关联性:本教学内容与教材《C语言程序设计》相关章节紧密关联,涵盖第3章至第6章的知识点,以及第8章文件操作部分。
任务书摘要管理信息系统正在向着网络化、智能化和集成化等趋势发展。
学生成绩管理系统是为了更好的管理学生考试成绩而开发的数据管理软件。
它对于一个学校是不可缺少的重要部分,它的容对于学校的决策者和管理者来说都至关重要。
学生成绩管理管理系统为用户提供充足的信息和快捷的查询手段,实现学生基本信息、成绩的录入,删除,查询,维护以与成绩的统计分析等几方面的功能,是现实问题的迫切要求。
本系统开发的总体任务是实现学生成绩管理的系统化、规化、自动化。
达到提高学生成绩管理效率的目的。
与传统管理方法相比有明显的优点:查找方便,可靠性高,性好,成本低。
彻底改变了以前繁杂的管理模式,实现全面的、相对集中的、职能化的信息综合管理。
计算机被用到信息管理系统的环境正是适应了当今时代飞速发展的信息时代。
人们深刻的认识到了计算机功能的强大,对于复杂的信息管理,计算机充分发挥着它的优越性。
检索迅速、查找方便、可靠性高、存储量大、性好、寿命长、成本低,这些优点极减轻了学院教学人员的工作量,缩小开支,提高了学生档案管理的效率和准确性,能够合理的安排时间,学生能够尽快的知道自己的考试成绩。
同时,学生管理系统的应用也为今天的教育在未来市场的竞争力有所提高。
目录1.引言32.课题分析73.具体设计过程73.1设计思路83.2程序设计流程图83.3.函数实现说明104.程序运行结果135.软件使用说明146.结论14参考文献16附录:源代码161.引言数据结构在计算机科学界至今没有标准的定义。
个人根据各自的理解的不同而有不同的表述方法:Sartaj Sahni在他的《数据结构、算法与应用》一书中称:“数据结构是数据对象,以与存在于该对象的实例和组成实例的数据元素之间的各种联系。
这些联系可以通过定义相关的函数来给出。
”他将数据对象(data object)定义为“一个数据对象是实例或值的集合”。
Clifford A.Shaffer在《数据结构与算法分析》一书中的定义是:“数据结构是 ADT(抽象数据类型Abstract Data Type)的物理实现。
vc学生成绩管理系统-数据结构课程设计-课程设计vc学生成绩管理系统-数据结构课程设计一、需求分析本演示程序用TC编写,主要用到的数据结构是线性表的链式存储结构。
因为学生成绩管理系统需要经常更新,修改数据。
根据这个特点我们采用了链式存储结构。
它是一种动态存储结构。
根据数据的特点,每一条记录包含多个属性,我们定义了一个结构体Student。
开发目的如下:能对成绩进行录入和修改;能计算每个学生的平均成绩以及各门功课的平均成绩;能根据学号来查相应的学生成绩;能根据学生成绩的高低进行排名。
1、输入的形式和输入值的范围:学生的学号和姓名都为字符型,长度分别为6和5。
输入的学号最多只能有5位,输入的姓名最多只能有4位。
否则会出现乱码。
学生的成绩在0-100之内。
2、输出的形式:以二进制的形式存储在你指定的硬盘里。
3、程序所能达到的功能:每一条记录包括一个学生的学号、姓名、3门成绩、平均成绩。
输入功能:可以一次完成无数条记录的输入。
显示功能:完成全部学生记录的显示。
查找功能:完成按姓名查找学生记录,并显示。
排序功能:按学生平均成绩进行排序。
插入功能:按平均成绩高低插入一条学生记录。
保存功能:将学生记录保存在任何自定义的文件中,如保存在:c:\score。
读取功能:将保存在文件中的学生记录读取出来。
有一个清晰美观界面来调用各个功能4、测试数据:num name Score1 Score2 Score310001 xing 88 98 8610002 wang 99 69 8710003 gong 78 99 89二、概要设计为了实现上述程序功能,需要定义结构体的抽象数据类型和全局变量:ADT Student {数据对象:D={ai|ai∈E lemSet,i=1,2,…,n,n≥0}数据关系:R1={<ai-1,ai>|ai-1, ai∈D,i=2,…,n}基本操作:IntiList(&L)操作结果:构造一个空的线性表LGetElem(L,i,&e)初始条件:线性表L已存在,1≤i≤ListLength(L)。
操作结果:用e返回L中第i个数据元素的值。
ListInsert(&L,I,e)初始条件:线性表L已存在,1≤i≤ListLength(L)+1。
操作结果:在L中第i个位置之前插入新的数据元素e,L的长度加1。
ListDelete(&L,I,e)初始条件:线性表L已存在且非空,1≤i≤ListLength(L)。
操作结果:删除L中第i个数据元素,并用e返回其值,L的长度减1。
}ADT Student下面是我们定义的结构体数组。
整个链式存储结构中,所有在存储的记录(一个学生的信息)在物理位置上是不相邻的,是通过指针把各个结点联系在一起。
每一个结点包含一条记录,包括学生的学号、姓名、三科的成绩、平均成绩、总分等等,存储下面所定义的结构体数组里面。
这个结构体数组贯穿整个系统,可以说是整个系统的核心。
typedef struct stu /*定义结构体数组用于缓存数据*/{char num[6];char name[5];int score[3];int sum;float average;int order;struct stu *next;}STUDENT;三、详细设计整个系统除了主函数外,另外还有10个函数,实现八大功能:输入功能、显示功能、查找功能、排序功能、插入功能、保存功能、读取功能。
各个函数的详细设计说明分别如下:1、主函数 main()利用无限次循环for(;;)和switch()实现各函数的调用,系统根据输入的数字选项来调用相应的函数。
2、初始化函数 STUDENT *init()这是一个无参函数,里面只有一个语句,它的作用是使链表初始化,使head的值为NULL。
比如:没有这个函数的话,在你没有输入任何数据的情况下,去执行显示功能的时候会显示一些乱码!3、菜单选择函数 int menu_select();这是一个无参函数,主要实现“功能选择”的界面,在这个界面里有显示系统的九大功能,根据每个功能前面的序号进行选择,中间还显示系统当前的时间。
等执行完每一个函数功能后,按任一键回到主界面也要通过这个函数来实现!4、输入记录函数 STUDENT *create()这是一个无参函数,用来执行第学生成绩记录的输入,当学生为0时停止输入,函数结束后,带回一个指向链表头的指针head。
算法:先声明一个首节点head,并将head->next设为NULL。
每输入一个数据就声明一个新节点p,把p->next设为NULL,并且链接到之前列表的尾端。
5、显示记录函数 void print(STUDENT *head)这是一个不返回值的有参函数,形参为“链表头的指针”,负责对全部学生成绩记录的输出,不足之处就是不能对学生成绩进行分页显示。
算法:先将p结点的指针指向第一个结点,将p结点(即第一个结点)的数据输出。
然后再将p 结点的指针指向p指针的的指针(即下一结点),将p结点(即第一结点)的数据输出。
重复执行此步聚直到p指针指向NULL为止。
6、查找记录函数 void search(STUDENT *head)这是一个不返回值的有参函数,形参为“链表头的指针”,实现按学号对某个学生进行查找,并显示所查找到的记录。
算法:采用线性查找法往下一个节点查找。
输入所要查找的学生的学号s,设一个指针变量p,先指向第一个结点,当strcmp(p->name,s) && p != NULL时,使p后移一个结点,如果p!=NULL,输出p所指的结点。
Status GetElem _L(LinkList L,int i,ElemType&e) {// L为带头结点的单链表的头指针// 当第i个元素存在时,其值赋给e并返回OK,否则返回ERRORP=L->next;j=1; //初始化,p指向第一个结点,j为计数器While(p&&j<i) { //顺指针向后查找,直到p指向第i个元素或p为空P=L->next;++j;}If(!p||j>i)return ERROR; //第i个元素不存在e=p->data; //取第i个元素return OK;}7、删除记录函数 STUDENT *delete(STUDENT *head)这是一个有参函数,形参为“链表头的指针”,先输入要删除的学生记录的学号,找到后显示该学生信息,等确认后便可按“Y”进行删除。
算法:从p指向的第一个结点开始,检查该结点中的num值是否等于输入的要求删除的那个学号。
如果相等就将该结点删除,如不相等,就将p后移一个结点,再如此进行下去,直到遇到表尾为止。
Status ListDelete _L(LinkList&L,int i,ElemType&e) {//在带头结点的单链线性表L中,删除第i个元素,并由e返回其值p=L;J=0;while(p->next&&j<i-1){//寻找第i个结点,并令P指向其前趋p=p->next;++j;}if(!(p->next)||j>i-1)return ERROR; //删除位置不合理q=p->next;p->next=q->next; //删除并释放结点e=q->data;free(q);return OK;} //ListDelete_L8、排序函数 STUDENT *sort(STUDENT *head)这是一个有参函数,形参为“链表头的指针”,按学生成绩的平均分高低进行排序,还可以显示名次。
8、插入函数 STUDENT *insert(STUDENT *head,STUDENT *new)这是一个有参函数,形参有两个,一个是“链表头的指针”,一个是“待插入指针”,按照原来成绩平均分的高低进行插入,插入后会重新进行排序,并返回。
算法:先将学生的成绩按平均分由高分到低分进行排序,再插入一个新生的结点,要求按平均分的高低顺序插入。
先用指针变量p0指向待插入的结点,p1指向第一个结点。
如果p0->average<p1->average,则待插入的结点不应插在p1所指的结点之前。
此时将p1后移,并使p2指向刚才p1所指的结点。
重复以上的步骤,直到p0->average>=p1->average为止。
这时将p0指向的结点插到p1所指结点之前。
但是如果p1所指的已是表尾结点,则p1就不应后移了。
如果p0->average比所有结点的average都小,则应将p0所指的结点插到链表末尾。
如果插入的位置既不在第一个结点之前,又不在表尾结点之后,则将p0的值赋给p2->,使p2->next指向待插入的结点,然后将p1的值赋给p0->next,使得p0->next指向p1指向的变量。
如果插入位置为第一个结点之前,则将p0赋给head,将p1赋给p0->next。
如果要插到表尾之后,应将p0赋给p1->next,NULL赋给p0->next。
最后再调用排序的函数,将学生成绩重新排序.Status Listinsert _L(LinkList&L,int i,ElemType&e) {//在带头结点的单链线性表L中第i个位置之前插入元素ep=L;j=0;while (p&&j<i-1) {P=p->next;++j;} //寻找第i-1个结点if(!p||j>i-1)return ERROR; //i小于1或者大于表长加1a=(Linklist)malloc(sizeof(LNode)); //生成新结点s->data=e;s->next=p->next;//插入L中return OK;}//ListInsert_L10、保存数据到文件函数 void save(STUDENT *head)这是一个不返回值的有参函数,形参为“链表头的指针”,可以把学生记录保存在电脑上由自己任意命名的二进制文件。
11、从文件读数据函数 STUDENT *load()这是一个不返回值的有参函数,形参为“链表头的指针”,根据输入的文件地址进行读取。
四、调试分析(1)刚开始没有那个初始化函数,程序运行后,没有输入任何数据就试着去执行显示功能,结果显示的是一些乱码。
加入初始化函数后,这种现象也随之消失。
(2)刚开始时,先把成绩按平均分排序,再插入一个学生的成绩,执行显示功能,虽然插入的学生的成绩能正常插入,但该学生的名次为0。