学生管理系统c语言(通用8篇)
一、学生选课管理系统
第一部分:课程设计名称、目的、要求
第二部分:程序总体设计思路
第三部分:程序功能划分、图示及流程图
第四部分:程序设计数据、运行结果
第五部分:程序的优缺点
第六部分:心得体会
第七部分:附录(源程序)
第八部分:附录(参考文献)
目录
..............................................................................第一部分:课程设计名称、目的、要求
名称:学生选修课程系统设计
目的:运用C语言提高解决实际问题的能力 实验环境:Microsoft Visual C++ 6.0 内容:
假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。【功能】
系统以菜单方式工作
课程信息录入功能(课程信息用文件保存)--输入 课程信息浏览功能--输出
查询功能:(至少一种查询方式)--算法 按学分查询 按课程性质查询 学生选修课程(可选项)
第二部分:程序总体设计思路
由于C语言是面对过程的语言,故我的设计思路是根据目标程序运行的过程来编写的。
具体的设计思路如下:
程序的要求是设计学生选修课管理系统,对选修课程能够进行录入和修改操作等,要求有菜单界面和退出功能。首先,考虑到程序的数据输入,可以设置一个管理员登陆选项,通过该选项进入管理员界面,进行选修课的录入和修改操作,最后将录入的课程保存到相应的文件中。然后定义各种函数的功能包括查看,查询,删除等。另一个为学生登陆界面,该界面学生可以进行课程选择和浏览查询等操作。在进行该操作之前需要对管理员保存的文件进行读取,然后对其中的内容进行查询等,在学生选好课程以后,可以将其选好的课程保存于相应的文件中,以便下次进行修改。通过函数的层层调用来实现程序的逻辑结构。中间通过文件的打开和关闭实现对文件内部所包含的数据的操作。
整个程序的设计思路到此结束。
第三部分:程序功能划分、图示及流程图
【功能模块划分及其流程图】
本程序功能模块根据程序设计的需求,综合程序的实用性、人性化、智能化的考虑,将程序划分为6个部分分别编写,程序主体功能将由这9个部分来完成。这9个部分依次是:
1.登录界面函数;void login()2.学生登录界面据函数:void stu_login()3.管理员登录界面函数:void man_login()4.退出界面函数:void bye_sys()
5.课程选择函数:void c_select()6.课程浏览函数:void c_view()7.课程查询函数:void c_search()8.课程增加函数:void c_add()9.课程删除函数:void c_delete()10.菜单函数:void index()11.主函数部分; main()
总体设计:
学生选课系统管理员登录学生登录新增课程删除课程课程浏览查询课程学生选课课程浏览课程查询c_add函数c_delete函数c_view函数c_search函数c_select函数c_view函数c_search函数
系统功能模块图
部分函数流程图:
1、课程选择函数:
开始输入要选择的课程的编号j=0;j
2、课程查询函数
开始输入要查询的课程的编号j=0;j 3、课程增加函数 开始输入要增加的课程的编号j=0;j 4、课程删除函数 开始输入要删除的课程的编号nj=0;j 本程序是一款应用软件,故数据设计、程序运行结果应在程序的 运用中得以体现,现在通过一个程序的运用事例来对程序运行结果进行演示与实现。【软件运用举例】 1、程序开始界面如下: 选择某个选项,如进行管理员登录,进行课程的增加 进入管理员界面: 2、再选择所要进行的操作,如进行课程增加,结果如下: 下面可以进行继续增加课程或者退出: 3、选择课程浏览,可以分页查看相应的课程信息: 第一页: 第二页: 4、课程查询 查找结果: 4、管理员课程删除操作: 删除后可以进行浏览,观察删除后的结果: 可见删除后只有一条记录。删除操作完成正确。下面进行学生操作的使用方法: 1、学生登陆界面: 2、选择学生选课选项: 3、学生登陆也可进行课程浏览和查询函数,其结果与管理员登陆相同,不再演示。 第五部分:程序的优缺点 【程序的优点】 算法是程序的灵魂,程序的优点首先表现在算法上的优点,其次才是功能上的。 [算法上的优点]主要体现在以下三点: 1.程序采用main主函数方式设计,程序的主体的功能大都由该功能 完成。程序如此设计有利于程序的进一步改进及有助于程序执行效率的提高。 2.程序对文件数据的读写采用了fread和fwrite块读写函数,能够将文件中的数据完全读出,然后赋到定义的数组中,再在相应的数组中进行一系列操作,最终再写入文件。 3.插入操作在本程序中将课程信息直接插入数组最后一个节点,从而减少了数据的相互移动,节省了时间。 [功能上的优点] 主要体现在以下两点: 1. 简洁明了的程序菜单。程序主要采用了层次不同的菜单,相互独立又相互联系,巧妙相接,符合用户的使用习惯与思维。2. 人性化的程序提示语言,程序提示语言较人性化,不仅大多为祈使语句、疑问句,而且提示明确,具有较强的明确的指导作用。程序提示不仅层次分明,提示方式多样,而且提示信息井然有序,更加有利于用户顺利、准确地看懂程序并进行操作。 【程序的缺点】 主要表现在以下两点: 1、本程序没有进行相应的密码操作,所以对于使用者来说可能存在比较大的不保密性。需要改善。 2、本程序没有使用文本读写函数fscanf和fprintf,所以的到的课程文件和选课文件都是二进制形式。 第六部分:心得体会 选课系统程序比起通讯录程序来讲好写一些,由于本程序用到了数组,对于数组的操作掌握的比较熟练,所以在编写程序的时候困难没有那么多。 本程序在编写的过程中用到了许多通讯录中的模块化设计和函数互相调用的思想,使得编写比较方便和好用。 通过该系统的课程设计分析,我掌握了模块化设计的方法,理解和运用了结构化程序设计的思想和方法,掌握和提高了运用C语言进行程序设计的能力。 程序设计的过程,实际上是确定解决问题的详细步骤,而这个步骤通常叫做流程,在程序设计过程中理清楚整个问题的流程很重要,然后采取逐步细化的方法实现整个程序。 对于一个较大的应用程序,一般不可能一次就设计出一个很完善的系统。通常要先设计满足基本要求的系统,然后再测试或者在使用的过程中不断完善,慢慢地做成一个功能很完善选修课程管理系统。所以在进行调试的时候需要对许多变量理解和掌握其变化规律等,这对于我更好的掌握visual C中调试的工具有很大的帮助。 总之经过这次课程设计,我对c语言的使用和理解都有了很大的加深,对于编程的思想也有了很多新的理解和感受。 第七部分:附录 一、参考文献: 1、李丽娟主编,C语言程序设计教程(第二版),人民邮电出版社 2、严蔚敏主编,数据结构(C语言),清华大学出版社 3、崔单主编,C语言程序设计案例精粹,电子工业出版社 4、谭浩强主编,程序设计(第三版),清华大学出版社 二、源程序 #include“stdio.h” #include“stdlib.h” #include“windows.h” #include“string.h” void index();//首页 void login();void bye_sys();//退出界面 void stu_login();//学生登录菜单 void c_select();void c_view();//课程浏览 void c_add();//增加课程 void c_delete();void c_searchs();//学生查询函数 void c_searchm();//管理员查询函数 void c_viewm();//管理员浏览函数 void c_views();//学生浏览函数 struct course//定义课程结构体 { int c_num; char c_name[20]; int c_score; int c_nelepeo;//课程已选人数 int c_melepeo;//课程人数上限 };struct student { char s_number[10]; char s_password[10];};struct manager { char m_name[10];char m_password[10];}; void index()//首页 { char input; printf(“nnttt*****************************n”); printf(“ttt 湖南大学学生选课系统n”); printf(“ttt*****************************nnn”); printf(“ttt*****************************nnn”); printf(“ttt*****************************nnn”); printf(“ttt*****************************nnn”); printf(“ttt**********设计者:刘晓斌******nnn”); input=getchar(); system(“cls”);} void login()//登陆界面 { void stu_login(); void man_login(); void bye_sys(); int input; do { system(“cls”); printf(“nnnt1.学生登录n”); printf(“t2.管理员登陆n”); printf(“t3.退出本系统n”); printf(“t请选择服务类别:”); scanf(“%d”,&input); if(input!=1&&input!=2&&input!=3)//输入数不等于选项的时候打印画面 { printf(“nt输入出错!请重新选择~n”); printf(“nt按任意键返回选择页面~nt”); getchar();getchar(); system(“cls”); } if(input==3)//如果输入3退出系统 { bye_sys(); } }while(input!=1&&input!=2&&input!=3); switch(input) { case 1:stu_login();break; case 2:man_login();break; } } void bye_sys()//退出界面 { exit(0);} void man_login(){ void c_add(); void c_delete(); void c_view(); void c_searchm(); int in; do { system(“cls”); printf(“nnt1.新增课程n”); printf(“t2.删除课程n”); printf(“t3.课程浏览n”); printf(“t4.课程查询n”); printf(“t5.退出n”); printf(“nnt请选择服务种类:”); scanf(“%d”,&in); if(in!=1&&in!=2&&in!=3&&in!=4&&in!=5) { printf(“nt没有这项服务t按任意重新选择”); getchar();getchar(); } }while(in!=1&&in!=2&&in!=3&&in!=4&&in!=5); switch(in) { case 1:c_add();break; case 2:c_delete();break; case 3:c_viewm();break; case 4:c_searchm();break; case 5:login();break; } } void stu_login()//学生登录菜单 { void c_select(); void c_view(); void c_searchs(); void login(); int input; do { system(“cls”); printf(“nnnt--学生登陆--”); printf(“nnt1.学生选课n”); printf(“t2.课程浏览n”); printf(“t3.课程查询n”); printf(“t4.退出n”); scanf(“%d”,&input); if(input!=1&&input!=2&&input!=3&&input!=4) { printf(“nt没有这项服务~n”); printf(“t按任意键重新选择”); getchar(); getchar(); } }while(input!=1&&input!=2&&input!=3&&input!=4); switch(input) { case 1:c_select();break; case 2:c_views();break; case 3:c_searchs();break; case 4:login();break; } } void c_select(){ int n,in,i=0,j;int flag=0; FILE *fp; FILE *fp1; char input; struct course courses[10]; if((fp=fopen(“course.dat”,“rb”))==NULL)//判断是否存在课程 { printf(“nnnt课程不存在nn”); printf(“t<按任意键返回管理菜单>nt”); input=getchar(); input=getchar(); stu_login();//进入学生登陆菜单 } else//存在的话循环读取文件中的信息直到文件指针到文件尾部 { do { fread(&courses[i],sizeof(struct course),1,fp); i=i+1; } while(!feof(fp)); fclose(fp);//文件读完后关闭 } printf(“nntt请输入你要选课程的编号:”); scanf(“%d”,&n); if((fp1=fopen(“courseselect.dat”,“rb”))==NULL) { fp1=fopen(“courseselect.dat”,“wb”); } else { fclose(fp1); fp1=fopen(“courseselect.dat”,“ab”); } for(j=0;j if(courses[j].c_num==n) flag++; if(flag==0) { printf(“nntt不存在对应课程n”); printf(“nntt继续选课请按1,退出请按2:n”); scanf(“%d”,&in); switch(in) { case 1:c_select();break; case 2:stu_login();break; default: printf(“输入错误,将返回登录界面!n”); login();break; } } else { fwrite(&courses[j],sizeof(struct course),1,fp1); fclose(fp1); printf(“nntt选课成功t请选择:”); printf(“nntt1.继续选课”); printf(“nntt2.退出,返回登录界面!”); scanf(“%d”,&in); switch(in) { case 1:c_select();break; case 2:stu_login();break; default:break; } } } void c_viewm()//课程浏览 { void stu_login(); void c_view(); int inp,i=0,n=0; FILE *fp; char input; struct course courseview[10]; if((fp=fopen(“course.dat”,“rb”))==NULL)//判断是否存在课程 { system(“cls”); printf(“nnnt课程不存在nn”); printf(“t<按任意键返回管理菜单>nt”); getchar();getchar(); stu_login();//进入学生登陆菜单 } else//存在的话循环读取文件中的信息直到文件指针到文件尾部 { do { fread(&courseview[i],sizeof(struct course),1,fp); i=i+1; } while(!feof(fp)); fclose(fp);//文件读完后关闭 do { system(“cls”); if(i==1) { printf(“nnnttt没有记录!n”); getchar();getchar(); man_login(); } else { printf(“nt------共有%d条记录-------”,i-1); printf(“nnt课程编号: %dn”,courseview[n].c_num); printf(“nnt课程名字: %sn”,courseview[n].c_name); printf(“nnt课程学分: %dn”,courseview[n].c_score); printf(“nnt课程已选人数: %dn”,courseview[n].c_nelepeo); printf(“nnt课程人数上限: %dn”,courseview[n].c_melepeo); printf(“nnt1.上一页t2.下一页t3.回目录”); printf(“n请选择:”); scanf(“%d”,&inp); switch(inp) { case 1: { if(n==0) { printf(“nt已到达首页 t按任意键返回”); input=getchar(); input=getchar(); } else { n=n-1; } break; } case 2: { if(n==i-2) { printf(“nt已到达尾页t按人意见返回”); input=getchar(); input=getchar(); } else { n=n+1; } break; } case 3:{man_login();break;} default: { printf(“nt操作错误t按任意键返回”); getchar();getchar(); break; } } } }while(inp!=3); } } void c_views()//课程浏览 { void stu_login(); void c_view(); int inp,i=0,n=0; FILE *fp; char input; struct course courseview[10]; if((fp=fopen(“course.dat”,“rb”))==NULL)//判断是否存在课程 { system(“cls”); printf(“nnnt课程不存在nn”); printf(“t<按任意键返回管理菜单>nt”); getchar();getchar(); stu_login();//进入学生登陆菜单 } else//存在的话循环读取文件中的信息直到文件指针到文件尾部 { do { fread(&courseview[i],sizeof(struct course),1,fp); i=i+1; } while(!feof(fp)); fclose(fp);//文件读完后关闭 do { system(“cls”); if(i==1) { printf(“nnnttt没有记录!n”); getchar();getchar(); stu_login(); } else { printf(“nt------共有%d条记录-------”,i-1); printf(“nnt课程编号: %dn”,courseview[n].c_num); printf(“nnt课程名字: %sn”,courseview[n].c_name); printf(“nnt课程学分: %dn”,courseview[n].c_score); printf(“nnt课程已选人数: %dn”,courseview[n].c_nelepeo); printf(“nnt课程人数上限: %dn”,courseview[n].c_melepeo); printf(“nnt1.上一页t2.下一页t3.回目录”); printf(“n请选择:”); scanf(“%d”,&inp); switch(inp) { case 1: { if(n==0) { printf(“nt已到达首页 t按任意键返回”); input=getchar(); input=getchar(); } else { n=n-1; } break; } case 2: { if(n==i-2) { printf(“nt已到达尾页t按人意见返回”); input=getchar(); input=getchar(); } else { n=n+1; } break; } case 3:{stu_login();break;} default: { printf(“nt操作错误t按任意键返回”); getchar();getchar(); break; } } } }while(inp!=3); } } void c_searchs(){ void stu_login(); void c_searchs(); int id,i=0,j,inp,k; int flag=0; FILE *fp; struct course coursesear[10]; if((fp=fopen(“course.dat”,“rb”))==NULL) //判断课程信息是否存在 { system(“cls”); printf(“nnt课程不存在t按任意键返回”); getchar();getchar(); stu_login(); } else//存在的话循环读取文件中的信息直到文件指针到文件尾部 { do { fread(&coursesear[i],sizeof(struct course),1,fp); i=i+1; }while(!feof(fp)); fclose(fp); } system(“cls”); printf(“nnttt请输入你要查询的课程编号:”); scanf(“%d”,&id); do//检查输入是否符合要求 { for(j=0;j { if(id==coursesear[j].c_num) { flag++; k=j; } } if(flag==1) { system(“cls”); printf(“nnt课程编号:%dn”,coursesear[k].c_num); printf(“nnt课程名字:%sn”,coursesear[k].c_name); printf(“nnt课程学分:%dn”,coursesear[k].c_score); printf(“nnt课程已选人数:%dn”,coursesear[k].c_nelepeo); printf(“nnt课程人数上限:%dn”,coursesear[k].c_melepeo); getchar();getchar(); printf(“nnt1.回目录继续查询t2.退出查询系统n”); printf(“请选择:”); scanf(“%d”,&inp); switch(inp) { case 1:c_searchs(); case 2:stu_login(); default: { printf(“nt没有这项服务t请按任意键重新输入”); getchar();getchar(); } } } else { system(“cls”); printf(“nnt不存在对应记录n”); printf(“nnt1.回目录继续查询t2.退出查询系统n”); printf(“请选择:”); scanf(“%d”,&inp); switch(inp) { case 1:c_searchs(); case 2:stu_login(); default: { printf(“nt没有这项服务t请按任意键重新输入”); getchar();getchar(); } } } }while(inp!=1); } void c_searchm(){ void stu_login(); void c_searchm(); int id,i=0,j,inp,k; int flag=0; FILE *fp; struct course coursesear[10]; if((fp=fopen(“course.dat”,“rb”))==NULL) //判断课程信息是否存在 { system(“cls”); printf(“nnt课程不存在t按任意键返回”); getchar();getchar(); stu_login(); } else//存在的话循环读取文件中的信息直到文件指针到文件尾部 { do { fread(&coursesear[i],sizeof(struct course),1,fp); i=i+1; }while(!feof(fp)); fclose(fp); } system(“cls”); printf(“nnttt请输入你要查询的课程编号:”); scanf(“%d”,&id); do//检查输入是否符合要求 { for(j=0;j { if(id==coursesear[j].c_num) { flag++; k=j; } } if(flag==1) { system(“cls”); printf(“nnt课程编号:%dn”,coursesear[k].c_num); printf(“nnt课程名字:%sn”,coursesear[k].c_name); printf(“nnt课程学分:%dn”,coursesear[k].c_score); printf(“nnt课程已选人数:%dn”,coursesear[k].c_nelepeo); printf(“nnt课程人数上限:%dn”,coursesear[k].c_melepeo); getchar();getchar(); printf(“nnt1.回目录继续查询t2.退出查询系统n”); printf(“请选择:”); scanf(“%d”,&inp); switch(inp) { case 1:c_searchm(); case 2:man_login(); default: { printf(“nt没有这项服务t请按任意键重新输入”); getchar();getchar(); } } } else { system(“cls”); printf(“nnt不存在对应记录n”); printf(“nnt1.回目录继续查询t2.退出查询系统n”); printf(“请选择:”); scanf(“%d”,&inp); switch(inp) { case 1:c_searchm(); case 2:man_login(); default: { printf(“nt没有这项服务t请按任意键重新输入”); getchar();getchar(); } } } }while(inp!=1);} void c_add()//增加课程 { void c_add(); void man_login(); int i=0,j,inp; FILE *fp; struct course course_new; struct course courses[10]; system(“cls”); printf(“nntt请输入课程信息”); printf(“nntt1.课程编号:”); scanf(“%d”,&course_new.c_num); printf(“nntt2.课程名字:”); scanf(“%s”,course_new.c_name); printf(“nntt3.课程学分:”); scanf(“%d”,&course_new.c_score); printf(“nntt4.课程已选人数:”); scanf(“%d”,&course_new.c_nelepeo); printf(“nntt5.课程人数上限:”); scanf(“%d”,&course_new.c_melepeo); if((fp=fopen(“course.dat”,“rb”))!=NULL) { do { fread(&courses[i],sizeof(struct course),1,fp); i=i+1; }while(!feof(fp)); fclose(fp); for(j=0;j<=i-1;j++) if(course_new.c_num==courses[j].c_num) { system(“cls”); printf(“nnttt对不起,这个编号已经使用过nntt按任意键返回管理菜单”); getchar();getchar(); man_login(); break; } } if((fp=fopen(“course.dat”,“rb”))==NULL) { fp=fopen(“course.dat”,“wb”); } else { fclose(fp); fp=fopen(“course.dat”,“ab”); } fwrite(&course_new,sizeof(struct course),1,fp); fclose(fp); printf(“nntt信息输入完毕t按任意键继续”); getchar();getchar(); do { system(“cls”); printf(“nntt1.继续输入”); printf(“nntt2.返回管理菜单”); printf(“nntt请选择”); scanf(“%d”,&inp); if(inp!=1&&inp!=2) { printf(“输入不符合要求t按任意键重新选择”); getchar();getchar(); } }while(inp!=1&&inp!=2); switch(inp) { case 1:c_add();break; case 2:man_login();break; } } void c_delete()//查询后删除 { FILE *fp; int i=0,j,n,k,flag=0; struct course courses[10]; void c_delete(); void man_login(); printf(“nntt请输入你要删除的课程编号:”); scanf(“%d”,&n); if((fp=fopen(“course.dat”,“rb”))!=NULL) { do { fread(&courses[i],sizeof(struct course),1,fp); i=i+1; }while(!feof(fp)); fclose(fp); } else { printf(“nntt不存在任何课程t按任意键返回”); getchar();getchar(); man_login(); } for(j=0;j { if(courses[j].c_num==n) { flag=1; fp=fopen(“course.dat”,“wb”); for(k=0;k fwrite(&courses[k],sizeof(struct course),1,fp); fclose(fp); fp=fopen(“course.dat”,“ab”); for(k=j+1;k { fwrite(&courses[k],sizeof(struct course),1,fp); } printf(“nntt记录已删除!t按任意键返回ntt”); getchar();getchar(); man_login(); fclose(fp); } } if(flag==0) { printf(“nntt不存在对应的课程t按任意键返回”); getchar();getchar(); man_login(); } // printf(“nntt记录已删除!t按任意键返回ntt”); } int main(){ 关键词:管理信息系统,程序设计,面向对象 纵观我系各年级、各层次人才培养方案, 除去专业实习与毕业设计环节, 我校专科学生总共在校5学期, 程序设计语言类的课程开设共持续4学期, 本科学生总共在校7学期, 程序设计语言的开设共持续6学期, 虽然经过长时间的系统学习, 但是效果并不是很理想, 虽然我系的人才培养定位希望在广度上和深度上均有所突破, 针对面向过程和面向对象两类程序设计类课程, 开设有《C语言程序设计》、《面向对象程序设计》、《Java语言程序设计》、《Delphi语言程序设计》、《C#语言程序设计》、《.Net语言程序设计》等一系列程序设计类课程, 企图用程序设计语言的高覆盖率换取高就业率, 但大多数同学均感觉投入了过多的精力, 却没有精通任何一门程序设计类语言, 而且我系从事计算机相关工作的毕业生人数比例不到25%, 这与我们人才培养的初衷出现了严重的不一致, 通过跟踪走访, 就业后两到三年的时间内, 从其他行业转入计算机行业的比例显著增加, 针对该现象[1,2], 我们以《C语言程序设计》〉和《C++面向对象程序设计》两门课程为研究对象, 采取利用此两门语言编写同一套软件等方式, 让学生深刻理解面向对象和面向过程的区别, 从而推广到其他面向对象类程序设计类课程的教学中, 达到在缩短单门课程教学周期的同时, 提升学生实战经验的目的。 1 需求分析与概要设计 《C语言程序设计》作为我系开设的第一门程序设计类语言课程, 在第二学期开设, 学时为72, 为使学生以最快的速度进入实战状态, 我们选择数据库编程方向对学生进行训练, 只需满足增加、删除、修改和查询四种基本功能, 由于学生在此时还没有开设数据结构和数据库的相关知识, 故数据我们采取文本的方式进行存储[3]。基于此, 学生管理信息系统的功能模块图如图1所示。 2 具体实现 1) 主菜单的实现 主菜单采用switch () 语句进行菜单选择, 利用input_message () 进行信息录入, save_message (sum) 进行数据保存, output_message () 进行信息输出, renew_message () 进行数据更新, inquire_message () 进行信息查询, del_message () 进行数据删除。核心代码如下: 2) 删除信息模块 我们选择学号为主索引, 删除学生信息模块主要由函数del_num () 完成, 使用系统函数getch () 使屏幕停止, 具体代码如下: 3) 利用文本的方式存取数据 数据存取采用系统函数fopen () 、fwrite () 和fread () 实现, 具体代码如下: 3 结束语 本系统虽然功能简单, 但是对处在仅仅开设了《C语言程序设计》课程阶段的同学来说, 在对C语言程序设计课程进行全方位的理解来讲, 意义却是重大的, 其中对函数知识点熟练的运用, 对后续面向对象程序设计类课程的学习也打下了良好的基础。 参考文献 [1]Fang Zhou.General implement research of Program design inquiry method on software series course[C]//Chongqing, China:Proceed ings of the 2012 International Conference on Computational and Information Sciences (ICCIS 2012) , 2012. 【关键词】高校教学;C语言;教学策略 【分类号】G642;TP312.1-4 C语言编程是一门兼具高级编程语言以及汇编语言共性的编程语言,应用广泛,不仅适用于编写各种工作系统程序,还可作为各种智能化程序设计语言。C语言编程过程中不依靠硬件,因此具有较强的实用性。当前C语言成为各大高校必开设的教学课程,学习好C语言后能够有效提升学生的竞争力,对学生就业有重要帮助,C语言教学过程中可结合其实际运用进行教学创新,提升教学效果。 1 教师在C语言编程教学中应注意的问题 计算机技术在未来社会的重要性不言而喻,现今C语言已经普及到各大高校教学中,为高校培养综合型人才提供有效途径。社会对计算机技术人才需求不断增加,无论是否计算机专业学生都需要掌握一定基础编程语言,C语言作为众多编程语言的代表成为高校的首选。学生学习好C语言编程不仅有利于拓宽个人知识面,还能够提高个人求职能力。教师在C语言教学过程中必须注意以下几个问题。 1.1 教学中强调C语言编程重要性 C语言并非高深编程语言,若在学习中找到学习技巧便能够快速入门。然而对于大多没有计算机编程语言基础的学生而言C语言如同无字天书般无法捉摸。一些学生在刚开始学习C语言时往往觉得课程难度太大而无法持续跟进,产生放弃学习的念头。学生初学C语言时往往无法了解C语言基础构建,很多学生仁威C语言构建过于复杂,而VFP等编程语言学习起来更加容易,也能够实现C语言的一些功能。教师应该让学生摒弃这种片面想法,介绍C语言相比于其他语言具备的独特优势,例如C语言是实现人工智能的基础,二其他语言在应用上过于片面等。初期学习C语言遇到各种困难时必然的,只要坚持不懈必然会取得骄人成绩。因此教师在教学中必须向学生强调C语言的重要性。教学前应该让学生对C语言有初步了解,向学生大致介绍C语言组成框架,并将其和其他编程语言的练习区别进行初步讲解,加深学生对C语言的第一印象。 1.2 利用VC程序展开教学 VC是计算机教学中比较先进的教学软件,全程为Visual +6.0,由微软公司开发,在应用上具有一定灵活性。相比于其他教学软件,VC具有独特优势,但若想熟练掌握VC却有相当难度。教师在教学中使用VC展开教学能够有效提升教学效果,该软件具备的WIN API方式以及MFC方式能够有效激发学生的学习兴趣,从而变学生被动学习为主动学习。 2 教学中提高学生C语言编程能力的教学策略 2.1 突出教学重点,明确学习任务 教师在教学中应该让学生带着目的学习。相对而言C语言是一门形式较为新颖的学科,学生在教学中往往容易迷失学习方向,因此教师在教学前需让学生了解本节课教学重点,学生了解终点后便能够在学习过程中有针对性吸收精华知识。教师在教之初应让学生明白学习C语言的关键之处在于灵活掌握并运用32个常见字以及常用库函数等知识。其次C语言教学并非仅靠教师讲解便可完成教学任务,整个教学过程需要学生参与,教师在教学过程中可以根据教学内容罗列出关键知识点并注明学习先后顺序,在教学过程中采用循序渐进引导方式,让学生掌握各关键知识点,最后将知识归纳在一起,形成系统性知识链。例如在进行signed以及long等程序整理数据知识教学时可首先提高学生该部分基础知识的掌握,在此基础上通过实题演练,通过电脑进行编程,让学生直观这些函数实用性。对于教学中一些教学难点,教师可以在教学中将其穿插于其他知识点反复讲解,加深学生对知识难点的理解,重复教学。 2.2 采用现代教学方法提高教学质量 随着科学技术不断发展,一些科技转变为教学辅助手段渗透到日常教学中,例如多媒体技术已经成为各大高校主要教学手段,因此教师在教学中可以借助这些现代教学手段提高教学质量。例如可以在教学中采用电子白板教学。C语言编程教学常见的例题有三种,分别为找错题、填空题、编程题,这三种类型例题也是当前C语言考试必考题。教师可以借助电子白板将这三种题型展示出来,并让学生在电子白板上自由书写,通过电子白板的支持能有效提高教学效率,免去书写习题题目的时间,同时该种教学方式具有一定人性化,学生可以在白板上通过书写方式展开练习,是学生最为熟悉的演练方式。通过现代教学技术还能够促进教学方式多样性,学生在教学过程中更为直观接触到C语言相关知识内容,便于快速吸收并消化知识点,为后续学习扫清障碍。 2.3 教学中避免出现概念混淆 C语言中含有大量概念性知识,对于初学者而言若容易出现概念混淆的情况。因此教学过程中教师必须强调学生注意对新知识新概念的理解,对于相似概念一定要从这些知识点不同之处展开记忆,把握知识体系。教师可在教学中对一些知识点进行系统性归纳总结,将容易混淆以及难以理解的知识点放在一起进行比较,让学生从根本上明白这些教学内容之间的练习和区别。例如在C语言中具有相同概念的知识就有循环结构以及分支结构,相似概念有指针和指针运算,教师在针对此类知识教学时须注意教学方法,避免学生走入学习盲区。 2.4 借助计算机网络加强学生自主学习能力 教师不仅需要在课堂教学发挥其作用,还需将其作用延续至课后,学生自学过程中由于缺少教师的支持,自学难以展开,效果不佳。教师可以利用网络平台向学生提供教学知识点以及教学视频,让学生在课后能够展开自主学习。其次教师可利用现代通讯工具和学生展开交流,学生有问题时可利用通讯工具向教师请教,教师可随时随地向学生传授知识,便于教学过程更好展开。 结束语: 提高各高校C语言教学效果不言而喻,当前教学中提高教学效果方式多种多样,教师在教学中应结合实际情况采取最佳教学方法提高学生C语言编程能力,为学生日后更深入的学习以及求职奠定基础。 【参考文献】 [1]刘向阳.C语言程序设计教学方法研究[J].科技信息,2013,(16):264. [2]曾正军.在教学中对学生C语言编程能力的培养[J].南昌高专学报,2004,19(1):76-76,78. [3]李海勝.C语言程序设计的教学思考[J].时代教育,2014,(7):180-180. char tel[20]; char wu[20]; char dz[20];}mem[N];void sorttel(struct mem tel[]){ struct mem temp; int i,j; FILE *fp;if((fp=fopen(“c:elephone.txt”,“rb”))==NULL){ printf(“不能打开文件n”);} for(i=0;i for(j=0;j if(strcmp(mem[j+1].tel,mem[j].tel)<0) { temp=mem[j]; mem[j]=mem[j+1]; mem[j+1]=temp; } for(i=0;i void sortname(struct mem tel[]){ struct mem temp; int i,j; FILE *fp;if((fp=fopen(“c:elephone.txt”,“rb”))==NULL){ printf(“不能打开文件n”);} for(i=0;i for(j=i+1;j if(strcmp(mem[j].name,mem[i].name)<0) { temp=mem[i]; mem[i]=mem[j]; mem[j]=temp; } for(i=0;i void sor(){int k; do{printf(“--------------------排序菜单-------------------n”); printf(“------------------------n”); printf(“ 1:按号码排序n”); printf(“ 2:按姓名排序n”); printf(“ 0:退出n”); printf(“------------------------n”); printf(“请输入0-2选择功能n”); scanf(“%d”,&k);getchar(); switch(k) { case 1:sorttel(mem);break; case 2:sortname(mem);break; case 0:return; } }while(1);} void add(){ char name[10];char tel[10]; char wu[10]; char dz[10];FILE *fp;if((fp=fopen(“c:elephone.txt”,“a”))==NULL){ printf(“不能打开文件n”); exit(0);} printf(“请输入姓名”); gets(name); printf(“请输入电话号码”); gets(tel); printf(“请输入工作单位”); gets(wu); printf(“请输入地址”); gets(dz);printf(“n”); fprintf(fp,“%s %s %s %sn”,name,tel,wu,dz); fclose(fp);} void del(){ FILE *fp; int i=0,n; char name[10]; printf(“请输入删除名字”); gets(name); if((fp=fopen(“c:elephone.txt”,“r”))==NULL){ printf(“不能打开文件n”); exit(0);} while(!feof(fp)) { fscanf(fp,“%s%s%s%s”,mem[i].name,mem[i].tel,mem[i].wu,mem[i].dz); if(strcmp(name,mem[i].name)!=0)i++; } fclose(fp);if((fp=fopen(“c:elephone.txt”,“w”))==NULL){ printf(“不能打开文件n”); exit(0);} for(n=0;n fprintf(fp,“%s %s %s %s”,mem[n].name,mem[n].tel,mem[n].wu,mem[n].dz);fclose(fp);} void dis(){ FILE * fp;int i=0,n;printf(“ 姓名 电话号码 工作单位 地址n”); if((fp=fopen(“c:elephone.txt”,“r”))==NULL){ printf(“不能打开文件n”); exit(0);} while(!feof(fp)) {fscanf(fp,“%s%s%s%s”,mem[i].name,mem[i].tel,mem[i].wu,mem[i].dz);i++;} fclose(fp); n=i; for(i=0;i printf(“%-8s%11s%13s%24sn”,mem[i].name,mem[i].tel,mem[i].wu,mem[i].dz);} void mod(){ FILE * fp;int i=0,n;char name[10];char nn[10];char nt[10];char nwu[10];char ndz[10]; printf(“请输入要修改的姓名”);gets(name);printf(“请输入修改后的姓名”);gets(nn);printf(“请输入修改后的电话号码”);gets(nt);printf(“请输入修改后的工作单位”);gets(nwu);printf(“请输入修改后的地址”);gets(ndz);printf(“n”);if((fp=fopen(“c:elephone.txt”,“r”))==NULL){ printf(“不能打开文件n”); exit(0);} while(!feof(fp)) { fscanf(fp,“%s%s%s%s”,mem[i].name,mem[i].tel,mem[i].wu,mem[i].dz); if(strcmp(name,mem[i].name)==0) {strcpy(mem[i].name,nn);strcpy(mem[i].tel,nt);strcpy(mem[i].wu,nwu);strcpy(mem[i].dz,ndz);} i++; } fclose(fp);if((fp=fopen(“c:elephone.txt”,“w”))==NULL){ printf(“不能打开文件n”); exit(0);} n=i; for(i=0;i fprintf(fp,“%s %s %s %sn”,mem[i].name,mem[i].tel,mem[i].wu,mem[i].dz); fclose(fp);} void main(){ int choose; while(1) { printf(“--------------------电话簿管理系统--------------------n”); printf(“------------------------n”); printf(“ 1:添加一个新号码n”); printf(“ 2:删除一个号码n”); printf(“ 3:显示所有保存的号码n”); printf(“ 4:修改号码n”); printf(“ 5:排序n”); printf(“ 6:查询n”); printf(“ 0:退出n”); printf(“------------------------n”); printf(“请输入0-6选择功能n”); scanf(“%d”,&choose);getchar(); if(choose!=0) switch(choose) { case 1:add();break; case 2:del();break; case 3:dis();break; case 4:mod();break; case 5:sor();break; case 6:/*que();break*/; } else exit(0); 教师奖金计算系统-C语言课程设计 #include 1、专职教师n”);printf(“ 2、行政n”);printf(“0、退出程序n”);scanf(“%d”,&a); printf(“n===================n”);switch(a){ case 0:j=0;break; 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 case 1: { {do {printf(“请输入你的教师类型:n”); printf(“ 1、高级讲师n2、中级讲师n3、助理讲师n4、见习期n”); scanf(“%d”,&b); switch(b) {case 1: c=10;d=40;break; case 2: c=9;d=35;break; case 3: c=8;d=30;break; case 4: c=4;d=10;break; default: printf(“n输入错误,请重新输入:n”); } } while(b<=0||b>4);} printf(“n===================n”);{for(i=1;i<=3;i++) { printf(“请输入所代 课程%d 本周所教的课时数,最多3科,多出的输入0n”,i); 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 scanf(“%d”,&m[i]); printf(“您输入的课时数为:%dn”,m[i]); printf(“请输入所代 课程%d 所对应的听课人数n”,i); scanf(“%d”,&e); if(e<60)n[i]=1; if(e>=61&&e<=70)n[i]=1.2; if(e>=71&&e<=80)n[i]=1.3; if(e>=81&&e<=90)n[i]=1.4; if(e>=91&&e<=100)n[i]=1.5; if(e>=101&&e<=120)n[i]=1.6; if(e>=121&&e<=140)n[i]=1.7; if(e>=141&&e<=160)n[i]=1.8; if(e>=161&&e<=180)n[i]=1.9; if(e>=181)n[i]=2.0; printf(“您输入的课程人数为%dn课程%d对应系数为%2.2fn”,e,i,n[i]); } } printf(“n===================n”); {do 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 {printf(“请选择您的教师等级:n”); printf(“ 1、A等n2、B等n3、C等n”); scanf(“%d”,&f); if(f==1)g=1; else if(f==2)g=0; else if(f==3)g=-1; else printf(“n输入错误,请重新输入:n”); } while(f<=0||f>3); } printf(“n===================n”);printf(“n===========以下为您本月的奖金信息:===========n”);printf(“乘学时系数后本月各课程课时:n”);printf(“课程1:%2.2fn”,m[1]*n[1]*4.5);printf(“课程2:%2.2fn”,m[2]*n[2]*4.5);printf(“课程3:%2.2fn”,m[3]*n[3]*4.5);printf(“本月超课时为:%2.2fn”,(m[1]*n[1]+m[2]*n[2]+m[3]*n[3])*4.5-36);printf(“本月奖金数为:%2.2fn”,((m[1]*n[1]+m[2]*n[2]+m[3]*n[3])*4.5-36)*(d+g)+36*(c+g 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案));break;} case 2: { {do {printf(“请选择类型:n”); printf(“ 1、普通行政(未兼课)nn2、普通行政兼课、实验室教师nn3、见习其行政(未兼课)nn4、见习期行政兼课nn5、中层领导(未兼课)nn6、中层领导兼课nn ”); scanf(“%d”,&b); } while(b<=0||b>6);} printf(“n===================n”); switch(b) {case 1: h=1500; printf(“n===========以下为您本月的奖金信息:===========n”); printf(“您本月的坐班奖金为:%dnn”,h); 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 break; case 2:h=1500; {do {printf(“请输入你的教师类型:n”); printf(“ 1、高级讲师n2、中级讲师n3、助理讲师n”); scanf(“%d”,&d); switch(d) {case 1: c=10;break; case 2: c=8;break; case 3: c=6;break; default: printf(“n输入错误,请重新输入:n”); } } while(b<=0||b>3); } printf(“n===================n”); {for(i=1;i<=3;i++) { printf(“请输入所代 课程%d 本周所教的课时数,最多3科,多出的输入0n”,i); 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 scanf(“%d”,&m[i]); printf(“您输入的课时数为:%dn”,m[i]); } } printf(“n===================n”); {do {printf(“请选择您的教师等级:n”); printf(“ 1、A等n2、B等n3、C等n”); scanf(“%d”,&f); if(f==1)g=1; else if(f==2)g=0; else if(f==3)g=-1; else printf(“n输入错误,请重新输入:n”); } while(f<=0||f>3); } printf(“n===================n”); printf(“n===========以下为您本月的奖金信 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 息:===========n”); printf(“您本月所教课时为:%2.2fn”,(m[1]+m[2]+m[3])*4.5); printf(“您本月的坐班奖金为:%dn”,h); printf(“n您本月的全部奖金为:%2.2fn”,h+((m[1]+m[2]+m[3])*4.5)*(c+g)); break; case 3: h=700; printf(“n===========以下为您本月的奖金信息:===========n”); printf(“n您本月的坐班奖金为:%dn”,h); break; case 4: h=700; c=4; {for(i=1;i<=3;i++) { printf(“请输入所代 课程%d 本周所教的课时数,最多3科,多出的输入0n”,i); scanf(“%d”,&m[i]); printf(“您输入的课时数为:%dn”,m[i]); } } 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 printf(“n===================n”); {do {printf(“请选择您的教师等级:n”); printf(“ 1、A等n2、B等n3、C等n”); scanf(“%d”,&f); if(f==1)g=1; else if(f==2)g=0; else if(f==3)g=-1; else printf(“n输入错误,请重新输入:n”); } while(f<=0||f>3); } printf(“n===================n”); printf(“n===========以下为您本月的奖金信息:===========n”); printf(“您本月所教课时为:%2.2fn”,(m[1]+m[2]+m[3])*4.5); printf(“您本月的坐班奖金为:%dn”,h); 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 printf(“n您本月的全部奖金为:%2.2fn”,h+((m[1]+m[2]+m[3])*4.5*(c+g))); break; case 5: h=2000; printf(“n===========以下为您本月的奖金信息:===========n”); printf(“您本月的坐班奖金为:%dn”,h); break; case 6: h=2000; {do {printf(“请输入你的教师类型:n”); printf(“ 1、高级讲师n2、中级讲师n3、助理讲师n”); scanf(“%d”,&d); switch(d) {case 1: c=20;break; case 2: c=15;break; case 3: c=10;break; default: printf(“n输入错误,请重新输入:n”); } } while(d<=0||d>3); 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 } printf(“n===================n”); {for(i=1;i<=3;i++) { printf(“请输入所代 课程%d 本周所教的课时数,最多3科,多出的输入0n”,i); scanf(“%d”,&m[i]); printf(“您输入的课时数为:%dn”,m[i]); } } printf(“n===================n”); {do {printf(“请选择您的教师等级:n”); printf(“ 1、A等n2、B等n3、C等n”); scanf(“%d”,&f); if(f==1)g=1; else if(f==2)g=0; else if(f==3)g=-1; 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 else printf(“n输入错误,请重新输入:n”); } while(f<=0||f>3); } printf(“n===================n”); printf(“n===========以下为您本月的奖金信息:===========n”); printf(“您本月所教课时为:%2.2fn”,(m[1]+m[2]+m[3])*4.5); printf(“您本月的坐班奖金为:%dn”,h); printf(“n您本月的全部奖金为:%2.2fn”,h+((m[1]+m[2]+m[3])*4.5)*(c+g)); break; } }break; } }while(j==1); } 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 精心收集 //节点号 类型 负荷有功 负荷无功母线数据(类型 1=PV节点,2=PQ节点,3=平衡节点)struct BUS { int busno;int type;float Pd;float Qd;}; //发电机数据 节点号 有功发电 电压幅值 struct Generator { int busno;float Pg;float Vg;}; //支路信息 节点I 节点J R X B/2 k struct Line { int busi;int busj;float R;float X;float B;float k;};//deltaP deltaQ deltaV^2// void fun1(double YG[][50],double YB[][50],double e[],double f[],int type[],int N,double W[],double P[],double Q[],double V[]){ double dP=0,dQ=0,dV=0;int i,j;for(i=0;i double A=0,B=0; for(j=0;j A+=YG[i][j]*e[j]-YB[i][j]*f[j]; B+=YG[i][j]*f[j]+YB[i][j]*e[j]; } dV=V[i]*V[i]-e[i]*e[i]-f[i]*f[i]; dP=P[i]-e[i]*A-f[i]*B; W[2*i]=dP; dQ=Q[i]-f[i]*A+e[i]*B; if(type[i]==1) W[2*i+1]=dQ; else W[2*i+1]=dV;} } //Jacobi矩阵// void Jacobi(double YG[][50],double YB[][50],double e[50],double f[50],int type[50],int N ,double Ja[100][101]){ int i,j; for(i=0;i for(j=0;j if(i!=j){ if(type[i]==1){ Ja[2*i][2*j]=-(YG[i][j]*e[i]+YB[i][j]*f[i]); Ja[2*i][2*j+1]=YB[i][j]*e[i]-YG[i][j]*f[i]; Ja[2*i+1][2*j]=Ja[2*i][2*j+1]; Ja[2*i+1][2*j+1]=-Ja[2*i][2*j]; } else { Ja[2*i][2*j]=-YG[i][j]*e[i]+YB[i][j]*f[i]; Ja[2*i][2*j+1]=YB[i][j]*e[i]-YG[i][j]*f[i]; Ja[2*i+1][2*j+1]=Ja[2*i+1][2*j]=0; } } else { double a[50]={0},b[50]={0}; for(int k=0;k a[i]+=(YG[i][k]*e[k]-YB[i][k]*f[k]); b[i]+=(YG[i][k]*f[k]+YB[i][k]*e[k]); Ja[2*i][2*j]=-a[i]-YG[i][i]*e[i]-YB[i][i]*f[i]; Ja[2*i][2*j+1]=-b[i]+YB[i][i]*e[i]-YG[i][i]*f[i]; if(type[i]==1){ Ja[2*i+1][2*j]=b[i]+YB[i][i]*e[i]-YG[i][i]*f[i]; Ja[2*i+1][2*j+1]=-a[i]+YG[i][i]*e[i]+YB[i][i]*f[i]; } else { Ja[2*i+1][2*j]=-2*e[i]; Ja[2*i+1][2*j+1]=-2*f[i]; } } } } } } //高斯消元法解方程组函数// void gauss(double a[][101],int n) { int i,j,k;double c; for(k=0;k c=a[k][k]; for(j=k;j<=n;j++)a[k][j]/=c; for(i=k+1;i c=a[i][k]; for(j=k;j<=n;j++)a[i][j]-=c*a[k][j]; } } a[n-1][n]/=a[n-1][n-1]; for(k=n-2;k>=0;k--) for(j=k+1;j void main(){ ifstream fin;int N=0,GS=0,LD=0,ZLs=0;//节点数 发电机数 负荷数 BUS *B; Generator *G;Line *L; //从文本中读入原始数据到数组中// fin.open(“C:data.txt”);if(!fin) { cout<<“输入数据文件不存在!”< getchar(); } int m1[50]={0},m2[50]={0};float m3[50],m4[50],m5[50],m6[50]; int i,j,l; 支路数// for(i=0;;i++){ fin>>m1[i]; if(m1[i]==0)break; fin>>m2[i]>>m3[i]>>m4[i]; N++;} B =new BUS[N];for(i=0;i B[i].busno=m1[i]; B[i].type=m2[i]; B[i].Pd=m3[i]; B[i].Qd=m4[i];} for(i=0;;i++){ fin>>m1[i]; if(m1[i]==0)break; fin>>m4[i]>>m3[i]; GS++;} G =new Generator[GS];for(i=0;i G[i].busno=m1[i]; G[i].Pg=m4[i]; G[i].Vg=m3[i];} for(i=0;;i++){ fin>>m1[i]; if(m1[i]==0)break; fin>>m2[i]>>m3[i]>>m4[i]>>m5[i]>>m6[i]; ZLs++;} L =new Line[ZLs];for(i=0;i L[i].busi=m1[i]; L[i].busj=m2[i]; L[i].R=m3[i]; L[i].X=m4[i]; } L[i].B=m5[i];L[i].k=m6[i]; LD=N-GS;fin.close(); //节点导纳矩阵形成// double YB[50][50],YG[50][50],BB[50][50],K[50][50];for(i=0;i YB[i][j]=0;YG[i][j]=0;BB[i][j]=0;K[i][j]=1;} } for(l=0;l } for(i=0;i for(j=i;j K[i][j]=K[j][i];K[j][i]=1; } for(j=0;j if(i!=j){ YG[i][i]=YG[i][i]+(YG[i][j]*K[i][j]*K[i][j]); YB[i][i]=YB[i][i]+(YB[i][j]*K[i][j]*K[i][j]+BB[i][j]); } } } //修正后// for(l=0;l // 求A=e+f// double e[50]={0},f[50]={0};double C[100]={0},D[100]={0};for(i=0;i C[2*i]=1;} else C[2*i]=V[i]; } double W[100]={0},Ja[100][101]={0}; //调用Jacobi函数和高斯函数// for(int t=1;t<10;t++){ for(i=0;i<2*N-2;i++){ e[i]=C[2*i]; f[i]=C[2*i+1]; } fun1(YG,YB,e,f,type,N,W,P,Q,V); double it=fabs(W[0]); for(i=1;i<2*N-2;i++){ if(it it=fabs(W[i]);j=i; } } //中间迭代过程// cout< cout< if(it<0.00001)break; Jacobi(YG,YB,e,f,type,N,Ja); for(i=0;i<2*N-2;i++){ Ja[i][2*N-2]=W[i]; } //高斯消元法解方程// gauss(Ja,2*N-2); for(i=0;i<2*N-2;i++){ D[i]=-Ja[i][2*(N-1)]; C[i]+=D[i]; } } //平衡节点// for(i=0;i double a=0,b=0; for(int j=0;j a+=(YG[i][j]*e[j]-YB[i][j]*f[j]); b+=(YB[i][j]*e[j]+YG[i][j]*f[j]); } P[i]=e[i]*a+f[i]*b; Q[i]=f[i]*a-e[i]*b; } //支路// double PZL[100][101]={0},QZL[100][101]={0},pr[100][101]={0},qx[100][101]={0};double x1=0,x2=0,y1=0,y2=0,I2=0;for(int k=0;k i=L[k].busi-1;j=L[k].busj-1;x1=e[i]/L[k].k-e[j];y1=f[i]/L[k].k-f[j];x2=-e[i]*YG[i][j]-f[i]*YB[i][j];y2=-f[i]*YG[i][j]+e[i]*YB[i][j];QZL[i][j]=(x1*y2-x2*y1);PZL[i][j]=(x1*x2+y1*y2);I2=(PZL[i][j]*PZL[i][j]+QZL[i][j]*QZL[i][j])/(e[i]*e[i]+f[i]*f[i]);pr[i][j]=I2*L[k].R;qx[i][j]=I2*L[k].X-(e[i]*e[i]+f[i]*f[i]+e[j]*e[j]+f[j]*f[j])*L[k].B;QZL[i][j]+=(e[i]*e[i]+f[i]*f[i])*(-L[k].B);x1=e[j]*L[k].k-e[i];y1=f[j]*L[k].k-f[i];x2=-e[j]*YG[j][i]-f[j]*YB[j][i];y2=-f[j]*YG[j][i]+e[j]*YB[j][i];QZL[j][i]=(x1*y2-x2*y1);PZL[j][i]=(x1*x2+y1*y2);I2=(PZL[j][i]*PZL[j][i]+QZL[j][i]*QZL[j][i])/(e[j]*e[j]+f[j]*f[j]);pr[j][i]=I2*L[k].R;qx[j][i]=I2*L[k].X-(e[i]*e[i]+f[i]*f[i]+e[j]*e[j]+f[j]*f[j])*L[k].B;QZL[j][i]+=(e[j]*e[j]+f[j]*f[j])*(-L[k].B); } //全网数据// int high=1,low=1; double PG=0,PL=0,Prr=0,Vh=sqrt(e[0]*e[0]+f[0]*f[0]),Vl=sqrt(e[0]*e[0]+f[0]*f[0]);for(k=0;k Vh=sqrt(e[k]*e[k]+f[k]*f[k]);high=k+1;} if(sqrt(e[k]*e[k]+f[k]*f[k]) Vl=sqrt(e[k]*e[k]+f[k]*f[k]);low=k+1;} } //输出数据到文件databak.txt// ofstream fout; fout.open(“C:databak.txt”); fout<<“节点”< fout< for(i=0;i fout< for(j=0;j i=G[j].busno-1; fout< fout<<“支路 ”< fout< for(k=0;k i=L[k].busi-1;j=L[k].busj-1; fout< fout<<“全网数据”< fout< fout< 一、改变课堂教学设计, 激发学生学习兴趣 学生开始接触计算机语言时感到新奇, 随着课程不断深入, 学生易产生枯燥无味的感觉。为把学生的好奇转化为学习兴趣, 笔者在授课时改变过去先给出定义和规则的讲授办法, 在教学设计上采用以问题形式推出教学内容, 在课前详细分析教学内容, 将教学内容转化为学生感兴趣的实际问题, 以问题为载体引出教学内容, 吸引学生注意力, 引导学生主动探讨解决问题的办法。比如在讲逻辑表达式时, 突破以往教学方式, 不再以理论灌输的形式讲授, 而是直接提出有趣的逻辑推理问题, 问题一提出就吸引了学生的注意力, 学生主动参与并积极探索。 教师在进行教学设计时, 应把枯燥无味的语法知识融入生动实例中, 让学生在探索中学习, 这样学生更乐于接受。 二、合理调整教学内容, 积极构建不同算法 C语言教材比较注重逻辑推理, 强调理论及抽象思维过程, 但在教学实践过程中却不适应中职学生的特点, 教学往往事倍功半, 效果不理想。 针对中职学生的认知特点, 笔者在该课程的教学过程中, 合理调整教学内容, 不是从语法规则入手, 而是针对教学内容, 引入不同的实例, 先让学生体验生活中是如何解决这样的问题, 引导学生和教师一起构建算法, 并让学生构建不同的算法, 比较这些算法之间的优劣, 并根据分析对算法进行优化。学生在对算法的构建、优化练习过程中不断总结、完善, 无形之中熟悉了语法规则, 同时提高了学生构建算法的能力。例如, 在分析排序法时, 可请学生上台演示如何按高矮顺序排队, 让学生去体会各种不同排序方法, 给学生以直观感受, 有助于学生探索如何构建算法。 算法是解题的方法和步骤, 程序设计的实质就是构造解决问题的算法。教师在教学中应引导学生构建算法, 让学生在一个个生动的实例中体验不同的算法, 有效拓展学生的编程思维。 三、改进课堂教学方法, 引导学生动手编程 传统的教学方法一般以“教师讲, 学生听”为主, 学生只是被动地接受知识, 很难引导学生真正动手编制程序。 笔者改变原来机械式传授知识的方法, 根据学生的认知规律, 遵循先易后难;先具体后抽象的原则, 通过各种教学方式和手段综合使用, 让学生带着问题听课, 引导学生积极思维, 发现问题, 提出问题, 并逐步解决问题。教师在讲解程序设计实例时, 从分析问题入手, 给学生一个比较实际的切入点, 引导学生主动探索, 找出解决问题的方法, 构建算法, 鼓励学生大胆动手编制程序。并充分利用多媒体设备展示学生的成果, 给予评价和激励, 让学生感受编程的全过程。在整个教学过程中, 可将学生分成小组进行体验、探索, 教师起引导作用, 所有的任务由学生来完成。 在教学过程中, 以学生为中心, 根据内容需要与学生情况灵活地采用多种教学方法和手段进行教学, 学生在课堂上真正成为“主体”, 教师扮演“主导”角色, 学生在比较融洽的学习氛围下, 积极主动参与到编程活动中, 有效地提高了编程能力。 四、加强上机实验环节, 理论与实践相结合 《C语言程序设计》是一门实践性很强的课程, 只有通过上机实践, 学生才能真正理解消化课堂上的教学内容, 纠正原来理解上的偏差, 加深对C语言的了解。 笔者在整个c语言程序设计课程教学中, 合理安排课堂教学和上机实践时间, 精心安排上机实践内容, 选择由浅到深, 由易到难, 练习实践基本算法和趣味游戏类相结合的程序。通过上机实践, 教师不但能及时发现学生在学习中存在的问题, 而且可以培养学生利用计算机解决实际问题的能力。例如C语言中关于值传递、地址传递的实例, 通过上机调试, 观察变量的变化过程, 加深对传值、传址方式的理解。在每次上机实验课中, 笔者及时对学生的优秀程序予以讲评, 分类纳入“实验示范库”, 通过开放的实验教学环境和校园网实现资源共享, 供学生学习借鉴;而且让学生自己动手探索网络资源, 丰富原有的知识结构, 这对学生编程能力的提高起着重要作用。 通过学生的上机实践, 将语言知识和程序设计串成两条相互呼应的主线, 加深了对语言的全面理解和掌握, 帮助学生真正掌握程序设计的思想和方法, 运用编程语言解决实际问题, 培养了学生综合应用语言的能力。 在《C语言程序设计》这门课程的教学实践过程中, 笔者以学生为中心, 以算法为核心, 调动学生的学习积极性, 充分挖掘学生的编程潜力, 学生的编程能力普遍得到提高。教育部长周济谈到, 职业教育教学要不断推进教学内容和教学方法的改革和创新。根据职业教育的特点, 在新课程理念的指导下, 笔者将不断探索, 更好地实现《C语言程序设计》编程教学从面向学科理论知识到面向解决实际问题的转变, 有效地将编程思想训练和编程技能训练融为一体。 摘要:本文针对中职学生学习《C语言程序设计》课程时编程困难的问题, 结合现代教育理论, 从培养和提高学生编程能力的角度出发, 对该课程在教学设计、教学内容、教学方法和上机实践等方面作了一定的探索和实践。 关键词:中职,C语言,编程能力,教学,探索 参考文献 [1].陈旭远 张捷《:新课程实用课堂教学艺术》, 东北师范大学出版社, 2004年版 [2].沈军《:C程序设计语言课程的教学新思路》, 电气电子教学学报, 2000年4期 关键词:兴趣;激发;任务驱动;C语言 中图分类号: G4 文献标识码: A 文章编号: 1673-1069(2016)23-71-2 0 引言 《C语言程序设计》是计算机类专业学生必修的专业基础课,与其他专业课程起着链接的前导作用,在整个教学过程中的地位举足轻重。但由于这门课程理论性和抽象思维能力较强,内容概念繁杂,空间运动较多。不少初学者难以掌握,容易出错。技校学生大部分基础较差,对学习C语言更是信心不足,缺乏学习积极性和学习主动性,主要表现为:被动听课,甚至不听课,被迫完成作业,懒于思考,坐等现成答案。有的甚至上课睡觉,玩手机等。在《C语言程序设计》教学过程中,笔者深刻体会到要想改变这种现象,优化课堂教学,提高教学效率,关键得激发学生学习C语言的兴趣,提高学生的学习积极性和主动性。下面结合自身的教学实践,谈一谈在C语言教学中激发学生学习兴趣的策略。 1 化繁为简,激发兴趣 大部分《C语言程序设计》的教材内容繁多、概念复杂、语法规则多,如果教师照本宣科的根据教材章节顺序进行授课,很容易使学生感觉枯燥乏味,对学好C语言的信心更加不足,更甚会引起他们对课程的反感。结果往往是教师“一腔热血”,学生一头雾水,既费时又没效果。 因此,教师在备课时应适当对教材内容进行分析、增减,把握重、难点。将抽象的内容具体化、生动化,适当增加课堂教学活动的趣味性。如第1章C语言概述,可以将文字形象化,利用FLASH等软件制作动画教学课件,将C语言的出现和发展过程等制作成动漫的形象,以讲故事的形式进行授课,激发学生的兴趣;如选择结构、循环结构、函数指针等难点,教师应做出细致的规划,以重点内容为突破口, 采用引导式教学方法,通过课件演示、实例分析和上机练习,使学生掌握相关知识点,达到化难为易、化抽象为具体的目的,让学生感受到掌握C语言程序编程其实并不难,以减弱学生的心理压力,体会设计程序的乐趣,以此来激发学生的学习兴趣。 2 引导教学,点化智慧 传统的教学方法是“你教我练”,学生是被动地接受。C语言程序设计本是一门比较枯燥又难以接受的学科,加之技校的学生大部分基础较差,进入技校前也没有接触过编程类的课程。如果仍然采用传统的教学方法,不仅无法激发学生的学习兴趣,还会加深学生对这门课程的厌烦和畏惧心理。因此,想要调动学生的学习积极性,激发学生学习兴趣,教师则不能再是写了脚本自己演,而是要成为“点化学生智慧的导师”。 C语言的教学过程应充分发挥其解决实用问题的导向作用,有机地将理论与实践紧密结合,通过设计巧妙的教学内容,充分调动学生的积极性;在教学过程中关键要突出学生的主体作用,体现教师的主导作用。教师可采用引导式教学,培养学生的逻辑思维和创新能力,调动学生的求知欲望,让学生能主动地参与到教学过程中,与教师相互交流,发现问题、提出问题进而解决问题。例如,在讲解程序设计时,教师不能一开始就直奔写程序,而是应先分析问题,引导学生找出解决问题的方法,然后画出流程图,最后才编写程序。在这一过程中,每一步都应该采取与学生共同探讨的方式,不断地启发和引导学生,逐步、清晰地完成程序的编写。这样,不仅能提高教学效果,而且能够激发学生的学习兴趣和潜能。 3 上机实践,任务驱动 C语言程序设计是一门实践性很强的课程,通过上机操作,才能让学生真正理解、消化C语言相关语法及理论基础知识,同时提高编程能力;在理论课堂上存在的疑难点,也可通过上机调试得到更明确直观的解答。但是,想让学生自己上机编写程序又是一项难事,大部分学生去到机房最大的兴趣就是上网玩游戏,再加上教材中的例题、习题基本以算法设计为主,内容枯燥不易编写,学生上机积极性自然不高。因此我们应该投其所好,抓住学生喜欢玩游戏的特点,将程序编程加入游戏的元素。学生为什么对网络游戏非常着迷,为什么网络游戏会对他们产生这么大的吸引力呢?一个重要的原因是它运用了“目标驱动”的原理,目标设计有层次、阶梯式,能不断刺激人们的好奇心和征服欲望,而且游戏里面的奖励机制、升级机制等也是让学生入迷的原因,因为游戏里面就是让玩家通过做任务等获取利益,让玩家产生一定的优越感。我们可以借鉴游戏规则,将任务驱动应用到教学实践中,采用循序渐进的思路,将每次上机课的主要内容、知识点分解成若干个不同难度、不同分值的小任务,让学生分组完成任务。每完成一个任务就有相应分数奖励,想要获得更多的分数和奖励,就得继续挑战下一个任务。 刚学习C语言,学生还没办法独立、完整地编写程序时,可以先通过程序改错题让学生对C程序有一个初步的了解。将程序改错题设计为 “大家来找茬”的游戏任务:教师事先编写好简单的“问题”程序,并提供正确的程序参照图,让各小组上机调试,在规定时间内找出“问题”程序的错误之处并改正,同时做好记录为挑战下一关任务做好准备。学生完成任务后便可以得到相应的奖励;任务进阶,当学生有了一定的基础后,便可尝试让学生填补不完整的程序,通过补全程序逐步锻炼学生编写程序的能力,此时可以将程序设计题命名为类似“寻找失落的它”等游戏名称,学生看到这名字自然会联想到玩游戏,也就大大降低了对编程的畏惧心理,而且有了前面修改程序的基础,对于挑战本关任务的信心也会加强;学生在完成各个不同阶段的任务中慢慢提高了编写能力,到最后则可以锻炼学生完整地编写、设计程序,也就是进阶到终极任务,如编写五子棋游戏程序——“与它对弈”。 学生每次做作业感觉像在玩游戏,自然就会对它产生好奇心,在完成不同阶段任务的过程中,大家都会想最快、最好地完成任务,同学之间就会有竞争,遇到问题则会想办法去征服它。在这一过程中,学生掌握所学的知识之余还提高了他们分析、解决问题的能力。各小组在完成任务期间遇到不懂的知识时,会互相讨论、主动翻书、上网查资料或问老师,这样不仅能充分调动学生的学习主动性、积极性和创造性,还能加强学生之间的沟通。实践证明,运用这种教学方式,学生能从不断完成任务的过程中获取成就感与优越感,从而激发学生的学习热情,增加学习的内驱力。 4 提取精华,制作“微课” 一节课的精华总是围绕某个知识点、教学点展开,精彩的、高潮的环节都是短暂的。学生视觉驻留时间普遍较短,若时间太长,注意力得不到缓解,很难达到较理想的教学效果。教师如果能将每节课的重点、难点、疑点等精华部分录制成微视频提供给学生,学生课前可先观看视频,来到课堂上,教师进行讲授时更能引起学生的共鸣。学生课后也可观看视频以巩固知识。当学生上机完成任务遇到问题,忘记某些知识点时,比起翻看课本,通过观看相应的微视频能更快更直观地找到解决问题的方法。这样,学生的学习主动性和积极性就更大了。 5 结束语 俗话说:“兴趣是最好的老师”,兴趣来源于好奇,好奇心是人类与生俱来的。一个人只有对某件事情或物品产生了好奇心,感兴趣了,才会启动思维,苦思冥想;只有对一个问题感兴趣了,才会主动去寻找解决它的办法。兴趣是激发学生学习积极性的动力,兴趣是激发创造力的必要条件。因此,在教学过程中,教师的重要任务之一就是激发学生的学习兴趣。只有激发学生的学习兴趣,才能充分发挥学生学习的主动性和积极性。任何教学模式都有优缺点,也都有适合的范围。《C语言程序设计》是一门专业基础课,需要我们不断探索新的教学方法和教学模式,激发学生学习该课程的兴趣,使学生不但能掌握本课程的知识,而且能为后续学习其他专业课程打下扎实的基础,更重要的是能学以致用,解决学习上、工作中的实际问题。 参 考 文 献 [1] 谭浩强.C语言程序设计(第2版)[M].清华大学出版,2008.11. [2] 霍顿(Ivor Horton)著,杨浩 译.C语言入门经典(第4版)[M].清华大学出版,2008.4. [3] 唐涛,杨本胜.C语言程序设计任务驱动教程[M].中国海洋大学出版社,2011.9. [4] 苏华.中职课堂计算机教学中如何激发学生的学习兴趣[J].当代教研论丛,2015(04). 【学生管理系统c语言】推荐阅读: 学生信息管理系统c03-27 进程管理实验c语言版10-26 全国大学生英语竞赛c11-08 精细化管理考试题(C卷)07-27 学生手册学生管理12-25 中学生学生管理制度07-16 学生请假管理系统方案05-24 07学生成绩管理系统05-28 学生出入安全管理系统09-11 学生课程信息管理系统12-15学生管理系统c语言 篇2
学生管理系统c语言 篇3
c语言 电话簿管理系统 篇4
学生管理系统c语言 篇5
电力系统通用潮流计算C语言程序 篇6
学生管理系统c语言 篇8