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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

C语言课设.docx

1、C语言课设课 程 设 计 报 告(参照262页9.3) 课程名称: C语言程序设计 课程设计名称: 学生成绩管理系统 学生姓名: 专业班级: 学号: 实验成绩: 一、课设目的和要求题目描述设计一个学生成绩管理系统,主要提供学生资料的输入、输出、查询、删除、排序等,该程序应该具有下列功能:(1)设计一个功能显示菜单,并有选择提示。(2)增加信息:增加学生信息,包括学好、姓名以及5门功课的成绩。(3)删除信息:输入待删除的学号,删除该学号学生的所有信息。(4)修改信息:可更新学生信息。输入待编辑学生的学号,系统显示该学生原有信息,然后按提示进行更新。(5)查找信息:输入一个学号,查出并显示该学生的

2、相关信息。(6)成绩排序:按学生平均成绩从大到小进行排序输出。(7)输出信息:输出全部学生信息。(8)退出:退出系统。题目要求(1)按照分析、设计、编码、调试和测试的软件开发过程完成这个应用程序;(2)学生信息应包括:学号、姓名、5门功课(语文、数学、英语、物理、计算机)的成绩;(3)为各项操作功能设计一个菜单,应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目。输入要求应用程序运行后,在屏幕上显示一个菜单。用户可以根据需求,选定相应的操作项目。进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。输出要求(1)应用程序运行后,要在屏幕上显示一个菜单。(2)要求用

3、户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。提示设计一个顾客结构体和一个房间结构体,用来保存顾客信息和房间信息扩展功能将所有顾客和房间的信息分别写入文件中,并实现文件读写的操作。二、课设内容使用了一个结构体来描述学生信息,共有学号(number)、姓名(name)、五个科目的成绩、平均分(AVE)、排名参数(arra)、排序用值(AVE2)等10个成员。使用6个操作模块:增加(add)、删除(del)、修改(edit)、查找(find)、排序(arrange)、全显示(displayall),来表述要求的操作;使用6个应用函数:菜单(displayMenu)

4、、显示(display)、输入(input)、搜索(Search)、清零(zero)、检查选项(check)进行各模块中的操作,共使用12个函数。程序中首先把各个数据设定为0。“增加”操作中,0项作为可编辑的空项(输入的学号不能为0,否则有提示),先通过后台参数设定总项目数为常量N,每增加一个询问是否继续增加,无可增加的空项时有提示。若增加一定数量信息后中断增加,可以再次选择进入增加模块,从已有信息之后进行输入,而不会对上次输入的信息造成任何影响。平均分在输入完毕后自动计算。“删除”操作中以清零表示删除,输入函数中逐个数据提示输入,查找函数为以学号项查找,删除、编辑模块中均有确认提示。“排序”

5、操作中先把平均分项输入到一个临时数组中,再从1到N给每条信息赋予临时排名,通过计算交换临时平均分数组和排名项,原始数据不发生变化,输出时通过排名项找到数据,输出的仍然是原始数据。在“增加”和“修改”操作中都引用了输入函数,这个函数中有检查学号是否与已有学号重复或是否为0的步骤,如果有重复的学号或输入的学号为0,则提示并取消此操作,防止误操作以及在搜索时出现问题。在“增加”、“删除”和“修改”操作中都有确认提示,需要从键盘输入“Y”或“N”(大小写均可)进行后续工作,为了防止误操作,这里引用了“检查选项”函数,在“Y”“N”(大小写均可)以外的符号算作非法,不会进行任何操作,并提示重新输入,只有

6、输入合法的选项时程序才会继续运行。程序中全部使用中文菜单及提示以便阅读和编辑。三、程序流程图(可附页手绘) 1.主函数流程图2.增加信息模块3.删除信息模块4.修改信息模块5.查找信息模块6.成绩排名模块7.输入函数8.选项检查函数(其他函数较为简单,流程图省略不画)四、程序代码及注释/*头文件*/#include#include#include#include#define N 20/*创建结构体*/typedef struct s int number; char name80; int Chi; int Mat; int Eng; int Phy; int Com; int AVE; i

7、nt AVE2; int arra; STUDENT;/*函数声明*/ void add(STUDENT s); /*六个模块:增加、删除、修改、查找、排序、全显示*/void del(STUDENT s);void edit(STUDENT s);void find(STUDENT s);void arrange(STUDENT s);void displayall(STUDENT s);void displayMenu(); /*六个函数:菜单、显示、输入、搜索、清零、检查选项*/void display(STUDENT s,int n); int input(STUDENT s,int

8、i);int Search(STUDENT s,int n);void zero(STUDENT s,int n);char check(char choice);/*清零函数*/void zero(STUDENT s,int i) si.number=0; strcpy(si.name,0); si.Chi=0; si.Mat=0; si.Eng=0; si.Phy=0; si.Com=0; si.AVE=(si.Chi+si.Mat+si.Eng+si.Phy+si.Com)/5; si.arra=0; /*主函数*/main() int i; STUDENT sN; int choice

9、; printf(n=欢迎使用学生成绩管理系统!=n); printf(n-11046133 small stone-n);/*全部数据清零*/ for(i=0;iN;i+) zero(s,i); /*重复显示菜单*/do displayMenu(); scanf(%d,&choice); switch(choice) case 1: add(s); break; case 2: del(s); break; case 3: edit(s); break; case 4: find(s); break; case 5: arrange(s); break; case 6: displayall

10、(s); break; case 0: printf(nn谢谢使用!nn);break; default:printf(n错误,请重新输入n);break; while(choice!=0); /*显示菜单模块*/void displayMenu() printf(n=MENU=); printf(n 1 -增加信息); printf(n 2 -删除信息); printf(n 3 -修改信息); printf(n 4 -查找信息); printf(n 5 -成绩排序); printf(n 6 -显示全部); printf(n 0 -结束程序); printf(n=); printf(n请选择要

11、进行的操作:); /*输入函数*/int input(STUDENT s,int i) int j; int k=0; int x; x=si.number; /*记录原始学号数据*/ printf(n 请输入新学生的学号:n); scanf(%d,&si.number); if(si.number=0) /*检查输入的学号是否合法*/ printf(n输入的学号不能为0 !n); si.number=x; k=1; else for(j=0;jN;j+) if(si.number=sj.number&i!=j) printf(n此学号已经存在!n); k=1; si.number=x; br

12、eak; if(k!=1) printf(n 姓名:n); scanf(%s,&si.name); printf(n 语文 成绩:n); scanf(%d,&si.Chi); printf(n 数学 成绩:n); scanf(%d,&si.Mat); printf(n 英语 成绩:n); scanf(%d,&si.Eng); printf(n 物理 成绩:n); scanf(%d,&si.Phy); printf(n 计算机 成绩:n); scanf(%d,&si.Com); si.AVE=(si.Chi+si.Mat+si.Eng+si.Phy+si.Com)/5; /*计算平均分*/ pr

13、intf(n 你输入的学生信息是:); display(s,i); /*显示结果*/ return k; /*显示单个数据函数*/void display(STUDENT s,int i)printf(n学号:%20dn姓名:%20s,si.number,si.name);printf(n成绩(语文,数学,英语,物理,计算机,平均分):n%4d,%4d,%4d,%4d,%4d,%4dn,si.Chi,si.Mat,si.Eng,si.Phy,si.Com,si.AVE ); /*按学号搜索单个数据函数*/int Search(STUDENT s,int n) int i; for (i=0;i

14、N;i+) if(n=si.number) break; if(i=N) return -1;/*未找到返回-1*/ else return i; /*找到则返回找到的值*/ /*检查选项函数*/char check(char choice)int p=0;if(choice=Y) | (choice = y)|(choice=N) | (choice = n)p=1;if(p!=1) doprintf(输入错误,请重新选择:n); scanf(%s,&choice); if(choice=Y) | (choice = y)|(choice=N) | (choice = n)p=1; whil

15、e(p!=1);return choice; /*增加信息模块*/void add(STUDENT s) int i=0; int k=0; char choice; for(i=0;iN;i+) if(si.number=0) break; /*检查是否为空位置*/ do if(si.number=0) /*从空位置开始执行输入循环*/ printf(nn输入第%d个学生信息:,i+1); k=input(s,i); if(k=0)i+; printf(nn继续增加学生?(Y是/N否)n); /*继续运行提示*/ scanf(%s,&choice); choice=check(choice)

16、; else printf(n存储空间不足.n); /*无空位提示*/ break; while(choice=Y) | (choice = y); /*删除信息模块*/ void del(STUDENT s) int i,n; int p=0; char choice; printf(n请输入要删除学生的学号:); scanf(%d,&n); i=Search(s,n); /*搜索信息*/ if(i=-1) printf(n未找到符合的学生信息或信息为空.n); else printf(n找到的学生信息为:); display(s,i); /*显示结果*/ printf(n确实要删除此条信息

17、?(Y是/N否)n); /*显示确认*/ scanf(%s,&choice); choice=check(choice); if(choice=Y) | (choice = y) zero(s,i); /*数据清零*/ printf(n已删除.n); /*修改信息模块*/ void edit(STUDENT s) int i,n; int k=0; char choice; printf(n请输入要修改信息的学号:); scanf(%d,&n); i=Search(s,n); /*搜索信息*/ if(i=-1) printf(n未找到符合的学生信息或信息为空.n); else printf(n

18、找到的学生信息为:); display(s,i); /*显示结果*/ printf(n确实要编辑此条信息?(Y是/N否)n); /*显示确认*/ scanf(%s,&choice); choice=check(choice); if(choice=Y) | (choice = y) printf(n输入新的学生信息:n); /*输入新信息*/ k=input(s,i); /*查找信息模块*/ void find(STUDENT s) int i,n; printf(n请输入要查找信息的学号:); scanf(%d,&n); i=Search(s,n); /*搜索信息*/ if(i=-1) pr

19、intf(n未找到符合的学生信息或信息为空.n); else printf(n找到的学生信息为:); display(s,i); /*成绩排名模块*/void arrange(STUDENT s)int i,j,max;int b=1;int a=1;int temp1,temp2; for(i=0;i=N;i+) si.AVE2=si.AVE; /*为临时平均分赋值*/ for(i=0;i=N;i+) si.arra=b; b+; /*按顺序做初始排名*/ for(i=0;iN-1;i+) max=i; for(j=i+1;jsmax.AVE) max=j; if(max!=i) temp1

20、=si.arra; si.arra=smax.arra; smax.arra=temp1 ; temp2=si.AVE2; si.AVE2=smax.AVE2; smax.AVE2=temp2; /*比较临时平均分并交换排名和临时平均分*/ dofor(i=0;iN;i+) /*按排名顺序输出*/ if(si.arra=a) printf(排名:%d,si.arra); display(s,i); a+; break; while(a!=N); /*显示所有信息模块*/void displayall(STUDENT s) int i; for(i=0;iN;i+) display(s,i);

21、五、结果记录1.主界面: 这里少一张主界面的截图,自己补上哈!2.输入信息:(依次输入信息1,2,3)3.删除信息:(先选择信息1,不确认,再选择信息2,将信息2清空)4.修改信息:(将信息1内容修改为4)5.按学号查找信息:(以学号3找到相应信息,以学号2没找到,因其已被删除)6.成绩排序:(按平均分从大到小输出信息及相应名次)7.显示信息(按输入的顺序输出):8.继续补充信息:(提示从空白的第二位置开始)9.学号输入非法提示:(输入的学号为零或与之前的学号重复均为非法)10.选项错误提示:(只有大写或小写的“Y”或“N”才是合法的选项)11.存储空间已满提示:(空间总数由程序后台赋值确定)

22、12.退出程序提示:六、 问题及解决方法,心得(大哥,你能自己写就自己写!)出现较多的一个问题是在程序运行过程中常常出现运行错误,导致程序自动退出,经检查是在输入、读出函数时使用变量i,j等时没有给它们赋值,加入赋值语句后问题解决。遇到的第一个问题是在执行模块后程序不能返回主菜单或显示主菜单后程序自动结束,经查是在从课本上抄写函数时使用的选项选择函数和作业的要求不同,删除这个函数,并把显示菜单及读取选项的语句加入主函数的循环后问题解决。在编写输入函数input时,发现的第一个问题是终端输入后若再次运行输入模块,原有的信息就会被新的信息替换,经查是由于每次输入时都是从结构体的第一个位置开始的,加

23、入检查空位并从空位开始循环的语句后问题解决。这个程序中多个模块都涉及相同的操作,如“增加”“修改”都涉及输入信息操作,“修改”“删除”“查找”都涉及搜索信息操作,各个函数都需要用到显示信息操作,一开始是复制同样的内容多次,后来发现这样既显得嵌套混乱又不便修改程序,开始使用函数把这些操作都独立出来,各个模块中只需引用相应的函数即可。最后解决的一个问题是字符型结构体成员的赋值问题,最初name项无法像其他整型成员一样加入初始值和清零,显示出的是一排乱码,后来经过查资料才回忆起来可以使用strcpy函数对它进行赋值。有时软件没有错误提示,程序却运行不正常,最后才发现是if,while等操作中等号少了

24、一个。程序逐渐完善后,我开始对一些使用起来不方便的地方进行调整。例如在Y/N选项时原来只有选Y时继续运行,而输入不是Y的其他值时都会执行相当于选N时的操作,在输入过快时容易误操作。又如输入学号重复或输入为0时都会对搜索、删除、修改造成影响。最后我都加入语句和函数做了修改。在编程的过程中,我加深了对编程知识的了解,对C语言有了更深的认识。同时掌握了几个调试程序的方法,例如把用到的变量先输出观察,再检查是否是赋值过程中出现了问题。同时,我知道了一个程序的完善是一个逐渐进行的过程,需要不断地测试、调整、修改,也需要耐心和细心,这样才能完成一个良好的程序。另一方面我也发现,有很多我们想要进行的操作都不能够以我们现在掌握的知识完成,学习程序是一个漫长而且不容易的过程。

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

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