C语言学生信息管理系统项目实训文档

上传人:沈*** 文档编号:119176975 上传时间:2022-07-13 格式:DOC 页数:21 大小:255KB
收藏 版权申诉 举报 下载
C语言学生信息管理系统项目实训文档_第1页
第1页 / 共21页
C语言学生信息管理系统项目实训文档_第2页
第2页 / 共21页
C语言学生信息管理系统项目实训文档_第3页
第3页 / 共21页
资源描述:

《C语言学生信息管理系统项目实训文档》由会员分享,可在线阅读,更多相关《C语言学生信息管理系统项目实训文档(21页珍藏版)》请在装配图网上搜索。

1、广东交通职业技术学院软件技术(可视化程序设计)专业项目实训 报告书课程名称:C语言程序设计 课程设计课程设计题目:学生信息管理系统课程设计日期:2010年6月28日起 7 月 3 日止小组成员:姓名:刘雁璋 学号:17号指导教师: 万东老师目录1摘要概述开发系统的目的、意义及主要功能42需求分析63软件开发工具与环境概述73.1开发工具:Turbo C 2.0/visualC 6.073.2运行环境:74概要设计74.1用户接口:74.2内部接口:74.3出错信息:75详细设计106系统测试167结束语168附程序源代码171 摘要概述开发系统的目的、意义及主要功能1.1 我是软件班的学生,学

2、习了C语言当然要活学活用啦!C语言是一门比较基础的课程,虽然现在的社会已经很少用到,但是对我们学生来说还是有用的,因此我们要设计一个学生信息管理系统。原因有几个:一是能看出我们学习C语言的情况,二是能表现出我们的创新能力,因为这个系统已经有N多人设计过了,看看我们能否推陈出新。三是我了完成我们的作业需要。1.2 随着科学技术的不断提高,计算机科学日渐成熟,其强大功能已为人们深刻认识,它已进入人们生活的各个领域,并发挥了越来越重要的作用,针对人工管理的缺点,最好的解决办法就是借助计算机技术提供一个电子化的课程设计管理平台,学生信息管理系统就因此诞生了!1.3 目的及意义:学生信息管理系统是学校不

3、可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生信息管理系统应该能够为管理者提供充足的信息和快捷的查询手段.但是一直一来人们使用传统人工的方式管理文件信息,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻的认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对学生信息进行管理,具有手工管理无法比拟的优点。例如:检索迅速、查找方便、可靠性强、存储量大、保密性好、寿命长、成本低等。这些优点

4、都能够极大地提高学生信息管理的效率,也是学校的科学化、正规化管理,与世界接轨的重要条件。因此开发一套这样的管理系统成为很有必要的事情。1.4 功能简述:(1) 建立学生信息的结构体(2) 学生信息的初始化(可以从文件获取)(3) 学生信息的添加、修改、删除、查找(4) 学生信息的输出(5) 对学生信息按学号、成绩排序(6) 计算一门课的平均分和总分(7) 将学生信息保存为文件综合应用数组、指针、结构体、文件等,对该设计题目进行设计和实现。课程设计完成后,提交课程设计报告。2 需求分析2.1 学校每一学期到要考试,这就会有成绩的录入工作,用怎样的方法才能更好的,更快的,更轻松,更完美的把这种事情

5、做好了?这就要用到学生信息管理系统了。学生信息管理系统能完成你想要的需求,改变了以前一些麻烦现状,化麻烦为轻松。实现了快捷办公的需求。2.2 目前,学校学生管理是教务管理中的一个极为重要的环节,它是整个管理的核心和基础。由于学校规模进一步扩大,学生人数逐年上升,学生情况的管理也变得越来越复杂。面对如此繁杂的任务。如果让个人去管理文档,就会显得费时费力。尤其在管理成绩时,任务更加繁重,就成绩管理本身来说,它是一项任务繁重、时效性较强的系统工作,它不但涉及学生个人成绩查询,更涉及到各教师的工作效率和质量。近年来随着计算机的迅速发展,计算机已经在社会各个领域显示了它巨大的作用。毋庸置疑,切实有效地把

6、计算机管理引入学校教务管理中,对于促进学校管理制度,提高学校教学质量与办学水平有着显著意义。 3 软件开发工具与环境概述3.1 开发工具:Turbo C 2.0/visualC 6.03.2 运行环境:硬件环境: 现在的计算机硬件基本上都支持,因为本系统小,可行性高,几乎能在所有计算机上运行。操作系统: Windows 98/2000/XP/win7等可以4 概要设计a) 用户接口设计4.1 用户接口:本系统支持在DOS环境下运行。4.2 内部接口:系统内部模块之间采用直接调用的方式,所有的参数传递通过函数调用的方式运行。4.3 出错信息:当系统运行过程中出现错误时,将给出相关的错误信息。b)

7、 模块说明(一) 输入学生成绩 (二) 浏览学生成绩 (三) 修改学生成绩 (四) 删除学生成绩(五) 排序学生成绩 (六) 查找学生成绩 (七) 安全退出系统c) 数据结构设计本程序采用链表结构实现存放学生信息,链表结构图如下成员名类型描述NameChar存放学生姓名Sexchar存放性别Idlong存放学号,必须唯一Scoreint存放各门成绩Totalint存放总成绩m_c int存放平均成绩d) 菜单设计用switch语句对学生信息进行选择性的编辑a) 当用户输入!时,进入菜单选择;b) 当用户输入1时,创建新的学生信息,并输出链表中的全部信息。c) 当用户输入2时,浏览学生信息,可以

8、查看所有学生的信息;d) 当用户输入3时,修改学生的信息,按学号或姓名修改;e) 当用户输入4时,删除学生信息;f) 当用户输入5时,排序学生信息,选择按学号或总分排序;g) 当用户输入6时,查找学生信息,按学号或姓名查找;h) 当用户输入7时,保存学生信息;i) 当用户输入8时,退出系统。e) 系统结构图主模块显示主菜单输入学生信息浏览学生信息修改学生信息删除学生信息查找学生信息登陆界面安全退出系统排序学生信息按学号查找按姓名查找按姓名排序按序号排序学生登陆界面老师登陆界面5 详细设计2主函数模块的流程图开始main()调用switch函数输入choose的值Choose=?调用Exit()

9、函数调用Save()函数调用Find()函数调用Paixu()函数调用Delete()函数调用Insert()函数调用Display()函数调用Create()函数2.功能模块与程序的关系程序模块程序1程序2程序3程序4程序5程序6创建Creatwhileif浏览Display修改、插入Insert删除Del排序Paixu查找Find保存Load退出Sexit1 每个模块的详细设计a) 创建学生信息链表 函数原型、功能和形参说明1. 函数原型:student* creat( )2. 函数功能:创建基础数据函数,并带回一个指向链表头的指针3. 参数说明:student *head 链表头结点指针

10、4. 核心程序:student* creat( )nt i; struct student *head,*p1,*p2; p1=p2=(struct student *)malloc(LEN); n=0; p1-total=p1-score0+p1-score1+p1-score2+p1-score3; if(n=0)head=p1; else p2-next=p1; p2=p1; n+; b) 学生信息的保存 函数原型、功能和形参说明1. 函数原型:save(student *head)2. 函数功能:以文件的形式保存数据3. 参数说明:student *head 链表头结点指针 核心程序:

11、save(student *head)FILE *fp; student *p; if (fp=fopen(d:STU_LIST,wb)=null) printf(Cannot open the file!n); return; printf(nSaveing the file!n); p=head; while(p!=null) fwrite(p,LEN,1,fp); p=p-next; fclose(fp);c) 输出链表函数 函数原型、功能和形参说明1. 函数原型:output(student *head)2. 函数功能:输出链表函数3. 参数说明:student *head 链表头结点

12、指针 核心程序:output(student *head) student *p;p=head; if(head!=NULL) doprintf(%8ld %6s %4s %2d %2d %2d %2d %-.2f %3dn,p-id,p-name,p-sex,p-score0,p-score1,p-score2,p-score3,p-total/4.0,p-total); printf(-n); p=p-next; while(p!=NULL); d) 修改结点函数 函数原型、功能和形参说明1.函数原型:struct student *insert(struct student*head)

13、2.函数功能:修改学生的信息3.参数说明:student *head核心程序:struct student *insert(struct student*head)struct student *p1,*p2,*p3; printf(请输入修改信息!n); p1=(struct student *)malloc(LEN); p1-total=p1-score0+p1-score1+p1-score2+p1-score3;/*计算总分 */ p2=head; if(head=NULL) head=p1;p1-next=NULL; else while(p1-idp2-id)&(p2-next!=

14、NULL) p3=p2; p2=p2-next; if(p1-idid) if(head=p2)p1-next=head;head=p1; else p3-next=p1;p1-next=p2; elsep2-next=p1;p1-next=NULL; n+; return(head); e) 删除结点函数 函数原型、功能和形参说明1. 函数原型:struct student *delete (struct student *head,long int num)2. 函数功能:删除学生的信息3. 参数说明:student *head 链表头结点指针核心程序:struct student *p1

15、,*p2; printf(要删除的学生准考证号为:%ldn,num); if(head=NULL) printf(这是一个空表,没有可删除的学生准考证号!n);return(head); elsep1=head; while(num!=p1-id&p1-next!=NULL) p2=p1;p1=p1-next; if(num=p1-id) if(p1=head) head=p1-next; else p2-next=p1-next; printf(删除准考证号为%ld的学生n,num); n-; else printf(没找到准考证号为%ld的学生!n,num); return(head);

16、f) 排序函数 函数原型、功能和形参说明1.函数原型:paixu(struct student *head) 2.函数功能:对学生成绩排序3.参数说明:student *head 链表头结点指针 核心程序: p1=head; for(k=0;knext; for(k=0;km-1;k+) for(j=k+1;jtotaltotal) p2=pk;pk=pj;pj=p2; g) 计算平均分函数 函数原型、功能和形参说明1.函数原型: dkarg(struct student *head) 2.函数功能: 计算出学生各科成绩总分和平均分3.参数说明: student *head 链表头结点指针 核

17、心程序:p1=head; for(k=0;kscore0; arg2+=p1-score1; arg3+=p1-score2; arg4+=p1-score3; p1=p1-next; arg1/=m;arg2/=m;arg3/=m;arg4/=m; h) 读取信息 函数原型、功能和形参说明1. 函数原型: student * load()2. 函数功能: 将文件从磁盘中读出3. 参数说明: 核心程序:if (fread(p,LEN,n,fp)!=1) if (feof(fp) fclose(fp); return (p); i) 查找 函数原型、功能和形参说明函数原型: struct stu

18、dent *find(struct student *head,long int num) 函数功能: 根据用户输入的学生姓名进行查找,并将结果输出 参数说明: student *head,long int num 核心程序:struct student *p1; printf(要查找的学生准考证号为:%ldn,num); if(head=NULL) printf(这是一个空表,没有要查找的学生准考证号!n);return(head); elsep1=head; while(num!=p1-id&p1-next!=NULL) p1=p1-next; 6 系统测试本学生信息管理系统能够完成一定的

19、应用要求,不足的地方还有很多,如功能还不够多,还是需要添加的,系统有点寒酸,没有设计好的界面,但是还是可以用的。(1)能够通过编译时出现的出错提示信息,进行初步的纠错。(2)完成一个程序的一般步骤为设计,录入 ,编译 ,如果出错,则修改,然后再编译,编译成功后,看看结果是否正确,如果结果不正确,则再重复以上步骤。7 结束语这次的课程设计完全是自己第一次接触程序设计的整个过程。以前只是看书,还不曾写过代码,这次要自己写还真是有点难度,于是就去看书,不会在上网找资料,看看别人是怎么写的,然后在自己实实在在的编写自己的程序。程序并不是那么的复杂,写出来后才感到设计一个软件还真是不简单。要按照一个固定

20、的流程去完成这次课程设计,这也是开发软件所必需的步骤。确实规范的编一个系统是比较长时间的没有耐心是做不出来的。在学习的过程中有让我进一步了解自己能力的不足,所以要及时去学习自己需要的知识,要掌握一门语言是经过多次实践的,没有一定的实战演练,再厉害也只能是纸上谈兵。程序的设计是一个系统的工程,需要我们掌握多方面的知识。在这次课程设计中,我觉得自己的知识面还是有欠缺的。需要在以后的学习中加以注意,要全面的提高自己的知识面与知识层次。通过这次的课程设计,我的编程能力得到了一定的提高,当然调试程度的能力也相应的提高,从中体会到:编程一定要细心,哪怕是一个小点和空格都可以决定你这个程度能不能运行。在做这

21、个程序时遇到的困难还是挺多的,就是因为我以前学的比较少,所以遇到的困难比其它同学都要多,但我经过自己去上网查和去图书馆查资料书,自己解决了一小部分问题,大学不像是高中,大学大部分是靠自己自学的,要求大学生要有一定的自学能力就是这样的道理,老师都只是在课堂上讲一些理论上的东西,剩下的都是靠自己去学习去扩展。这个程度中吸取了不少别人的东西,在这用别人的东西的同时我从中也吸取了里面有用的东西,从而使自己的理论知识有了一定的增长,鲁迅的“拿来主义”就是这个道理,老师也说:抄别人的东西要会抄,抄后要知其所以然。我在抄他们的程序的同时也在学习,学习为什么要这样。在编程的过程中,我体会到编程是十分辛苦的。在

22、课程设计这一段时间里,我每天的生活基本是在不断的调试程序和修改代码中完成的。有时,这种生活令人感到乏味和疲倦,但是在这种近似枯燥的生活中,我的编程水平有了一定程度的提高,这是课程设计中我最大的收获。课程设计已经基本上完成了,但在课程设计的这些体会要应用到今后的日常学习中去。在新的学期,我觉得自己要在以下几个方面加以注意:首先,在学习专业课的时候要注意理论联系实际。注意将课本上的知识应用到日常的操作中,真正做到学以致用。只有这样,才能做到目的明确,才能有足够的学习动力。其次,在学习过程中要经常与同学进行交流,讨论所遇到的问题,并一起解决。在讨论中解决问题,会节约很多时间,并且在交流的过程中,我们

23、也可以学到更多的东西。这次课程设计带给自己很多体会,在以后的学习中要不断总结,不断改进,使自己的成绩有新的提高。8 附程序源代码#include stdlib.h #include string.h #include stdio.h #define NULL 0 #define Q 10 #define LEN sizeof(struct student) struct student char nameQ; char sexQ; long id; int score4; int total; int m_c; struct student *next; ; int n; char chQ;

24、struct student *creat() int i; struct student *head,*p1,*p2; p1=p2=(struct student *)malloc(LEN); n=0; printf(请输入学生考试信息!n); printf(请在姓名处键以!结束输入。n); scanf(%s,ch); head=NULL; if(ch!=!) p1=(struct student *)malloc(LEN); strcpy(p1-name,ch); printf(姓名:); scanf(%s,p1-name); printf(性别:); scanf(%s,p1-sex);

25、printf(准考证号(8位):); scanf(%ld,&p1-id);printf(数据结构成绩(0-100):); scanf(%d,&p1-score0);printf(操作系统成绩(0-100):); scanf(%d,&p1-score1); printf(英语成绩(0-100):); scanf(%d,&p1-score2); printf(C语言成绩(0-100):); scanf(%d,&p1-score3); p1-total=p1-score0+p1-score1+p1-score2+p1-score3; if(n=0)head=p1; else p2-next=p1;

26、p2=p1; n+; p2-next=NULL; return (head); void output(struct student *head) struct student *p; printf(-n); printf( *学生考试成绩信息表*n); printf(-n); printf(准考证号 姓 名 性别 数据结构 操作系统 英语 C语言 平均分 总分n); printf(-n); p=head; if(head!=NULL) doprintf(%8ld %6s %4s %2d %2d %2d %2d %-.2f %3dn,p-id,p-name,p-sex,p-score0,p-s

27、core1,p-score2,p-score3,p-total/4.0,p-total); printf(-n); p=p-next; while(p!=NULL); count(struct student *head) if(head=NULL)return(0); else return(1+count(head-next); struct student *insert(struct student*head) struct student *p1,*p2,*p3; printf(请输入修改信息!n); p1=(struct student *)malloc(LEN); printf(

28、准考证号(8位):); scanf(%ld,&p1-id); printf(姓名:); scanf(%s,p1-name); printf(性别:); scanf(%s,p1-sex); printf(数据结构成绩:); scanf(%d,&p1-score0); printf(操作系统成绩:); scanf(%d,&p1-score1); printf(英语成绩:); scanf(%d,&p1-score2); printf(C语言成绩:); scanf(%d,&p1-score3); p1-total=p1-score0+p1-score1+p1-score2+p1-score3;/*计算

29、总分 */ p2=head; if(head=NULL) head=p1;p1-next=NULL; else while(p1-idp2-id)&(p2-next!=NULL) p3=p2; p2=p2-next; if(p1-idid) if(head=p2)p1-next=head;head=p1; else p3-next=p1;p1-next=p2; elsep2-next=p1;p1-next=NULL; n+; return(head); struct student *delete (struct student *head,long int num) struct stude

30、nt *p1,*p2; printf(要删除的学生准考证号为:%ldn,num); if(head=NULL) printf(这是一个空表,没有可删除的学生准考证号!n);return(head); elsep1=head; while(num!=p1-id&p1-next!=NULL) p2=p1;p1=p1-next; if(num=p1-id) if(p1=head) head=p1-next; else p2-next=p1-next; printf(删除准考证号为%ld的学生n,num); n-; else printf(没找到准考证号为%ld的学生!n,num); return(h

31、ead); struct student *find(struct student *head,long int num) struct student *p1; printf(要查找的学生准考证号为:%ldn,num); if(head=NULL) printf(这是一个空表,没有要查找的学生准考证号!n);return(head); elsep1=head; while(num!=p1-id&p1-next!=NULL) p1=p1-next; if(num=p1-id) printf(-n); printf(n准考证号 姓 名 性别 数据结构 操作系统 英语 C语言 平均分 总分 名次n

32、);printf(-n); printf(%8ld %6s %4s %2d %2d %2d %2d %-.2f %3d %-2dn,p1-id,p1-name,p1-sex,p1-score0,p1-score1,p1-score2,p1-score3,p1-total/4.0,p1-total,p1-m_c); printf(-n); else printf(没找到准考证号为%ld的学生!n,num); return(head); paixu(struct student *head) int i,k,m,j; struct student *p1,*p2,*pQ; m=count(head

33、); if(head=NULL) printf(这是一个空表,请先输入考生成绩!n); else printf(-n); printf( *学 生 考 试 成 绩 统 计 表*n); printf(-n); printf(准考证号 姓 名 性别 数据结构 操作系统 英语 C语言 平均分 总分 名次n); printf(-n); p1=head; for(k=0;knext; for(k=0;km-1;k+) for(j=k+1;jtotaltotal) p2=pk;pk=pj;pj=p2; for(i=0;iid,pi-name,pi-sex,pi-score0,pi-score1,pi-sc

34、ore2,pi-score3,pi-total/4.0,pi-total,i+1); printf(-n);/*78个“-”*/ pi-m_c=i+1; dkarg(struct student *head) struct student *p1; int k,m; float arg1=0,arg2=0,arg3=0,arg4=0; m=count(head); p1=head; for(k=0;kscore0; arg2+=p1-score1; arg3+=p1-score2; arg4+=p1-score3; p1=p1-next; arg1/=m;arg2/=m;arg3/=m;arg

35、4/=m; printf( *全班单科成绩平均分*n); printf(-n); printf(数据结构平均分:%.2f 操作系统平均分:%.2f 英语平均分:%.2f C语言平均分:%.2f n,arg1,arg2,arg3,arg4); printf(-n); void main() int k; struct student *head; long i; doprintf(n); printf(|*|学 生 成 绩 系 统 主 菜 单 界 面 |*|n); printf(|*| 1.输入学生成绩 |*|n); printf(|*| 2.浏览学生成绩 |*|n); printf(|*| 3

36、.修改学生成绩 |*|n); printf(|*| 4.删除学生成绩 |*|n); printf(|*| 5.排序学生成绩 |*|n); printf(|*| 6.查找学生成绩 |*|n);printf(|*| 7.保存学生成绩 |*|n); printf(|*| 8.安全退出系统 |*|n); printf(n); printf(nn|*| -学生成绩管理程序 设计者:刘雁璋-|*|n); head=creat(); printf(n); printf(请输入选择号(1-7):); scanf(%d,&k); switch(k) case 1:head=creat();break; case

37、 2:output(head);printf(参加考试的学生人数为:%d人n,count(head);printf(请按任意键显示主菜单!n);getch();break; case 3:head=insert(head);output(head);printf(请按任意键显示主菜单!n);getch(); break; case 4:printf(请输入要删除的准考证号(8位):);scanf(%ld,&i);head=delete(head,i);output(head);printf(请按任意键显示主菜单!n);getch(); break; case 5:paixu(head);dkarg(head);printf(参加考试的学生人数为:%d人n,count(head);printf(请按任意键显示主菜单!n);getch();break; case 6:printf(请输入要查找的准考证号(8位):);scanf(%ld,&i);head=find(head,i);printf(请按任意键显示主菜单!n);getch();break; default:break; while(k!=7); 第 21 页 共 21 页

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!