课 程 设 计
课程名称____ C语言程序设计___ 题目名称____学生成绩管理系统__ 学生学院____ _ ____ 专业班级_ __ 学 号_____ _____ 学生姓名_______ _________ 指导教师_______ _________
20011年 01月 13 日
一,总体设计
此程序所能实现的功能模块:
功能一:根据键盘输入的学生信息,能够计算出平均值。
功能二:根据键盘输入的学生信息,能够按照平均分高低进行排序。
功能三:根据键盘输入的学生学号,能够显示该学生的各门成绩以及平均分。 功能四:能够按照学生学号对学生的成绩信息进行删除。 功能五:能够按照学生学号对学生的成绩信息进行修改。 功能六:能够按照平均分的高低插入一位学生的成绩信息。
功能七:能够将所输入的学生成绩信息储存在文件Student.dat中。 功能八:能够提供一个界面来调用各个功能。
二,详细设计 模块一:实现排序功能
设计函数 Sort 流程图如下:
Sort 统计变量数 创建一个临时变量 冒泡法实行排序 释放临时变返回Menu 通过Sort函数对Student.dat文件中的学生成绩信息实现排序功能。 程序运行时的主菜单:
********************************************* a)1----------------录入 b)2----------------排序 c)3----------------显示 d)4----------------查询
e)5----------------插入 f )6----------------修改 g)7----------------删除 h)8----------------退出
********************************************* 此时输入2,调用排序Sort函数。排序后的界面如下:
至此,完成对Student.dat文件中的学生成绩信息实现排序功能。
模块二:实现显示功能
设计函数 Display
程序运行时的主菜单:
********************************************* a)1----------------录入 b)2----------------排序 c)3----------------显示 d)4----------------查询 e)5----------------插入 f)6----------------修改 g)7----------------删除 h)8----------------退出
*********************************************
此时输入3,在上面完成了成绩排序后,此处调用Display函数,显示排序后的学生成绩列表。运行的结果:
至此,完成显示功能。
模块三:实现查询功能
设计函数 Search
程序运行时的主菜单:
********************************************* a)1----------------录入 b)2----------------排序 c)3----------------显示 d)4----------------查询 e)5----------------插入 f)6----------------修改 g)7----------------删除 h)8----------------退出
*********************************************
此时输入4,调用函数Search,然后按照提示输入所要查询的学生学号,运行的结果:(此处查询学号为1115的学生为例)
至此完成了查找学生成绩的功能。
模块四:实现插入功能
设计函数 Insert
流程图如下:
Insert 开辟新结点 将新结点插入原链表中 调用Sort函数 返回Menu
程序设计如下
int Insert(Student stud[],int n)
{ char x[10];
printf(\"学生班级:\"); scanf(\"%s\ printf(\"学生学号:\"); }
scanf(\"%d\printf(\"学生姓名:\"); scanf(\"%s\printf(\"学生高数成绩:\"); scanf(\"%f\printf(\"学生C程序设计成绩:\"); scanf(\"%f\printf(\"学生英语成绩:\"); scanf(\"%f\
stud[n].ave=(stud[n].Math+stud[n].C+stud[n].Eng)/3; gets(x); n++;
Sort(stu,n);
printf(\"\\ 插入成功!\\n\"); return(n);
通过函数Insert进行按照平均分的高低插入一位学生的成绩信息的操作。 程序运行时的主菜单:
*********************************************
a)1----------------录入 b)2----------------排序 c)3----------------显示 d)4----------------查询 e)5----------------插入 f)6----------------修改 g)7----------------删除 h)8----------------退出
********************************************* 此时选择5,调用Insert函数。此时按照提示依次输入需要插入学生的新班级,新学号,新姓名以及新的各门成绩。运行的结果如下:
至此完成了在原本的学生成绩记录中插入“王小四”同学的成绩信息。
模块五:实现修改功能
设计函数 Change 程序设计如下:
void Change(Student stud[],int n) { system(\"cls\"); int s; int i=0;
printf(\"输入需要修改成绩学生的学号:\"); scanf(\"%d\
while((stud[i].Number-s)!=0&&i stud[i-1].Number,stud[i-1].Name,stud[i-1].Math,stud[i-1].C,stud[i-1].Eng, stud[i-1].ave); printf(\"新班级:\"); scanf(\"%s\ printf(\"新学号:\"); scanf(\"%d\ printf(\"新姓名:\"); scanf(\"%s\ printf(\"新数学成绩:\"); scanf(\"%f\ printf(\"新C程序设计成绩:\"); scanf(\"%f\ printf(\"新英语成绩:\"); scanf(\"%f\ stud[i-1].ave=(stud[i-1].Math+stud[i-1].C+stud[i-1].Eng)/3; printf(\"该生的平均分为:%f\\n\} 程序运行时的主菜单: ********************************************* a)1----------------录入 b)2----------------排序 c)3----------------显示 d)4----------------查询 e)5----------------插入 f)6----------------修改 g)7----------------删除 h)8----------------退出 ********************************************* 此时选择6,调用函数 Change,对Student.dat文件中已有的学生成绩信息进行修改。然后按照提示输入需要修改成绩信息的学生学号。通过提示继续分别输入新班级,新学号,新姓名和新的各门成绩。运行结果如下: 至此,完成了改程序的修改功能。 模块六:实现删除功能 设计函数 Delete 程序设计如下: int Delete(Student stud[],int n) { int s; int i=0,j; printf(\"输入需要删除学生的学号:\"); scanf(\"%d\ while((stud[i].Number-s)!=0&&i ********************************************* a)1----------------录入 b)2----------------排序 c)3----------------显示 d)4----------------查询 e)5----------------插入 f)6----------------修改 g)7----------------删除 h)8----------------退出 ********************************************* 此时选择7,调用函数 Delete,对Student.dat文件中已有的学生成绩信息进行删除。按照提示输入要删除的学生学号。运行的结果如下: 最后,调用一次Display 函数,显示删除了学号为1110的学生后的运行结果: 模块七:退出程序 程序运行时的主菜单: ********************************************* a)1----------------录入 b)2----------------排序 c)3----------------显示 d)4----------------查询 e)5----------------插入 f)6----------------修改 g)7----------------删除 h)8----------------退出 ********************************************* 此时选择8,则可以直接退出该程序。 三, 设计描述 功能介绍,参数说明 1,结构体 struct Student { char Class[20]; 班级,一维字符数组 unsigned long Number; 学号,一维数组 char Name[10]; 姓名,一维字符数组 float ave; 平均分,一维数组 float Math; 高等数学,一维数组 float C; C程序设计成绩,一维数组 float Eng; 大学英语成绩,一维数组 }; 2,成绩排序 void Sort(Student stud[],int n) 对Sort进行函数声明 {Student w; system(\"cls\"); 进行一次清屏 int i,j,k; float s; char w[20]; for(i=0;i } 完成排序 3,成绩查询 void Search(Student stud[],int n) 对Search函数进行声明 { system(\"cls\"); 进行一次清屏 int s; int i=0; printf(\"输入需要查找学生的学号:\"); 输入学号 scanf(\"%d\ while((stud[i].Number-s)!=0&&i printf(\"***************************\\n\"); printf(\"班级:%s\\n\ 显示该学号学生各门成绩 printf(\"学号:%d\\n\ printf(\"姓名:%s\\n\ printf(\"高数:%.1f\\n\ printf(\"C程序设计:%.1f\\n\ printf(\"英语:%.1f\\n\ printf(\"平均分:%.2f\\n\} 4,成绩修改 void Change(Student stud[], Int n) 对Change 函数进行声明 { system(\"cls\"); 进行一次清屏 int s; int i=0; printf(\"输入需要修改成绩学生的学号:\"); 输入学号 scanf(\"%d\ while((stud[i].Number-s)!=0&&i scanf(\"%s\ printf(\"新学号:\"); scanf(\"%d\ printf(\"新姓名:\"); scanf(\"%s\ printf(\"新数学成绩:\"); scanf(\"%f\ printf(\"新C程序设计成绩:\"); scanf(\"%f\ printf(\"新英语成绩:\"); scanf(\"%f\ stud[i-1].ave=(stud[i-1].Math+stud[i-1].C+stud[i-1].Eng)/3; 计算新平均分 printf(\"该生的平均分为:%f\\n\} 5,成绩删除 int Delete(Student stud[],int n) 对Delete函数进行声明 { int s; int i=0,j; printf(\"输入需要删除学生的学号:\"); scanf(\"%d\ while((stud[i].Number-s)!=0&&i 这次的课程设计中,自己所设计的程序可以实现要求中的大部分功能, 如学生成绩的录入,排序,查询,插入以及修改和删除。但是仍然有一些功能要求没有实现,比如说统计功能。 很多次在进行读写文件时出错,都是因为自己没有注意文件的使用方 式,所以导致文件无法打开,经过一段时期的使用,对文件熟悉以后,自己出错就少很多。 通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,第一次做的,所以遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体,指针„„通过这次课程设计之后,可以说是把前面所学过的知识又复习了一遍。 因篇幅问题不能全部显示,请点此查看更多更全内容