计,虽然还有许多不足之处,但是从中我学到了许多东西。我懂得了我们不能拘泥于所学知识,应对其灵活运用。
通过此次课程的设计使我认识到对知识的掌握不全面,而且感觉我们在学习专业知识的同时还需要再加强其他方面知识的学习,因为编程有时候涉及到其他方面的知识,只有了解了其他方面的知识才能收集资料,然后编程。在编程的过程中,又重新复习了课本,从中学到了许多以前未学到的知识,感觉非常有成就感,特别当自己把程序一点点完善时, 让我对自己更加有信心,让我对数据结构这门课程也更感兴趣了,以前我一直感觉枯燥难学的数据结构,在编程的过程中我也愿意去认真研究学习了。
这次数据结构课程设计中,多亏了同学的耐心帮助。如果没有同学的指导改错,我会花更多的时间去找错误。在以后的学习过程中,我一定会认真负责地对待课本中的每一个知识点,进一步充实自己,提高自己。争取在不断的练习中提高自己的层次。也希望可以在以后的专业课当中多增加一些实践的内容,只有多动手,我们才能不断提高。
6、附录:源程序清单
#include
#include
//数组、结构体 struct Student { };
int num=0; //声明
void input(Student *r); //输入 void output(Student *r); //输出
void searchnum(Student *r); //按 学号及学期 查找 void searchname(Student *r); //按 姓名及学期 查找
void change(Student *r); //按 学号及学期 修改信息
Student *insert(Student *r); //插入信息
int term; int num;
//学期 //学号
//姓名 //成绩1 //成绩2 //成绩3
//总分 //平均分
//结构体
//文件和标准控制台的输入输出
//主要是对cin,cout之类的一些操纵运算,是I/O流控制头
char name[12]; float mark1; float mark2; float mark3; float sum;
float average;
16
void shanchu(Student *r); //按 学号及学期 删除信息
void maopao(Student *r); //按数据结构降序(冒泡)排序 void xuanze(Student *r); //按总分降序(选择)排序
void tongji(Student *r); //统计各科总分和平均分信息
void main() {
cout<<\
cout<<\请选择:\cin>>m; switch(m) { case 1:
input(p); break; output(p); break; searchnum(p);
//输入
cout<<\输入学生的个数:\
cin>>num; //全局变量 Student *p=(Student *)new Student[num]; int m; do{
cout< cout<<\ 菜 单 栏 //定义指针数组,存放学生个数 <-----------------------------*\\n\ cout<<\<1> 输入学生信息并保存到文件 <2> 读取文件并输出学生信息 cout<<\<3> 按学号及学期查询 <4> 按姓名及学期查询 cout<<\<5> 按学号及学期修改信息 <6> 插入信息 cout<<\按学号及学期删除信息 <8> 按数据结构降序(冒泡)排序 cout<<\按总分降序(选择)排序 <10> 统计各科成绩的总分和平均分 *\*\*\*\*\*\ cout<<\ <11> 退出 case 2: case 3: 17 } //输入信息 void input(Student *r) { FILE *fp; int n=0; int i; int t=0; cout< cout<<\请输入学期:\cin>>r[i].term; cout<<\请输入第\个人的学号:\cin>>r[i].num; //t为标志位,1为找到,0为未找到 } break; searchname(p); break; change(p); break; p=insert(p); break; shanchu(p); break; maopao(p); break; xuanze(p); break; tongji(p); break; break; case 4: case 5: case 6: case 7: case 8: case 9: case 10: case 11: //退出 }while(m!=11); 18 fprintf(fp,\ } } fclose(fp); cout<<\文件已经写入\ fprintf(fp,\ rk1,r[n].mark2,r[n].mark3,r[n].term,r[n].sum,r[n].average); } fp=fopen(\if(!fp) { } for(n=0;n cout<<\文件不能打开\exit(0); if(i>=1) { } if(t==1) { } cout<<\请输入姓名:\cin>>r[i].name; cout<<\请输入 高等数学 成绩:\cin>>r[i].mark1; cout<<\请输入 数据结构 成绩:\cin>>r[i].mark2; cout<<\请输入 大学英语 成绩:\cin>>r[i].mark3; r[i].sum=r[i].mark1+r[i].mark2+r[i].mark3; r[i].average=(r[i].mark1+r[i].mark2+r[i].mark3)/3; i--; t=0; continue; //表示有重复 for(n=0;n if(r[n].num==r[i].num) { } cout<<\该学号已存在!!\t=1; 19 //输出信息 void output(Student *r) { int m; system(\清屏 if(num>0) { FILE *fp; if((fp=fopen(\只读 { } for(int n=0;n cout<<\文件不能打开\exit(0); fscanf(fp,\ } //按学号及学期查找 void searchnum(Student *r) { } else cout<<\未输入任何信息!!\cout<<\文件已经读入\ cout<<\ 学 生 信 息 如 下 } fclose(fp); //关闭文件 [n].term,&r[n].sum,&r[n].average); <------------------------------\ cout<<\学号\姓名\高等数学\数据结构 <<\大学英语\学期\总分\平均分\ \设置输出宽度 cout<<\for(m=0;m cout<<\ < cout< 20