




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、EAST CHINA INSTITUTE OF TECHNOLOGY课程设计报告课题:学生成绩治理系统小组成员:班 级:093221专业:信息治理与信息系统指导教师:黄国辉2021 年6月21日第一章需求分析1 .课程设计性质和目的 12 .输入输出的形式 13 .程序的实现功能 1第二章程序设计1 .概要设计 22 .详细设计 33 .调试分析 54 .使用说明 65 .测试数据 6第三章 使用说明和程序流程图1 .程序流程图 82 .附录源程序 8第四章课程设计总结26第五章参考文献 27第一章需求分析1、课程设计性质和目的该课程设计的主要任务是运用在?面向对象程序设计?课程中学到的理论知
2、识来指 导实践,使学生了解面向对象与面向过程之间的区别,学会用类的方法解决实际问题. 掌握一般类的定义、测试、封装、数据隐藏、继承及多态等概念,掌握面向对象程序设计的根本概念和根本方法,掌握 C+语言的根本语法和根本内容,并能运用 C+语言进行根本的面向对象程序设计,并且通过综合课程设计,提升学生的实践动手技能,培 养学生独立分析分析问题和解决问题的水平.2、输入输出的形式本系统是一个学生成绩治理系统,采用VC+6.0编译器作为开发环境,这个环境是我们在学习C+的平台.输入数据类型主要是char int、floa年数据类型,输入内容包括:班级、学号、姓名、电子技术、C+程序设计、多媒体技术、大
3、学英语、高等数学、大学体育、马克思主义政治经济学等数据.用户在输入学生数据时要保证输入数据格式的 正确性,系统不会自动检测输入的数据是否正确,可用.输出形式与输入形式类似,根 据需要可以选择显示输入的各项内容,还可以选择显示计算好平均分后并排序后的记 录,显示内容包括:班级、学号、姓名、平均分等数据.3、程序的实现功能用户运行程序后进入系统主界面,在主界面用户可以输入所有学生的数据并保存到 文件中,也可以读取文件中已有的学生数据.用户在保存数据的时候,如果保存位置没 有文件那么自动新建一个文件进行保存.本系统同时只能对一个数据文件进行相关操作, 不能同时翻开多个数据文件,其类似于单用户操作系统
4、.当用户读取学生数据后可对其进行显示,插入,删除,修改,排序,计算平均分等 相关操作.用户在操作过程中可随时对当前文件进行保存到文件操作,以预防修改的数 据丧失.第二章程序设计1、概要设计室T -E条血 ,口. JGN.翌富退 UI uu-u la345fi7H« nt mm2、详细设计在main()函数中主要是通过" sw计ch(men诞解判断来调用相关功能模块.系统的 运行是在一个永真的循环里进行的,只有在主界面并选择“退出本系统时,才会跳出 永真循环,并退出程序.主函数代码为:void main()韭函数*/(sw计ch(menu()迎择判断*/(case 1:Inp
5、ut(stud);榆入学生成绩*/break;case 2:Statistic(stud);输出学生统计数据*/break;case 3:Lookup(stud);查找学生成绩*/cout<<"ttt"system("pause");break;case 4:Modify(stud);修改学生成绩*/cout<<"ttt"system("pause");break;case 5:Delete(stud);按学号查找,删除学生信息*/cout<<"ttt"sys
6、tem("pause");break;case 6:Insert(stud);熠加学生成绩*/cout<<"ttt"system("pause");break;case 7:Sort(stud);腋平均分对学生成绩记录项进行降序排序*/cout<<"ttt"system("pause");break;case 8:Output(stud);显示全部学生成绩*/cout<<"ttt"system("pause");brea
7、k;case 0:cout<<endl<<"=<<感谢n"<<endl; /*您使用学生成绩治理系统>>=结束程序*/system("pause");exit(0);)主界面的设计:在主界面中包括“输入学生成绩显示统计数据查找学生成绩修改学生成绩删 除学生成绩插入学生成绩按平均分降序排列显示全部学生成绩退出本系统等全 部的功能,之所以设计这么一个主界面,一是由于能使用户对程序操作的流程更加清楚 简明,二是保证了用户同时只能对一个文件进行操作的系统要求,保证了系统不会发生 翻开文件紊乱或者出现致命
8、错误.每个函数的具体功能:1)主函数main()定义学生结构体数组,调用录入、统计等函数对成绩表进行处理;2)录入函数Input():输入班级到政治课成绩;3)统计函数Statistic()计算平均成绩;4)查询函数Lookup()查询指定学号学生成绩记录;5)修改函数Modify.修改指定学号学生成绩记录;6)删除函数Delete()删除指定学号学生记录;7)输出函数Output()输出班级所有学生成绩记录;8)排序函数Sort():按平均分对学生成绩记录项进行降序排序;9)插入函数Insert()按平均分顺序插入新记录3、调试分析调试是整个程序编写过程中十分重要也是很困难的一局部,在这个过
9、程中用了不少的时间进行程序的调试,在调试过程中遇到的相关问题如下:一、语法错误1、语句的最后忘记了加上“;,使程序发生错误.2、把“<<与“>>写反,以及字符与字符串的操作问题,这些是比较简单的错误,很容易分辨出来,并改正之.3、函数的返回值问题,也是比较容易找出并解决的问题.二、逻辑错误1、文件的写入与读出,刚开始对文件的操作不太明白,一致不能很好的操作文件,其中最大的问题是对已存在的文件读取问题,通过“显示全部学生成绩将数据从文件中读取,可是在使用过程中总是出现读出错误,出现乱码.2、内存的分配问题,这也是困惑了我好久的问题.对于我们初学者来说对内存的分配和释放问题
10、是比较抽象和模糊的难题,本来使用链表的方式存储数据,然而待到排 序时出现了交换数据困难的问题,以及分配空间繁琐释放空间不及时的问题,造成空间 浪费使得程序运行效率低的问题.因此最后采用了顺序存储记录的方式,这样就能改变 前述问题.整个调试过程中主要是这么几个问题,其余的是一些小问题,很容易的就调试出来 了.4、使用说明用户运行程序后进入系统主界面,在主界面用户可以翻开或者新建数据文件.用户 新建或者翻开文件要符合操作系统的要求,如果用户翻开不存在的文件,那么系统将按 照用户翻开的文件名作为新的数据文件名,并对其进行相关操作.本系统同时只能对一 个数据文件进行相关操作,不能同时翻开多个数据文件,
11、其类似于单用户操作系统.当用户指定当前文件后可对其进行显示,插入,删除,修改,计算平均分等相关功 能.用户在操作过程中可随时对当前文件进行保存到文件操作,以预防修改的数据丧失操作完当前文件后,用户可以关闭该文件,在不退出本系统的前提下另行翻开或者新建 数据文件对其进行相关操作.5、测试数据经过屡次测试程序运行稳定,无致命错误.根据本次课程设计的要求对数据进行输 入并分析数据输出结果.通过测试发现当用户正确输入时系统能够正确显示用户的输 入,当用户输入错误时,系统并不会出现致命错误但其将显示非用户期望的数据.例如当用户输入要插入的学生记录信息时,系统将提示:=>> 请输入学生成绩&l
12、t;<=班级:093221学号:32姓名:周鹏电子技术成绩:86C+程序设计成绩:80多媒体技术成绩:80大学英语成绩:90高等数学成绩:86大学体育成绩:96马克思主义政治经济学成绩:65那么系统将能正确输入并显示数据:班级学号姓名电子C+多媒体英语数学体育政治平均分093221 32 周鹏 86 80 80 90 86 96 65但如果在输入学生成绩的时候输入小于0或大于100M,程序会提示:对不起,请输入1-10此间的数字!因此用户在输入时保证输入数据的正确性是很重要的! 第三章程序流程图1、程序流程图由于本系统是一个比较小的学生成绩治理系统,因此将程序的所有功能放在了一个文件中,
13、使得方便对程序的治理.开始主界面输入学生成绩显 示 统 计 数 据查 找 学 生 成 绩改 学 生 成 绩删 除 学 生 成 绩插 A 学 生 成 绩技 平 均 分 排 序显 示 学生 成 绩退 出 本 系 统结束2.附录源程序#include<iostream.h>#include<fstream.h>#include<stdlib.h>#include<string.h>#include<stdio.h>class Stu用与建学生类(public:friend void Input(Stu stud口);friend void
14、Statistic(Stu stud);friend void Lookup(Stu stud);friend void Modify(Stu stud);friend void Delete(Stu stud);friend void Output(Stu stud);friend void Sort(Stu stud);friend void Insert(Stu stud);friend void Write(Stu stud,int n);friend int Read(Stu stud);private:char class_020;int num;char name8;float
15、elec;float c_program;float media;float english;float math;float sport;float polity;float average;int order;stud100;void Write(Stu stud,int n)向文件中写入数据(fstream myFile;myFile.open("student.dat",ios二out|ios二binary);if(!myFile)(cout<<"student.dat can't open!"<<endl;abo
16、rt();int count=n;myFile<<count<<endl<<endl;for(int i=0;i<=count;i+)(myFile<<studi.class_0<<" "<<studi.num<<" "<<<<" "<<studi.elec<< "<<studi.c_program<<" "<<s
17、tudi.media<<" "<<studi.english<<""<<studi.math<<" "<<studi.sport<<" "<<studi.polity<<" "<<studi.average<<endl;myFile.close();)int Read(Stu stud)款文件中读数据 (fstream myFile;myFile.open(&quo
18、t;student.dat",ios:in|ios二binary);if(!myFile)(cout<<"student.dat can't open!"<<endl;abort();)int count;myFile.seekg(0);myFile>>count;for(int i=0;i<=count;i+)(myFile>>studi.class_0>>studi.num>>>>studi.elec>>studi.c_progra
19、m>>studi. media>>studi.english>>studi.math>>studi.sport>>studi.polity>>studi.average;)myFile.close();return count ;)/ 模块负责人:黄东void Input(Stu stud) / 输入学生成绩(systemC'cls");®行前清屏 */int i=0;int flag;char sign;cout<<endl<<"=>> 请输入学生
20、成绩 <<="<<endl;while(sign!='n'&&sign!='N'判惭 */(cout<<"班级:"/*交互输入*/cin>>studi.class_0;loop:coutvv"学号:";cin>>studi.num;int c=0;while(c<i)(c+;if(studi.num=studi-c.num)(coutvv"你输入的学号已经存在!请重新输入."vvendl;goto loop;)c
21、out<<"姓名:"cin>>;doflag=0;cout<<"电子技术成绩:"cin>>studi.elec;if(studi.elec>100 |studi.elec<1)cout<<"对不起,请输入1-10位间的数字!!n"elseflag=1;while(flag=0);doflag=0;cout<<" C+程序设计成绩:";cin>>studi.c_program;if(studi.c_pr
22、ogram>100 |studi.c_program<1)cout<<"对不起,请输入1-10位间的数字!!n"elseflag=1;while(flag=0);doflag=0;cout<<"多媒体技术成绩:"cin>>studi.media;if(studi.media>100 |studi.media<1)cout<<"对不起,请输入1-10位间的数字!!n"elseflag=1;while(flag=0);doflag=0;cout<<&quo
23、t;大学英语成绩:"cin>>studi.english;if(studi.english>100 |studi.english<1)cout<<"对不起,请输入1-10位间的数字!!n"elseflag=1;while(flag=0);doflag=0;cout<<"高等数学成绩:"cin>>studi.math;if(studi.math>100 |studi.math<1)cout<<"对不起,请输入1-10位间的数字!!n"elsef
24、lag=1;while(flag=0);doflag=0;cout<<"大学体育成绩:"cin>>studi.sport;if(studi.sport>100 |studi.sport<1)cout<<"对不起,请输入1-10位间的数字!!n"elseflag=1;while(flag=0);doflag=0;cout<<"马克思主义政治经济学成绩:";cin>>studi.polity;if(studi.polity>100 |studi.polity&l
25、t;1)cout<<"对不起,请输入1-10位间的数字!!n"elseflag=1;while(flag=0);studi.average=(studi.elec+studi.c_program+studi.media+studi.english+studi.math+studi .sport+studi.polity)/7;cout<<"平均分为:"<<studi.average<<endl;cout<<"=>提示:是否继续写入学生成绩(Y/N)"cin>>
26、;sign;而入判断*/i+;Write(stud,i);void Statistic(Stu stud) / 统计学生数据system("cls");退行前清屏 */int n=Read(stud);cout<<endl<<"=>> 输出学生统计数据 <<="<<endl;cout<<"班级"<<"t"<<"学号"<<"t"<<"姓名"
27、<<"t"<<"平均分"<<endl;for(int i=0;i<n;i+)cout<<studi.class_0<<"t"<<studi.num<<"t"<<<<"t"<<studi.average<<en dl;system("pause");/ (模块负责人:章俊)void Lookup(Stu stud) / 查
28、找学生成绩(systemC'cls");®行前清屏 */int n=Read(stud);int s;int i=0;cout<<endl<<"=>> 查找学生成绩 <<="<<endl;coutvv精输入需要查找学生的学号:"vvendl;cin>>s;while(studi.num-s)!=0&&i<n) i+;在找判断 */if(i=n)("vvendl;/*输入失败cout<<"=>提示:对不起,无
29、法找到该学生的信息!信息*/)else(coutvv""vvendl;coutvv班级:"vvstudi.class_Ovvendl;输出该学生信息 */coutvv 学号:"«studi.num«endl;coutvv姓名:"««endl;coutvv'电子技术:"vvstudi.elecvvendl;coutvvc+时序设计:"«studi.c_program«endl;coutvv多媒体技术:"vvstudi.mediav
30、vendl;coutvv大学英语:"vvstudi.englishvvendl;coutvv高等数学:"vvstudi.mathvvendl;coutvv大学体育:"«studi.sport«endl;coutvv'马克思主义政治经济学:"«studi.polity«endl;coutvv平均分:"«studi.average«endl;)void Modify(Stu stud) / 修改学生成绩(system(cls)述行前清屏*/int n=Read(stud);int
31、s;int i=0;cout<<endl<<"=>> 修改学生成绩 <<="<<endl;cout<<精输入需要修改成绩学生的学号:"<<endl;cin>>s;while(studi.num-s)!=0&&i<n) i+;l*找判断 */if(i=n)cout<<"=>提示:对不起,无该学生的成绩 "<<endl;/*输入失败信息*/elsecout<<" 该学生的信息&qu
32、ot;<<endl; /*格式头*/cout<<"班级"<<"t"<<"学号"<<"t"<<"姓名"<<"t"<<"电子 "<<"t"<<"c+"<<"t"<<" 多媒体"<<"t"<<&qu
33、ot;英语"<<"t"<<"数 学"<<"t"<<"体育 "<<"t"<<"政治"<<"t"<<"平均分"<<endl;cout<<""<<endl;cout<<studi.class_0<<"t"<<studi.num&
34、lt;<"t"<<<<"t"<<studi.elec<< t"<<studi.c_program<<"t"<<studi.media<<"t"<<studi.english<<"t"<<studi.math<<"t" <<studi.sport<<"t"&
35、lt;<studi.polity<<"t"<<studi.average<<endl;cout<<"青重新输入该学生的信息"<<endl;cout<<班级:"<<endl; /*交互输入 */cin>>studi.class_0;cout<<学号:"<<endl;cin>>studi.num;cout<<姓名:"<<endl;cin>>studi.nam
36、e;cout<<'电子技术成绩:"<<endl;cin>>studi.elec;cout<<"C+时序设计成绩:"<<endl;cin>>studi.c_program;cout<<,多媒体技术成绩:"<<endl;cin>>studi.media;cout<<大学英语成绩:"<<endl;cin>>studi.english;cout<<高等数学成绩:"<<e
37、ndl;cin>>studi.math;cout<<大学体育成绩:"<<endl;cin>>studi.sport;cout<<'马克思主义政7B经济学成绩:"<<endl;cin>>studi.polity;studi.average=(studi.elec+studi.c_program+studi.media+studi.english+studi.math+studi .sport+studi.polity)/7;cout<<平均分为:"<<
38、studi.average<<endl;char c;cout<<"是否保存数据(y/n)"<<endl;cin>>c;if(c!='n'&&c!='N')Write(stud,n);/(模块负责人:王官昌)void Delete(Stu stud) /- 按学号查找,删除学生信息system("cls")辽*行前清屏 */int n=Read(stud);int s;int i=0,j;cout<<endl<<"=>&
39、gt; 删除学生成绩 <<="<<endl;coutvv"青输入需要删除学生的学号:"vvendl; /*交互式问寻*/cin>>s;while(studi.num-s)!=0&&i<n) i+;l*找判断 */ if(i=n)cout<<"=>提示:对不起,无法找到该学生 "<<endl; /圾回失败信息*/ elsefor(j=i;j<n-1;j+) /* 删除操作 */strcpy(studj.class_0,studj+1.class_0);s
40、tudj.num=studj+1.num;strcpy(,studj+1.name);studj.elec=studj+1.elec;studj.c_program=studj+1.c_program;studj.media=studj+1.media;studj.english=studj+1.english;studj.math=studj+1.math;studj.sport=studj+1.sport;studj.polity=studj+1.polity;studj.average=studj+1.average;cout<<"=>提示
41、:已成功删除! "<<endl; /烟回成功信息*/Write(stud,n-1);)void Insert(Stu stud) / 增加学生成绩(system("cls")辽*行前清屏 */int n=Read(stud);char s;cout<<endl<<"=>> 增力口学生成绩 <<="<<endl;while(s!='n'&&s!='N')(cout<<班级:"<<endl; /*
42、交互输入 */cin>>studn.class_0;cout<<"学号:"cin>>studn.num;cout<<"姓名:";cin>>;cout<<"电子技术成绩:"cin>>studn.elec;cout<<"C+程序设计成绩:"cin>>studn.c_program;cout<<"多媒体技术成绩:;cin>>studn.media;cout<
43、;<"大学英语成绩:;cin>>studn.english;cout<<"高等数学成绩:";cin>>studn.math;cout<<"大学体育成绩:;cin>>studn.sport;cout<<"马克思主义政治经济学成绩:";cin>>studn.polity;studn.average=(studn.elec+studn.c_program+studn.media+studn.english+ studn.math+studn.sport
44、+studn.polity)/7;cout<<平均分"<<studn.average;n+;cout<<"=>提示:插入成功! "<<endl;戊1回成功信息*/cout<<是否继续输入(y/n)"<<endl;cin>>s;Write(stud,n);/ 模块负责人:周鹏鹏void Sort(Stu stud) / 按平均分对学生成绩记录项进行降序排序(systemC'cls");®行前清屏 */int i,j,k;float s;ch
45、ar t20;cout<<endl<<"=>> 降序排序成绩 <<="<<endl;int n=Read(stud);for(i=0;i<n-1;i+)/* 冒泡法排序 */for(j=0;j<n-1-i;j+)if(studj.average<studj+1.average)(strcpy(t,studj+1.class_0);strcpy(studj+1.class_0,studj.class_0);strcpy(studj.class_0,t);k=studj+1.num;studj+1.n
46、um=studj.num;studj.num=k;strcpy(t,studj+1.name);strcpy(studj+1.name,);strcpy(,t);s=studj+1.elec;studj+1.elec=studj.elec;studj.elec=s;s=studj+1.c_program;studj+1.c_program=studj.c_program;studj.c_program=s;s=studj+1.media;studj+1.media=studj.media;studj.media=s;s=studj+1.english;s
47、tudj+1.english=studj.english;studj.english=s;s=studj+1.math;studj+1.math=studj.math;studj.math=s;s=studj+1.sport;studj+1.sport=studj.sport;studj.sport=s;s=studj+1.polity;studj+1.polity=studj.polity;studj.polity=s;s=studj+1.average;studj+1.average=studj.average;studj.average=s;)cout<<"&quo
48、t;<<endl;/*格式头*/cout<<"班级"<<"t"<<"学号"<<"t"<<"姓名"<<"t"<<"电子 "<<"t"<<"C+"<<"t"<<" 多媒体"<<"t"<<"
49、;英语"<<"t"<<"数 学"<<"t"<<"体 育 "<<"t"<<"政治"<<"t"<<"平均分"<<"t"<<"名次"<<endl;cout<<""<<endl;for(i=0;i<n;i+) /*
50、循环输入 */ studi.order=i+1;cout<<studi.class_0<<"t"<<studi.num<<"t"<<<<"t"<<studi.elec<<"t"< <studi.c_program<<"t"<<studi.media<<"t "<<studi.english<<
51、;" t"<< studi.math<<"t"<<studi.sport<<"t "<<studi.polity<<"t"<<studi.average<<"t"<<studi.order<<endl;)Write(stud,n);)void Output(Stu stud) / 显示全部学生成绩system("cls");j®行前清屏 */int
52、 n=Read(stud);cout<<endl<<"=>> 显示全部学生成绩 <<="<<endl;if(!stud)cout<<没有记录"else(cout<<""<<endl;/*格式头*/cout<<"班级 <<“t"<<“ 学号 "<<“t"<<“ 姓名 "<<“t"<<" 电子 &quo
53、t;<<“t"<<“c+<<t"<<“ 多媒体 "<<“t"<<“ 英语 "<<“t<<“ 数学 "<<“t"<<“ 体育 “<<中"<<“ 政治 "<<“t"<<“ 平均分"<<endl;cout<<""<<endl;for(int i=0;i<n;i+)
54、/* 循环输入 */(cout<<studi.class_0<<"t "<<studi.num<<"t "<<<<"t "<<studi.elec<< t"<<studi.c_program<<"t "<<studi.media<<"t "<<studi.english<<"t "
55、<< studi.math<<" t"<<studi.sport<<"t"<<studi.polity<<"t"<<studi.average<<endl;cout<<""<<endl;int menu()菜单函数*/(char c;dosystem("cls")逑行前清屏*/cout<<"*n"<<endl;cout<<
56、"<<欢迎您使用学生成绩治理系统n"<<endl;cout<<"*nn"<<eSW选择 */cout<<"<<endl;cout<<"*【1】输入学生成绩* "<<endl;cout<<"*21显示统计数据* "<<endl;cout<<"*31查找学生成绩* "<<endl;cout<<"*【4】修改学生成绩* &quo
57、t;<<endl;cout<<"*【5】删除学生成绩* "<<endl;cout<<"*【6】插入学生成绩* "<<endl;cout<<"*【7】按平均分降序排列* "<<endl;cout<<"*【8】显示全部学生成绩* "<<endl;cout<<"*01退出本系统* "<<endl<<endl;I*cout<<"青你选择操作(0-8):"<<endl;c=getchar();读入选择 */ )wh
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 计算机技术与软件职称考试试题与答案
- 产科护理常见问题试题及答案
- 计算机技术与软件专业剖析试题及答案
- 二零二五年度智能车库租赁与能源管理协议
- 二零二五年度宿舍安全管理及责任落实协议
- 2025年度电商店铺合伙经营合作协议书
- 2025年度新能源汽车充电桩项目入股合作协议书
- 二零二五年度房屋租赁经营与纠纷解决协议
- 7.2.2复数的乘、除运算(解析版)
- 二零二五年度影视制作公司制片助理场记团队聘用协议
- 劳务派遣劳务外包项目方案投标文件(技术方案)
- UL9540A标准中文版-2019储能系统UL中文版标准
- 2024年苏州市职业大学单招职业适应性测试题库完整版
- 产品尺寸检测报告
- 危大工程巡视检查记录
- 建筑工程材料见证取样、送检单
- 大一高数试题及答案(共16页)
- IPC-A-610E培训教材(完整版)
- (完整word版)自然拼读单词表最新(精华版)
- 吉林大学地球科学学院09版培养方案.doc(2010.11.30)
- 顶管施工安全控制要点
评论
0/150
提交评论