《程序设计语言(C)综合实验报告(2015)电商.doc》由会员分享,可在线阅读,更多相关《程序设计语言(C)综合实验报告(2015)电商.doc(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、优质文本华北科技学院计算机学院综合性实验实 验 报 告 课程名称 程序设计语言C 实验学期 2015 至 2016 学年 第 二 学期学生所在系部 管理学院 年级 15级 专业班级 电商B15-1班 学生姓名 廖行 学号 201504064101 任课教师 王博玲 实验成绩 计算机学院制?程序设计语言C?课程综合性实验报告开课实验室: 软件工程实验室 2016年 07 月 01日实验题目学生成绩管理系统的设计一、实验目的通过该实验把C语言中根本知识如:顺序结构、选择结构、循环结构、数组、函数、指针、链表等得到综合应用。完成学生成绩管理系统根本功能设计,提高学生的编程能力和分析问题、解决问题的能
2、力。二、设备与环境硬件:多媒体计算机软件:Windows系列或DOS系列的操作系统、C语言。三、实验内容1、 实验内容对学生根本信息,包括学号、姓名、至少三门课成绩。 学生根本信息录入; 学生根本信息的输出; 按学号查询学生信息; 按学号修改某学生信息并输出; 求每个人平均成绩; 删除某学生信息; 添加某学生信息 输出平均分大于80分的同学信息; 根据总成绩或平均成绩综合排名;此功能用链表处理的同学可不做2、实验要求a、用数组存储学生信息;b、根本功能用函数实现; c、至少完成实验内容中4个功能,学生可以自己增加或减少题目功能; d、程序能正确执行、输入与输出有必要的提示信息、界面美观;e、用
3、菜单调用加分,用结构体加分。3、最后结果输出。要求:输出格式要界面直观、清晰大方、格式标准。四、实验结果及分析1、实验运行过程及分析#include #include #include #define max_sn 30 / 最大学生数#define max_cn 30 / 最大课程数/ function definechar menu(void);void read(char nummax_sn20,char namemax_sn20,float scoremax_snmax_cn,int m,int n);void print(char nummax_sn20,char namemax_s
4、n20,float scoremax_snmax_cn,int m,int n);void caculate(char nummax_sn20,char namemax_sn20,float scoremax_snmax_cn,int m,int n);void sumsort(char nummax_sn20,char namemax_sn20,float scoremax_snmax_cn,int m,int n);void numsearch(char nummax_sn20,char namemax_sn20,float scoremax_snmax_cn,int m,int n);v
5、oid delete_score(char nummax_sn20,char namemax_sn20,float scoremax_snmax_cn,int *m,int n);void print_youxiu(char nummax_sn20,char namemax_sn20,float scoremax_snmax_cn,int m,int n);int main() char ch; char nummax_sn20,namemax_sn20; float scoremax_snmax_cn; int m,n; printf(请输入学生人数:m%dn,max_sn); scanf(
6、%d,&m); printf(请输入课程门数:n%dn,max_cn); scanf(%d,&n); getchar(); while(1) ch = menu(); switch(ch) case 1: read(num,name,score,m,n);/输入成绩 printf(n); break; case 2: caculate(num,name,score,m,n);/ 计算成绩 printf(n); break; case 3: sumsort(num,name,score,m,n);/ 成绩排序 printf(n); break; case 4: numsearch(num,nam
7、e,score,m,n);/查找 printf(n); break; case 5: print(num,name,score,m,n);/输出显示 printf(n); break; case 6: delete_score(num,name,score,&m,n);/删除信息 printf(n); break; case 7: print_youxiu(num,name,score,m,n);/显示大于80分成绩 printf(n); break; case 0: printf(程序结束); exit(0); default:printf(输入错误); char menu(void) ch
8、ar menusele; printf(学生成绩管理n); printf(1.录入学生成绩n); printf(2.计算学生的总分和平均分n); printf(3.按学生总成绩排序n); printf(4.查找某个学生信息n); printf(5.输出学生信息n); printf(6.删除学生信息n); printf(7.显示均分大于80的学生信息n); printf(0.退出n); printf(请输入您的选择:); /scanf(%d,&menusele); fflush(stdin); menusele = getchar(); fflush(stdin); return menusel
9、e;void read(char nummax_sn20,char namemax_sn20,float scoremax_snmax_cn,int m,int n) int i,j; printf(请输入%d个学生的学号:n,m ); for(i=0;im;i+) gets(numi); printf(请输入%d个学生的姓名:n, m); for(i=0;im;i+) gets(namei); printf(请输入%d个学生的%d门课的成绩:n,m,n ); for(i=0;im;i+) for(j=0;jn;j+) scanf(%f,&(scoreij); getchar();void c
10、aculate(char nummax_sn20,char namemax_sn20,float scoremax_snmax_cn,int m,int n) int i,j; for(i=0;im;i+) scorein = 0; for(j=0;jn;j+) scorein = scorein + scoreij; scorein+1 = scorein/n; printf(所有学生信息为:n); for(i=0;im;i+) printf(%15s,numi ); printf(%15s,namei ); for(j=0;jn+2;j+) printf(%8.1f, scoreij);
11、printf(n); void sumsort(char nummax_sn20,char namemax_sn20,float scoremax_snmax_cn,int m,int n) int i,j,k; float t; char string20; for(i=0;im;i+) k=i; for(j=i+1;jm;j+) if(scorein scorejn) k = j; if(k!=i) strcpy(string,numi); strcpy(numi,numk); strcpy(numk,string); strcpy(string,namei); strcpy(namei,
12、namek); strcpy(namek,string); for(j=0;jn+2;j+) t = scoreij; scoreij = scorekj; scorekj = t; printf(所有学生的信息为:n); for(i=0;im;i+) printf(%15s, numi); printf(%15s, namei); for(j=0;jn+2;j+) printf(%8.1f, scoreij); printf(n ); printf(n);void numsearch(char nummax_sn20,char namemax_sn20,float scoremax_snma
13、x_cn,int m,int n) int i,j,q; char p20; printf(请输入要查找的学生学号:); gets(p); for(i=0;im;i+) if(strcmp(numi,p)=0) q = i; printf(所找学生的信息为:n); printf(%15s, numq); printf(%15s, nameq); for(j=0;j=m) printf(该学生信息不存在n); void print(char nummax_sn20,char namemax_sn20,float scoremax_snmax_cn,int m,int n) int i,j; pr
14、intf(所有学生的信息为:n); for(i=0;im;i+) printf(%15s, numi); printf(%15s, namei); for(j=0;jn+2;j+) printf(%8.1f, scoreij); printf(n ); printf(n);void delete_score(char nummax_sn20,char namemax_sn20,float scoremax_snmax_cn,int *m,int n) int i,j,k,q=1; char p20; printf(请输入要删除的学生学号:); gets(p); for(i=0;i*m;i+)
15、if(strcmp(numi,p)=0) q = 0; for(j=i+1;j*m;j+) strcpy(numj-1,numj); strcpy(namej-1,namej); for(k=0;kn+2;k+) scorej-1k = scorejk; (*m)-; printf(删除成功n); printf(n); break; if(q) printf(该学生信息不存在n); void print_youxiu(char nummax_sn20,char namemax_sn20,float scoremax_snmax_cn,int m,int n) int i,j,k=0; prin
16、tf(所有均分大于80分学生的信息为:n); for(i=0;i 80) printf(%15s, numi); printf(%15s, namei); for(j=0;jn;j+) printf(%8.1f, scoreij); printf(n ); k+; if(k 1) printf(没有学生平均成绩大于80分n); printf(n); 2、运行结果3、心得体会通过实验我也发现了自己不少的问题,这都是只看书上的程序而没有自己亲身上机编写程序而无法得知的,假设我们只因看熟书上的程序就以为自己已经掌握了C语言那就大错特错了。 我主要存在以下的这些缺点: 1、 学习耐心与细心缺乏,如sc
17、anf(“%d,&n);中的“&有时候会忘了。而在最后输出时又错写成printf(“%d,&n);从而错误得输出了地址而不是我原来想要的答案。 2、 编程思想不够发散,看着题目有时想不出解答的方法,更不用说编写程序来解题了。 3、 根本功不够,有些函数的表达不太精通,需要看书来核实,以致耗时较多。 4、 知识不够广,有些内容没有学好,不能要用到时及时反映出来,认识程度不够深刻。 5、 有时候不够精简,有一点用处不大或者说没有也可以的文字存在。 6、 英语水平较差,对错误的地方虽然电脑有说,但由于是英文,理解上还是存在一点问题。 为了能更好地学好C语言,在今后学习中我要更多的动脑,综合运用所学,
18、多看相关东西,多上机练习,提高电脑水平,增强自学能力,把已会的东西掌握好。 实验中我深刻意识到完成程序的编写,决不意味着万事大吉。认为万无一失的程序,实际上机运行时可能会出现很多意想不到的问题。有时编译程序检测出一大堆错误,有时程序能够顺利运行,但是运行结果并不是你预期中想要的。因为开发环境所提供的编译系统无法发现程序逻辑错误,或者是你原来所设计时的理论错误,这就只能靠自己的上机经验来分析判断错误的所在了。所以程序的调试是一个技巧性很强的工作,它可能比编一个程序耗时更多。由此可看出上机实践的重要性。 电子商务B151班廖行2015040401 时间2016.6.20 教 师 评 价评定工程ABCD评定工程ABCD算法正确界面美观,布局合理程序结构合理操作熟练语法、语义正确解析完整实验结果正确文字流畅报告标准题解正确其他:评价教师签名:孙改平2016年 7 月 15 日