C语言学生信息管理系统

上传人:仙*** 文档编号:61675081 上传时间:2022-03-12 格式:DOC 页数:24 大小:212.50KB
返回 下载 相关 举报
C语言学生信息管理系统_第1页
第1页 / 共24页
C语言学生信息管理系统_第2页
第2页 / 共24页
C语言学生信息管理系统_第3页
第3页 / 共24页
点击查看更多>>
资源描述
目录1. 课程设计目的和要求(一级标题)。22. 课程的主要内容。23 实践要求: 24 课程设计题目描述和要求。 35. 程序代码。 3(1) .文件头部,对函数要调用到的系统函数的声名。3(2) .定义无空函数。 4(3) .主函数。 5(4) .显示菜单函数。 5(5) .输入函数,并把输入的信息读入文件。 7(6) .显示函数,对学生信息的显示。 8(7) .增加函数(增加学生的信息)。9(8) .删除函数。11(9) .删除函数(按学号查找删除)。 11(10) .删除函数(按姓名查找到后删除)。 13(11) .修改(详细对学生信息的修改) 。14(12) . 统计(将学生的信息全部显示出来,并判断哪个学生不极格和不极格的总人数,并将它显示出来)。16(13) .对学生信息的查找。 18(14) 查找函数(用学号进行查找)。 18(15) .查找(用姓名查找)。19(16) .排序函数。20(17) .排序函数(按学号排序)。21(18) .排序函数(按总分排序)。22(19) .学生信息的恢复(可恢复到当初输入的状态)。 23(20) .保存函数。 24(21) .退出函数。 246. 总结 257参考书目: 25241. 课程设计目的和要求 (一级标题)本课程设计是针对刚学完C语言的计算机类专业学生的课程设计教学。C 语言是学生的第一门计算机高级语言课程,课程结束后,学生已经对C语言程序 设计有了较全面的了解, 但接触的基本上是为了阐述相关概念或知识点而列举的 示例,都是较小的程序, 程序功能单一, 因此缺乏整体观点和编写一个具体实用 的综合程序的思想。本课程设计的目的是要培养学生初步具有系统分析思想,并能利用开发工 具开发一个简单实用的综合程序。 为学生提供了一个既动手又动脑, 独立实践的 机会,将课本上的理论知识和实际有机的结合起来, 锻炼学生的分析解决实际问 题的能力,提高学生适应实际,实践编程的能力。要求学生以TC或VC为开发工具,完成一个小型应用软件的设计和开发。 进一步提高学生进行程序设计的能力。2. 课程的主要内容(1)选题( 2)进行系统分析(3)程序设计实现( 4)系统测试(5)编写、上交课程设计报告3实践要求:(1)系统设计要实用。( 2)对系统进行功能模块分析、 控制模块分析正确, 要画出主要功能模块的 流程图。(3)编程简练,可用,界面友好,功能全面。(4)课程设计报告、流程图要清楚。4. 课程设计题目描述和要求本课程设计选题为“学生成绩管理系统”。系统主要功能是管理学生成绩信息,要求能实现学生成绩添加、删除、修改、查找,总分、平均分计算、按成绩排序等功能。经过分析,确定本系统结构图如下图所示:图1系统结构图5. 程序代码(1).文件头部,对函数要调用到的系统函数的声名.#include /*将需要不得的函数包含在内*/#i nclude #in elude vconi o.h#include #defi ne N 20/*定义宏N为学生结构体的总数*/struct student/* 这义学生结构体 */long num;char name20;char sex4;int score3;int sum;int ave;struct student stuN;int t=1,pl=0;/* 定义两个全变量,学生总数变量和增加的学生变量 */(2).定义无空函数void s();/* 以下为定义无参函数 */void input();/*输入*/void show();/*显示*/void increase();/*增项*/void delet();/*删除*/void amend();/*修改*/void preside();/*统计*/void fint();/*查找*/void arrange();/*排序*/void resume();/*恢复*/void save();/*保存*/void output();/*退出*/void deleta();/* 学号查找后删除 */void deletb();/* 姓名查找后删除 */void finta();/*学号查找 */void fintb(); void arranga(); void arrangb();/*姓名查找 */*学号排序 */*总分排序 */(3) . 主函数 .void main()/*主函数 */int pasword;/*这义密码 */system(cls);printf(nnnnnnnnnttt 请输入密码,密码为: 123456.n);scanf(%d,&pasword);/* 输入密码 */if(pasword=123456)s();elseprintf( 密码有误 ,请重新输入 .n);getch();main();(4) . 显示菜单函数 .void s() int select,w;char k; /* 定义变量 */ system(cls);printf(C 语言课程设计 .n); /* 以下显示主菜单 */printf(1.录入.n2.显示.n3.增项.n4.删项.n5.修改.n6.统计.n7.查找.n8.排序.n9.恢复.n10.保存.n11 .退出.n);*/软件(2)班*/printf(n 选怿项目执行相应功能 .); /* 以下是显示编;定人的姓名。 printf(nnttttt xxx 软件(1)班 200802520124nnnttttt xxx 200802520201n);scanf(%d,&select);switch(select)case 1: input(); break; /*以下是选怿执行菜单上的哪个函数。case 2: show();break;case 3: increase();break;case 4: delet(); break;case 5: amend();break;case 6: preside(); break;case 7: fint(); break;case 8: arrange(); break;case 9: resume(); break;case 10: save(); break;case 11: output(); break;default: w=1;if(w=1)printf( 输入有误 ,按任意键重新选怿 .n);k=getchar();getch();s();(5) . 输入函数,并把输入的信息读入文件void input() /该函数为输入函数,并把输入的信息读入文件,以 便再恢复。 FILE *fp;int x,count=0,i; char w,r20,o; struct student *p; /* 定义变量和指向结构体的指针 变量。 */system(cls);p=stu;printf(ttt 学生信息的录入 .n);dopl+;printf(请输入第%d个学生的信息.nn,t);/*逐个步骤的实现学生信息的输入。*/prin tf(学号:n); sea nf(%ld,&p-n um);prin tf(n);printf(姓名:n); seanf(%s,p-name);printf(n);printf(性别:n); gets(r); gets(p-sex); printf(n);printf(三门成绩:1.高数.2.C语言.3.英语.n);for(i=0;iseorei);p-sum = p-seore0 + p-seore1 + p-seore2;p-ave = p-sum/3;printf(nn是否要继续输入学生信息,如果是请按y;不是请按n.n); o=getehar();/* 接收回车键。 */w=getehar();if(w=y | w=Y)/*选怿是否输入更多的学生 */t+;x=1;p+; elsex=0;while(x=1);if(w=n | w=N) if(fp=fopen(stu list,wb)=NULL)printf(can not open the filen); return;for(i=0;iN;i+)/* 实现对学生信息读入文件,以便恢复到输入状态。 */if(fwrite(&stui,sizeof(struct student),1,fp)!=1)printf(file write error.n);fclose(fp);printf( 按任意键返回 .n);getch();s();(6) . 显示函数,对学生信息的显示。void show()/显示函数,对学生信息的显示。int j,i;system(cls);printf(ttt 学生成绩显示 .nn); /* 以下实现显示。 */printf(%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8snn,学号,姓名,性别,高数 ,C 语言,英语,平均分,总分);for(i=0;it;i+) printf(%-8ld%-8s%-8s,stui.num, stui.name, stui.sex); for(j=0;jnum);printf(n);printf(姓名:n);scanf(%s,p-name);printf(n);printf(性别:n);scanf(%s,p-sex);printf(n);printf(三门成绩:1.高数.2.C语言.3.英语.n);for(i=0;iscorei);for(i=0;isum = p-score0 + p-score1 + p-score2;p-ave = p-sum/3;a=getchar();printf(n是否要继续输入学生信息,如果是请按y;不是请按n.nn); w=getchar();p+;t+;/*判断是否继续对学生信息的增加。 */if(w=y|w=Y)x=1;if(w=n|w=N)x=0;break;while(x=1);if(x=0)printf(n);printf( 按任意键返回 .n);getch();s();(8) . 删除函数。void delet() / 删除函数。 int i;system(cls);printf(ttt 请选怿用哪种方式删除学生信息 .n);printf(1.学号.n2.姓名.n);scanf(%d,&i);/* 选怿用哪种方式对学生信处进行删除。 */switch(i)case 1:deleta();break;case 2:deletb();break; default:printf( 输入有误 ,请按任意键返回 .n);getch();s();(9) . 删除函数(按学号查找删除)。void deleta()/删除函数(按学号查找删除) 。 long num_a;int z,j;char c,x,m,b,o; struct student *p; /*定义变量,接收字符。 */ system(cls);do printf( 请输入要删除的学号 .n);scanf(%ld,&num_a); /* 输入学号。 */for(p=stu;pnum=num_a)break;elseprintf( 不存在该学生 ,请按任意键返回 .n);getch();s();printf(你要删除的学生为:n); /*显示要删除的信息。*/ printf(%-8ld%-8s%-8s,p-num,p-name,p-sex); for(j=0;jscorej);printf(%-8d,p-ave);printf(%-8df,p-sum);printf(你确定要删除吗?如是请输入y;不是请输入n.n);x=getchar(); /* 接收回车键。 */c=getchar();if(c=y|c=Y) /* 判断是否要删除该学生的信息。 */ for(;pstu+t;p+)*p=*(p+1); t-;if(c=n|N) z=0;printf( 是否要继续删除:是请按 1.不是请按 2.n);m=getchar();b=getchar();o=getchar();while(b=y|b=Y);/*是否继续删除学生信息 */printf( 系统已为你删除信息,请按任意键返回 .n); getch();s();(10) . 删除函数(按姓名查找到后删除)。void deletb()/删除函数(按姓名查找到后删除) 。*/ char name_b20,c,m,b,r,d; int j,z; struct student *p;system(cls);do printf( 请输入要删除的姓名 .n);gets(name_b);r=getchar(); /* 输入姓名。 */ for(p=stu;pname,name_b)=0) /*判断是否存在该学生。 */ break;elseprintf( 不存在该学生 ,请按任意键返回 .n);getch();s();printf(你要删除的学生为:n); /*显示要删除的学生。*/printf(%-8ld%-8s%-8s,p-num,p-name,p-sex); for(j=0;jscorej);printf(%-8d,p-ave);printf(%-8d,p-sum);printf(你确定要删除吗?如是请输入y;不是请输入n.n);c=getchar();if(c=y|c=Y) /* 判断是否确定要删除。 */ for(;pstu+t;p+)*p=*(p+1);t-;if(c=n|N) z=0;printf(是否要继续删除:是请按y.不是请按n.n);d=getchar(); m=getchar(); b=getchar(); while(b=y|b=Y);printf( 请按任意键返回 .n); getch();s();(11) . 修改(详细对学生信息的修改)。void amend() /修改(详细对学生信息的修改) 。 long j; int i,z,r=t; char c,d,e,f,q,u,l,v,m,k; struct student *p; system(cls);printf( 请输入要修改学生的学号 :nn);scanf(%ld,&j); /* 输入要修改学生的学号。 */for(p=stu;pnum=j) /* 判断是否存在该学生。 */ break;else r-;if(r=0) printf( 你输入的学生不存在 ,请按任意键返回 .n);getch();s();printf(n 你要修改的学生为 :n);printf(%-8ld%-8s%-8s,p-num,p-name,p-sex); /* 将要修改的学生信息的显 示。 */for(j=0;jscorej);printf(%-8d,p-ave);printf(%-8d,p-sum);printf(nn是否要修改学号:是请按y;不是请按n.nn);l=getchar();并选怿是否进行c=getchar();if(c=y|c=Y)/* 以下是判断对学生的哪一个信息的修改,修改。 */printf( 请输入正确的学号: nn);scanf(%ld,&p-num);if(c=n|c=N)z=1;printf(是否要修改姓名:是请按 y;不是请按n.nn);q=getchar();d=getchar();m=getchar();if(d=y|d=Y) printf( 请输入正确的姓名: n); scanf(%s,p-name);u=getchar();if(d=n|c=N)z+;printf(n是否要修改性别:是请按y;不是请按n.nn); e=getchar(); k=getchar();if(e=y|e=Y)printf( 请输入正确的性别: n); scanf(%s,p-sex);if(e=N|e=n)z+;printf(n是否要修改三门成绩:是请按y;不是请按n.nn);f=getchar();if(f=y|f=Y)printf( 请输入正确的三门成绩: );for(i=0;iscorei);p-sum = p-score0 + p-score1 + p-score2; p-ave = p-sum/3; v=getchar();if(f=n|f=N) printf( 请按任意键返回 .n); getch(); s();(12) . 统计(将学生的信息全部显示出来,并判断哪个学生不极格和不极格的总人数,并将 它显示出来)。void preside()/统计(将学生的信息全部显示出来,并判断哪个学生不极格和不极格的总人数,并将它显示出来) 。 int i,j,o=0,b=10,r=60; struct student *p;system(cls);printf(ttt 学生信息统计 .nn);prin tf(%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8snn,学号,姓名,性别,高数 ,C 语言,英语,平均分,总分);for(p=stu;pnum,p-name,p-sex);for(j=0;jscorej);printf(%-8d,p-ave);printf(%-8d,p-sum);printf(nn);printf(nnn);prin tf(%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8snn,学号,姓名,性别,高数 ,C 语言,英语,平均分,总分);for(p=stu;pstu+t;p+)for(i=0;iscoreinum,p-name,p-sex); /* 以下是显示不极格的 学生。 */for(j=0;jscorej);printf(%-8d,p-ave);printf(%-8d,p-sum);printf(nn);break;if(b=10) printf(nn 班上所有的人都通过考试 .nn);elseif(b10) printf(n以上为不极格的同学,全班不极格的人数为:%d人.nn,o);/*显示不极格学生的总人数。 */printf(n);printf( 统计完成 ,请按任意键返回 .n);getch();s();(13) . 对学生信息的查找。void fint() /对学生信息的查找。 int i,m;char e;system(cls);printf(ttt 请选择用哪种方式进行查找 .n);printf(1.学号.n2.姓名.n);scanf(%d,&i);/* 输入是用姓名查找还是用学号查找。 */switch(i) case 1: finta(); break;case 2: e=getchar();fintb(); break;default: m=1;if(m=1)printf( 输入有误 ,请按任意键返回 .n);getch();s();(14) 查找函数(用学号进行查找)。void finta()/查找函数(用学号进行查找) 。 int i,j=t; long num_a;struct student *p; char a,b;system(cls);printf(ttt 请输入要查找的学生学号 :n);scanf(%ld,&num_a); /* 输入要查找学生的学号。 */for(p=stu;pnum=num_a) break; /* 判断该学生是否存在。 */ if(j=0)printf( 不存在该学生 ,请按任意键返回 .nn); a=getchar(); getch(); s();printf(n 你要查找的学生为 :nn); /* 以下对已查找出的学生的显示。 */printf(%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8snn,学号,姓名,性别,高 数,C语言,英语,平均分,总分);printf(%-8ld%-8s%-8s,p-num,p-name,p-sex); for(i=0;iscorei); printf(%-8d,p-ave);printf(%-8d,p-sum);printf(nn 查找完成 ,请按任意键返回 .);b=getchar();getch();s();(15) . 查找(用姓名查找)。void fintb()/查找(用姓名查找)。 char name_b20; int j=t,i; struct student *p; system(cls);printf(ttt 请输入要查找的学生姓名 :nn);gets(name_b);/*输入姓名。 */for(p=stu;pname,name_b)=0) break; /* 判断是否存在该学生。 */ if(j=0)printf( 不存在该学生 ,请按任意键返回 .n);getch();s();printf(n 你要查找的学生为 :nn); /* 显示已找出的学生。 */printf(%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8snn,学号,姓名,性别,高 数,C语言,英语,平均分,总分);printf(%-8ld%-8s%-8s,p-num,p-name,p-sex); for(i=0;iscorei); printf(%-8d,p-ave);printf(%-8d,p-sum);printf(nn 查找完成 ,请按任意键返回 .);getch();s();(16) .排序函数。void arrange()/排序函数。 int i; system(cls); printf(ttt 学生信息排序 .nn);printf(请选怿用哪种方式排序:1学号;2总分.n);scanf(%d,&i);/* 输入用哪种方式排序。 */switch(i)case 1: arranga(); break;case 2: arrangb(); break;default: printf( 输入有误 ,请按任意键返回 .n); getch(); s();(17) . 排序函数(按学号排序)。void arranga() /排序函数(按学号排序) 。 int i;struct student temp;struct student *p;system(cls);printf(ttt 按学号排序 .nn);/* 以下是对学生信息按学号排序。 */ for(i=1;it;i+)for(p=stu;pnumnum) temp=*p; *p=*(p+1); *(p+1)=temp;printf(%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8snn,学号,姓名,性别,高 数,C语言,英语,平均分,总分);for(p=stu;pnum,p-name,p-sex); for(i=0;iscorei); printf(%-8d,p-ave); printf(%-8dnn,p-sum);printf(nn 排序完成 ,请按任意键返回 .n);getch();s();(18) . 排序函数(按总分排序)。void arrangb()/排序函数(按总分排序) 。 int i;struct student temp;struct student *p;system(cls);printf( ttt 按总分排序 .nn);for(i=1;it;i+)for(p=stu;psumsum) temp=*p;*p=*(p+1);*(p+1)=temp;printf(%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8sn,学号,姓名,性别,高数 ,C 语言,英语,平均分,总分);for(p=stu;pnum,p-name,p-sex); for(i=0;iscorei); printf(%-8d,p-ave); printf(%-8d,p-sum); printf(n);printf(nn 排序完成 ,请按任意键返回 .n);getch();s();(19) . 学生信息的恢复(可恢复到当初输入的状态)。void resume()/学生信息的恢复(可恢复到当初输入的状态) 。FILE *fp;int i,j;struct student *p;system(cls);if(fp=fopen(stu list,rb)=NULL) /* 打开前面已保存的文件。 */printf(can not open the filen); return;for(i=0;ipl;i+)if(fread(&stui,sizeof(struct student),1,fp)!=1) /* 将文件信息读出。 */ printf(file write error.n);fclose(fp);prin tf(%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8snn,学号,姓名,性别,高数 ,C 语言,英语,平均分,总分);for(p=stu;pnum,p-name,p-sex);for(j=0;jscorej); printf(%-8d,p-ave); printf(%-8d,p-sum); printf(nn);printf(nn 学生信息已恢复到你当初输入的状态,按任意键返回 .n);getch();s();(20) . 保存函数void save()/保存函数。 FILE *fp;int i;system(cls);if(fp=fopen(student list.txt,w)=NULL) /* 打开要写入的文件。 */printf(can not open the filen); return;for(i=0;it;i+)if(fwrite(&stui,sizeof(struct student),1,fp)!=1) /* 将信息写入文件,将它保 存。*/printf(file write error.n);fclose(fp);printf(n 学生信息已保存成功 ,请到 C 文件保存的位置去核对.n);printf(n 按任意键返回 .);getch();s();(21). 退出函数。void output() /* 退出函数。 */ system(cls);exit(0);6. 总结刚开始接触 C 语言还以为很简单,不用花带多的时间就能学好,于是自己很 少去关注老师所谓的 C 语言习题。又因为对 C 语言的用法了解不到位,总认为 C 语言和我们平时用的软件占不上边, 从而认为 C 语言没太多的用处, 于是有点 轻视它的念头。在做完课程设计之后才了解到, C 语言不是我想像中的那么简单, 它是许多计算机学家们智慧的结晶, 是他们用自己的经验总结出来的一门技巧性 极强的高级语言, C 语言之中夹杂着许多技巧,实用性强,灵活性高,能实现很 多功能,在其中有许多规则,需要去遵守 .自从这次课程设计完了之后,我对 C 语言有了一个新的了解, 再也不是以前的马虎大意, 而是如今的小心翼翼, 从这 次课程设计中,确定受益,认识到 C 语言的重要性是我的一大喜事。如果想要学好 C 语言,你就必需掌握好课本,它的一些规则和应当注意的事 项。在写程序之前必需先把程序的整个内容在早搞上大意的列出来, 让自己有一 个清晰的思路。在编写的过程中要小心翼翼,认真,细心和耐心,因为错误就可 能是你的一个分心就把一个“ = =”写成“ =”,这样的错误系统有时是查不出来 的,如果是一个大的程序就很难找到这个错误了, 还有就是要对程序功能的模块 化,尽可能的把各个功能都独立开来, 以能对函数进行移植, 也方便在编译时找 出错误。 当在对程序检查错误时, 先对格式进检查, 因为格式的错误可以让系统 发现不了,但却输出不成功 ,再有是对一个一个的小功能函数检查,有是最需注 间的是回车键的接收, 如果上有一个输入, 下一个输入的是字符, 那就要注意回 车了,否则很多意外都会在你身上发生。以上就是我对这次课程设计总结得出的一些个人经验。7参考书目:作者:谭浩强 .书名:C 语言程序设计(第三版)出版社:清华大学出版社 .地点:北京.出版时间:1999 年 .
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划


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

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


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