C语言课程设计fan
- 格式:doc
- 大小:412.57 KB
- 文档页数:18
河南理工大学 计算机科学与技术学院 课程设计报告
2012 — 2013学年第 一 学期
课程名称 C/C++高级语言程序设计课程设计设计题目 班级成绩管理系统 学生姓名 范孟会 学 号 311109030103 专业班级 信息管理与信息系统11-01班 指导教师 于金霞
2012 年 9 月 20 日 目 录 一、课程设计问题描述 ..................................... 1 1、课程设计题目 ................................................. 1 2、设计任务要求 ................................................. 1 二、总体设计 ............................................. 1 1、算法提示: ................................................... 1 2、总流程图 ..................................................... 2 3、统计函数流程图 ............................................... 2 三、详细设计 ............................................. 4 1、程序的模块组成 ............................................... 4 2、各个程序的功能介绍 ........................................... 4 3、源代码 ....................................................... 4 四、程序运行结果测试与分析 .............................. 11 1.系统调试 .................................................... 11 2. 系统结果分析 ................................................ 11 3. 系统说明 .................................................... 12 五、结论与心得 .......................................... 15 六、参考文献 ............................................ 16 1
一、课程设计问题描述 1、课程设计题目 班级成绩管理系统 对一个有N个学生的班级,每个学生有M门课程。该系统实现对班级成绩的录入、显示、修改、排序、保存等操作的管理。
2、设计任务要求 (1)本系统采用一个结构体数组,每个数据的结构应当包括:学号、姓名、M门课程名称。 (2)本系统显示这样的菜单: 请选择系统功能项: a、成绩录入 b、成绩显示 c、成绩保存 d、成绩排序 e、成绩修改(要求先输入密码) f、成绩统计 1)显示每门课程成绩最高的学生的基本信息 2)显示每门课程的平均成绩 3)显示超过某门课程平均成绩的学生人数 g、退出系统 1)执行一个具体的功能之后,程序将重新显示菜单。 2)将学生成绩保存到文件中。
二、总体设计 1、算法提示 (1)数据结构结构体类型数组。 (2)数据库结构下表构成该系统的基本数据库。
姓名 学号 课程名称1 课程名称2 ●●●●●● char char float float
(3)学生信息结构数组 struct stu { 2
char name[20]; int num; int score[M]; };
(4)测试数据: 学生人数:N=10 课程门数:M=4 课程名:数学、语文、英语、政治
2、总流程图
3、统计函数流程图 开始 Main()
enter() print() save() sort() modify () 运行程序 count()
Choice Choice函数 1 2 3 4 5 6 退出程序 7 3
开始 调用menu1函数
输入choice1 choice1 调用show1函数 调用show2函
输入选择科目j+ J=0
I=0 I=i+1 Is[n+1].score[Temp=s[i].score[s[n].score[i]=s[n+1].scorS[i+1].score{n]=temJ=j+1 I=0;sum=0;
I=i+1 ISum=sum+s[i].score[j]
Average=Sum/I
输出排序成绩
输出平均成绩
返回函数 1 2
3
结束 结束
调用show3函数 J=0 k=0 J=j+1 I=i+1 I=0;sum=0
ISum=sum+s[i].score
Average=Sum/I
输出平均成绩
K=k+1 s[i].score[j]>average
输出超出平均成绩的人数K
↓ ↓ ↓ ↓
↓ ↓
结束 4
三、详细设计 1、程序的模块组成 第一个模块先定义好一些必要的全局变量以及调用的函数和结构体数组。 第二个模块设计一个菜单函数menu();实现能供用户选择功能项。 第三个模块用enter()函数实现成绩的输入。 第四个模块用save()函数实现成绩的保存。 第五个模块用print()函数实现成绩输出。 第六个模块用cort()函数实现成绩排序功能。 第七个模块用modify()函数实现成绩修改功能。 第八个模块用count()函数实现成绩统计功能。
2、各个程序的功能介绍 1) 为便于用户使用先定义一个常数N,表示人数学生信息的结构体数组以及调用功能项的函数。 2) 在menu() 函数中,用switch来选择要执行的功能项用do while实现每种具体功能后能返回菜单。 3) Enter() 函数用scanf依次输入学生信息,在输入多门成绩成绩时用for循环来实现结尾调用save() 函数保存。 4) Print() 函数中为使界面美观,对学生成绩用%5d输出且用换行实现学生信息整齐排列。 5) Save() 函数使用文件保存。 6) Cort() 函数先定义choice1,输出想要排序的科目的序号,用选择排序法实现函数学生成绩的排序。 7) Modify() 函数先定义好一个密码以及flag=0。如果输入的密码错误则flag=1,用do while实现是否重新输入密码,密码准确后调用modi函数实现修改功能。 8)Count() 函数用menu1函数实现一个菜单功能。用switch实现,用户选择想执行的功能。从而调用Show1() Show2()Show3()
3、源代码 #include /*I/O函数*/ #include /*字符串函数*/ #define M 4 /*课程数*/ #define NUM 3 /*人数*/ #define NULL 0 #include #include int avar[M]; struct stu { char name[20]; int num; int score[M]; 5
}; void enter(struct stu s[],int n); /*进入*/ void print(struct stu s[],int n); /*输入文件*/ void save(struct stu s[],int n); /*保存文件*/ void sort(struct stu s[],int n); /*排序*/ void modify(struct stu s[],int n); /*修改*/ void count(struct stu s[],int n); /*统计*/ int menu();
void main() { void clrscr(); struct stu student[NUM]; for( ; ; ) switch(menu()) { case 1:enter(student,NUM);break; case 2:print(student,NUM);break; case 3:save(student,NUM);break; case 4:sort(student,NUM);break; case 5:modify(student,NUM);break; case 6:count(student,NUM);break; case 7:return; } } int menu() { int choice; printf("\n**************************班级成绩管理**************************\n"); printf(" 1 成绩录入\n"); printf(" 2 成绩显示\n"); printf(" 3 成绩保存\n"); printf(" 4 成绩排序\n"); printf(" 5 成绩修改\n"); printf(" 6 成绩统计\n"); printf(" 7 退出系统\n"); printf(" 学生人数 NUM 课程 数学0 语文1 英语2 政治3\n"); printf("***************************************************************\n"); do { printf("\nchoice1-7:"); scanf("%d",&choice);