《C ++ 课程设计报告学生成绩表.doc》由会员分享,可在线阅读,更多相关《C ++ 课程设计报告学生成绩表.doc(14页珍藏版)》请在三一办公上搜索。
1、1、课程设计目的程序设计基础课程设计是在学习完程序设计基础课程后开设的一门实践性课程。要求学生以个人为单位,在教师指导下,运用理论课所学知识,借助参考书籍,选择一个课题,使用C+语言,完成一个功能相对完整,具有应用价值的软件。达到加深理解课堂教学内容,熟悉程序设计的基本流程、掌握程序设计基本方法,基本技巧、并能综合运用,提高程序设计能力。通过本课程的实践,熟练掌握C+语言中面向过程部分的内容,能够运用C+语言解决一个实际问题。课程设计属于研究型、创新型、自主型学习。学生可以根据自己的兴趣、爱好、特长,或者以前已经接触过的内容,自行确定课程设计课题。也可完成老师提供的参考课题。2、设计环境及语言
2、Visual C+集成开发环境(IDE)C+语言。3、 课题设计步骤31 需求分析 从软件使用者处获得用户需求,确定课题开发应具备的功能;32 系统结构设计 将整个系统功能分块,考虑各个功能模块应具备的功能,模块间的联系,划分成不同的子系统进行设计;33 数据设计 设计系统中新的数据类型、存储类型;34 代码设计 在上述3个阶段的基础上编写代码;35 软件测试 使用事先设计好的测试用例、对编制的程序进行测试,发现存在错误(包括潜在的问题),加以修改,完善。4、课程设计提交材料41 电子版的所有.cpp文件和.h文件。每个学生以自己的名字建了一个文件夹,通过网络提交。42 课程设计报告 内容包括
3、;1) 课题设计内容、具备的功能;2) 模块(函数)的划分、各模块(函数)的功能;3) 采用的自定义的数据类型;4) 程序设计过程、调试中过程中所用的测试用例、程序运行的结果;5) 在课程设计中遇到的问题和解决的方法,还没有能解决的问题;6) 通过课程设计的体会、收获。5、参考课题51 参考课题内容及知识点“学生成绩表”是一个参考课题。本课题通过建立、修改、查询、排序、显示学生成绩等功能,具体要求掌握的技术有:1)结构、枚举类型的定义与使用;2)数组的定义使用;3)程序的三种基本控制流程的综合、灵活运用;4)普通指针和数组指针的定义和使用;5)各类函数的定义和调用;6)文件的输入/输出;7)程
4、序的调试。52 功能要求1) 新增学生数据的添加:学号,姓名,性别,3门课程成绩,计算总成绩并显示;2) 修改学生成绩数据:输入学号,根据学号,修改该生的3项成绩数据计算总成绩并显示;3) 删除一个学生:输入学号,根据学号删除该生;4) 根据学号查询:输入学号,查找该生并显示学生数据;5) 显示全部学生数据;6) 根据学号排序学生数据;7) 根据总成绩排序学生数据;8) 退出:保存学生总数文件及学生数据文件,然后结束程序运行。53 设计要求1)在Visual C+控制台应用程序方式下设计课题。2)设计的程序要求完成52节规定的功能。3)程序应具有一定的健壮性。即程序必须具有必要的检查和出错处理
5、,如在新增学生数据时检查输入的学号是否相同。删除、查询学生时检查输入的学号是否存在等。5 参考课题部分设计1) 建立student工程2) 在头文件中,设计Student结构类型,成员为char No5 学号char Name8姓名char Gender7性别int Score43门课程成绩及总成绩3)设计下列函数int EnterChoice();/输入选项void Init();/数据文件初始化void Add();/增加一个学生void Update();/修改学生成绩void Delete();/删除一个学生void Query();/查询学生数据void Display();/显示全
6、部学生void Display (Student*); /显示一个学生的重载函数void SortNo();/按学号排序(从小到大)void SortScore();/按成绩排序int CheckNo(char *);/检查学号是否存在,存在返回序号,不存在返回-1 4)设计主函数main(),运行后,屏幕显示功能菜单 1: add student 2: update student 3: delete student 4: query student 5: display students 6: Sort student by No 7: Sort student by score 8: e
7、nd用户输入选择后,程序运行相应的处理函数Add()、Update()、Delete()、Query()、Display()、SortNo()、SortScore()。运行主函数main(),调用Init()函数,从文件count.dat生总数,从文件student.dat中读取学生数据。然后等待用户输入选项,进行相应处理。程序运行结束前,调用Save ()函数保存学生总数到文件count.txt数据到文件student.txt中。设计除main()主函数和Init()函数、Add()、SortNo()、CheckNo()、EnterChoice()、GetData()函数之外的Display
8、()、Update()、Delete()、Query()、SortScore()等函数。附件:参考课题部分源程序/结构定义文件/student.h #ifndef STUDENT_H#define STUDENT_Hstruct StudentChar No9;Char Name9;Char Gender7;int Score4;#endif/函数实现文件/ student.cpp#include#include#include#include#includestudent.husing namespace std;int EnterChoice(); void Init();void Add
9、();void Update();void Delete();void Query();void SortScore();void Display();void Display(Student*);void SortNo();void SaveTxt();int CheckNo(char*);void PrintTitle();void GetData(Student*);extern const int MaxNum=100;extern int CurNum;extern Student studentMaxNum; int EnterChoice()coutnEnter your Cho
10、icen 1:add student 2:update studentn3:delete student 4:query studentn5:display students 6:Sort student by NOnChoice;return Choice;void Init()ifstream inCount,inStudent;ofstream outCount,outStudent;inCount.open(count.txt,ios:in);if(!inCount)inCount.close();outCount.open(count.txt,ios:out);outCountCur
11、Num;inCount.close();if(CurNum)inStudent.open(student.txt,ios:in);for(int i=0;i(student+i)-No; inStudent(student+i)-Name; inStudent(student+i)-Gender; inStudent(student+i)-Score0; inStudent(student+i)-Score1; inStudent(student+i)-Score2; inStudent(student+i)-Score3;inStudent.close();elseoutStudent.op
12、en(Student.txt,ios:out);outStudent.close();void Add()char no9;coutno;int i=CheckNo(no);if(i=0)coutNo.repeated,input againendl;elsestrcpy(studentCurNum.No,no);cout(student+CurNum)-Name;cout(student+CurNum)-Gender;GetData(student+CurNum);PrintTitle();Display(student+CurNum);CurNum+;void SortNo()Studen
13、t temp;int flag;for(int i=0;iCurNum-1;i+)flag=1;for(int j=0;jCurNum-1-i;j+)if(strcmp(studentj+1.No,studentj.No)0)flag=0;temp=studentj+1;studentj+1=studentj;studentj=temp;if(flag)break;Display();void PrintTitle()coutsetiosflags(ios_base:left);coutsetw(6)Nosetw(8)Namesetw(10)Gendersetw(10)Score1setw(1
14、0)Score2setw(10)Score3setw(10)SCoreendl;void Display()if(CurNum)PrintTitle();for(int i=0;iCurNum;i+)Display(student+i);elsecoutThe list empty!endl;void Display(Student* stu)coutsetiosflags(ios_base:left);coutsetw(6)No;coutsetw(8)Name;coutsetw(6)Gender;coutresetiosflags(ios_base:left);coutsetw(10)Sco
15、re0;coutsetw(10)Score1;coutsetw(10)Score2;coutsetw(10)Score3endl;void Save()ofstream outCount,outStudent;outCount.open(count.txt,ios:out);outCountCurNum;outCount.close();outStudent.open (student.txt,ios:out);for(int i=0;iCurNum;i+)outStudentNo ; outStudentName ; outStudentGender ; outStudentScore0 ;
16、 outStudentScore1 ; outStudentScore2 ; outStudentScore3 ; outStudentendl; outStudent.close();int CheckNo(char* no)for(int i=0;iCurNum;i+)if(strcmp(studenti.No,no)=0)return i;return -1;void GetData(Student* stu)for(int i=0;i3;i+)coutScoreistu-Scorei;stu-Score3=stu-Score0+stu-Score1+stu-Score2;void So
17、rtScore()Student temp;int i,j,max;for(i=0;iCurNum-1;i+) max=i;for(j=i;jCurNum;j+)if(studentmax.Score3studentj.Score3)max=j;if(max!=i)temp=studentmax;studentmax=studenti;studenti=temp;Display();void Update()char no9;char c;coutno;int i=CheckNo(no);if(i0)coutThe number dose not exist!n;elsecoutc;if(c=
18、y|c=Y)coutstudenti.Score0;coutc;if(c=y|c=Y)coutstudenti.Score1; coutc;if(c=y|c=Y)coutstudenti.Score2;student-Score3=student-Score0+student-Score1+student-Score2;PrintTitle();Display(student+i);void Delete()char no9;char c;coutno;int i=CheckNo(no);if(i0)coutThe number dose not exist!(y/n)n;elsecoutc;
19、if(c=y|c=Y)for(int j=i+1;jCurNum;j+)studentj-1=studentj;CurNum-;Display();void Query()char no9;coutno;int i=CheckNo(no);if(i0)coutThe nunber dose not exist! n;elsePrintTitle();Display(student+i);/主函数文件/ main.cpp#include #include #include #include #include Student.husing namespace std;int EnterChoice
20、();/输入选项void Init();/数据文件初始化void Add();/增加一个学生void Display();/显示全部学生void DisplayOne(Student*);/显示全部学生void SortNo();/按学号排序(从小到大)void Save (); /保存数据int CheckNo(char *);/输入学号void PrintTitle();/显示表头void GetData(Student*);/读取学生成绩数据void Update();/修改学生成绩void Delete();/删除一个学生void Query();/查询学生数据void SortSco
21、re();enum ChoicesADD=1,UPDATE,DELETE,QUERY,DISPLAY,SORTNO,SORTSCORE,END;const int MaxNum=100;int CurNum;Student studentMaxNum;void main()Init();int choice;while(choice=EnterChoice()!=END) switch(choice) case ADD:Add();break; case UPDATE:Update();break; case DELETE:Delete();break; case QUERY:Query();
22、break; case DISPLAY:Display();break; case SORTNO:SortNo();break; case SORTSCORE:SortScore();break; default:cerrIncorrect choicen; Save();程序运行结果图示:图1程序运行后的菜单显示图2“1:add student” 界面图3“2:update student” 界面图4“3::delete student”界面图5“4:query student” 界面图6“5:display student”界面图7“6:sort student by No”界面图8 “7:Sort student by score”界面