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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

学生管理系统.docx

1、学生管理系统河南理工大学计算机科学与技术学院课程设计报告2011 2012学年第 一 学期课程名称 c语言程序设计 设计题目 学生成绩管理系统 学生姓名 张爱珍 学 号 311009030210 专业班级 信管10-02 指导教师 于金霞 2011年9月 15日 1、设计的目的1)复习巩固C语言的基础知识,进一步加深对C语言编程的理解和掌握;2)利用所学知识,理论和实际结合,利用资源,采用模块化的结构,使用模仿修改自主设计相结合的方法,锻炼学生综合分析解决实际问题的编程能力;3)培养学生在项目开发中团队合作精神、创新意识及实战能力。2、设计的任务根据学生的实际情况,进行分组选题。主要的课程设计

2、题目如下(学生也可自主选题):1、图书管理系统 2、学生信息管理系统3、学生成绩管理系统 4、学生通讯录管理系统5、职工信息管理系统 6、设计简单的计算器课程设计采用学生自主设计和指导老师辅导相结合的方式。3、设计要求与设计报告 设计要求:1、任选上述题目之一,或自选题目。2、模块化的程序设计。 3、锯齿形的程序书写格式。4、必须通过编译连接运行。设计报告:1、设计目的和任务2、总体设计:包括程序设计组成框图、流程图。3、详细设计:包括模块功能说明:函数功能、入口及出口参数说明,函数调用关系描述等。4、调试与测试:包括调试方法,测试结果分析与讨论,测试过程中遇到的主要问题及采取的解决措施。5、

3、源程序清单和执行结果:清单中应有足够的注释。 设计目的和任务(主要介绍设计的任务,为什么要设计,设计要达到什么样的目的。)设计目的:(1)基本掌握面向过程程序设计的基本思路和方法; (2)达到熟练掌握C语言的基本知识和技能; (3)能够利用所学的基本知识和技能,解决简单的程序设计问题程序功能:(1). 学生基本信息及成绩所选科目成绩的录入。 (2). 基本信息的查询(分系、班级;分科目)与修改。 (3). 对每系或每班各科成绩进行分析(即求单科平均成绩、及格率和优秀率); (4). 对所开课程的成绩分析(求其平均成绩,最高分和最低分); (5). 对学生考试成绩进行排名;目 录 一,总体设计4

4、二. 详细设计.4三. 调试与测试.5四.程序清单与执行结果. 6五. 建议与体会.15六.参考文献.16一:总体设计设计流程图如下:二、详细设计 1输入初始的学生信息:其中包括学生的姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息;可用函数cin(stu *p1)来实现此操作。2查询模块:可用stu *lookdata(stu *p1) 来实现。找到就输出此学生全部信息包括学生的语文、数学、英语和计算机等的成绩。3插入模块:可用insert( )函数来实现。其中通过学号的大小来比较的,并且以此来排序。4输出学生的信息以及成绩:通过学生的姓名来查看学生的语文、数学、英语和计算机等相

5、关成绩,同时也可以分别通过caverage() 、 maverage() 、eaverage() 和comaverage() 来输出语文、数学、英语和计算机等成绩的平均分数、最高和最低分数。 5退出系统:可用一个函数exit()来实现,首先将信息保存到文件中,释放动态创建的内存空间,再退出此程序。 三、调试与测试四、源程序设计和测试结果 五、建议和体会 六、参考文献指导教师的评语及评分考核小组意见及评分综合评分三:调试与测试 问题一、学生初始信息模块:其中包括学生的姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息;可用函数cin(stu *p1)来实现此操作。当正确输入存在的学生学

6、号,系统进行判断时,提示不存在此学生。 解决办法及步骤:1、一个个输出所有的学生的学号,检查文件中是否有此学生,发现有。 2、既然有此学生,那么检查循环判断是否有此学生的语句发现没有错 3、输出用于循环检查语句中的学生信息,发现乱码 4、仔细分析乱码的原因,最后发现是变量的类型错误,错将学生类型的结构体指针变量定义为了其他类型的指针变量。 问题二、查询模块:可用stu *lookdata(stu *p1) 来实现。找到就输出此学生全部信息包括学生的语文、数学、英语和计算机等的成绩。当正确输入查找信息时,系统却不能够得到所要查找的学生信息以及学生的语文、数学、英语和计算机的成绩。解决办法及步骤:

7、1、检查所编写的程序代码是否完全正确,若不是,则改之,然后再继续正确输入查找信息看能否得到所要查找的学生信息以及学生的语文、数学、英语和计算机的成绩。 2、检查当我们在输入查找信息时,看是否我们输入的信息有误,若是这样的话,我们应当仔细输入查找信息。四程序清单与执行结果 #include stdio.h /*标准输入输出函数库*/#include stdlib.h /*标准函数库*/#include string.h /*字符串函数库*/#include conio.h /*屏幕操作函数库*/#define HEADER1 -STUDENT- n#define HEADER2 | number

8、 | name |Comp|Math|Eng | sum | ave |mici | n#define HEADER3 |-|-|-|-|-|-|-|-| #define FORMAT | %-10s |%-15s|%4d|%4d|%4d| %4d | %.2f |%4d |n#define DATA p-data.num,p-data.name,p-data.egrade,p-data.mgrade,p-data.cgrade,p-data.total,p-data.ave,p-data.mingci#define END - nint saveflag=0; /*是否需要存盘的标志变量*/

9、*定义与学生有关的数据结构*/typedef struct student /*标记为student*/char num10; /*学号*/char name15; /*姓名*/int cgrade; /*C语言成绩*/int mgrade; /*数学成绩*/int egrade; /*英语成绩*/int total; /*总分*/float ave; /*平均分*/int mingci; /*名次*/;/*定义每条记录或结点的数据结构,标记为:node*/typedef struct nodestruct student data; /*数据域*/struct node *next; /*指

10、针域*/Node,*Link; /*Node为node类型的结构变量,*Link为node类型的指针变量*/void menu() /*主菜单*/system(cls); /*调用DOS命令,清屏.与clrscr()功能相同*/cprintf( The Students Grade Management System n);cprintf( *Menu*n);cprintf( * 1 input record 2 delete record *n);cprintf( * 3 search record 4 modify record *n);cprintf( * 5 insert record

11、 6 count record *n);cprintf( * 7 sort reord 8 save record *n);cprintf( * 9 display record 0 quit system *n);cprintf( *n);/*cprintf()送格式化输出至文本窗口屏幕中*/void printheader() /*格式化输出表头*/printf(HEADER1);printf(HEADER2);printf(HEADER3);void printdata(Node *pp) /*格式化输出表中数据*/Node* p;p=pp;printf(FORMAT,DATA);voi

12、d Wrong() /*输出按键错误信息*/printf(nnnnn*Error:input has wrong! press any key to continue*n);getchar();void Nofind() /*输出未查找此学生的信息*/printf(n=Not find this student!n);void Disp(Link l) /*显示单链表l中存储的学生记录,内容为student结构中定义的内容*/Node *p;p=l-next; /*l存储的是单链表中头结点的指针,该头结点没有存储学生信息,指针域指向的后继结点才有学生信息*/if(!p) /*p=NULL,NU

13、ll在stdlib中定义为0*/printf(n=Not student record!n);getchar();return;printf(nn);printheader(); /*输出表格头部*/while(p) /*逐条输出链表中存储的学生信息*/printdata(p);p=p-next; /*移动直下一个结点*/printf(HEADER3);getchar();/*作用:用于定位链表中符合要求的节点,并返回指向该节点的指针参数:findmess保存要查找的具体内容; nameornum保存按什么查找; 在单链表l中查找;*/Node* Locate(Link l,char find

14、mess,char nameornum)Node *r;if(strcmp(nameornum,num)=0) /*按学号查询*/r=l-next;while(r) if(strcmp(r-data.num,findmess)=0) /*若找到findmess值的学号*/ return r; r=r-next;else if(strcmp(nameornum,name)=0) /*按姓名查询*/r=l-next;while(r) if(strcmp(r-data.name,findmess)=0) /*若找到findmess值的学生姓名*/ return r; r=r-next;return

15、0; /*若未找到,返回一个空指针*/*输入字符串,并进行长度验证(长度lens)printf(n exceed the required length! n); /*进行长度校验,超过lens值重新输入*/ while(strlen(n)lens); strcpy(t,n); /*将输入的字符串拷贝到字符串t中*/*输入分数,0分数100 | t100 | tnext;system(cls);Disp(l); /*先打印出已有的学生信息*/while(r-next!=NULL)r=r-next; /*将指针移至于链表最末尾,准备添加记录*/while(1) /*一次可输入多条记录,直至输入学

16、号为0的记录结点添加操作*/while(1) /*输入学号,保证该学号没有被使用,若输入学号为0,则退出添加记录操作*/stringinput(num,10,input number(press 0return menu):); /*格式化输入学号并检验*/flag=0;if(strcmp(num,0)=0) /*输入为0,则退出添加操作,返回主界面*/ return;s=l-next; while(s) /*查询该学号是否已经存在,若存在则要求重新输入一个未被占用的学号*/ if(strcmp(s-data.num,num)=0) flag=1; break; s=s-next; if(fl

17、ag=1) /*提示用户是否重新输入*/ getchar(); printf(=The number %s is not existing,try again?(y/n):,num); scanf(%c,&ch); if(ch=y|ch=Y) continue; else return; else break;p=(Node *)malloc(sizeof(Node); /*申请内存空间*/if(!p) printf(n allocate memory failure ); /*如没有申请到,打印提示信息*/ return ; /*返回主界面*/ strcpy(p-data.num,num);

18、 /*将字符串num拷贝到p-data.num中*/stringinput(p-data.name,15,Name:);p-data.cgrade=numberinput(C language Score0-100:); /*输入并检验分数,分数必须在0100之间*/p-data.mgrade=numberinput(Math Score0-100:); /*输入并检验分数,分数必须在0100之间*/p-data.egrade=numberinput(English Score0-100:); /*输入并检验分数,分数必须在0100之间*/p-data.total=p-data.egrade+

19、p-data.cgrade+p-data.mgrade; /*计算总分*/p-data.ave=(float)(p-data.total/3); /*计算平均分*/p-data.mingci=0;p-next=NULL; /*表明这是链表的尾部结点*/r-next=p; /*将新建的结点加入链表尾部中*/r=p;saveflag=1; return ;void Qur(Link l) /*按学号或姓名,查询学生记录*/int select; /*1:按学号查,2:按姓名查,其他:返回主界面(菜单)*/char searchinput20; /*保存用户输入的查询内容*/Node *p;if(!

20、l-next) /*若链表为空*/system(cls);printf(n=No student record!n);getchar();return;system(cls);printf(n =1 Search by number =2 Search by namen);printf( please choice1,2:);scanf(%d,&select);if(select=1) /*按学号查询*/ stringinput(searchinput,10,input the existing student number:);p=Locate(l,searchinput,num);/*在l

21、中查找学号为searchinput值的节点,并返回节点的指针*/if(p) /*若p!=NULL*/ printheader(); printdata(p); printf(END); printf(press any key to return); getchar();else Nofind(); getchar();else if(select=2) /*按姓名查询*/stringinput(searchinput,15,input the existing student name:);p=Locate(l,searchinput,name);if(p) printheader(); p

22、rintdata(p); printf(END); printf(press any key to return); getchar();else Nofind(); getchar();elseWrong();getchar();/*删除学生记录:先找到保存该学生记录的节点,然后删除该节点*/void Del(Link l)int sel;Node *p,*r;char findmess20;if(!l-next) system(cls);printf(n=No student record!n);getchar();return;system(cls);Disp(l);printf(n =

23、1 Delete by number =2 Delete by namen);printf( please choice1,2:);scanf(%d,&sel);if(sel=1)stringinput(findmess,10,input the existing student number:);p=Locate(l,findmess,num);if(p) /*p!=NULL*/ r=l; while(r-next!=p) r=r-next; r-next=p-next;/*将p所指节点从链表中去除*/ free(p); /*释放内存空间*/ printf(n=delete success!

24、n); getchar(); saveflag=1;else Nofind(); getchar();else if(sel=2) /*先按姓名查询到该记录所在的节点*/stringinput(findmess,15,input the existing student name);p=Locate(l,findmess,name);if(p) r=l; while(r-next!=p) r=r-next; r-next=p-next; free(p); printf(n=delete success!n); getchar(); saveflag=1;else Nofind(); getchar();e

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

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