学生成绩管理系统C语言.docx
- 文档编号:24896232
- 上传时间:2023-06-02
- 格式:DOCX
- 页数:13
- 大小:18.95KB
学生成绩管理系统C语言.docx
《学生成绩管理系统C语言.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统C语言.docx(13页珍藏版)》请在冰豆网上搜索。
学生成绩管理系统C语言
XXXXXXX
课程设计报告
课程名称
C课程设计
设计题目
姓名
pureyang
班级
学号
18
指导教师
设计时间
2014-2-24至2014-2-28
目录
一:
设计要求3
专周题目3
设计要求3
二:
设计与实现4
1:
分析问题4
2:
设计思路4
3:
流程图5
4:
功能实现6
函数和注释6
5:
典型算法和技巧分析,调试体会14
三:
专周小结14
一:
设计要求
专周题目:
学生成绩管理系统
设计要求:
要使用户首先注册,然后登陆进入成绩管理界面,对成绩进行操作,我将实现用户对成绩进行录入,查看个人成绩,修改个人成绩,显示全部成绩等操作。
✧题目要求如下:
1:
要求实现用户的注册,才能进行其他操作;
2:
登陆时,如果错误,将提示用户再次输入,3次输入错误,退出程序。
3:
登陆成功后,提示用户进行对成绩的一系列处理。
4:
这些处理应该包括成绩的录入,查看及退出。
5:
最后可以将成绩完整保存下来,安全退出。
二:
设计与实现
1:
分析问题
●登陆,注册放在第一级菜单中,提示用户选择。
●注册成功后,用户会输入之前的密码,3次错误就退出。
●在主函数中,怎样很好的连接起来?
●用户输入时,可能会输入错误。
2:
设计思路
✓主过程:
主函数里写第一级菜单,实现用户对登陆,注册,退出的选项操作,提示用户选择。
✓用户选择注册后,进入注册的子函数,然后保存用户输入的密码,返回第一级菜单。
✓然后,提示用户登陆,登陆成功后,进入成绩管理系统
✓成绩管理同样让用户选择相应的操作,实现成绩的录入,查询,退回到第一级菜单。
✓进入录入时,接受用户的关于学生成绩的输入,保存在文本文件中。
✓查询时,从文本文件中,打开,让用户输入要查找人的名字,与保存的文件中的学生对比,如果相同,输出成绩;不同就退回到二级菜单。
✓修改时,先找到是否有用户输入学生的名字,如果有,进入修改界面,如果没有,就退到二级菜单。
✓查看全部成绩时,直接从所有文本文件中读出全部学生成绩。
✓最后退出程序。
1
1:
登陆
voidRigester
3:
流程图
4:
查看全部成绩
ViodReadToFile()
3:
修改成绩
ViodCorrect()
2:
查询个人成绩
voidFindOne()
1:
录入成绩
voidWriteToFile()
0:
退出
学生管里界面
voidSuccess
是
intmain
否
否
1.否
密码是否正确
1
1:
登陆
voidRigester
可以是1,2,0
0:
退出
2:
注册
VoidLogin
接受用户的输入
intmain中
开始
4:
功能实现
主函数里可以为用户实现,注册,登陆,退出功能,然后登陆进入成绩管理,里面由voidWriteToFile(),voidReadToFile(),voidFindOne(),voidCorrect(),voidSuccess(),voidLogin(),voidRigester(),voidchenggong()构成,分别实现用户对学生成绩的录入,修改,查询,查看等功能。
下面是部分源码和注释
//#include
//#include
//#include
//#include
//typedefstructStudentType//定义结构体
//{
//charname[10];//姓名
//charnumber[4];//学号
//doubleEnglish;//外语成绩
//doubleC;//C语言成绩
//doublemath;//数学成绩
//doubletotal;//总分
//};
//voidWriteToFile();//录入成绩
//voidReadToFile();//显示全部成绩
//voidFindOne();//查询个人成绩
//voidCorrect();//修改个人成绩
//voidSuccess();
//voidLogin();//注册
//voidRigester();//登陆
//voidchenggong();
//intmain()
//{
//intchoose;
//
//do{
//printf("***************************************\n");
//printf("***1:
登陆**2:
注册**0:
退出***\n");
//printf("***************************************\n");
//printf("(请选择前面的数字,第一次进入请先注册!
)\n");
//scanf("%d",&choose);
//switch(choose)
//{
//case1:
Rigester();break;//选择登陆
//case2:
Login();break;//选择注册
//default:
printf("退出程序!
\n");system("cls");break;//退出
//}
//}while(choose==1||choose==2);
//return0;
//}
//
//}
//voidFindOne()
//{
//FILE*fp=NULL;
//charchoose='y';
//StudentTypeyu;
//fp=fopen("gradetable.txt","r");
//if(fp==NULL)
//{
//printf("文件打开失败!
\n");
//}
//while(choose=='y')
//{
//charxingming[10];
//inta=0,n=0;
//StudentTypeyu;
//printf("\n请输入学生的姓名:
");
//scanf("%s",&xingming);//接收用户的输入的学生名字
//printf("正在查找,请稍后!
!
\n");
//Sleep(3000);
//while(!
feof(fp))
//{
//fscanf(fp,"%10s%10s%lf%lf%lf%lf",
//yu.name,yu.number,&yu.English,&yu.C,&yu.math,&yu.total);
////从文本中读出学生的成绩
//if(strcmp(xingming,yu.name)==0)//判断用户输入学生的名字,文本是否存在
//{
//if(a==0)
//{//如果存在,输出学生的全部成绩
//printf("学号姓名英语成绩C语言成绩高数成绩总分\n");
//printf("%-5s%5s%6.2lf%6.2lf%6.2lf%6.2lf\n\n",
//yu.number,yu.name,yu.English,yu.C,yu.math,yu.total);
//}
//Sleep(1000);
//a=1;
//}
//n++;
//}
//if(n==0)
//{
//printf("对不起,系统中无该生信息,请核实该生姓名是否填写正确!
\n");
//}
//elseif(a==0)
//{
//printf("对不起系统中无该生信息,请核实是否填写正确!
\n");
//}
//fflush(stdin);
//rewind(fp);
//printf("继续查询请输入'y',否则退到上一级菜单!
\n");
//scanf("%c",&choose);
//system("cls");
//}
//fclose(fp);
//return;
//}
//voidCorrect()
//{
//FILE*fp=NULL;
//charchoose='y';
//StudentTypeyu;
//fp=fopen("gradetable.txt","r");
//if(fp==NULL)
//{
//printf("文件打开失败!
\n");
//}
//intb;
//while(choose=='y')
//{
//charxingming[10];
//if(strcmp(xingming,yu.name)==0)//判断该学生文本中是否存在
//{
//if(a==0)
//{
//printf("\t\n%s的成绩如下:
\n\n",xingming);
//Sleep(1000);
//printf("\n学号姓名英语成绩C语言成绩高数成绩总分\n");
//printf("%-5s%5s%6.2lf%6.2lf%6.2lf%6.2lf\n\n",
//yu.number,yu.name,yu.English,yu.C,yu.math,yu.total);
////输出学生的成绩
//}
//Sleep(1000);
//a=1;
//b=1;
//}
//n++;
//}
//if(n==0)
//{
//printf("系统中无该生信息,请核实该生姓名是否填写正确!
\n");
//Sleep(3000);
//break;
//}
//fflush(stdin);
//if(b==1)
//{
//chenggong();//进入修改的界面
//fflush(stdin);
//printf("继续修改请输入'y',否则结束!
\n");
//scanf("%c",&choose);
//printf("修改成功!
正在返回上一级菜单!
\n");
//Sleep(1000);
//system("cls");
//}
//}
//fclose(fp);
//return;
//}
//voidchenggong()
//{
////inta;
//FILE*fp=NULL;
//charchoose='y';
//StudentTypeyu;
//fp=fopen("gradetable.txt","r+");
//if(fp==NULL)
//{
//printf("请输入学生的外语成绩:
");
//scanf("%lf",&yu.English);
//printf("请输入学生的C成绩:
");
//scanf("%lf",&yu.C);
//printf("请输入学生的高数成绩:
");
//scanf("%lf",&yu.math);
//yu.total=yu.C+yu.English+yu.math;
//fprintf(fp,"%10s%10s%6.2lf%6.2lf%6.2lf%8.2lf",
//yu.name,yu.number,yu.English,yu.C,yu.math,yu.total);
//fputc('\n',fp);
//fflush(stdin);
//fclose(fp);
//return;
//}
5:
典型算法和技巧分析,调试体会
1:
使用了结构体StudentType,里面定义了学生的姓名,学号,各科成绩等;
2:
后面的函数运用了数组、指针、结构体、函数、循环语句、文件保存和读取等知识,我发现把它们组合在一起运用,难度还是有的,不理解清楚很难做出来;
3:
主函数使用了switch语句,很好的简化了代码;
4:
之后用了很多的子函数,是程序更加完善;
5:
由于函数很多,流向也很不清晰,开始错误很多,在老师和同学的帮助下,我才渐渐的做好;
6:
现在我知道,对于这种代码多的程序,开始做之前,应该有一个清晰的脉络,可以画一画流程图,想一想每一个函数之间的联系,这样才能有个较好的结果;
7:
调试的时候,问题很多,我试过每一个子函数分开调试,那样可以快速的找到错误的地方。
三:
专周小结
1:
发现把上个学期学的知识组合起来,果然不容易;
2:
做这个成绩管理系统,需要的知识很多,比如后来的文件的保存与打开,FILE,这些新的知识,以后又可以做新的东西了;
3:
现在觉得做这种大一点的的东西,需要掌握的知识很多,难度还是有的,但是做出来之后,感觉还是挺好的,小有成就感,虽然这个系统还不完善,问题还有很多;
4:
然后发现敲代码的时候,各种问题都出现了,对键盘还不是那么熟练,敲的时候很慢,以后要多上机了,想的东西,拿到计算机上调试,还是有很多问题;
5:
发现最重要的问题就是,对基础知识的欠缺,应该学习的知识还是很多,比如我想直接修改学生的某一科成绩,想了很多办法,还是行不通,最后从老师那里知道,以现在的知识,没有办法达到那么效果,所以以后应该好好学习科学文化知识。
6:
专周总体还是很好,可以学到很多东西,提高了自己的能力,锻炼了自己,很有意义。
注:
mywechat:
pureyangcry
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩管理系统 语言