ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:284.31KB ,
资源ID:6791653      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6791653.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(c语言课程设计成绩记录本 c程序.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

c语言课程设计成绩记录本 c程序.docx

1、c语言课程设计 成绩记录本 c程序课程设计2009 2010学年第二学期设计题目 成绩记录簿 院(系) 数学 专 业 数学与应用数学 班 级 学号 学生姓名 设计时间 2010年 7 月 5 日2010 年 7 月 15 日 指导教师 提交日期 2010年7月15日 上海应用技术学院课程设计任务书课程名称程序设计语言课程设计课程代码B704010设计题目1 算术练习2 个人收支管理3 通讯录4 成绩记录簿5 图书借阅管理6 日程表管理题目序号4设计时间2010年 7 月5 日2010 年 7 月 15 日系(院)数学系专业数学与应用数学班级09122111一、 课程设计任务(条件)、具体技术参

2、数(指标)1. 在指导书提供的课程设计题目中选择一题或自选(但需经过指导教师认可)2. 每个题目限一人完成,题目选定后不可更换。3. 用户提供的主操作界面应该方便用户的操作。4. 最后提交的课程设计成果包括:a) 课程设计报告电子稿。c) 源程序文件。d) 可执行程序文件。二、 对课程设计成果的要求(包括课程设计说明书、图纸、图表、实物等软硬件要求)1. 分析课程设计题目的要求;2. 写出详细设计说明;3. 编写程序代码,调试程序使其能正确运行;4. 设计完成的软件要便于操作和使用,有整齐、美观的使用界面;5. 设计完成后提交课程设计报告和源代码文件的电子文档。三、 课程设计工作进度计划:第一

3、天 选择课程设计题目,分析课题的要求,确定设计方案;第二天 按功能模块编写详细设计说明和程序流程图;第三六天 编写与调试程序;第七天 写课程设计报告; 第八天 提交课程设计报告并答辩; 四、 主要参考资料 1谭浩强C程序设计(第三版)北京:清华大学出版社,2005 2谭浩强C程序设计题解与上机指导(第三版)北京:清华大学出版社,20053 Herbert SchildtC语言大全(第四版)北京:电子工业出版社, 20044程序设计语言课程设计指导书指导教师(签名): 陈飞云 教研室主任(签名):杨晶鑫 2010年 7 月5日 2010年 7 月 5 日目录1 概述 41.1 课程设计目的 41

4、.2 课程设计要求 41.3 设计要求具体说明 42 详细设计说明 42.1 总体设计方案 42.2 程序描述 42.3 功能结构 42.4 主要模块描述 42.5 采用的算法 43 程序测试 54 课程设计总结 55 软件使用说明 56 附录(参考文献,原代码:) 51 概述1.1 课程设计目的1巩固和加深学生对C语言课程的基本知识的理解和掌握;2 掌握C语言编程和程序调试的基本技能;3 利用C语言进行基本的软件设计;4 掌握书写程序设计说明文档的能力5 提高运用C语言解决实际问题的能力。5.1 课程设计要求基本功能a) 添加成绩b) 删除成绩c) 查询学生成绩 d) 查询班级成绩 e) 退

5、出拓展功能a) 写入文件b) 读取文件创新(自拟)功能: 求平均成绩并由此排序。5.2 设计要求具体说明基本功能:成绩记录簿中记录以下数据:学号、姓名、课程编号、课程名称、成绩、学分,所有成绩都以百分制计分;输入信息时要检查数据项学号、课程编号、成绩、学分的合法性,学号:8位数字;课程编号:5位数字;成绩:0 100 之间的整数,学分: 1 5之间的实型数。添加成绩:需要输入学生的学号或姓名、课程编号及成绩,如已有该门课程成绩给出提示;查询(班级或个人)成绩:a) 查询个人成绩:以学号或姓名作为关键字,可查询一个学生的所有成绩,和已完成的总学分。b) 查询班级成绩:以课程编号为关键字,成绩表后

6、面要统计平均分、及格率及全班同学不同课程在不同分数段分布的人数及百分比。c) 拓展功能:定义合适的结构体类型,使用链表或数组的方式组织数据。a) 程序启动时先从文件读入数据,如果文件中没有数据则给出提示;b) 每次修改的数据写入文件。6 详细设计说明1, 设计好算法,用流程图表示出来。2, 分别做好主函数,和需要用到的各个函数。3, 将他们拼接好,进行调试。4, 美化界面环境。6.1 总体设计方案6.2 程序描述(给出对该程序的简要描述,主要说明安排设计本程序的目的意义,并且还要说明本程序的特点)1,建立一个主界面2,用switch语句进行分类讨论3,分别进入录入,查询,删除,求平均值等子函数

7、。4,将子函数与主函数相连即可。该程序可以建立学生的成绩记录。可以方便老师和同学方便的查阅成绩。这个程序有录入和删除的功能。还可以求出平均成绩,并排序。6.3 功能结构(说明该程序应具有的功能,给出功能结构图)录入学生成绩查询成绩删除成绩求平均分按平均分排序退出6.4 主要模块描述(对主要模块包括主程序分别进行功能描述、设计说明、操作说明,并给出流程图)主程序提供一个界面,允许用户选择。使用switch语句,用时直接输入数字即可。增加函数,功能是插入学生成绩。使用一个无穷循环,直到录入”n”时结束。删除函数,功能是删除,分为两步,先找后删。找,用strcmp函数 来做如果找到记录i值,反之记为

8、-1;删除可以从i项开始将数组的后一项赋值给前一项。前一项自动被删掉。这样完成删除。查询函数与之类似,将删除改为输出即可;求平均值函数与查询类似只是输出时只输出平均值而已。按平均值排序只要加一个排序函数即可。退出函数什么都不写,即可。6.5 采用的算法(详细分析说明本程序所选用的算法,具体的计算公式和计算步骤) 首先进入主函数,如果选一,进入Student_Insert();函数,用户录入数据。直到录入”n”时停止。如果选二, 进入 Student_modify() ;用户输入信息,然后系统求出平均值并且输出.如果选三, 进入 Student_Delete(); 先找到这条信息,然后删除,如果

9、找不到,输出错误.如果选四, 进入 Student_Select(); 查询信息找到输出,找不到输出错误.如果选五, 进入Student_SortByAverage(); 按平均值排序输出.如果选六, 进入 exit();直接跳出程序. 7 程序测试1, 开始时2, 输入13, 按要求录入。输入 y时输入n时选5时显然输入2也可以得到正确结果。选择3时选择y选择4时选择6时(说明对本程序进行单体测试的计划,包括对测试的技术要求、输入数据、预期结果等。实际测试情况等等)8 课程设计总结(通过二周课程设计进行自我总结,包括你学到了什么,哪里遇到了困难,解决的办法以及系统可以进行哪些功能的提升等等。

10、)学到的东西4, 原先写程序直接编,条理性太差。如果先做一个流程图就条理很多。5, 学会了将文件保存在硬盘里。6, 使用#include 和system (color e0)可以改变屏幕和字体颜色。7, 我在查找学生姓名时遇到困难。从课本上找到了一个函数 strcmp,问题解决困难1, 我在定义学生的学号时首先用整型。发现输出与录入不同。改用长整型仍然不行。但是字符型却可以做到。2, 当输入的学号大过8位时,学号会自动变为学号加姓名.不知道为什么?(如图所示)功能的不足1,我的程序无法完成对输入数据的检查。在我加入一个“If goto” 语句时程序报错。所以我只好将这段程序删除。这样就无法检验

11、数据正误。同时即使同一个学生的信息已经录入,再次录入时也不能报错。2,我的程序是将学生的姓名作为一个线索。所以当题目要求找到一个学生并输出其信息时毫无问题。但是这个程序无法在以某门课为线索找到所有学生成绩。3,开始写程序时未使用链表,程序冗杂。长度较大,不灵活。4,我的程序无法修改。一旦某个数据输入错误,就只好删除,然后重新输入。 9 软件使用说明输入时不要超过定义的字数,否则出错.(对你所设计软件的使用进行说明)10 附录(参考文献,原代码:)参考文献谭浩强C程序设计(第三版)北京:清华大学出版社,2005 原代码#include #include /定义学生结构体/ struct Stud

12、ent char ID8; char Name20; float Mark1; float Mark2; float Mark3; float Average; int mark1;int mark2;int mark3;long int kcbh1;long int kcbh2;long int kcbh3;char kecheng129;char kecheng229;char kecheng329; /声明学生数组及学生数量/ struct Student students1000; int num=0; /求平均值/ float Avg(struct Student stu) retu

13、rn (stu.mark1*stu.Mark1+stu.mark2+stu.Mark2+stu.mark3+stu.Mark3)/(stu.Mark1+stu.Mark2+stu.Mark3); /通过学号返回/ int Student_SearchByIndex(char id) int i; for (i=0;inum;i+) if (strcmp(studentsi.ID,id)=0) return i; return -1; /通过姓名返回数组下标/ int Student_SearchByName(char name) int i; for (i=0;inum;i+) if (str

14、cmp(studentsi.Name,name)=0)/比较参数中两个字符串的大小如果完全相等,返回0/ return i; /这个return表示退出函数,回到调用这个函数的位置/ return -1; /显示单条学生记录/ void Student_DisplaySingle(int index) printf(学号:%10s 姓名:%10sn,studentsindex.ID,studentsindex.Name);printf( 课程编号:%8ld 课程: %8s 学分: %8f 成绩 : %8dn,studentsindex.kcbh1 , studentsindex.kecheng

15、1 ,studentsindex.Mark1, studentsindex.mark1);printf( 课程编号:%8ld 课程: %8s 学分: %8f 成绩 : %8dn,studentsindex.kcbh2 , studentsindex.kecheng2 , studentsindex.Mark2, studentsindex.mark2);printf( 课程编号:%8ld 课程: %8s 学分: %8f 成绩 : %8dn,studentsindex.kcbh3 , studentsindex.kecheng3 , studentsindex.Mark3, studentsin

16、dex.mark3);printf( 平均成绩%10fn,studentsindex.Average); /显示pingjunzhi/ void Student_DisplayAverage(int index) printf( 平均成绩%10fn,studentsindex.Average); /插入学生信息/ void Student_Insert() while(1) printf(请输入学号:); scanf(%s,&studentsnum.ID); getchar(); /未输入n,继续/ printf(请输入姓名:); scanf(%s,&studentsnum.Name); ge

17、tchar(); printf(请输入课程编号:); scanf(%ld,&studentsnum.kcbh1); getchar(); printf(请输入课程:); scanf(%s,&studentsnum.kecheng1); getchar(); printf(请输入学分:); scanf(%f,&studentsnum.Mark1); getchar(); printf(请输入成绩:); scanf(%d,&studentsnum.mark1); getchar(); printf(请输入课程编号:); scanf(%ld,&studentsnum.kcbh2); getchar(

18、); printf(请输入课程:); scanf(%s,&studentsnum.kecheng2); getchar(); printf(请输入学分:); scanf(%f,&studentsnum.Mark2); getchar(); printf(请输入成绩:); scanf(%d,&studentsnum.mark2); getchar(); printf(请输入课程编号:); scanf(%ld,&studentsnum.kcbh3); getchar(); printf(请输入课程:); scanf(%s,&studentsnum.kecheng3); getchar(); pri

19、ntf(请输入学分:); scanf(%f,&studentsnum.Mark3); getchar(); printf(请输入成绩:); scanf(%d,&studentsnum.mark3); getchar(); studentsnum.Average=Avg(studentsnum); num+; printf(是否继续?(y/n); if (getchar()=n) break; /删除学生信息/ void Student_Delete() int i; while(1) char id20; int index; printf(请输入要删除的学生的学号:); scanf(%s,&

20、id); getchar(); index=Student_SearchByIndex(id); if (index=-1) printf(学生不存在!n); else /找到了/ printf(你要删除的学生信息为:n); Student_DisplaySingle(index); printf(是否真的要删除?(y/n); if (getchar()=y) for (i=index;inum-1;i+) studentsi=studentsi+1; num-; getchar(); printf(是否继续?(y/n); if (getchar()=n) break; /按姓名查询/ voi

21、d Student_Select() while(1) char name20; int index; printf(请输入要查询的学生的姓名:); scanf(%s,&name); getchar(); index=Student_SearchByName(name); if (index=-1) printf(学生不存在!n); else printf(你要查询的学生信息为:n); Student_DisplaySingle(index); printf(是否继续?(y/n); if (getchar()=n) break; /pingjunzhi/ void Student_modify

22、() while(1) char name20; int index; printf(请输入要查询的学生的姓名:); scanf(%s,&name); getchar(); index=Student_SearchByName(name); if (index=-1) printf(学生不存在!n); else printf(你要查询的学生信息为:n); Student_DisplayAverage(index); printf(是否继续?(y/n); if (getchar()=n) break; /按平均值排序/ void Student_SortByAverage() int i,j;

23、struct Student tmp; for (i=0;inum;i+) for (j=1;jnum-i;j+) if (studentsj-1.Averagestudentsj.Average) tmp=studentsj-1; studentsj-1=studentsj; studentsj=tmp; /交换位置/ /显示学生信息/ void Student_Display() int i; for (i=0;inum;i+) printf(学号:%10s 姓名:%10sn,studentsi.ID,studentsi.Name); printf( 课程编号:%8ld 课程: %8s 学

24、分: %8f 成绩 : %8dn,studentsi.kcbh1 ,studentsi.kecheng1 ,studentsi.Mark1, studentsi.mark1); printf( 课程编号:%8ld 课程: %8s 学分: %8f 成绩 : %8dn,studentsi.kcbh2 , studentsi.kecheng2 , studentsi.Mark2, studentsi.mark2); printf( 课程编号:%8ld 课程: %8s 学分: %8f 成绩 : %8dn,studentsi.kcbh3 , studentsi.kecheng3 , studentsi.

25、Mark3, studentsi.mark3); printf( 平均成绩%10fn,studentsi.Average); /将学生信息从文件读出/ void IO_ReadInfo() FILE *fp; int i; if (fp=fopen(Database.txt,rb)=NULL) printf(文件为空!n); return; if (fread(&num,sizeof(int),1,fp)!=1) num=-1; else for(i=0;inum;i+) fread(&studentsi,sizeof(struct Student),1,fp); fclose(fp); /将

26、学生信息写入文件/ void IO_WriteInfo() FILE *fp; int i; if (fp=fopen(Database.txt,wb)=NULL) printf(不能打开文件!n); return; if (fwrite(&num,sizeof(int),1,fp)!=1) printf(写入文件错误!n); for (i=0;inum;i+) if (fwrite(&studentsi,sizeof(struct Student),1,fp)!=1) printf(写入文件错误!n); fclose(fp); /主程序/ main() int choice; IO_ReadInfo(); /将学生信息写入文件/ while(1) /主菜单/ system (color e0); printf(n- 成绩记录簿-n); printf(1. 增加 n); printf(2. 求学生平均成绩n); printf(3. 删除 n); printf(4. 按姓名查询学生记录n); printf(5. 按平均成绩排序n); printf(6. 退出n); printf(请选择(1-6):

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1