1、C 程序设计报告C 语 言 课 程 设 计题 目: 学生信息管理系统设计者 : 梁天江专 业: 机械设计制造及其自动化班级学号: 072084-31所属院系: 机电学院指导教师: 吴湘宁2010 年 7 月 17 日C 程序设计报告1. 题目和要求:1.1 问题提出与要求:学生成绩管理系统要求设计一个学生成绩管理系统,对在校某班学生几门课程的考试成绩进行统一管理。每个学生记录包括学号、姓名、年龄、数学、英语、物理成绩,默认以学号为序存放。(1)一个文件按以班为单位存储学生记录。(2)将允许的操作分为六种A:插入一个新的学生记录(录入学生信息)B:修改学生记录C:删除一个学生记录D:登记成绩E:
2、修改成绩F:浏览全班成绩(3)计算学生的总成绩(4)输出全班成绩表1.2 需求分析.根据题目要求,由于学生信息是存放在文件中,所以应提供文件的输入,输出等操作;在程序中需要浏览学生的信息, 应提供显示,查找,排序等操作; 另外还应提供键盘式选择菜单实现功能选择.2.功能实现设计:2.1 总体设计:C 程序设计报告分析系统:根据题目的需求分析,可将这个系统设计为六大模块(见下图):插入学生信息,修改,删除,登记,浏览,统计。2.2 详细设计: 1、主函数主函数设计得比较简洁,只提供输入、功能处理和输出部分的函数调用。其中各功能模块用菜单方式选择;其流程图如下:开始显示一系列功能选项输入 n,判断
3、 n 是否是 16?学生信息管理系统插入 修改 删除 显示 浏览 退出根据 n 的值调用各功能模块函数C 程序设计报告程序void main()int a; doprintf(“ttttn“);printf(“tttt 学生成绩管理系统 n“); printf(“n“);printf(“ttt 作者:梁天江 班级:072084-31 学号:20081004528n“); printf(“ttt-nn“); printf(“t 1.插入新的学生记录 n“); printf(“t 2.修改学生记录 n“); printf(“t 3.删除学生记录 n“); printf(“t 4.显示学生成绩和总分
4、 n“); printf(“t 5.浏览全班成绩 n“); printf(“t 6.退出 nn“); printf(“ 输入你要操作的序号 : “);scanf(“%d“,switch(a)case 1:printf(“n“);input();break;case 2:printf(“n“);change();break;case 3:printf(“n“);del();break;case 4:printf(“n“);allgrade();break;case 5:printf(“n“);paixu();break;case 6:printf(“n“);exit(0);break;defau
5、lt:printf(“nThe choice is between 1 to 6.n“);while(a!=0);2、各功能模块设计(1)插入模块结束C 程序设计报告void input() int j;char ch20;printf(“n 输入学生信息:n“);do printf(“n 学号: “);scanf(“%s“,stuk.num);printf(“n 姓名: “);scanf(“%s“,stuk.name);printf(“n 年龄: “);scanf(“%d“,for(j=0;j#include#include#includestruct student char num10;
6、char name12;int age;int grade3;stu20;int k=0;void input();void outputgrade();void change();void del();void allgrade();void paixu();C 程序设计报告void main()int a; doprintf(“ttttn“);printf(“tttt 学生成绩管理系统 n“); printf(“n“);printf(“ttt 作者:梁天江 班级:072084-31 学号:20081004528n“); printf(“ttt-nn“); printf(“t 1.插入新的学
7、生记录 n“); printf(“t 2.修改学生记录 n“); printf(“t 3.删除学生记录 n“); printf(“t 4.显示学生成绩和总分 n“); printf(“t 5.浏览全班成绩 n“); printf(“t 6.退出 nn“); printf(“ 输入你要操作的序号 : “);scanf(“%d“,switch(a)case 1:printf(“n“);input();break;case 2:printf(“n“);change();break;case 3:printf(“n“);del();break;case 4:printf(“n“);allgrade()
8、;break;case 5:printf(“n“);paixu();break;case 6:printf(“n“);exit(0);break;default:printf(“nThe choice is between 1 to 6.n“);while(a!=0);void input() int j;char ch20;printf(“n 输入学生信息:n“);do printf(“n 学号: “);scanf(“%s“,stuk.num);printf(“n 姓名: “);C 程序设计报告scanf(“%s“,stuk.name);printf(“n 年龄: “);scanf(“%d“
9、,for(j=0;j3;j+) printf(“n 成绩%d: “,j+1);scanf(“%d“, k+;printf(“n 如要继续,请输入学生信息(y/n): “);scanf(“%s“,ch);while(strcmp(ch,“y“)=0|strcmp(ch,“Y“)=0);outputgrade();void outputgrade() int i;printf(“ 学生信息是:n“);for(i=0;ik;i+) printf(“t%s t%s t%d t%d t%d t%d“,stui.num,stui.name,stui.age,stui.grade0,stui.grade1,
10、stui.grade2);printf(“n“); void change()int i,j;char a20,ch10;printf(“n 输入你要修改的学生学号:“);scanf(“%s“,a);for(i=0;ik;i+)if(strcmp(stui.num,a)=0) printf(“n 你确定要修改学号吗?(y/n): “);scanf(“%s“,ch);if(strcmp(ch,“y“)=0|strcmp(ch,“Y“)=0) printf(“nnum:“); scanf(“%s“,stui.num);printf(“n 你确定要修改学生姓名吗?(y/n): “);scanf(“%
11、s“,ch);if(strcmp(ch,“y“)=0|strcmp(ch,“Y“)=0) printf(“nname“); scanf(“%s“,stui.name);printf(“n 你确定要修改学生成绩吗?(y/n): “);scanf(“%s“,ch);printf(“n“);if(strcmp(ch,“y“)=0|strcmp(ch,“Y“)=0)C 程序设计报告for(j=0;j3;j+) printf(“grade%d:“,j+1); scanf(“%d“, printf(“n“); outputgrade();void del()int i,j;char c20;printf(
12、“n 输入你要删除的学生学号 :n“);printf(“num:“);scanf(“%s“,for(i=0;i3;i+)if(strcmp(c,stui.num)=0) break;for(j=i;j=2;j+)stuj=stuj+1;printf(“ttt 你已经删除 %s 的信息n“,c);k-;outputgrade();void allgrade() int i; float sum=0;for(i=0;ik;i+) printf(“t%d t%d t%dn“,stui.grade0,stui.grade1,stui.grade2);sum=sum+stui.grade0+stui.g
13、rade1+stui.grade2 ; printf(“总成绩是 %f“,sum);void paixu() struct student temp;int i,j;for(i=0;ik-1;i+)for(j=i+1;jk;j+)if(stui.numstuj.num)temp=stui;stui=stuj;stuj=temp;C 程序设计报告 outputgrade();5.实习心得:通过 7 次的 C 语言课程设计上机实习,我学到了很多东西。开始上机实习时,面对着繁琐的程序结构,我无从下手,一头雾水的我看到了C语言课程设计与学习指导中的第五章, “举一反三”部分。看完后,我“依葫芦画瓢”地
14、在 VISUAL C+上写了简单的程序模块。在同学的帮助下我做完了程序的主体部分。C 语言课程的学习已经过去了几个星期。刚开始学习这门课程的时候,我发现老师在课堂上讲授的东西很抽象,不能应用于实际的生活中,并且C 语言中的结构,算法等很高深,不容易被我们消化吸收。在上机实习的过程中,我发现 C 语言才是真正能够为现实生活中的问题提供一个简单快捷并且蕴涵着深深智慧的一个工具,作为当今时代的大学生,我们应该好好学习并掌握 C 语言。实际应用中我发现,很多的操作系统都能够 C 语言编出来,真正实现了办事效率的优化。在上机实习的过程中,我发现 C 语言中的算法和结构具有很深的智慧,一个看似复杂的问题,
15、用很巧妙的 C程序算法和结构能奇妙地解决。我们应该在以后的学习和生活中将 C 语言所特有的解决问题的思路和办法融入自己的智慧中。另外,C 语言编出来的程序很清晰,整洁,将问题有条不紊地分离开来,在一个大框架的总体思路下,将要求化为几个并列的函数,一个函数又一个函数地将问题一一解决。C 语言这门课程所包含的东西还很多,很深。作为一名初次接触的学C 程序设计报告生,我在 C 语言课程的学习和这 7 次的实际上机操作中,对 C 语言有了进一步的理解。从老师开始从 C 语言的历史开始讲解,到现在,能在老师和同学的帮助下完成一个简单的程序设计,我获益匪浅。遇到问题,分析问题,着手解决问题,并总结问题,C 语言程序设计将解决问题并完善问题的总体过程告诉了我们,这对我们都是大有裨益的。