中南大学c++程序设计报告.docx
- 文档编号:5474017
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:71
- 大小:416.98KB
中南大学c++程序设计报告.docx
《中南大学c++程序设计报告.docx》由会员分享,可在线阅读,更多相关《中南大学c++程序设计报告.docx(71页珍藏版)》请在冰点文库上搜索。
中南大学c++程序设计报告
C++程序课程设计报告
学院:
专业班级:
姓名:
课题:
学生管理系统设计
本组组员:
指导教师:
设计时间:
2013年6月24日至7月6日
一、程序设计目的------------------------------------3
二、程序功能介绍------------------------------------3
三、程序设计-----------------------------------------4
1.程序结构--------------------------------------4
2.模块说明--------------------------------------5
四、调试与分析---------------------------------------7
1.程序调试过程----------------------------------7
2.程序的不足------------------------------------10
五、执行结果-----------------------------------------11
六、课程设计总结-------------------------------------11
参考文献---------------------------------------------------------------------------------------------------------------12
附录:
源程序代码---------------------------------------------------12
一、程序设计目的
1.在学完C++程序设计课程后,为了加深和巩固课程的每个知识点,训练并培养自己运用所学知识独立进行程序设计、解决实际问题的能力,学会编制结构清晰、风格良好、数据结构适当的C++语言程序。
2.掌握用C++语言进行简单的菜单设计。
二、程序功能介绍
根据课程设计题目的功能要求,各个功能模块的组成框图如下:
三、程序设计
1)程序结构
2)模块说明
1、输入函数
(1)、函数原形:
scanf(“%d”,&*)
(2)、功能:
scanf()函数利用取地址符号&完成对程序中某个变量的赋值,进而程序中判断循环的功能。
(3)、变量及类型:
inta,b,m:
整型形参变量,接收main()传过来的随机数字。
inti,num:
循环控制变量。
intc,d,f,n,num,j,s,t:
整型形参变量。
其中j具有自加功能;d,f,num,t:
需要用户赋值;c,n,s:
系统自动赋值。
(4)、说明:
输入字符后需要按回车键,待系统做出判断后往下执行。
2、输出函数
(1)、函数原形:
printf(“**********”,*)
(2)、功能:
输出相关提示信息及最后结果。
(3)、相关变量:
intn:
输出正确结果。
intj,c,s:
输出计算正确,错误的题数及所得分数。
(4)、说明:
输出时要把要输出的信息用双引号括起来,输出数字时要在其代表变量前加逗号。
3、定义结构体
首先进行结构体的定义。
将学号、课程编号、课程名称这三项定义为字符型便于以后利用学号查询。
学分、平时成绩、实验成绩、卷面成绩设置为浮点型,因为在实的的成绩学分中并不是都是整数,所以采用了浮点型。
同样根据以上的学分,成绩等计算出来的综合成绩与应得学分也定义为浮点型。
4、数据录入模块
数据录入模块:
要录入相关的学生信息包括学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩。
(图1)
5、数据插入模块
与数据录入模块类似,同样也是学生信息,不过是对新的学生或者是没有进行录入的学生进行插入。
也是要求插入相关的学生信息包括学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩。
(图2)
6、数据删除模块
要求输入相应学号然后删除相关的学生信息包括:
文件A.TXT中的学号、姓名、性别、宿舍号码、电话号码以及文件B.TXT中学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩。
(图3)
7、数据排序模块
能实现选择按综合成绩或实得学分升序或降序排序并显示数据。
(图4)
四、调试与分析
1)程序调试过程
第一步:
进图系统输入学生信息并保存在B.TXT文件中。
第二步:
查询01号学号学生的基本信息并显示在屏幕上。
第三步:
查询01号学号学生的考试成绩并显示在屏幕上。
第四步:
删除01号学生的所有信息。
第五步:
对学生信息进行按总实得学分进行降序排序。
:
第一步:
以01号学号学生的大学物理成绩为例进行数据的录入。
(如图5)
第二步:
查询01号学号学生的基本信息并显示在屏幕上。
(如图6)
查询01号学号学生的考试成绩并显示在屏幕上。
(图7)
第四步:
删除01号学生的所有信息。
(图8)
第五步:
更改显示字体颜色为绿色。
(图9)
第六步:
对学生信息进行按总实得学分进行降序排序。
(图10)
2)程序的不足
在测试过程中我们遇到的主要问题就是发现在查询学生成绩的功能模块出现了问题,无法准确的读取学生成绩的数据。
于是我们仔细的读了该功能模块的代码。
但是,我们发现代码是正确的,完全找不到错误(也有可能是我们的水平有限,发现不了错误)。
于是我们把目光投注到文件b.txt上,在仔细的比对代码和该文件后我们发现,原来是因为我们为了图省事,直接给b.txt文件写入内容时少加了一个数据,致使系统无法正常的读取b.txt文件,从而产生错误。
从中我们也了解到测试程序的时候一定不能偷懒,最重要的是要细心,仔细检查每一处可能发生问题的地方。
五、执行结果
以下为程序执行后的主界面。
六、课程设计总结
通过两周的C语言程序设计的课程设计。
我在我们小组体会到了很多,也学到了很多。
在本次的C语言课程设计的中,程序的编写,整合与调试,让我们小组学到了很多。
一项工作的完成离不开我们饿共同努力。
我们很需要团队合作,并且是紧密的和合作要有统一的目标与行动。
做一项工作一定得考虑到其他组员。
在做自己的任务工作的时候一定需要符合标准,按照应该的思路与方式。
进行程序的编写。
在此次课程设计中,我们小组遇到了不少的问题。
在刚开始的第一天,面对这个课程设计完全没有头绪和思路。
经过认真的分析,参阅了大量的有关资料之后才逐渐明晰。
而后进行了系统模块与流程图的划分。
再后,本人作为本组的组长对小组进行了任务的分配。
我在此次课程设计中不可避免的遇到了一些问题。
首先就是数据录入中,进行保存后,保存文件中有乱码的问题,经过多中方式的改进仍是没能取得预期的效果。
最后找到丁靖宇同学进行询问,丁靖宇同学帮助我们解决这一问题。
最重要的一次是我们小组的文件读取一项中,我们小组始终没能解决好,但是最终在丁靖宇同学的帮助下也解决了。
并且在以后的课程设计中有很多问题多得到了丁靖宇同学的帮助,在这里要感谢丁靖宇同学。
虽然为期一个月的课程设计很快的过去了,但是在这次课程思考中我们学到的更多。
虽然课程设计在刚开始觉得很难,但是坚持下去,去努力就会有收获的。
生活就是这样,汗水预示着结果也见证着收获。
劳动是人类生存生活永恒不变的话题。
通过实际动手操作,我们才真正领悟到“艰苦奋斗”这一词的真正含义,我们想说,编程确实有些辛苦,但苦中有乐,在这个团队的任务中,一起的工作可以让我们有说有笑,相互帮助,配合默契。
对我们而言,知识上的收获重要,精神上的丰收是可喜的。
挫折是一份财富,经历是一份拥有。
这次实际操作必将成为我们人生旅途上一个非常美好的回忆!
参考文献
谭浩强,C程序设计,北京:
清华大学出版社;
程杰,大话数据结构,北京:
清华大学出版社。
附录:
源程序代码
#include
#include
#include
#include
#include"C课设学籍管理系统.h"
#defineLENsizeof(structstu_b)
/*************************************函数申明*********************************************/
structstu_b*Creat();
structstu_b*Load_b();
structstu_a*Load_a();
voidSave_b(structstu_b*head);
voidSave_a(structstu_a*head);
structstu_b*Del_b(structstu_b*head,intcode);
structstu_a*Del_a(structstu_a*head,intcode);
structmgrade*Del_m(structmgrade*head,intcode);
structsum_of_ecredit*Del_s(structsum_of_ecredit*head,intcode);
structmgrade*SelectCourse(structstu_b*head,charcoursecode[4]);
structmgrade*SortCourse(structmgrade*head);
structsum_of_ecredit*CreatSumList(structstu_b*head);
structsum_of_ecredit*SortSumegrade(structsum_of_ecredit*head);
structsum_of_ecredit*SortSumegrade2(structsum_of_ecredit*head);
structsum_of_ecredit*CreatSumList2(structstu_b*head);
voidSort_Student2();
structmgrade*SortCourse2(structmgrade*head);
structmgrade*SelectCourse2(structstu_b*head,charcoursecode[4]);
voidSort_Course2();
voidPrintList(structmgrade*head);
voidChangeColor();
voidShowMain();
voidShowInput();
voidInput();
voidShowBasicInfo();
voidBasicInfo_Code();
voidBasicInfo_Name();
voidBasicInfo_Room();
voidShowSearchGrade();
voidSearchGrade_Code();
voidSearchGrade_Coursecode();
voidSearchGrade_Coursename();
voidDelete();
voidShowSort();
voidSort_Course();
voidSort_Student();
voidInsert();
voidinsert();
/***************************************************************************************/
intn;//定义全局变量n
structstu_a//定义a结构体(存放学生基本信息)
{
intcode;
charname[8];
charsex[3];
introomnumber;
intphone;
structstu_a*next;
};
structstu_b//定义b结构体(存放学生成绩)
{
intcode;
charcoursecode[4];
charcoursename[16];
floatcredit;//学分
floatugrade;//平时成绩
floategrade;//实验成绩
floatjgrade;//卷面成绩
floatmgrade;//综合成绩
floatecredit;//实得学分
structstu_b*next;
};
structmgrade//定义mgrade结构体(只存放学生的单门课程信息)
{
intcode;
charcousecode[4];
charcoursename[16];
floatmgrad;
structmgrade*next;
};
structsum_of_ecredit//定义sum_of_ecredit(只存放学生的学号与总学分)
{
intcode;
floatsum_ecredit;
structsum_of_ecredit*next;
};
/**********************************主函数***********************************************/
voidmain()
{
ShowMain();//调用主页面函数
}
/***************************************************************************************/
/********************************函数功能:
函数输出主界面*******************************/
voidShowMain()
{
intchoice;
while
(1)
{
fflush(stdin);
system("cls");
printf("*************欢迎进入学籍管理系统*************\n\n");
printf("【1】基本数据录入\n");
printf("【2】学生基本情况查询\n");
printf("【3】学生成绩查询\n");
printf("【4】删除学生信息\n");
printf("【5】学生信息排序\n");
printf("【6】更改显示字体颜色\n");
printf("【7】插入学生信息\n");
printf("\n");
printf("请输入对应数字进入该功能\n");
printf("若输入其他数字退出本系统\n");
fflush(stdin);
scanf("%d",&choice);
switch(choice)
{
case1:
ShowInput();break;
case2:
ShowBasicInfo();break;
case3:
ShowSearchGrade();break;
case4:
Delete();break;
case5:
ShowSort();break;
case6:
ChangeColor();break;
case7:
;Insert();break;
default:
system("exit");exit(0);
}
}
}
/***************************************************************************************/
/*******************************系统功能1:
数据录入界面*********************************/
voidShowInput()
{
intchoice1;
while
(1)
{
system("cls");
printf("*************欢迎进入学籍管理系统*************\n\n");
printf("【1】数据录入\n");
printf("1.录入数据\n");
printf("若输入其他数字返回\n");
printf("请输入对应数字进入\n");
fflush(stdin);
scanf("%d",&choice1);
switch(choice1)
{
case1:
Input();break;
default:
return;
}
}
}
voidInput()
{
intt;
structstu_b*head;
while
(1)
{
system("cls");
printf("*************欢迎进入学籍管理系统*************\n\n");
printf("【1】数据录入\n");
printf("1.录入数据\n");
printf("请输入学生的学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩共7个数据\n");
head=Creat();
Save_b(head);
printf("完成录入,共%d条数据\n",n);
printf("按任意数字返回\n");
fflush(stdin);
scanf("%d",&t);
return;
}
}
/***************************************************************************************/
/******************************函数功能:
创建B链表**************************************/
structstu_b*Creat()
{
structstu_b*head;
structstu_b*p1,*p2;
n=0;
p1=p2=(structstu_b*)malloc(LEN);
fflush(stdin);
scanf("%d%s%s%f%f%f%f",&p1->code,p1->coursecode,p1->coursename,&p1->credit,&p1->ugrade,&p1->egrade,&p1->jgrade);
if(p1->egrade==-1)
p1->mgrade=(float)(p1->ugrade*0.3+p1->jgrade*0.7);
if(p1->egrade!
=-1)
p1->mgrade=(float)(p1->ugrade*0.15+p1->egrade*0.15+p1->jgrade*0.7);
if(p1->mgrade>90&&p1->mgrade<=100)
p1->ecredit=(float)p1->credit;//计算综合成绩和实得学分
if(p1->mgrade>80&&p1->mgrade<=90)
p1->ecredit=(float)(p1->credit*0.8);
if(p1->mgrade>70&&p1->mgrade<=80)
p1->ecredit=(float)(p1->credit*0.75);
if(p1->mgrade>60&&p1->mgrade<=70)
p1->ecredit=(float)(p1->credit*0.6);
if(p1->mgrade<=60)
p1->ecredit=(float)(p1->credit*0);
head=NULL;
printf("请输入下一条,或输入0结束\n");
while
(1)
{
n=n+1;
if(n==1)
head=p1;
else
p2->next=p1;
p2=p1;
p1=(structstu_b*)malloc(LEN);
fflush(stdin);
scanf("%d",&p1->code);
if(p1->code==0)//若输入0停止循环
break;
fflush(stdin);
scanf("%s%s%f%f%f%f",p1->coursecode,p1->coursename,&p1->credit,&p1->ugrade,&p1->egrade,&p1->jgrade);
if(p1->egrade==-1)
p1->mgrade=(float)(p1->ugrade*0.3+p1->jgrade*0.7);
if(p1->egrade!
=-1)
p1->mgrade=(float)(p1->ugrade*0.15+p1->egrade*0.15+p1->jgrade*0.7);//计算综合成绩和实得学分
if(p1->mgrade>90&&p1->mgrade<=100)
p1->ecredit=(float)(p1->credit);
if(p1->mgrade>80&&p1->mgrade<=90)
p1->ecredit=(float)(p1->credit*0.8);
if(p1->mgrade>70&&p1->mgrade<=80)
p1->ecredit=(float)(p1->credit*0.75);
if(p1->mgrade>60&&p1->mgrade<=70)
p1->ecredit=(float)(p1->credit*0.6);
if(p1->mgrade<=60)
p1->ecredit=(float)(p1->credit*0);
printf("请输入下一条,或输入0结束\n");
}
p2->next=NULL;
return(head);
}
/***************************************************************************************/
/********************************函数功能:
将A链表内容写入A文件**************
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中南 大学 c+ 程序设计 报告