学生成绩管理系统1.0v 完成的学习总结

本文是对于 学生成绩管理系统1.0v 完成的总结,用于阶段总结和日后交流

=======================错误处理=====================
1、使用malloc()和free()遇到的错误:

【报错形式】:
*** glibc detected *** ./a.out: free(): invalid next size (fast): 0x085b2330 ***
*** glibc detected *** ./a.out: malloc(): memory corruption: 0x085b2340 ***
【错误原因】:
使用malloc申请的内存,在使用时,写入的内存超过了内存容量,造成在free时报错
【解决办法】:
·在使用结构体数据赋值时,注意变量的强制转换,防止内存数据写入过量;
·在使用循环时,注意是否循环过度;
·【重点】在使用申请内存时,也要注意申请的大小,
如 malloc(sizeof(Node)),若 Node 是结构体,则申请的内存大小是合理
若 Node 是结构体指针(不建议),则申请内存大小是指针大小,固定4个字节
【避免方式】:数据赋值时注意【循环次数】和【数据类型】,定义结构体时,别用结构体指针,或者定义
结构体指针时,结构内部避免数据变量【区分指针变量】。

2、在 a.c 里,使用 b.c 文件内定义的结构体 pLink 时,遇到的错误:

【报错形式】:
错误: 未知的类型名‘pLink’
错误: 未知的类型名‘pLink’
【错误原因】:
在 b.h 内添加了 a.h 的头文件,导致结构体 pLink 被重复定义,最终在 a.c 内使用无效
【解决办法】:
·将 b.h 内的 a.h 注释掉
【避免方式】:在写头文件时,尽量少添加声明文件;或者另外【新建】一个【结构体定义】的声明文件。

=======================知识点总结===================
参考文档:
(https://blog.csdn.net/zxx910509/article/details/56275492/)
(https://www.cnblogs.com/kangjianwei101/p/5220021.html)
1、对文件进行读写操作:

【步骤一】:首先获取需要进行操作的文件指针,
即 FILE* fp = fopen("data/file.txt","r/r+/w/w+/a/a+");
r :只读,指针指向【文件的开头】 -> 【读文件】
r+:可读可写,指针指向【文件的开头】
w :只写(文件若存在,则清零;若不存在,则创建),指针指向【文件的开头】 -> 【写文件】
w+:可读可写,指针指向【文件的开头】
a :只写添加,指针指向【文件的结尾】 -> 【添加文件】
a+:可读可写添加,指针指向【读:文件的开头;添加:文件的结尾】
+b:【二进制模式】对【二进制文件】(区分纯文本文件,自行百度)进行操作。
【步骤二】:进行相应的文件操作
读 fgetc(fp) :一次读一个字符;区别getc(fp),getchar();
fgets(fp) :一次读一行字符;区别gets();
fscanf() :一次读一个格式字符;fscanf(fp,"%s%d",str,&d); -> 【适合数据载入】
写 fputc(fp) :一次写一个字符;区别putc(fp),putchar();
fputs(fp) :一次写一行字符;区别puts();
fprintf() :一次写一个格式字符;fprintf(fp,"%s %d\n",str,d); -> 【适合数据存储】
文件结束标志:feof用检测流上的文件结束符,其返回值有两种情况:
如果遇到文件结束,函数值为非零值,否则函数值为0
while(!feof(fp)) {} -> 【适合文件操作结束】
【步骤三】:关闭文件
fclose(fp) :-> 【适合结束文件操作,释放缓冲区】

2、对双向链表进行快速排序:

【原理】:递归,确定最左侧数据的位置,依次递归
【要点】:确定结束和递归的标志;确定链表的头尾;确定排序的头尾;
【步骤】:
传入左右端点和左端点排名,备份当前左右端点(用于结束判断);
外while:确定一个节点的位置
内while:右端左移
交换左右端节点
若左右节点相等,跳出外循环
内while:左端右移
交换左右端节点
若左右节点相等,跳出外循环
【思考】:此处使用的是节点交换,程序复杂,建议可以对 待确定位置的节点内容 进行备份,而后
的节点只需单向赋值即可,最后再把备份内容赋值到确定位置。

=======================注意点=======================
1、一个中文字符所占有的字节数为 【3个字节】;
2、对字符串数组变量进行赋值时,使用 string.h 里的 strcpy() 执行;scanf()无需这样;
3、定义字符串数组变量时,若需要8个字节,那要定义9个字节,留一个存字符串结束符;
4、做界面方法时,返回用户选择即可;各功能界面,放在各功能的方法里

=======================未解决的问题=================
1、当输入的格式(chars)与要求输入的格式(int)不一致,本次输入无效[变量值不变],并进入死循环
#include <stdio.h>
int main()
{
//[未解决]
int id = -1;
while(1)
{
scanf("%d",&id);
printf("%d",id);
}
}
执行:g
-1 -1 -1 -1 -1 -1 -1 ……(死循环)

=======================计划改进内容=====================
1、对系统文档进行【加密】:通过一种协议,在读入时解码,在写入时编码;
2、在输入密码时,输入的字符【不显示】在终端界面上;
3、实现按【任意键返回】的功能。
4、不再对退学的学生进行分数排序,不再对没有分数的同学进行排序
5、添加生日提醒
6、添加教师和学生的所属关系

原文地址:https://www.cnblogs.com/ZhongShengXueXi/p/9249814.html

时间: 2024-10-11 01:50:55

学生成绩管理系统1.0v 完成的学习总结的相关文章

java开发的简易学生成绩管理系统

经过1个月的紧张学习和应用,终于做出了这个简易的学生成绩管理系统. 代码如下(仅供参考学习) view包下的菜单 package com.xujulong.www.view: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Scanner; import com.xujulong.www.po.Manager; import

使用C++结合文件操作和链表实现学生成绩管理系统

对于学生成绩管理系统,我是不会陌生,几乎学习C语言的人,做项目的时候都会想到学生成绩管理系统,我也不例外,在学了一段时间C语言后,也用C语言做了一个学生管理系统,后来联系做了几个,算过来,这个系统对前面的系统有所改进,增加了文件操作可以不用手动输入学生信息,可以直接从文件中读取学生信息,从而简化了操作 使用C语言实现学生成绩管理系统 http://blog.csdn.net/u010105970/article/details/17752193 使用链表实现学生成绩管理系统 http://blo

简单学生成绩管理系统

由于笔者能力所限所以只是简易程序,供初学者学习: #include <stdio.h> #include <stdlib.h> #include<string.h> #define n 100//此处自己更改 void face(void); void choice(int m,char name[][20],double math[],double english[],double Clanguage[]); void input(char name[][20],do

C语言学生成绩管理系统分享

设计一个学生成绩管理系统,对上学期的本班的学习成绩进行管理,具有查询和检索功能,并且能够对指定文件操作,也可将多个文件组成一个文件 . A . 设计内容 1 .每一条记录包括一个学生的学号.姓名.性别.各门课成绩(上学期的科目).平均成绩. 2 .输入功能:可以一次完成若干条记录的输入. 3 .显示功能:完成全部学生记录的显示. 4 .查找功能:完成按姓名或学号查找学生记录,并显示. 5 .排序功能:按学生平均成绩进行排序. 6 .插入功能:按 学号顺序插入 一条学生记录. 7 .将学生记录存在

C语言学生成绩管理系统

设计一个学生成绩管理系统,对上学期的本班的学习成绩进行管理,具有查询和检索功能,并且能够对指定文件操作,也可将多个文件组成一个文件 . A . 设计内容 1 .每一条记录包括一个学生的学号.姓名.性别.各门课成绩(上学期的科目).平均成绩. 2 .输入功能:可以一次完成若干条记录的输入. 3 .显示功能:完成全部学生记录的显示. 4 .查找功能:完成按姓名或学号查找学生记录,并显示. 5 .排序功能:按学生平均成绩进行排序. 6 .插入功能:按 学号顺序插入 一条学生记录. 7 .将学生记录存在

JavaWeb学生成绩管理系统

JavaWeb学生成绩管理系统 此设计图提供完整视频讲解,点击这里学习. 主要功能: 不同的用户登录成功之后显示不同的菜单,本次开发使用动态生成菜单. 超级管理员功能: |- 超级管理员可以对老师进行管理,包括老师登录信息生成.查看.更新老师初始化密码: |- 增加考试科目.修改考试科目信息: |- 创建老师账号: 老师功能: |- 可以对学生信息进行维护.增加学生(登录账号).学生信息查看: |- 对学生成绩进行维护.增加学生成绩.查看学生成绩: |- 可以修改自己的登录密码. |- 创建本班

基于WEB的C#学生成绩管理系统

在信息化时代的不断冲击下,学生成绩管理系统与计算机技术的结合,将会是一条提高学生成绩管理系统水平的捷径.使用计算机对学生成绩管理系统的各项基本信息进行管理,比起手工管理来说既方便又简便,而且易于管理.搜索速度快.存储量大等多个优点.将其使用在学生成绩管理系统中,不仅能够提高学生成绩管理系统中管理员的工作效率,而且可以使学生成绩管理系统更加科学与规范.从某些方面上来说,现代学生成绩管理系统的不断标准化促使学生成绩管理系统各方面的管理都逐渐与现代信息处理密切相连,因此应该开发学生成绩管理系统系统将现

《C语言编写 学生成绩管理系统》

/* (程序头部凝视開始)* 程序的版权和版本号声明部分* Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved.* 文件名: 学生成绩管理系统 * 作 者: 刘江波 * 完毕日期: 2012 年 6 月 23 日* 版 本 号: v.623 * 对任务及求解方法的描写叙述部分 * 程序头部的凝视结束 */ #include "stdio.h" #include"string" /*定义学生结构体*/ struc

学生成绩管理系统 1.0(Java+MySql)

真难…… 数据库建立不会,中文编码不会,插入数据不会,删除不会…… Java读入数据不会……数据库连接不会…… 你也好意思说自己是学计算机的啊魂淡…… 我会慢慢写2.0,3.0版的……噗…… src/wenr/entity/Student.java package wenr.entity; /** 数据库定义 CREATE TABLE Student ( sid CHAR(10) PRIMARY KEY, sname CHAR(20) NOT NULL, sc DOUBLE(5,2), sm D