成绩管理程序设计报告(含代码C语言).doc

上传人:飞****2 文档编号:60127394 上传时间:2022-11-13 格式:DOC 页数:19 大小:40KB
返回 下载 相关 举报
成绩管理程序设计报告(含代码C语言).doc_第1页
第1页 / 共19页
成绩管理程序设计报告(含代码C语言).doc_第2页
第2页 / 共19页
点击查看更多>>
资源描述

《成绩管理程序设计报告(含代码C语言).doc》由会员分享,可在线阅读,更多相关《成绩管理程序设计报告(含代码C语言).doc(19页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、大连民族学院计算机科学与工程学院实验报告实验题目: 学生成绩管理程序 课程名称: 程序设计基础实习 实验类型:演示性验证性操作性设计性综合性专业:网络工程 班级: 网络124 学生姓名: 学号:实验日期: 2015年3月30日 实验地点:计算机学院综合试验中心(F-307) 实验学时: 48 实验成绩:指导教师签字: 2015 年 3月 30日一、教学目的与要求:本实习的目的就是要达到能够灵活运用程序设计基础所讲授内容,能够针对一个需求比较明确的小型问题,设计合理的解决方案,并能够用编程语言转化为程序以解决实际问题。进一步掌握开发一个小型实用软件系统的基本步骤和方法、初步培养良好的编程习惯、掌

2、握调试代码的基本方法。具体目标要求:1)学生应该熟练掌握条件分支、循环控制等语句,掌握函数的定义与调用,能以结构体的形式(struct)表示事物对象,并以数组的形式组织数据,部分同学可以尝试用指针、文件等知识;2)学生能够以比较规范的方式书写代码,能够了解一些程序在工程上的要求以及为何这样要求;3)学生能独立调试、跟踪代码,并能解决常见的编译错误和运行错误。二 功能分析1、读/写功能:在程序开始时读取数据文件中的数据至程序,在程序选择正常退出时将程序中的数据写回数据文件;2、浏览功能:实现所有数据的显示即可;3、查找功能:分为按照学号查找(结果唯一)和按照姓名查找(结果不唯一)两个子功能;4、

3、增加功能:首先输入要增加的记录的学号,然后判断此学号是否已经存在,如果存在,则不增加,否则增加记录(放在所有记录之后即可);5、删除功能:首先输入要删除的记录的学号,然后判断此学号是否已经存在,如果存在才删除此条记录(即数组数据的删除);6、修改功能:首先输入要修改的记录的学号,然后判断此学号是否已经存在,如果存在,则对记录的信息项进行修改;三数据需求(1)学生信息包括:学号、学生姓名、班级。(2)课程信息包括:成绩数学、外语、物理、程序、思修、中传,共6门四代码说明/头文件包含#include #include #include #include #define SrcFile score_

4、141-4.txt/常量定义/成绩分别为:数学、外语、物理、程序、思修、中传,共6门typedef structchar no11;/学号char name30;/姓名char clname10;/班级名称int score6;/6门课程的分数int sum;/本学期总分StScore;/函数原型声明void mainMenu();/主菜单int readFunc(StScore stS);/从文件中读数据至数组int saveFunc(StScore stS, int n);/将程序中的数据写回到数据文件中void displayAll(StScore stS, int n);/显示功能(显

5、示所有记录)void searchFunc(StScore stS, int n);/查找功能int searchByNo(StScore stS, int n);/按学号查找/void displaySingleRecord(StScore stS, int index);/显示单条记录int searchByName(StScore stS, int n);/按姓名查找int delFunc(StScore stS, int n);/删除功能int addFunc(StScore stS, int n);/添加功能int modifyFunc(StScore stS, int n);/修改

6、功能/函数说明:程序的主函数int main()StScore stS300;/用于存储数据的数组int size;/数组中记录的数目char x;size = readFunc(stS);if(size = -1)printf(读取文件错误!n);return 1;char sel;/菜单选项/char no11;/输入的学号变量/char name20;/int ret;/返回值while(1)mainMenu();printf(请输入您的选项: n);fflush(stdin);sel = getche();putchar(n);switch(sel)case 1:/添加记录addFun

7、c(stS, size);size+;break;case 2:/删除记录delFunc(stS, size);size-;break;case 3:/修改记录modifyFunc(stS, size);break;case 4:/查找记录printf(请选择:1-按学号查找,2-按姓名查找n);x = getche(); putchar(n);switch(x)case 1: searchByNo(stS, size);break;case 2: searchByName(stS, size);break;break;case 5:/显示记录displayAll(stS, size);bre

8、ak;case 0:/退出程序saveFunc(stS, size);return 0;default:printf(输入错误!n);break;return 0;/*函数说明:从文件中读数据至数组参数:stS:StScore *类型,指向要操作的学生记录数组的指针。返回值:如果读取成功,则返回stS数组中的记录数目;如果读取失败,则返回-1。算法描述:0、SrcFile文件中数据格式如下: 李宣廷 网络141 69 82 78 81 61 87;1、从SrcFile中读取至StScore类型的数组stS;2、如果文件操作失败,则返回-1,否则每读取一条,计数器+1,读取结束后,返回该计数器的

9、值。*/int readFunc(StScore stS)int i, j;FILE *fp;fp = fopen(SrcFile, r);/只读形式打开文件if(fp = NULL)return -1;for(i=0; !feof(fp); i+)if(fscanf(fp, %s%s%s, stSi.no, stSi.name, stSi.clname) = EOF)break;stSi.sum = 0;for(j=0; j6; j+)fscanf(fp, %d, &stSi.scorej);stSi.sum += stSi.scorej;fclose(fp);return i;/*函数说明

10、:把程序中的数据写回数据文件参数:stS:StScore *类型,指向要操作的学生记录数组的指针。n:int类型,表明参数stS数组的大小返回值:如果写成功,则返回1,否则返回0。算法描述:将数组stS中的数据全部写回*/int saveFunc(StScore stS, int n)int i, j;FILE *fp;fp = fopen(SrcFile, w);/只写形式打开文件if(fp = NULL)return -1;for(i=0; in; i+)fprintf(fp, %s %s %s , stSi.no, stSi.name, stSi.clname);for(j=0; j6;

11、 j+)fprintf(fp, %d , stSi.scorej);fclose(fp);return i;/函数说明:主菜单程序void mainMenu()printf(-1. 添加记录 -n);printf(-2. 删除记录 -n);printf(-3. 修改记录 -n);printf(-4. 查找记录 -n);printf(-5. 显示记录 -n);printf(-0. 退出程序 -n);/*函数说明:完成显示功能(显示所有记录)参数说明:stS:StScore *类型,指向要操作的学生记录数组的指针n:int类型,表明参数stS数组的大小返回值说明:无返回值算法描述:先显示表头,之后

12、显示学号、姓名、班级,接着通过循环显示成绩数组、显示总分,最后每输出一条记录换一行。*/void displayAll(StScore stS, int n)int i, j;printf(学号tt姓名t班级t数学 外语 物理 程序 思修 中传 总分tn);printf(-n);for(i=0; in; i+)printf(%st%st%st, stSi.no, stSi.name, stSi.clname);for(j=0; j6; j+)printf(%d , stSi.scorej);printf(%dn, stSi.sum);int addFunc(StScore stS, int n

13、) /添加记录功能int i;char sno10;FILE *fp;printf(请输入要添加的学号:n); gets(sno);for(i=0;in;i+)if(strcmp(sno,stSi.no)=0) /判断学号是否存在,字符串比较不能直接用等号,要用strcmp()函数。printf(此学号已存在!n);break; strcpy(stSn.no,sno); /拷贝字符串。printf(此学号已添加!n); printf(请输入姓名:n);gets(stSn.name); printf(请输入班级:n);gets(stSn.clname);printf(请输入数学、外语、物理、程序

14、、思修、中传:n); scanf(%d %d %d %d %d %d,&stSn.score0,&stSn.score1,&stSn.score2,&stSn.score3,&stSn.score4,&stSn.score5);/stSn.sum=stSn.score0+stSn.score1+stSn.score2+stSn.score3+stSn.score4+stSn.score5; fp = fopen(SrcFile, at); /在文件原有内容后追加内容。if(fp=NULL)printf(文件不存在!);return -1;fprintf(fp, %s %s %s %d %d %

15、d %d %d %d,stSn.no,stSn.name,stSn.clname,stSn.score0,stSn.score1,stSn.score2,stSn.score3,stSn.score4,stSn.score5);fclose(fp);printf(记录添加成功!n);return 0;int searchByNo(StScore stS, int n)/按学号查找信息记录int x=0;char sno10; printf(请输入学号:n); gets(sno);for(int i=0;in;i+)if(strcmp(sno,stSi.no)=0) /判断学号是否存在print

16、f(%s %s %s %d %d %d %d %d %dn,stSi.no,stSi.name,stSi.clname,stSi.score0,stSi.score1,stSi.score2,stSi.score3,stSi.score4,stSi.score5);x+;return 0;if(x=0)printf(此学号不存在);return 0;int searchByName(StScore stS, int n)/按姓名查找信息记录char sname20;int a=0; printf(请输入姓名:n); gets(sname);for(int i=0;in;i+)if(strcmp

17、(sname,stSi.name)=0) /判断学号是否存在printf(%s %s %s %d %d %d %d %d %dn,stSi.no,stSi.name,stSi.clname,stSi.score0,stSi.score1,stSi.score2,stSi.score3,stSi.score4,stSi.score5); a+;if(a=0)printf(此姓名不存在!n);return 0;int delFunc(StScore stS, int n)/按学号删除信息int weizhi=-1,i,j;FILE *fp; char sno10; printf(请输入要删除的学号

18、:n); gets(sno);for(i=0;in;i+)if(strcmp(sno,stSi.no)=0) /判断学号是否存在/printf(%s %s %s %d %d %d %d %d %dn,stSi.no,stSi.name,stSi.clname,stSi.score0,stSi.score1,stSi.score2,stSi.score3,stSi.score4,stSi.score5);weizhi=i;break;if(weizhi=-1)printf(此学号不存在!n); elseprintf(删除成功!n);for(i=weizhi;in-1;i+)strcpy(stSi

19、.no,stSi+1.no); strcpy(stSi.name,stSi+1.name); strcpy(stSi.clname,stSi+1.clname); stSi.score0=stSi+1.score0; stSi.score1=stSi+1.score1; stSi.score2=stSi+1.score2; stSi.score3=stSi+1.score3; stSi.score4=stSi+1.score4; stSi.score5=stSi+1.score5;fp = fopen(SrcFile, w);/只写形式打开文件if(fp = NULL)return -1;fo

20、r(i=0; in-1; i+)fprintf(fp, %s %s %s , stSi.no, stSi.name, stSi.clname);for(j=0; j6; j+)fprintf(fp, %d , stSi.scorej);fclose(fp);return 0;int modifyFunc(StScore stS, int n)/修改成绩 int x=0,j;FILE *fp;char sno10; printf(请输入要修改的学号:n); gets(sno);for(int i=0;in;i+)if(strcmp(sno,stSi.no)=0) /判断学号是否存在 printf

21、(请输入要修改的成绩按照数学、外语、物理、程序、思修、中传:n);scanf(%d %d %d %d %d %d,&stSi.score0,&stSi.score1,&stSi.score2,&stSi.score3,&stSi.score4,&stSi.score5); printf(修改成功!n);x+;return 0;if(x=0)printf(此学号不存在n);fp = fopen(SrcFile, w);/只写形式打开文件if(fp = NULL)return -1;for(i=0; in; i+)fprintf(fp, %s %s %s , stSi.no, stSi.name, stSi.clname);for(j=0; j6; j+)fprintf(fp, %d , stSi.scorej);fclose(fp);return 0;五心得体会课程设计实践训练,在课设中也遇到了很多问题,经过向老师询问和跟同学们交流,认真的思考,积极解决问题,终于解决了那些问题。在解决问题的过程中,我也学到了很多知识,更是让我把课本的知识应用到实际之中,让我了解了我们学习的知识有什么用,增强我的自信心和学习的动力。同时感谢老师和同学在课程设计过程中的帮助!总之,通过这次课程设计,我获益匪浅。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com