




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课 程 设 计 任 务 书课程名称 c语言课程设计 课 题 学生成绩数据库管理系统设计专业班级 学生姓名 学 号 指导老师 审 批 任务书下达日期 2010 年 06 月 26 日任务完成日期 2010年 07 月 06 日1.1、设计内容与设计要求1.1.1设计内容:涉及的知识点:掌握并熟练运用c语言的基本数据类型与各种表达式,程序的流程控制语句;掌握函数的定义,函数的返回值,函数的调用,函数的形式参数和实际参数之间的关系;掌握变量的作用域与生存期,了解函数的作用域。掌握并熟练运用c语言的图形处理功能和库函数的应用。掌握数组的基本概念。熟练掌握一维数组、二维数组的应用、掌握字符数组与字符串的关系以及字符串的简单处理。掌握结构的概念,结构类型的定义,结构变量的定义和初始化,结构成员的表示,结构的赋值含义,结构与指针、函数的关系。掌握文件、文件类型指针的基本概念,熟练掌握文件的打开与关闭以及文件的建立、读写等有关操作。学生成绩数据库管理系统设计从文件(成绩库)读取数据,提供新增、删除、修改和显示等功能,并将修改后的数据写入一个新的文件。成绩单如下:学号:long 4bytes姓名:char 20bytes语文:int 2bytes数学:int 2bytes总分:int 2bytes名次:int 2bytes系统功能模块如下:(1) 建立学生成绩库(单独一个执行文件创建数据库);(2) 将学生成绩库读入到一个结构体数组中,并计算;(3) 菜单实现以下功能:计算每个学生的总成绩;按总成绩排定学生名次;学号为单号的学生实现以下功能:新增一个学生成绩并显示、按学号查询学生成绩;学号为双号的学生实现以下功能:修改一个学生成绩并显示、按学号查询学生成绩。(4) 修改后的成绩库数据写入到另一个新文件中。1.1.2设计要求:1) 要求每个学生必须独立思考,认真并按时完成本课程设计所包含的所有内容;2) 要求学生必须按照课程设计报告的完整格式说明设计内容,设计任务分析过程和算法,给出程序流程图和全部源程序;3) 设计报告的完整格式应包括以下部分的内容: 设计总体思路; 程序及各个模块说明; 总体模块框图; 各个程序模块说明; 程序流程图; 程序清单; 课程设计总结与体会(不少于400字)。4) 上机时要求必到,设计完成,必须演示程序,答辩并提交设计报告。5) 总评成绩由三部分组成:报告占20%,平时占20%,课程设计题目各占30%。1.2、进度安排 星 期8:00至12:0014:00至18:00备注19周星期二上机编程老师指导19周星期三上机编程学生自选19周星期四上机编程老师指导19周星期五上机编程上机答辩上午学生自选2、设计内容 2.1设计总思路1创建一个构建数据库程序,将学生成绩写入并保存在文件中。2.创建主函数,在主函数中实现学生成绩数据库的建立,并且将菜单在主函数中建立,将输入的学生的语文和数学相加得到学生的总分,按学生的总分排序(用冒泡法),按排序的结果排名。在菜单中实现各函数的调用,以实现各功能的实现。在调用个函数时用一个循环,这样可以一次性的完成题目的要求。3在插入的模块中,将要插入的学生信息放在另一个结构体数据中,将插入的语文和数学相加得其总分,将总分和前面的学生总分比较,将排名在插入学生后的学生后移一位,并按这个顺序排名。4修改的函数中输入学生的学号,用一个循环将每一个学生的学号和这个学生相比,检验学生的学号是否和要修改的学号相一致,如果一致,就将要修改的成绩输入到该学号中。5查询的模块中,输入要查询的学号,并又用一个循环将要查询的学号和学生的学号相比,如果相同则显示该学生的信息。6在显示的模块中,又将每一个的学生排序(冒泡法),按排序的结果排名,并按讯排序的结果依次显示出来。7在复制的函数中先将数据从文件中读出,在将数据写到另一个文件中。2.2 各个模块的说明程序的模块组成:构建数据库程序主函数:void main()成绩管理系统程序主函数:void main();成绩修改函数:void edit();成绩查询函数:void find();成绩显示函数:void show();总分排名函数:void array();新增学生成绩函数:void insert();计算总分函数:void add();保存修改后学生成绩函数:void fileput();各个模块功能描述:在构建数据库程序函数中实现学生成绩的写入,并保存到文件中。在成绩管理系统程序主函数中实现学生数据库的读取,以及菜单的选择。void add():计算学生成绩总分;void array():将总分排名;void insert():将要插入的数据插入函数中;void edit():输入学生的学号,修改该学生的成绩;void find():输入学生的学号,查询该学生的成绩;void show():显示学生的所有信息,包括学生的姓名,学号,语文数学成绩,总分,排名。void fileput():将修改后的成绩保存到另一文件中。2.3各个程序模块的说明学生信息结构体: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,u,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.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的最小值*/新增学生信息函数: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,u,&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,u,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(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,u,ui.math,ui.chinese,ui.sum,ui.pos);/*利用文件格式化输出函数顺序向文件写入数据*/fclose(fp);2.4原程序流程图:开始读取据库信息输入0输入非0的数主菜单数据库输2输1学生成绩的插入学生成绩的修改学生信息的显示学生成绩的查询输3输4文件的复制程序的结束2.5原程序清单2.5.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,u,&ui.math,&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,u,ui.math,ui.chinese,ui.sum,ui.pos);/*利用文件格式化输出函数顺序向文件写入数据*/fclose(fp);2.5.2 学生成绩管理系统程序清单:#include#include#define n 1000int addnum=0;/*定义新增学生成绩数为外部变量*/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);/*显示所有学生成绩*/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,u,&un.math,&un.chinese,&un.sum,&un.pos);/*利用文件格式化输入函数顺序读取文件内容*/add(n); printf(*请输入下列序号*n);printf(1 按总成绩排定学生名次; 2 新增学生成绩;n3 查找学生成绩; 4 修改学生成绩;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);void show(int n) printf(学号 姓名 数学 语文总分 排名n);int i;for(i=0;in+addnum-1;i+)printf(%ld %5s %3d %3d %3d %3dn,ui.stunum,u,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.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的最小值*/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,u,&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,u,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(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,u,ui.math,ui.chinese,ui.sum,ui.pos);/*利用文件格式化输出函数顺序向文件写入数据*/fclose(fp);3、调试与分析 构建数据库系统的调试:输入学生成绩信息. 学生成绩管理系统:1 显示菜单: 2.显示成绩,按
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 3.2细胞器之间的分工合作 教学设计-2024-2025学年高一上学期生物人教版(2019)必修1
- 第二节 撒哈拉以南非洲说课稿-2025-2026学年初中地理粤人版七年级下册-粤人版2012
- 2025专营合同范本下载
- 2025二手房屋交易合同范本下载
- 《2025年电子配件购销合同》
- 2025买卖合同的解除条件及方法
- 2025房地产买卖合同3
- 第8讲 东南亚 南亚-印度 第1课时 教学设计 2023-2024学年高二下学期
- 2025仓库租赁合同终止协议
- 线缆厂办公区域管理细则
- 2025至2030中国视觉点胶机市场运行状况与未来发展走势预测报告
- 种草莓劳动课件
- 雀巢牛奶购销合同范本
- 4.1夯实法治基础教学设计 2025-2026学年度九年级上册 道德与法治 统编版
- 连铸工岗位操作规程考核试卷及答案
- 2025-2026学年华中师大版(2024)小学体育与健康一年级(全一册)教学设计(附目录P123)
- 2025兵团普通职工考试试题及答案
- 《中国老年危重患者营养支持治疗指南(2023)》解读 4
- 2025年广东国家公务员申论考试真题及答案-地市级
- 绿色矿山培训课件
- 国有企业十五五人力资源规划框架
评论
0/150
提交评论