C课程设计学生成绩数据库管理系统.doc

上传人:文库蛋蛋多 文档编号:2384975 上传时间:2023-02-17 格式:DOC 页数:21 大小:290KB
返回 下载 相关 举报
C课程设计学生成绩数据库管理系统.doc_第1页
第1页 / 共21页
C课程设计学生成绩数据库管理系统.doc_第2页
第2页 / 共21页
C课程设计学生成绩数据库管理系统.doc_第3页
第3页 / 共21页
C课程设计学生成绩数据库管理系统.doc_第4页
第4页 / 共21页
C课程设计学生成绩数据库管理系统.doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《C课程设计学生成绩数据库管理系统.doc》由会员分享,可在线阅读,更多相关《C课程设计学生成绩数据库管理系统.doc(21页珍藏版)》请在三一办公上搜索。

1、课 程 设 计 任 务 书课程名称 C语言课程设计 课 题 学生成绩数据库管理系统设计专业班级 学生姓名 学 号 指导老师 审 批 任务书下达日期 2010 年 06 月 26 日任务完成日期 2010年 07 月 06 日1.1、设计内容与设计要求1.1.1设计内容:涉及的知识点:掌握并熟练运用C语言的基本数据类型与各种表达式,程序的流程控制语句;掌握函数的定义,函数的返回值,函数的调用,函数的形式参数和实际参数之间的关系;掌握变量的作用域与生存期,了解函数的作用域。掌握并熟练运用C语言的图形处理功能和库函数的应用。掌握数组的基本概念。熟练掌握一维数组、二维数组的应用、掌握字符数组与字符串的

2、关系以及字符串的简单处理。掌握结构的概念,结构类型的定义,结构变量的定义和初始化,结构成员的表示,结构的赋值含义,结构与指针、函数的关系。掌握文件、文件类型指针的基本概念,熟练掌握文件的打开与关闭以及文件的建立、读写等有关操作。学生成绩数据库管理系统设计从文件(成绩库)读取数据,提供新增、删除、修改和显示等功能,并将修改后的数据写入一个新的文件。成绩单如下:学号:long 4bytes姓名:char 20bytes语文:int 2bytes数学:int 2bytes总分:int 2bytes名次:int 2bytes系统功能模块如下:(1) 建立学生成绩库(单独一个执行文件创建数据库);(2)

3、 将学生成绩库读入到一个结构体数组中,并计算;(3) 菜单实现以下功能:计算每个学生的总成绩;按总成绩排定学生名次;学号为单号的学生实现以下功能:新增一个学生成绩并显示、按学号查询学生成绩;学号为双号的学生实现以下功能:修改一个学生成绩并显示、按学号查询学生成绩。(4) 修改后的成绩库数据写入到另一个新文件中。1.1.2设计要求:1) 要求每个学生必须独立思考,认真并按时完成本课程设计所包含的所有内容;2) 要求学生必须按照课程设计报告的完整格式说明设计内容,设计任务分析过程和算法,给出程序流程图和全部源程序;3) 设计报告的完整格式应包括以下部分的内容: 设计总体思路; 程序及各个模块说明;

4、 总体模块框图; 各个程序模块说明; 程序流程图; 程序清单; 课程设计总结与体会(不少于400字)。4) 上机时要求必到,设计完成,必须演示程序,答辩并提交设计报告。5) 总评成绩由三部分组成:报告占20%,平时占20%,课程设计题目各占30%。1.2、进度安排 星 期8:00至12:0014:00至18:00备注19周星期二上机编程老师指导19周星期三上机编程学生自选19周星期四上机编程老师指导19周星期五上机编程上机答辩上午学生自选2、设计内容 2.1设计总思路1创建一个构建数据库程序,将学生成绩写入并保存在文件中。2.创建主函数,在主函数中实现学生成绩数据库的建立,并且将菜单在主函数中

5、建立,将输入的学生的语文和数学相加得到学生的总分,按学生的总分排序(用冒泡法),按排序的结果排名。在菜单中实现各函数的调用,以实现各功能的实现。在调用个函数时用一个循环,这样可以一次性的完成题目的要求。3在插入的模块中,将要插入的学生信息放在另一个结构体数据中,将插入的语文和数学相加得其总分,将总分和前面的学生总分比较,将排名在插入学生后的学生后移一位,并按这个顺序排名。4修改的函数中输入学生的学号,用一个循环将每一个学生的学号和这个学生相比,检验学生的学号是否和要修改的学号相一致,如果一致,就将要修改的成绩输入到该学号中。5查询的模块中,输入要查询的学号,并又用一个循环将要查询的学号和学生的

6、学号相比,如果相同则显示该学生的信息。6在显示的模块中,又将每一个的学生排序(冒泡法),按排序的结果排名,并按讯排序的结果依次显示出来。7在复制的函数中先将数据从文件中读出,在将数据写到另一个文件中。2.2 各个模块的说明程序的模块组成:构建数据库程序主函数:void main()成绩管理系统程序主函数:void main();成绩修改函数:void edit();成绩查询函数:void find();成绩显示函数:void show();总分排名函数:void array();新增学生成绩函数:void insert();计算总分函数:void add();保存修改后学生成绩函数:void

7、fileput();各个模块功能描述:在构建数据库程序函数中实现学生成绩的写入,并保存到文件中。在成绩管理系统程序主函数中实现学生数据库的读取,以及菜单的选择。void add():计算学生成绩总分;void array():将总分排名;void insert():将要插入的数据插入函数中;void edit():输入学生的学号,修改该学生的成绩;void find():输入学生的学号,查询该学生的成绩;void show():显示学生的所有信息,包括学生的姓名,学号,语文数学成绩,总分,排名。void fileput():将修改后的成绩保存到另一文件中。2.3各个程序模块的说明学生信息结构体

8、:struct stu/*定义一个结构体*/ long int stuNum;char name20;int math;int chinese;int sum;int pos;UN;学生数据显示模块:void show(int n) printf(学号 姓名 数学 语文总分 排名n);int i;for(i=0;in+addnum-1;i+)printf(%ld %5s %3d %3d %3d %3dn,Ui.stuNum,Ui.name,Ui.math,Ui.chinese,Ui.sum,Ui.pos); printf(*n);总成绩计算函数:void add(int n)int i;for

9、(i=0;in-1;i+)Ui.sum=Ui.math+Ui.chinese;总分排名函数:void array(int n)int i,j,min,temp,Upos;min=U0.sum,Upos;for(i=0;iUi.sum)min=Ui.sum;for(i=0;in-1;i+)/*双循环对结构数组中sum值进行排序*/Upos=0;temp=U0.sum;for(j=0;jn-1;j+)if(tempUj.sum)temp=Uj.sum;Upos=j;UUpos.pos=i+1;UUpos.sum=min-1;/*使每一轮的循环得到的最大值小于结构数组中sum的最小值*/新增学生信息

10、函数:void insert(int n) int j;printf(请输入新增学生总数n);scanf(%d,&addnum);printf(学号 姓名 数学 语文n);for(j=n-1;jn+addnum-1;j+)scanf(%ld%s%d%d,&Uj.stuNum,Uj.name,&Uj.math,&Uj.chinese);成绩查询(修改)函数:long int find(int n)long int num;int i; printf(请输入要查找(修改)学号n);scanf(%ld,&num);printf(学号 姓名 数学 语文总分 排名n);for(i=0;in;i+)if(

11、Ui.stuNum=num)printf(%ld %5s %3d %3d %3d %3dn,Ui.stuNum,Ui.name,Ui.math,Ui.chinese,Ui.sum,Ui.pos);printf(*n);break; if(i=n)printf(error! cant find the studentn);return i; void edit(int n)printf(请输入该生成绩n数学 语文n); scanf(%d%d,&Un.math,&Un.chinese);保存修改后成绩函数:void fileput(int n)FILE *fp;int i;if(fp=fopen(

12、teminaldata.txt,w)=NULL)printf( write to file error .n);exit(1);for(i=0;in+addnum-1;i+)fprintf(fp,%ld %5s %3d %3d %3d %3dn,Ui.stuNum,Ui.name,Ui.math,Ui.chinese,Ui.sum,Ui.pos);/*利用文件格式化输出函数顺序向文件写入数据*/fclose(fp);2.4原程序流程图:开始读取据库信息输入0输入非0的数主菜单数据库输2输1学生成绩的插入学生成绩的修改学生信息的显示学生成绩的查询输3输4文件的复制程序的结束2.5原程序清单2.5

13、.1构建数据库程序清单:#include#include#define N 1000void main()FILE *fp;int i,n;printf(请输入学生总数n);scanf(%d,&n);struct stu/*定义一个结构体*/ long int stuNum;char name20;int math;int chinese;int sum;int pos;UN;printf(请输入一个或多个学生在成绩并以回车结束输入n学号姓名数学语文n);for(i=0;in;i+)Ui.sum=Ui.pos=0;scanf(%ld%s%d%d,&Ui.stuNum,Ui.name,&Ui.m

14、ath,&Ui.chinese);if(fp=fopen(basedata.txt,w)=NULL)printf(can not open file.n);exit(1);for(i=0;in;i+)fprintf(fp,%ld %5s %3d %3d %3d %3dn,Ui.stuNum,Ui.name,Ui.math,Ui.chinese,Ui.sum,Ui.pos);/*利用文件格式化输出函数顺序向文件写入数据*/fclose(fp);2.5.2 学生成绩管理系统程序清单:#include#include#define N 1000int addnum=0;/*定义新增学生成绩数为外部变

15、量*/struct stu/*定义一个结构体*/ long int stuNum;char name20;int math;int chinese;int sum;int pos;UN;void add(int);/*计算学生的总成绩*/void array(int);/*对学生的总成绩进行排名*/void insert(int);/*新增学生成绩*/long int find(int);/*根据学号查找学生成绩*/void edit(int);/*根据学号修改学生成绩*/void fileput(int);/*将修改后的数据存入一个新的文件中*/void show(int);/*显示所有学生

16、成绩*/void main()FILE *fp;if(fp=fopen(basedata.txt,r)=NULL)printf(can not open file.n);exit(1);int n,j;for(n=0;!feof(fp);n+)fscanf(fp,%ld%s%d%d%d%d,&Un.stuNum,Un.name,&Un.math,&Un.chinese,&Un.sum,&Un.pos);/*利用文件格式化输入函数顺序读取文件内容*/add(n); printf(*请输入下列序号*n);printf(1 按总成绩排定学生名次; 2 新增学生成绩;n3 查找学生成绩; 4 修改学生

17、成绩;n); printf(*n);doscanf(%d,&j);switch(j)case 1:array(n);add(n);show(n);break;case 2:insert(n);add(n+addnum);array(n+addnum);add(n+addnum);show(n);break;case 3:array(n);add(n);find(n);break;case 4:edit(find(n)/*函数作为实参*/;add(n);array(n);add(n);show(n);break;default:printf(errorn);while(1);fileput(n)

18、;void show(int n) printf(学号 姓名 数学 语文总分 排名n);int i;for(i=0;in+addnum-1;i+)printf(%ld %5s %3d %3d %3d %3dn,Ui.stuNum,Ui.name,Ui.math,Ui.chinese,Ui.sum,Ui.pos); printf(*n);void add(int n)int i;for(i=0;in-1;i+)Ui.sum=Ui.math+Ui.chinese;void array(int n)int i,j,min,temp,Upos;min=U0.sum,Upos;for(i=0;iUi.s

19、um)min=Ui.sum;for(i=0;in-1;i+)/*双循环对结构数组中sum值进行排序*/Upos=0;temp=U0.sum;for(j=0;jn-1;j+)if(tempUj.sum)temp=Uj.sum;Upos=j;UUpos.pos=i+1;UUpos.sum=min-1;/*使每一轮的循环得到的最大值小于结构数组中sum的最小值*/void insert(int n) int j;printf(请输入新增学生总数n);scanf(%d,&addnum);printf(学号 姓名 数学 语文n);for(j=n-1;jn+addnum-1;j+)scanf(%ld%s%

20、d%d,&Uj.stuNum,Uj.name,&Uj.math,&Uj.chinese);long int find(int n)long int num;int i; printf(请输入要查找(修改)学号n);scanf(%ld,&num);printf(学号 姓名 数学 语文总分 排名n);for(i=0;in;i+)if(Ui.stuNum=num)printf(%ld %5s %3d %3d %3d %3dn,Ui.stuNum,Ui.name,Ui.math,Ui.chinese,Ui.sum,Ui.pos);printf(*n);break; if(i=n)printf(erro

21、r! cant find the studentn);return i; void edit(int n)printf(请输入该生成绩n数学 语文n); scanf(%d%d,&Un.math,&Un.chinese);void fileput(int n)FILE *fp;int i;if(fp=fopen(teminaldata.txt,w)=NULL)printf( write to file error .n);exit(1);for(i=0;in+addnum-1;i+)fprintf(fp,%ld %5s %3d %3d %3d %3dn,Ui.stuNum,Ui.name,Ui.

22、math,Ui.chinese,Ui.sum,Ui.pos);/*利用文件格式化输出函数顺序向文件写入数据*/fclose(fp);3、调试与分析 构建数据库系统的调试:输入学生成绩信息. 学生成绩管理系统:1 显示菜单: 2.显示成绩,按高低排序得出总分和排名. 3.插入学生的信息: 4.查询学生的信息: 5.修改学生的信息:4、总结与体会本次的C语言程序设计是我步入大学以来第一个程序设计。由于是第一次,所以当我看到课题要求时,又是好奇又是茫然。一时间真不知如何下手。后来自己逐渐静下心来自习审题,发现这个程序比较复杂,设计到很多C语言知识,特别是本程序包涵了“文件”一章的内容,而不巧的是,老

23、师在课堂上并没有重点讲授本章内容,所以我又不得不拿起书来自学,经过一番女里,终于对“文件”有一定的了解,但还是不够深刻,接下来变开始编写程序了,首先我花了很多功夫打好一个结构,主函数框架。依靠同学的帮助,成功的讲“文件”内容应用到了程序中。再后来,就是将一个个调用函数补充完整,就这样一个程序的雏形完工了。最后,经过2次上机调试,对程序进行了部分修改,将输入格式进一步美化,终于,我的程序诞生了。这次的编程,让我感触良多。我进一步的掌握了书本上的知识。我懂得了如何运用C语言知识去解决某些实际问题。当然,老师的悉心指导和同学的帮助也是不可忽视的,在此感谢本次课程设计中所有辅导老师对我的关心和帮助,诚心诚意感谢他们对我的鼓励与教导,是她们在我迷茫的时候给了我些许提示,激发了我编程的灵感;还有,我在此也十分感谢本次课程设计中同学们对我的帮助,尽管本次不是团队合作,但是他们也给了我不少的提示和帮助,是他们让我有信心坚持做下来,在此感谢他们!总之,获益匪浅啊!电气信息学院课程设计评分表课题名称: 学生成绩数据库管理系统设计 项 目评 价设计方案的合理性与创造性设计与调试结果设计说明书的质量答辩陈述与回答问题情况课程设计周表现情况综合成绩 教师签名: 日 期:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号