1、C语言课程设计C语言课程设计 学生管理系统学生姓名: 学生学号: 所在专业: 任课教师: 2011年6月2日学生管理系统一、设计目的设计“学生管理系统”使其具有数据插入、修改、删除和查询等功能。(1) 数据包括:学号、姓名、年龄和成绩。(2) 可对记录中的学生信息进行修改。(3) 可增加或删除学生信息。(4) 可进行查询学生所有信息。(5) 熟练掌握C语言课程中所学的理论知识;(6) 通过综合C语言的基本知识来解决实际问题;(7) 加强分析和解决问题的能力;(8) 加强同学们之间的团队合作经验;二、设计思路根据要求,学生管理系统数据以文本文件存放在文件中,需要提供文件的输入、输出等操作;可以进
2、行修改,删除,查找等操作;另外还应提供键盘式选择菜单实现功能选择。三、总体设计图1 系统功能模块图四、详细设计/各个函数功能1. 主函数:提供部分提示语,显示一系列功能选项void main(void) menu: page_title(操作选单); printf(请用数字键选择操作nn); printf(1 录入学生基本信息n2 修改学生基本信息n); printf(3 注销学生基本信息nn4 录入成绩n5 修改成绩nn); printf(6 浏览.n n0 退出n); switch(getch() case 1 : student_new();break; case 2 : student
3、_edit();break; case 3 : student_del();break; case 4 : score_input();break; case 5 : score_edit();break; case 6 : browser();break; case 0 : exit(0); goto menu;2定义结构体变量struct STUDENT int id; int age; int chinese,math,english; char name21;students32;3.插入函数:插入学生的基本信息void student_new(void) int n; page_ti
4、tle(录入学生基本信息); for(n=0;n32;n+) if(studentsn.id=0) break; printf(学号:); scanf(%d,&studentsn.id); printf(姓名:); scanf(%s,&studentsn.name); printf(年龄:); scanf(%d,&studentsn.age); return_confirm();4.删除函数:删除学生的基本信息void student_del(void) int n; page_title(注销学生基本信息); if(n=search_id()!=-1) studentsn.id=0; pri
5、ntf(n!该学生已注销.n); return_confirm();5.修改函数:修改学生的基本信息和修改学生的成绩修改学生的基本信息void student_edit(void) int n; page_title(编辑学生基本信息); if(n=search_id()!=-1) printf(n请重新输入新信息:n学号:); scanf(%d,&studentsn.id); printf(姓名:); scanf(%s,&studentsn.name); printf(年龄:); scanf(%d,&studentsn.age); return_confirm();修改学生成绩void sc
6、ore_edit(void) int n; page_title(修改成绩); if(n=search_id()!=-1) printf(语文:%d 数学:%d 英语:%dn,studentsn.chinese,studentsn.math,studentsn.english); printf(n请重新输入成绩:n语文:); scanf(%d,&studentsn.chinese); printf(数学:); scanf(%s,&studentsn.math); printf(英语:); scanf(%d,&studentsn.english); return_confirm();6.查询函数
7、:通过学号,查找学生的基本信息和查询学生的所有信息 查找学生的基本信息int search_id(void) int n,i; printf(请输入学生学号:); scanf(%d,&i); for(n=0;n32;n+) if(studentsn.id=i&studentsn.id!=0) printf(学号:%dn,studentsn.id); printf(姓名:%sn,studentsn.name); printf(年龄:%dn,studentsn.age); return n; printf(n输入错误或学号不存在.n); return -1;查询学生的所有信息void browse
8、r(void) int n,x; char k; sort_it(1); while(1) page_title(浏览); printf(按数字键选择排序方式或按 0 返回n); printf(学号-1t 姓名t年龄t语文-2t数学-3t英语-4t总分-5n); for(n=0;n32;n+) if(INDEXn!=-1) x=INDEXn; printf(%dt%st,studentsx.id,studentsx.name); printf(%dt%dt,studentsx.age,studentsx.chinese); printf(%dt%dt,studentsx.math,studen
9、tsx.english); printf(%dn,studentsx.chinese+studentsx.math+studentsx.english); k=getch(); if(k0) sort_it(k); else if(k=0) break; else continue; 7加总函数:求学生的总成绩void sort_it(char nn) int n,m,p,x,t32; for(n=0;n32;n+) switch(nn) case 1 : tn=studentsn.id;break; case 2 : tn=studentsn.chinese;break; case 3 :
10、tn=studentsn.math;break; case 4 : tn=studentsn.english;break; case 5 : tn=studentsn.chinese+studentsn.math+studentsn.english;break; for(n=0;n32;n+) x=0; p=-1; for(m=0;mx) x=tm; p=m; tp=-1; INDEXn=p; 图2. 主函数流程图五、设计体会1.通过为期一周的课程设计,我们对C语言这门课程有了更深一步的了解。通过这次课程设计,使我对C语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能
11、更好地学习它,我也发现我的好多不足之处,首先是自己在指法上还不行,经常按错字母,通过学习也有所改进;再有对C语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对C语言中经常出现的错误也不了解,通过实践的学习,我认识到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机2.通过编写该程序,我熟悉了C语言的基本语法,选择、循环等结构,深入联系了函数的调用方法和文件的读写方法,熟悉了结构体的使用,更加深化了面向对象语言思想和一些基本算法。通过对程序的后期调试,熟悉了C语
12、言常见错误,锻炼了思维的严密性和完备性。附录:源程序#include #include #include int INDEX32;struct STUDENT int id; int age; /结构体变量 int chinese,math,english; char name21;students32;void page_title(char *menu_item) printf( 学 生 管 理 系 统 nn- %s -nn,menu_item);void return_confirm(void) printf(n按任意键返回n); getch();void student_new(voi
13、d) int n; page_title(录入学生基本信息); for(n=0;n32;n+) if(studentsn.id=0) break; printf(学号:); scanf(%d,&studentsn.id); / 添加函数 添加学生基本信息 printf(姓名:); scanf(%s,&studentsn.name); printf(年龄:); scanf(%d,&studentsn.age); return_confirm();int search_id(void) /查询函数:查询学生基本信息 int n,i; printf(请输入学生学号:); scanf(%d,&i);
14、for(n=0;n32;n+) if(studentsn.id=i&studentsn.id!=0) printf(学号:%dn,studentsn.id); printf(姓名:%sn,studentsn.name); printf(年龄:%dn,studentsn.age); return n; printf(n输入错误或学号不存在.n); return -1;void student_del(void) int n; page_title(注销学生基本信息); if(n=search_id()!=-1) studentsn.id=0; /删除函数 :删除学生基本信息 printf(n!该
15、学生已注销.n); return_confirm();void student_edit(void) int n; page_title(编辑学生基本信息); if(n=search_id()!=-1) /修改函数 :修改学生基本信息 printf(n请重新输入新信息:n学号:); scanf(%d,&studentsn.id); printf(姓名:); scanf(%s,&studentsn.name); printf(年龄:); scanf(%d,&studentsn.age); return_confirm();void score_input(void) /插入函数:插入学生成绩 i
16、nt s,n,t; page_title(录入成绩); printf(n请用数字键选择科目n1-语文 2-数学 3-英语n); scanf(%d,&s); for(n=0;n32;n+) if(studentsn.id!=0) printf(学号:%d 姓名:%s 成绩:,studentsn.id,studentsn.name); scanf(%d,&t); switch(s) case 1 : studentsn.chinese=t;break; case 2 : studentsn.math=t;break; case 3 : studentsn.english=t;break; retu
17、rn_confirm();void score_edit(void) int n; /修改学生成绩 page_title(修改成绩); if(n=search_id()!=-1) printf(语文:%d 数学:%d 英语:%dn,studentsn.chinese,studentsn.math,studentsn.english); printf(n请重新输入成绩:n语文:); scanf(%d,&studentsn.chinese); printf(数学:); scanf(%s,&studentsn.math); printf(英语:); scanf(%d,&studentsn.engli
18、sh); return_confirm();void sort_it(char nn) int n,m,p,x,t32; /加总函数 求学生的总成绩 for(n=0;n32;n+) switch(nn) case 1 : tn=studentsn.id;break; case 2 : tn=studentsn.chinese;break; case 3 : tn=studentsn.math;break; case 4 : tn=studentsn.english;break; case 5 : tn=studentsn.chinese+studentsn.math+studentsn.eng
19、lish;break; for(n=0;n32;n+) x=0; p=-1; for(m=0;mx) x=tm; p=m; tp=-1; INDEXn=p; void browser(void) int n,x; / 查询学生的所有信息 char k; sort_it(1); while(1) page_title(浏览); printf(按数字键选择排序方式或按 0 返回n); printf(学号-1t 姓名t年龄t语文-2t数学-3t英语-4t总分-5n); for(n=0;n32;n+) if(INDEXn!=-1) x=INDEXn; printf(%dt%st,studentsx.i
20、d,studentsx.name); printf(%dt%dt,studentsx.age,studentsx.chinese); printf(%dt%dt,studentsx.math,studentsx.english); printf(%dn,studentsx.chinese+studentsx.math+studentsx.english); k=getch(); if(k0) sort_it(k); else if(k=0) break; else continue; void main(void) /主函数 menu: page_title(操作选单); printf(请用数
21、字键选择操作nn); printf(1 录入学生基本信息n2 修改学生基本信息n); printf(3 注销学生基本信息nn4 录入成绩n5 修改成绩nn); printf(6 浏览.n n0 退出n); switch(getch() case 1 : student_new();break; case 2 : student_edit();break; case 3 : student_del();break; case 4 : score_input();break; case 5 : score_edit();break; case 6 : browser();break; case 0 : exit(0); goto menu;