当前位置首页 > 高等教育 > 其它相关高校文档
搜柄,搜必应! 快速导航 | 使用教程  [会员中心]

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

文档格式:DOC| 19 页|大小 57.50KB|积分 18|2022-04-11 发布|文档ID:73193144
第1页
下载文档到电脑,查找使用更方便 还剩页未读,继续阅读>>
1 / 19
此文档下载收益归作者所有 下载文档
  • 版权提示
  • 文本预览
  • 常见问题
  • 大连民族学院计算机科学与工程学院实验报告实验题目: 学生成绩管理程序 课程名称: 程序设计基础实习 实验类型:□演示性□验证性□操作性■设计性□综合性专业:班级:学生姓名:学号:实验日期: 2015年3月30日 实验地点:计算机学院综合试验中心(F-307) 实验学时: 实验成绩:指导教师签字: 2015 年 3月 30日一、教学目的与要求:本实习的目的就是要达到能够灵活运用程序设计基础所讲授内容,能够针对一个需求比较明确的小型问题,设计合理的解决方案,并能够用编程语言转化为程序以解决实际问题进一步掌握开发一个小型实用软件系统的基本步骤和方法、初步培养良好的编程习惯、掌握调试代码的基本方法具体目标要求:1)学生应该熟练掌握条件分支、循环控制等语句,掌握函数的定义与调用,能以结构体的形式(struct)表示事物对象,并以数组的形式组织数据,部分同学可以尝试用指针、文件等知识;2)学生能够以比较规范的方式书写代码,能够了解一些程序在工程上的要求以及为何这样要求;3)学生能独立调试、跟踪代码,并能解决常见的编译错误和运行错误。

    二 功能分析1、读/写功能:在程序开始时读取数据文件中的数据至程序,在程序选择正常退出时将程序中的数据写回数据文件;2、浏览功能:实现所有数据的显示即可;3、查找功能:分为按照学号查找(结果唯一)和按照姓名查找(结果不唯一)两个子功能;4、增加功能:首先输入要增加的记录的学号,然后判断此学号是否已经存在,如果存在,则不增加,否则增加记录(放在所有记录之后即可);5、删除功能:首先输入要删除的记录的学号,然后判断此学号是否已经存在,如果存在才删除此条记录(即数组数据的删除);6、修改功能:首先输入要修改的记录的学号,然后判断此学号是否已经存在,如果存在,则对记录的信息项进行修改;三.数据需求(1)学生信息包括:学号、学生姓名、班级2)课程信息包括:成绩数学、外语、物理、程序、思修、中传,共6门四.代码说明//头文件包含#include #include #include #include #define SrcFile "score_141-4.txt"//常量定义//成绩分别为:数学、外语、物理、程序、思修、中传,共6门typedef struct{ char no[11]; //学号 char name[30]; //姓名 char clname[10]; //班级名称 int score[6]; //6门课程的分数 int sum; //本学期总分}StScore;//函数原型声明void mainMenu(); //主菜单int readFunc(StScore stS[]); //从文件中读数据至数组int saveFunc(StScore stS[], int n); //将程序中的数据写回到数据文件中void displayAll(StScore stS[], int n); //显示功能(显示所有记录)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); //修改功能/////////////////////////////////////////////////////////////////////////函数说明:程序的主函数int main(){ StScore stS[300]; //用于存储数据的数组 int size; //数组中记录的数目 char x; size = readFunc(stS); if(size == -1) { printf("读取文件错误!\n"); return 1; } char sel; //菜单选项// char no[11]; //输入的学号变量// char name[20];// int ret; //返回值 while(1) { mainMenu(); printf("请输入您的选项: \n"); fflush(stdin); sel = getche(); putchar('\n'); switch(sel) { case '1': //添加记录 addFunc(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); break; case '0': //退出程序 saveFunc(stS, size); return 0; default: printf("输入错误!\n"); break; } } return 0;}////////////////////////////////////////////////////////////////////////*函数说明:从文件中读数据至数组参数:stS:StScore *类型,指向要操作的学生记录数组的指针。

    返回值:如果读取成功,则返回stS数组中的记录数目;如果读取失败,则返回-1算法描述:0、SrcFile文件中数据格式如下:2013250612 李宣廷 网络141 69 82 78 81 61 87;1、从SrcFile中读取至StScore类型的数组stS;2、如果文件操作失败,则返回-1,否则每读取一条,计数器+1,读取结束后,返回该计数器的值/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", stS[i].no, stS[i].name, stS[i].clname) == EOF) break; stS[i].sum = 0; for(j=0; j<6; j++) { fscanf(fp, "%d", &stS[i].score[j]); stS[i].sum += stS[i].score[j]; } } fclose(fp); return i;}//////////////////////////////////////////////////////////*函数说明:把程序中的数据写回数据文件参数: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; i

    /void displayAll(StScore stS[], int n){ int i, j; printf("学号\t\t姓名\t班级\t数学 外语 物理 程序 思修 中传 总分\t\n"); printf("------------------------------------------------------------------\n"); for(i=0; i

    { printf("此学号已存在!!!\n"); break; } } strcpy(stS[n].no,sno); //拷贝字符串 printf("此学号已添加!!!\n"); printf("请输入姓名:\n"); gets(stS[n].name); printf("请输入班级:\n"); gets(stS[n].clname); printf("请输入数学、外语、物理、程序、思修、中传:\n"); scanf("%d %d %d %d %d %d",&stS[n].score[0],&stS[n].score[1],&stS[n].score[2],&stS[n].score[3],&stS[n].score[4],&stS[n].score[5]); // stS[n].sum=stS[n].score[0]+stS[n].score[1]+stS[n].score[2]+stS[n].score[3]+stS[n].score[4]+stS[n].score[5]; fp = fopen(SrcFile, "at"); //在文件原有内容后追加内容。

    if(fp==NULL) { printf("文件不存在!!!"); return -1; } fprintf(fp," %s %s %s %d %d %d %d %d %d",stS[n].no,stS[n].name,stS[n].clname,stS[n].score[0],stS[n].score[1],stS[n].score[2],stS[n].score[3],stS[n].score[4],stS[n].score[5]); fclose(fp); printf("记录添加成功!!!\n");return 0;}int searchByNo(StScore stS[], int n)//按学号查找信息记录{ int x=0; char sno[10]; printf("请输入学号:\n"); gets(sno); for(int i=0;i

    在解决问题的过程中,我也学到了很多知识,更是让我把课本的知识应用到实际之中,让我了解了我们学习的知识有什么用,增强我的自信心和学习的动力同时感谢老师和同学在课程设计过程中的帮助!总之,通过这次课程设计,我获益匪浅。

    点击阅读更多内容
    卖家[上传人]:zhangningclb
    资质:实名认证