源代码.txt

【精品】C语言学生成绩管理系统(源代码+论文)

收藏

资源目录
跳过导航链接。
【精品】C语言学生成绩管理系统(源代码+论文).rar
C语言学生成绩管理系统(源代码+论文)
源代码.txt---(点击预览)
C语言课程设计报告.doc---(点击预览)
学生成绩管理系统.exe
学生成绩管理系统源代码.c
压缩包内文档预览:
预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图
编号:1639409    类型:共享资源    大小:54.51KB    格式:RAR    上传时间:2017-08-30 上传人:机****料 IP属地:河南
50
积分
关 键 词:
精品 语言 学生 成绩管理系统 源代码 论文
资源描述:
【精品】C语言学生成绩管理系统(源代码+论文),精品,语言,学生,成绩管理系统,源代码,论文
内容简介:
学生成绩管理系统 课程设计报告 专 业: 软 件 学 院 班 级: 计 姓 名: 李 政 源 指导教师: 李 建 中 学 号: 0620010710 课程设计报告 一、课程设计题目 基本要求题目:矩阵乘法。 综合训练:学生成绩管理系统 二、设计要求 矩阵乘法:编写一个函数实现矩阵 A( 2 行 3 列)与矩阵 B 相乘( 3 行 2 列),乘积放在 主函数中输入相乘的两数组,并输出结果。 学生成绩管理:(结构体数组、函数、指针、算法、流程结构及文件等的综合应用) 程序说明:有 N 个学生,每个学生的数据包含学号(不重复)、姓名、三门课的成绩及平均成绩,试设计一学生成绩管理系统,使之能提供以下功能: ( 1)主菜单 ( 2)各菜单项功能 成绩录入:输入学生的学号、姓名及三门课的成绩; 成绩查询:(至少一种查询方式)。 按学号查询学生记录。 查询不及格学生的记录。 成绩统计: 计算学生的平均分; 根据学生的平均分高低,对学生的数据进行排序后输出; 对学生单科成绩排序,输出学生姓名与该科 成绩; 退出系统:退出整个系统(即主菜单)。 ( 3)结构体数组: 30 /* 定义学号 */ 0; /* 定义姓名 */ ; /* 定义存贮三门课成绩的数组 */ /* 定义平均成绩 */ ; /* 定义结构体数组,存贮多个学生的记录 */ 三、 数据结构设计描述 系 统 功 能 描 述 1能够输入学生的学号、姓名、三科成绩并且计算出平均成绩。 2能够以表格的形式输出学生记录 3能够按照学生三科的平均成绩进行排序 4能够按照学生的单科成绩进行排序 学生成绩管理系统 1、 成绩录入 2、 成绩查询 3、 成绩统计 4、 退 出 5能够按照学号查询学生记录 6往表中插入学生记录 7从表中删除学生记录 8存储记录到文件中 9从文件中读取记录 10退出 数 据 字 典 1数据流条目 数据流名称:全部记录 别名:无 简述:最新更新后所有关于学生成绩的记录 来源:数据库 去向:加工“记录筛选” 数据流量:不限 组成:学号 +姓名 +均成绩 数据存储条 数据存储名称: 学生成绩记录 别名:无 简述:存放学生所有可供查询的信息 组成:学号 +姓名 +均成绩 组织方式:索引文件,以学学号为关键字 查询要求:要求能立即查询 2数据项条目 数据项名称:学号 别名:无 简述:所有学校学生的学号 类型:字符串 3加工条目 加工名:更改的记录 激发条件:学生成绩记录被改动 优先级:普通 输入:新记录 输出:更新数据、数据未改动 加工逻辑:根据现有学生成绩记录 记录 输入一个数据就声明一个新节点 p,把 p-且链接到之前列表的尾端。 ; ) 指针 指针 是 否 输入学号 p-出 p- 内存 是 否 溢出 输入姓名 p-止 i=0;s; 菜单 p-s/3; p-; p-p; 5、 记录函数 算法 : 先将 的指针指向第一个 结 点,将 (即第一个 结 点 )的数据输出。然后再将的指针指向 即下一 结 点 ),将 (即第一 结 点 )的数据输出。重复执行此步聚直到 p=指向第一个结点 输出 当 6、 找记录函数 算法: 采用线性查找法往下一个节点查找 。输 入所要查找的学生的学号 s,设一个指针变量p,先指向第一个结点,当 p-s) & p != 果p!=出 输入要查找的学生的学号 s p= 当记录的学号不是要找的,或指针不为空时 p=p-p!=果指针不为空 是 否 显示没有该 输出 学生 7、删除记录函数 算法: 从 查该结点中的 果相等就将该结点删除,如不相等,就将 如此进行下去,直到遇到表尾为止。 p1= 输入入要删除的学号 s 当( s)) & = p2= p1=是 否 是 否 输出 ”找不 到 ” 信息“ (删除头结点 ) 8、 排序函数 t=p1=p2= 当 t-p2=p1= p1= 否 t- t- t; t; p1= 当 i+; i; p1= 输出“排序成功” 9、 入函数 算法: 先将学生的成绩按平均分由高分到低分进行排序,再插入一个新生的结点 ,要求按平均分的高低顺序插入。先用指针变量 向待插入的结点, 向第一个结点。如果待插入的结点不应插在 时将 移,并使 向刚才 复以上的步骤,直到 止。这时将 是如果 指的已是表尾结点,则 不应后移了。如果 所有结点的 小,则应将 指的结点插到链表末尾。如果插入的位置既不在第一个结点之前,又不在表尾结点之后,则将 使 向待插入的结点,然后将 值赋给 得 向 向的变量。如果插入位置为第一个结点之前,则将 给 给 果要插到表尾之后,应将 给 给 后再调用排序的函数 ,将学生成绩重新排序 . P1= p0=来的链表是空表 是 否 将 当 及 指向的不是表尾结 的结点作为 点 唯一结点 否 否 p0 插到表尾之后 ) 插到表头之前 ) (插到表中间 ) n=n+1; (结点加 1) (将成绩重新排序) 10、保存数据到文件函数 输入要保存记录的文件地址 件不能打开 否 是 p= 输出一个出错信 当 息,并返回菜单 p, (写入一条记录 ) p=p- (指针后移 ) (关闭文件 ) 11、从文件读数据函数 定义两个指针变量 p1,入要打开的记录文件地址 文件不能打开 否 是 开辟一个新单元 指针 否为空 返回菜单 否 是 返回菜单 读入记录 (关闭文件 ) 七、 课程设计过程中遇到的问题及解决过程 ( 1)刚开始没有那个初始化函数,程序运行后,没有输入任何数据就试得去执行显示功能,结果显示的是一些乱码!加入初始化函数后,这种现象也随之消失。 ( 2)刚开始执行输入函数,按学号顺序输入十个学生的成绩 ,输完后执行显示功能,学生成绩记录是按学号的反顺序显示的,试着在其中增加一些语句,希望能把学号按正常顺序显示,但暂时没有成功 ,所以在输入成绩时只能按学号反顺序输入,最后就按学号正常顺序输出了。 ( 3)刚开始时,先把成绩按平均分排序,再插入一个学生的成绩,执行显示功能,虽然插入的学生的成绩能正常插入,但该学生的名次为 0。后来,在插入成绩之后,调用排序函数,把所有成绩重新排序一次。 ( 4)在输入函数中设了一个无限循环,可以输入无数个学生的成绩信息,当学号为 0 的时候则停止输入。 ( 5)输入太多个学生的成绩时,屏幕显示不能控制为一页一页显示,所以为了方便起见,不要输入太多记录,十七左右为最佳。 ( 6)在没有输入任何信息的情况下,去执行排 序功能,最后显示有一个记录,学号、姓名为空白,成绩都为 0,名次为 1。 ( 7)在输入选项时不能输入字母 ,否则会死循环,建议不要乱输字母。 八、课程设计心得体会 经过一个多星期的 觉自己收获不少! 首先是:链表本来上课是没有上的,但这个课程设计里面主要都是用链表,因为要达到这样的功能,使用链表相当方便,但不容易理解,所以在这方面我很了很多的时间看课本和参考课外书,使 其次,在做课程设计的过程中,发现了平时很多没有注意到的问题,例如:返回值函数和不返回值函数两者在主函数中的 调用是不同的 更重要的是,这次课程设计虽然花了我不少时间,但正是这些时间,让我见识到了 个学生成绩管理系统都是在自己知识范围内完成的,所以界面清晰简单,可能不是很好看,但绝对实用! 从这里我也得到一个体会,做一个程序,或者开发一个软件,应该着重从它的后台制作入手,不能做出一个中看不中用的程序或者软件。 相信这次的课程设计为我以后继续从事计算机工作打了一个小小的开头。 九、附源程序 #*I/O 函数 */ #*其它说明 */ #*字符串函数 */ #*屏幕操作函数 */ #*内存操作函数 */ #*字符操作函数 */ #*动态地址分配函数 */ # 3 /*定义常数 */ # 30*定义数据结构 */ 1; 5; ; /*菜单函数,返回值为整数 */ = *, /*定义菜单字符串数组 */ 0. /*初始化 */ 1. /*输入记录 */ 2. to , /*显示单链表中所有记录 */ 3. /*排序 */ 4. D, /*按照学号查找记录 */ 5. to , /*插入记录到表中 */ 6. a /*从表中删除记录 */ 7. /*将单链表中记录保存 到文件中 */ 8. /*从文件中读入记录 */ 9. /*退出 */ , , /*屏幕调节,没有实际意义 */ , *, , ,; s3; /*以字符形式保存选择号 */ c,i; /*定义整形变量 */ /*设置背景颜色为黄色 */ ,25); /*移 动光标 */ .n); /*压任一键进入主菜单 */ ; /*输入任一键 */ ; /*清屏 */ i=0; /*选择项不在 09之间重输 */ c; /*返回选择项,主程序根据该数调用相应的函数 */ /*初始化链表,可以实现对另一组数据的处理 */ /*初始化链表 */ /*创建链表,完成数据录入功能 */ i; s; h=* (;) ); /*申请空间 */ *如果指针 of ; /*输出内存溢出 */ *返回空指针 */ as n); #Oto n); O.:,1); /*输入学号并校验 */ if(=#) *如果学号首字符为 #则结束输入 */ ,5); /*输入姓名,并进行校验 */ d n,N); /*提示开始输入成绩 */ s=0; /*计算每个学生的总分,初值为 0*/ i=0;i); /*输入成绩 */ if(i100|ii100|ii; /*累加各门课程成绩 */ s; /*将总分保存 */ s/N; /*求出平均值 */ ; /*未排序前此值为 0*/ h; /*将头结点做为新输入结点的后继结点 */ h=*新输入结点为新的头结点 */*没 排序前 ,后输入的数据将排在最上 */ h); /*返回头指针 */ /*自定义输入控制函数 s, p255; do /*显示提示信息 */ %s,p); /*输入字符串 */ if(p)n n); /*进行长度校验,超过 重输入*/ p) s,p); /*将输入的字符串拷贝到字符串 s 中 */ /*显示模块 */ h) i=0; /* 统计记录条数 */ p; /*移动指针 */ ; /*清屏 */ p=h; /*初值为头指针 */ nnn*n); |O. | n); |n); p!= i+; if(i%15=0); nnnn); /*否则什么也不做 */ |%2d |%4d|%4d|%4d| % %3d |n, i, p-no,p-p-,p-, p-,p-p- p=p- *n); /*排序模块 */ h) i=0; /*用来保存名次 */ p,*q,*t,*定义临时指针 */ h1=h-*将原表的头指针所指的下一个结点作头指针 */ h-*断开原来链表头结点与其它结点的连接 */ *当原表不为空时,进行排序 */ t=*取原表的头结点 */ h1=*原表头结点指针后移 */ p=h; /*设定移动指针 p,从头指针开始 */ q=h; /*设定移动指 针 值为头指针 */ t-p!=*作总分比较 */ q=p; /*待插入点值小,则新表指针后移 */ p=p- if(p=q) /*p=q,上面的 即插入点大于头指针,此点应排在首位 */ t-p; /*待排序点的后继为 p*/ h=t; /*新头结点为待排序点 */ *待排序点应插入在 q和 t-p; /* p*/ q-t; /*t*/ p=h; /*已排好序的头指针赋给 p*/ p!=*赋予各组数据排序号 */ i+; /*结点序号 */ p-i; /*将名次赋值 */ p=p-*指针后移 */ !n); /*排序成功 */ h); /*返回头指针 */ /*查找记录模块 */ h) p; /*移动指针 */ s15; /*存放姓名的字符数组 */ ; /*清屏幕 */ D to n); %s,s); /*输入姓名 */ p=h; /*将头指针赋给 p*/ p-no,s)&p!=*当记录的姓名不是要找的,并且指针不为空时 */ p=p-*移动指针,指向下一结点,继续查找 */ if(p=*指针为空,说明未能找到所要的结点 */ D sn,s); *显示找到的记录信息 */ nn*n); | n); |n); |%4d|%4d|%4d| % %3d |n, p-no,p-p-,p-,p-,p-p- *n); /*插入记录模块 */ h) p,*q,*k; /*,i,n=0; n); ); /*申请空间 */ of ; /*如没有申请到,内存溢出 */ *返回空指针 */ O.:,1); /*以下是待插入数据的录入和处理,具体同创建模块同 */ ,5); d n,N); ; i=0;i); if(i100|ii100|ii; ; *设后继指针为空 */ p=h; /*将指针赋值给 p*/ q=h; /*将指针赋值给 q*/ if(h=*链表为空 */ h= &(p- q=p; /*使 /*使 (p- if(h=p)h=p; /*针是 p; /*p*/ p- /*; k!=*重新赋予排序号 (排序号因为被插入新数据而改变) */ n+; k-n; k=k- n s n, h); /*返回头指针 */ /* ) */ /* 只是修改 将“)” 换成 “ ” 就可以了, 就这么一个错误 */ /*删除记录模块 */ h) k5; /*定义字符串数组,用来确认删除信息 */ p,*q; /*p 为查找到要删除的结点指针, 11; /*存放学号 */ ; /*清屏 */ non); /*显示提示信息 */ %s,s); /*输入要删除记录的学号 */ q=p=h; /*给 q和 (p-no,s)&p!=*当记录的学号不是要找的,或指针不为空时 */ q=p; /*将 *将 if(p=*如果 明链表中没有该结点 */ s n,s); *示找到的记录信息 */ *n); | n); |n); |%4d|%4d|%4d| % %3d |n, p- p-p-,p-,p-,p-p- *n); doDo to y/n),k,5); k0!=y&k0!=n); if(k0!=n) /*删除确认判断 */ if(p=h) /*如果 p=h,说明被删结点是头结点 */ h=p-*修改头指针指向下一条记录 */ q-p-*不是头指针,将 (p); /*释放 (n o %s n,s); h); /*返回头指针 */ /*保存数据到文件模块 */ h) *定义指向文件的指针 */ p; /* 定义移动指针 */ 0; /*保存输出文件名 */ :n); %s, fp=)=*为输出打开一个二进制文件,如没有则建立 */ n); ); .n); /*打开文件,提示正在保存 */ p=h; /*移动指针从头指针开始 */ p!=*如 p,1, /*写入一条记录 */ p=p-*指针后移 */ /*关闭文件 */ n); /*显 示保存成功 */ /*导入信息模块 */ p,*q,*h=*定义记录指针变量 */ * 定义指向文件的指针 */ 0; /*保存文件名 */ :n); %s, /*输入文件名 */ fp=)=*打开一个二进制文件,为读方式 */ n); /*如不能打开,返回头指针 */ h; n n); p=(); /*申请空间 */ p) of n); /*如没有申请到,则内存溢出 */ h; /*返回空头指针 */ h=p; /*申请到空间,将其作为头指针 */ /*循环读数据直到文件尾结束 */ !=p,1, *如果没读到数据,跳出循环 */ p-); /*为下一个结点申请空间 */ p- of n); /*如没有申请到,则内存溢出 */ h; q=p; /*保存当前结点的指针,作为下一结点的前驱 */ p=p-*指针后移,新读入数据链到当前表尾 */ q-*最后一个结点的后继指针为空 */ /*关闭文件 */ !n); h; /*返回头指针 */ /*单科排序模块 */ h) i=0,j; /*用来保存名次 */ p,*q,*t,*定义临时指针 */ to of to be (n);/*选择指定所要的单科成绩进行排序( 0, 1, 2) */ %d,&j); /*进行选择 */ h1=h-*将原表的头指针所指的下一个结点作头指针 */ h-*断开原来链表头结点与其它结点的连接 */ *当原表不为空时,进行排序 */ t=*取原表的头结点 */ h1=*原表头结点指针后移 */ p=h; /*设定移动指针 p,从头指针开始 */ q=h; /*设定移动指针 值为头指针 */ t-jj&p!= q=p; /*待插入点值小,则新表指针后移 */ p=p- if(p=q) /*p=q,上面的 即插入点大于头指针,此点应排在首位 */ t-p; /*待排序点的后继为 p*/ h=t; /*新头结点为待排序点 */ *待排序点应插入在 q和 t-p; /*p*/ q-t; /*t*/ p=h; /*已排好序的头指针赋给 p*/ p!=*赋予各组数据排序号 */ i+; /*结点序号 */ p-i; /*将名次赋值 */ p=p-*指针后移 */ h); !n); /*排序成功 */ h); /*返回头指针 */ /*主函数开始 */ i; *链表定义头指针 */ ; /*初始化链表 */ ; /*清屏 */ ;) /*无限循环 */ ) /*调用主菜单函数,返回值整数作开关语句的条件 */ :*执行初始化 */ :;*创建链表 */ :*显示全部记录 */ :*排序 */ :*查找记录 */ : *插入记录 */ :*删除记录 */ :*保存文件 */ :; *读文件 */ :); /*如菜单返回值为 9程序结束 */ 矩阵乘法原代码 #a23,b32,c22) i,j,k; i=0;i2;i+) j=0;j2;j+) k=0;k3;k+) cij+=aik*bkj; a23,b32,c22=0,i,j; as a of n); i=0;i2;i+) j=0;j3;j+) %d,&aij); of :n); i=0;i3;i+) j=0;j2;j+) %d,&bij); a,b,c); i=0;i2;i+) j=0;j2;j+) %d ,cij); n); 十、参考文献 (第三版 )潭浩强 2005年版 清华大学出版社 (第三版 )潭浩强 2005年版 清华大学出版社 常用 1995年版 龙门书局 # /*头文件说明*/# # /*字符串函数*/# /*内存操作函数*/# /*字符操作函数*/# /*动态地址分配函数*/# ) /*定义结构体数组用于缓存数据*/;S;/*各函数声明*/S *; /*初始化函数*/; /*菜单函数*/S *; /*创建链表*/ * /* 显示全部记录*/ * /*查找记录*/S * * /*删除记录*/S * * /*排序*/S * * * /*插入记录*/ * /*保存文件*/S *; /*读文件*/*主函数界面*/S *; /*链表初始化,使;) /*循环无限次*/) :;: /*&:; :); /*如菜单返回值为9则程序结束*/*初始化函数*/S * /*返回空指针*/*菜单选择函数*/n;d; /*定义时间结构体*/d); /*读取系统日期并把它放到结构体to .); /*按任一键进入主菜单*/; /*从键盘读取一个字符,但不显示于屏幕*/; /*清屏*/*n);tt ton);SUn);*n);ttn); /*输入学生成绩记录*/ttn); /*显示*/tton n); /*寻找*/tta n); /*删除*/ttto a n); /*排序*/ttto n); /*插入*/ttn); /*保存*/ttn); /*读取*/ttn); /*退出*/ntt n);*n);tttt%d%d%dn, /*显示当前系统日期*/dontt9):); %d,&n); /*如果选择项不在19之间则重输*/n); /*返回选择项,主函数根据该数调用相 的函数*/*输入函数*/S *i,s;S *p; /* 定义函数. 函数 回一个指 链表头的指针*/;)p=(S *); /* 一个 的单 */p) /*如果指针of ); /*输出内存 出*/ /*返回头指针, */:); %s,p-if(p-=0) /*如果学 字符为0则结束输入*/);%s,p-d n,3); /* 示 始输入成绩*/s=0; /* 个学生的 分,初值为0*/i=0;i);if(p-ii100) /* 保成绩在0100之间*/n);p-ii100);s=s+p-i; /* 各 成绩*/p-s; /* 分保存*/p-s/3; /* 用 s 成 值*/p-; /*排序前 值为0*/p- /* 头结为 输入结的结*/p; /* 输入结为 的头结*/ /* 显示全部记录函数*/ *i=0; /* 统 记录S *p; /*动指针*/;p= /*初值为头指针*/n*S*n);n); | | | | | | | | |n);n);p!=i+;| %3d | %4s | % | %3d | %3d | %3d |%3d | % | %n,i, p-p-p-,p-,p-,p-p-p-p=p-n);*n);/*查找记录函数*/ *S *p; /* 动指针*/s5; /*存放“用的字符数组*/;n);%s,s);p= /* 头指针p*/p-s) & p != /*当记录的“不指针不为空时*/p=p- /*动指针,指 一结*/ if(p!= /*如果指针不为空*/n*n);n);| | | | | | | n);n);| %4s | %4s | %3d | %3d | %3d | %3d | % | %n,p-p-p-,p-,p-,p-p-p-n);*n);is no s S on n,s); /*显示该学生*/*删除记录函数*/S * *n;S * /*针,指针*/c,s6; /*s6用 存放学 ,入字*/;);%s,s);p1=p2= /*p1值头指针*/s) & = /*当记录的学 不指针不为空时*/p2= /* 针*/p1= /* 一if(s)=0) /*学 找到*/*n);n);| | | | | | | n);n);| %4s | %4s | %3d | %3d | %3d | %3d | % | %n,n);*n);to Y/N ?); /* 示fi入则退出*/;)%c,&c);if(c=n|c=N) /*如果不删除,则”出循环*/if(c=y|c=Y)if( /*明删结*/ /*把 个结地址 /*则 一 结地址前一结地址*/n=s S n,s);t to n); /*删除”
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
提示  人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:【精品】C语言学生成绩管理系统(源代码+论文)
链接地址:https://www.renrendoc.com/p-1639409.html

官方联系方式

2:不支持迅雷下载,请使用浏览器下载   
3:不支持QQ浏览器下载,请用其他浏览器   
4:下载后的文档和图纸-无水印   
5:文档经过压缩,下载后原文更清晰   
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

网站客服QQ:2881952447     

copyright@ 2020-2025  renrendoc.com 人人文库版权所有   联系电话:400-852-1180

备案号:蜀ICP备2022000484号-2       经营许可证: 川B2-20220663       公网安备川公网安备: 51019002004831号

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