1、 课 程 设 计 报 告课 程 设 计 报 告 设 计 名 称 学生信息管理系统 课 程 名 称 高级语言程序设计(C) 院(系、部)通信工程学院 1 一、设计任务一、设计任务 学生管理系统具体功能如下。 (1)录入学生成绩信息,包括学生学号,姓名,选修课成绩,实验课成绩及必修课成绩。 (2)实现查找功能,即输入学生学号能查找出该学生成绩等相关信息。 (3)实现删除功能,即输入学生学号能删除该学生成绩等相关信息。 (4)实现修改功能,即输入学生学号能修改出该学生成绩等相关信息。 (5)实现插入功能,即输入要插入的位置,在该位置后进行插入操作。 (6)实现排序功能,即按三门课的总成绩进行由高到低
2、排序。 (7)统计学生人数。 (8)显示学生信息功能。 二、系统设计方案(系统主要模块功能介绍)二、系统设计方案(系统主要模块功能介绍) 本实例的实现主要是靠自定义的结构体数组, 首先看一下学生成绩录入模块的方法, 这 里我们每录入一条信息就进行一次磁盘写入, 也就是保存。 在录入信息是还要核对新输入的 学号是否存在, 因为我们在实现查找功能的时候使用学号来查找的, 所以在录入信息是要避 免相同学号。 在录入学生信息时若文件中已存在其他信息, 这时也会将存在的信息显示在屏 幕上,实现这个显示功能是自定义的 show()函数,show 函数的实现并不复杂,以只读方式 打开保存学生信息的文件,将文
3、件按指定格式输出到屏幕上即可。 删除学生成绩信息,修改学生成绩信息,插入学生信息,及查询学生信息实现的关键都 是要找到该条记录, 这里是靠学号来匹配的, 只有在找到该条记录的基础上才能实现其他操 作。删除操作的关键是先确定要删除的记录的位置,然后将该位置后的记录均向前移一位, 实现语句如下:for(j=i;j1;j-) Stuj+1=stuj 三、系统演示如下三、系统演示如下: 菜单界面 2 输入信息 查找信息 删除成绩 3 修改信息 插入信息 排序 4 统计人数 显示信息 四、源程序程序代码及注释四、源程序程序代码及注释 #include #include #include #include
4、 #include #define LEN sizeof(struct student) #define FORMA T “ %-10d%-11s%-10.1f%-10.1f%-10.1f%-10.1fn“ #define DA TA stui.num,stui.name,stui.elec,stui.expe,stui.requ,stui.sum 5 void in(); /*录入学生成绩信息*/ void show(); /*显示学生信息*/ void order(); /*按总分排序*/ void del(); /* 删除学生成绩*/ void modify(); /*修改学生成绩*/
5、void total(); /*计算总人数*/ void menu(); /*主菜单*/ void insert(); /*插入学生和信息*/ void search(); /*查找学生信息*/ struct student int num; /*学号*/ char name15; /*姓名*/ double elec; /*选修课*/ double expe; /*实验课*/ double requ; /*必修课*/ double sum; /*总分*/ stu50; /*录入学生信息*/ void in() system(“color 0F“); /*显示背景和字体颜色*/ system(
6、“cls“); int i,m=0; /*m 是记录的个数*/ char ch2; FILE *fp; /*定义文件指针*/ if(fp=fopen(“data.txt“,“a+“)=NULL) /*打开指定文件*/ printf(“can not openn“); return; while(!feof(fp) if(fread( /*统计当前记录条数*/ fclose(fp); if(m=0) printf(“No record!n“); else system(“cls“); /*使用库函数清屏*/ 6 show(); /*调用 show 函数,显示原有信息*/ if(fp=fopen(“data.txt“,“wb“)=NULL) printf(“can not openn“); return; for(i=0;im;i+) fwrite( /*向指定的磁盘文件写入信息*/ pri