1、资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。传媒工程系成 绩C+程序设计语言结业报告课程名称: C+程序设计语言 班级: B1101 学号: 姓名: 程 龙 指导教师: 赵 凤 怡 报告完成时间: _ _年_12_月_17_日 -10-28制定C+程序设计语言结业报告课程名称C+程序设计语言班 级B1101实验日期 11月姓 名程龙学 号实验成绩名 称C+程序设计语言实验目的及要求掌握 Visual C+集成环境下调试标准C+程序的方法实验环境Visual C+集成环境、 Windows XP 操作系统实验内容1. 用C+语言开发”简单的学生成绩管理系统”。 算法描述及实验步
2、骤( 用适当的形式表示算法设计思想与算法实现步骤) 学生成绩管理系统学生成绩管理系统浏览学生信息添加学生信息删除学生信息查找学生信息修改学生信息成绩的处理按照某门成绩排序求出每个学生各门课程的总成绩、 平均成绩最高分和最低分求出某一门课程所有学生的总成绩、 平均成绩、 最高分和最低分调试过程及实验结果( 详细记录在调试过程中出现的问题及解决方法。记录实验执行的结果) 1.进入系统: 2. 功能选择: 3学生成绩录入: 4.显示学生成绩: 5.排序: 6.按姓名查找( 按学号查找) : 7.删除学生成绩: 8.修改学生成绩: 总 结( 对实验结果进行分析, 问题回答, 实验心得体会及改进意见)
3、编程要求很详细, 内容也比较多, 有一定难度。首先, 学生成绩记录是一个复杂的数据结构, 至少应包括学号, 姓名, 性别和成绩。因此, 必须建立一个类student, 用来记录学号, 姓名, 性别和成绩。另外还得建立一个类stuscore, 用来记录多个学生的成绩记录。我的大致思路如下: 1. 建立类学生类student, 它至少包括学号number, 姓名name, 性别sex, 成绩chengji。2. 函数init(string &Name,string &Number,char Sex,double Chengji)用于输入学生记录。3. 建立学生成绩记录类stuscore, 该类是学
4、生成绩记录的集合。其成员函数则是问题中要求的添加、 显示、 查找、 删除、 保存、 导出等各种操作。4. 编写各个功能的函数实体, 简单来说就是各个功能的编写。本系统的重点就是要会建立两个类。一个是学生类student, 用来存放一个学生的成绩记录, 相当于一个结构体的功能吧。另一个类是学生成绩记录系统类stuscore, 该类用来存放多个学生的成绩记录。难点就是stuscore类里的各个功能的实现。总的来说, 添加, 显示, 查找, 这三个功能比较容易, 可是, 删除, 保存, 加载这三个功能就需要花点心思了, 可能是平时用的比较少吧, 生疏了。可见只有经过平时多加练习, 才能有助于自己巩固
5、知识点。最后想说的是, 调试程序真的很关键。调试程序需要较大的耐心。可能调试程序的时间比自己编写整个程序的时间还要长, 下的工夫还要深, 但这是一个程序员必须了解, 也必须接受的事实。有好几次, 几个错误让我很是头疼啊, 很想删了, 重新来过, 可是最后发现, 还是得有耐心去调试程序。经过这个实验的练习, 我也学到了很多东西, 特别是加深了对类和对象理解和应用方面.。附录( 源程序清单等) # include # include # include #include /用getch()();using namespace std;/Student类class Studentpublic: ch
6、ar name20; char Id20; int Cnum; /C课程得分 int Mnum; /数学课程得分 int Enum; /英语课程得分 int sum; /总分 Student * Next; void Input() coutname; coutId; coutCnum; coutMnum; coutEnum; sum=Cnum+Mnum+Enum; void ReadFile(istream & in) innameIdCnumMnumEnumsum; void Show() cout姓名:nameendl学号:IdendlC+:Cnumendl 数学:Mnumendl外语:
7、 Enumendl总成绩:sumendlendlNext;p!=End;p=p-Next) p-Show(); coutInput(); End-Next=new Student; End=End-Next; cout添加成功!endl; coutNext!=End;p=p-Next)/匹配成功则返回上一个指针, 不成功就返回空 if(!strcmp(p-Next-name,name)return p; return NULL; Student *FindID(char * Id) for(Student * p=Head;p-Next!=End;p=p-Next)/匹配成功则返回上一个指针,
8、 不成功就返回空 if(!strcmp(p-Next-Id,Id)return p; return NULL; ;/构造函数Studentmassage:Studentmassage() Head=new Student; Head-Next=new Student; End=Head-Next; in.open(sort.txt); if(!in) cout这是一个新系统, 无学生信息。请先输入。ReadFile(in); if(End-name0=0)break; End-Next=new Student; End=End-Next; in.close(); couttt读取学生信息成功!
9、Next!=End;) temp=Head-Next; Head-Next=Head-Next-Next; delete temp; delete Head,End;/菜单void Studentmassage:ShowMenu() cout 学 生 成 绩 管 理 系 统 endl; cout endl; cout 1.增加学生成绩 endl; cout 2.显示学生成绩 endl; cout 3.排序统计成绩 endl; cout 4.查找学生成绩 endl; cout 5.删除学生成绩 endl; cout 6.修改学生信息 endl; cout 0.安全退出系统 endl; coutn
10、ttntt请选择: ;/查找函数void Studentmassage:Find() char name20 ,Id10; int x; Student * p=NULL; coutntt*n; couttt 1.按学生的姓名查找ntt 2.按学生学号查找; coutx; switch(x) case 1:coutname; if(p=FindItem(name) p-Next-Show(); cout输入任意字符! 继续; getch(); else couttt没有找到该姓名的学生! nendl; cout输入任意字符! 继续; getch(); break; case 2: coutId
11、; if(p=FindID(Id) p-Next-Show(); cout输入任意字符! 继续; getch(); else couttt没有找到该学好的学生! nendl; cout输入任意字符! 继续; getch(); break; /修改信息void Studentmassage:ModifyItem() /修改信息 char name20; Student * p=NULL; coutname; if(p=FindItem(name) couttt已找到学生的信息, 请输入新的信息!Next-Input(); cout修改成功! endl; cout输入任意字符! 继续; getch
12、(); else couttt没有找到!endl; cout输入任意字符! 继续; getch(); /删除信息void Studentmassage:RemoveItem() / 删除信息 char name20; Student * p=NULL,*temp=NULL; couttt请输入要删除的学生的姓名:name; if(p=FindItem(name) temp=p-Next; p-Next=p-Next-Next; delete temp; couttt删除成功!endl; cout输入任意字符! 继续; getch(); else couttt没有找到!endl; coutnam
13、e,p1-name); strcpy(temp-Id,p1-Id); temp-Cnum=p1-Cnum; temp-Mnum=p1-Mnum; temp-Enum=p1-Enum; temp-sum=p1-sum; strcpy(p1-name,p2-name); strcpy(p1-Id,p2-Id); p1-Cnum=p2-Cnum; p1-Mnum=p2-Mnum; p1-Enum=p2-Enum; p1-sum=p2-sum; strcpy(p2-name,temp-name); strcpy(p2-Id,temp-Id); p2-Cnum=temp-Cnum; p2-Mnum=te
14、mp-Mnum; p2-Enum=temp-Enum; p2-sum=temp-sum;/int Studentmassage:ListCount()/统计当前链表的记录总数, 返回一个整数 if(! Head) return 0; int n=0; for(Student * p=Head-Next;p!=End;p=p-Next) n+; return n;/void Studentmassage:Sort()/对当前链表进行排序 cout Sorting.endl; Student *p=NULL,*p1=NULL,*k=NULL; int n=Studentmassage:ListCo
15、unt(); if(nNext;p!=End;p=p-Next) for(k=p-Next;k!=End;k=k-Next) if(p-sumk-sum) Studentmassage:Swap(p,k); cout 排序完成! Next;p!=End;p=p-Next) outnametIdtCnumt MnumtEnumtsumn; out.close();/主函数int main() int x,i=0; bool quit=false; coutttendl; for(i=0;i3;i+) couttttttttt endl; couttt【 欢迎进入学生成绩管理系统 】endl; for(i=0;i3;i+) couttttttttt endl; coutttnendl; Studentmassage Grade; coutx; switch(x) case 0:quit=true;break; case 1:Grade.AddItem();break; case 2:Grade.Display();break; case 3:Grade.Sort();break; case 4:Grade.Find();break; case 5:Grade.RemoveItem();break; case 6:Grade.ModifyItem();break; return 0;