课程学生成绩管理系统的与实现_第1页
课程学生成绩管理系统的与实现_第2页
课程学生成绩管理系统的与实现_第3页
课程学生成绩管理系统的与实现_第4页
课程学生成绩管理系统的与实现_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、.2008/2009学年度第一学期VC+编程课程设计报告题 目:学生成绩管理系统 班 级: 姓 名: 学 号: 指导教师: 日 期: 目录一、课程设计名称3二、课题设计内容,具备的功能3三、模块(函数)的划分,各模块(函数)的功能3四、采用的自定义的数据类型4五、程序清单4六、程序设计过程中、调试中过程中所用的测试用例、程序运行结果17一、课程设计名称学生成绩表二、课题设计内容,具备的功能设计一个“学生成绩表”管理系统、功能要求:1) 新增学生数据的添加:学号,姓名,性别,3门课程成绩,计算总成绩并显示;2) 修改学生成绩数据:输入学号,根据学号,修改该生的3项成绩数据计算总成绩并显示;3)

2、删除一个学生:输入学号,根据学号删除该生;4) 根据学号查询:输入学号,查找该生并显示学生数据;5) 显示全部学生数据;6) 根据学号排序学生数据;7) 根据总成绩排序学生数据;8) 修改学生基本信息:输入学号,根据学号,修改该生的所有信息(包括成绩)并显示;9) 退出:保存学生总数文件及学生数据文件,然后结束程序运行。三、模块(函数)的划分,各模块(函数)的功能void main( )/主函数int EnterChoice( );/输入选项void Init( );/数据文件初始化void Add( );/增加一个学生信息void Display( );/显示全部学生信息void Displ

3、ayOne(Student *);/显示一个学生信息void SortID( );/按学号排序(从小到大,冒泡排序)void SortScore ( );/按成绩排序(从大到小,冒泡排序)int CheckNo(char *); /输入学生学号,检查应该学号是否有记录void Upstudent( );/修改学生基本信息void PrintTitle( );/显示表头void GetData(Student*);/读取学生成绩数据void Update();/修改学生成绩void Delete();/删除一个学生信息void Query();/查询学生信息void Save(); /保存学生人

4、数和学生信息四、采用的自定义的数据类型1) 结构体类型:struct Studentchar No9;char Name9;char Gender7;int Score4;2) 枚举类型:enum ChoicesADD=1,UPDATE,DELETE,QUERY,DISPLAY,SORTID,SORTSCORE,END;五、程序清单/结构定义文件/student.h #ifndef STUDENT_H#define STUDENT_Hstruct Studentchar No9;char Name9;char Gender7;int Score4;#endif/*/函数实现文件/ studen

5、t.cpp/头文件#include <iostream>#include <iomanip>#include <fstream>#include <cstring>#include "Student.h"using namespace std; /模块函数的申明:int EnterChoice();/输入选项void Init();/数据文件初始化void Add();/增加一个学生void Update();/修改学生成绩void Upstudent();/修改学生基本信息void Delete();/删除一个学生void

6、SortName();/按姓名排序void Query();/查询学生数据void Display();/显示全部学生void DisplayOne(Student*);/显示一个学生的重载函数void SortID();/按学号排序(从小到大)void SortScore (); /按成绩排序void Save();/保存文件int CheckNo(char *);/检查学号是否存在,存在返回序号,不存在返回-1void PrintTitle();/显示标题void GetData(Student*);/读取学生extern const int MaxNum=100;/最大人数extern

7、int CurNum;/当前人数extern Student studentMaxNum;/结构体数组/输入选择函数int EnterChoice() cout<<"nEnter your Choicen" <<"1: add student 2: update studentn" <<"3: delete student 4: query studentn" <<"5: display students 6: Sort student by Non" <<

8、;"7: Sort student by score 8: Upstudentn" <<"9: endn" int Choice; cin>> Choice; return Choice; /初始化函数void Init()ifstream inCount,inStudent; /输入文件流对象ofstream outCount,outStudent; /输出文件流对象inCount.open("count.txt",ios:in);/打开学生人数文件,ios:in是fstream,istream的默认模式if

9、(!inCount)/文件不存在,建立该文件inCount.close();outCount.open("count.txt",ios:out);/打开输出文件,是ostream的默认模式outCount<<CurNum;/写入学生人数outCount.close();elseinCount>>CurNum;/读取学生数 inCount.close();if(CurNum)/学生总数不为0,学生文件存在inStudent.open("student.txt",ios:in);for(int i=0;i<CurNum;i+)/

10、读取学生数据inStudent>>(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.clos

11、e();elseoutStudent.open("Student.txt",ios:out);outStudent.close();/增加一个学生模块void Add() char no9;cout<<"No= "cin>>no;int i=CheckNo(no);if (i>=0)cout<<"No. repeated,Input again"<<endl;elsestrcpy(studentCurNum.No ,no);cout<<"Name= "

12、;cin>>(student+CurNum)->Name;cout<<"Gender= "cin>>(student+CurNum)->Gender ;GetData(student+CurNum);PrintTitle();DisplayOne(student+CurNum);/排序后重新显示CurNum+;/根据输入的学生号,修改学生3项成绩,并显示模块void Update() char no9;cout<<"No= "cin>>no;int t;t=CheckNo(no);i

13、f(t!=-1) GetData(student+t);PrintTitle();/显示表头DisplayOne(student+t);elsecout<<"该学生不存在"<<endl;/根据输入的学号,修改该学生的基本信息void Upstudent()char no9;cout<<"No= "cin>>no;int t;t=CheckNo(no);if(t!=-1) cout<<"No= "cin>>(student+t)->No ;cout<&l

14、t;"Name= "cin>>(student+t)->Name ;cout<<"Gender= "cin>>(student+t)->Gender ;GetData(student+t);PrintTitle();/显示表头DisplayOne(student+t);elsecout<<"该学生不存在"<<endl;/根据输入的学生号,删除该学生模块void Delete() char no9;cout<<"No= "cin>

15、;>no;int t;t=CheckNo(no);if(t!=-1) for(int i=t;i<=CurNum-1;i+)studenti=studenti+1;CurNum-;elsecout<<"该学生不存在"<<endl;/根据输入的学生号,查找该生并显示模块void Query() char no9;cout<<"No= "cin>>no;int t;t=CheckNo(no);if(t!=-1) PrintTitle(); /显示表头DisplayOne(student+t); /调

16、用显示一个学生模块函数elsecout<<"该学生不存在"<<endl;/显示全部学生模块void Display()PrintTitle(); /调用显示表头模块int i;for(i=0;i<=CurNum-1;i+)cout<<setiosflags(ios_base:left);cout<<setw(6)<<(student+i)->No;cout<<setw(8)<<(student+i)->Name;cout<<setw(6)<<(stu

17、dent+i)->Gender;cout<<resetiosflags(ios_base:left);cout<<setw(10)<<(student+i)->Score0;cout<<setw(10)<<(student+i)->Score1;cout<<setw(10)<<(student+i)->Score2;cout<<setw(10)<<(student+i)->Score3<<endl;/按学生号从小到大冒泡排序,并显示模块void

18、SortID()Student temp;int flag;for(int i=0;i<CurNum-1;i+)flag=1;for(int j=0;j<CurNum-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 SortScore()Student temp; /定义结构体变量int flag;for(int i=

19、0;i<CurNum-1;i+)flag=1;for(int j=0;j<CurNum-1-i;j+)if(studentj+1.Score3>studentj.Score3)flag=0;temp=studentj+1;studentj+1=studentj;studentj=temp;if(flag) break;Display();/显示表头模块void PrintTitle()cout<<setiosflags(ios_base:left);cout<<setw(6)<<"No"cout<<setw(

20、8)<<"Name"cout<<setw(6)<<"Gender"cout<<resetiosflags(ios_base:left);cout<<setw(10)<<"Score0"cout<<setw(10)<<"Score1"cout<<setw(10)<<"Score2"cout<<setw(10)<<"Score3"<

21、<endl;/显示一个学生情况模块void DisplayOne(Student* stu)cout<<setiosflags(ios_base:left);cout<<setw(6)<<stu->No;cout<<setw(8)<<stu->Name;cout<<setw(6)<<stu->Gender;cout<<resetiosflags(ios_base:left);cout<<setw(10)<<stu->Score0;cout<

22、<setw(10)<<stu->Score1;cout<<setw(10)<<stu->Score2;cout<<setw(10)<<stu->Score3<<endl;/保存学生数据文件void Save()ofstream outCount,outStudent;outCount.open("count.txt",ios:out);outCount<<CurNum;outCount.close();/关闭Count.txt文件outStudent.open (&q

23、uot;student.txt",ios:out);/打开student.txt文件for(int i=0;i<CurNum;i+)outStudent<<setw(6)<<(student+i)->No;outStudent<<setw(8)<<(student+i)->Name;outStudent<<setw(6)<<(student+i)->Gender;outStudent<<setw(10)<<(student+i)->Score0; outStu

24、dent<<setw(10)<<(student+i)->Score1; outStudent<<setw(10)<<(student+i)->Score2; outStudent<<setw(10)<<(student+i)->Score3<<endl;outStudent.close();/关闭Student.txt文件/检查学生号是否存在,找到返回所在数组下标,找不到返回-1模块int CheckNo(char* no)for(int i=0;i<CurNum;i+)if(strc

25、mp(studenti.No,no)=0) /字符串比较函数return i;return -1;/读入学生3项成绩模块void GetData(Student* stu)for(int i=0;i<3;i+)cout<<"Score"<<i<<"= "cin>>stu->Scorei;stu->Score3=stu->Score0+stu->Score1+stu->Score2;/*/主函数文件/ main.cpp#include <iostream>#in

26、clude <fstream>#include <iomanip>#include <string>#include "Student.h"using namespace std;/模块函数申明:int EnterChoice( );/输入选项void Init( );/数据文件初始化void Add( );/增加一个学生void Display( );/显示全部学生void DisplayOne(Student *);/显示全部学生void SortID( );/按学号排序(从小到大)void SortName( ); /按姓名排序vo

27、id SortScore ();/保存数据int CheckNo(char *);/输入学号void PrintTitle( );/显示表头void GetData(Student *);/读取学生成绩数据void Update( );/修改学生成绩void Upstudent( );/修改学生基本信息void Delete( );/删除一个学生void Query( );/查询学生数据void Save( );/保存学生信息void SortScore( );/按成绩排序(从大到小)enum ChoicesADD=1,UPDATE,DELETE,QUERY,DISPLAY,SORTID,SORTSCORE,UPSTUDENT,END;const int MaxNum=100;/最大人数int CurNum;/当前人数Student studentMaxNum;/结构体数组void main( )Init( ); /调用Init()模块函数int choice;while(choice=EnterChoice( )!=END) switch(choice) case ADD:Add( );/调用Add()模块函数break; case UPDATE:Update( );/调用Update()模块函数break; case DELETE:Delete( );

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论