C语言学生信息管理系统_第1页
C语言学生信息管理系统_第2页
C语言学生信息管理系统_第3页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目录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) . 统计(将学生的信息全

2、部显示出来,并判断哪个学生不极格和不极格的总人数,并将它显示出来)。16(13) .对学生信息的查找。 18(14) 查找函数(用学号进行查找)。 18(15) .查找(用姓名查找)。19(16) .排序函数。20(17) .排序函数(按学号排序)。21(18) .排序函数(按总分排序)。22(19) .学生信息的恢复(可恢复到当初输入的状态)。 23(20) .保存函数。 24(21) .退出函数。 246. 总结 257参考书目: 25241. 课程设计目的和要求 (一级标题)本课程设计是针对刚学完C语言的计算机类专业学生的课程设计教学。C 语言是学生的第一门计算机高级语言课程,课程结束后

3、,学生已经对C语言程序 设计有了较全面的了解, 但接触的基本上是为了阐述相关概念或知识点而列举的 示例,都是较小的程序, 程序功能单一, 因此缺乏整体观点和编写一个具体实用 的综合程序的思想。本课程设计的目的是要培养学生初步具有系统分析思想,并能利用开发工 具开发一个简单实用的综合程序。 为学生提供了一个既动手又动脑, 独立实践的 机会,将课本上的理论知识和实际有机的结合起来, 锻炼学生的分析解决实际问 题的能力,提高学生适应实际,实践编程的能力。要求学生以TC或VC为开发工具,完成一个小型应用软件的设计和开发。 进一步提高学生进行程序设计的能力。2. 课程的主要内容(1)选题( 2)进行系统

4、分析(3)程序设计实现( 4)系统测试(5)编写、上交课程设计报告3实践要求:(1)系统设计要实用。( 2)对系统进行功能模块分析、 控制模块分析正确, 要画出主要功能模块的 流程图。(3)编程简练,可用,界面友好,功能全面。(4)课程设计报告、流程图要清楚。4. 课程设计题目描述和要求本课程设计选题为“学生成绩管理系统”。系统主要功能是管理学生成绩信息,要求能实现学生成绩添加、删除、修改、查找,总分、平均分计算、按成绩排序等功能。经过分析,确定本系统结构图如下图所示:图1系统结构图5. 程序代码(1).文件头部,对函数要调用到的系统函数的声名.#include <stdio.h>

5、 /*将需要不得的函数包含在内*/#i nclude <stdlib.h>#in elude vconi o.h>#include <string.h>#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();/* 以下为定义无参函数 *

6、/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 fin

7、tb(); void arranga(); void arrangb();/*姓名查找 */*学号排序 */*总分排序 */(3) . 主函数 .void main()/*主函数 */int pasword;/*这义密码 */system("cls");printf("nnnnnnnnnttt 请输入密码,密码为: 123456.n");scanf("%d",&pasword);/* 输入密码 */if(pasword=123456)s();elseprintf(" 密码有误 ,请重新输入 .n");get

8、ch();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(&qu

9、ot;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

10、 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;

11、/* 定义变量和指向结构体的指针 变量。 */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);

12、printf("n");printf("性别:n"); gets(r); gets(p->sex); printf("n");printf("三门成绩:1.高数.2.C语言.3.英语.n");for(i=0;i<3;i+)seanf("%d",&p->seorei);p->sum = p->seore0 + p->seore1 + p->seore2;p->ave = p->sum/3;printf("nn是否要继续输入学生

13、信息,如果是请按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;i<N;i+)/*

14、 实现对学生信息读入文件,以便恢复到输入状态。 */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"); /* 以下实现显示。 */pr

15、intf("%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8snn",学号","姓名","性别","高数 ","C 语言","英语","平均分","总分");for(i=0;i<t;i+) printf("%-8ld%-8s%-8s",stui.num, , stui.sex); for(j=0;j<3;j+)printf("%-8d", st

16、ui.scorej);printf("%-8d", stui.ave);printf("%-8d", stui.sum); printf("nn");printf("n 按任意键返回 .n");getch();s();(7) . 增加函数 (增加学生的信息 ).void increase()/增加学生的信息。 int i,x; char a, w; struct student *p; system("cls");printf("ttt 你增加的信息会加到其它学生的后面 .n"

17、;);p=stu+t;do/* 以下是逐个学生信息的增加。 */printf("请输入第%d个学生的信息.nn",t+1);printf("学号:n"); scanf("%ld",&p->num);printf("n");printf("姓名:n");scanf("%s",p->name);printf("n");printf("性别:n");scanf("%s",p->sex);print

18、f("n");printf("三门成绩:1.高数.2.C语言.3.英语.n");for(i=0;i<3;i+)scanf("%d",&p->scorei);for(i=0;i<3;i+)p->sum = p->score0 + p->score1 + p->score2;p->ave = p->sum/3;a=getchar();printf("n是否要继续输入学生信息,如果是请按y;不是请按n.nn"); w=getchar();p+;t+;/*判断是

19、否继续对学生信息的增加。 */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.姓

20、名.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; /*定义变量,接收字符。 */ syste

21、m("cls");do printf(" 请输入要删除的学号 .n");scanf("%ld",&num_a); /* 输入学号。 */for(p=stu;p<stu+t;p+) /* 对学号判断。 */ if(p->num=num_a)break;elseprintf(" 不存在该学生 ,请按任意键返回 .n");getch();s();printf("你要删除的学生为:n"); /*显示要删除的信息。*/ printf("%-8ld%-8s%-8s",

22、p->num,p->name,p->sex); for(j=0;j<3;j+)printf("%-8d",p->scorej);printf("%-8d",p->ave);printf("%-8df",p->sum);printf("你确定要删除吗?如是请输入y;不是请输入n.n");x=getchar(); /* 接收回车键。 */c=getchar();if(c='y'|c='Y') /* 判断是否要删除该学生的信息。 */ for(;p

23、<stu+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()/删除函数(按姓名查找到后删除) 。

24、*/ 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;p<stu+t;p+)if(strcmp(p->name,name_b)=0) /*判断是否存在该学生。 */ break;elseprintf(" 不存在该学生 ,请按任意键返回 .n");getch();s();printf("

25、;你要删除的学生为:n"); /*显示要删除的学生。*/printf("%-8ld%-8s%-8s",p->num,p->name,p->sex); for(j=0;j<3;j+)printf("%-8d",p->scorej);printf("%-8d",p->ave);printf("%-8d",p->sum);printf("你确定要删除吗?如是请输入y;不是请输入n.n");c=getchar();if(c='y'|c=

26、'Y') /* 判断是否确定要删除。 */ for(;p<stu+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() /修改(详细对学生

27、信息的修改) 。 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;p<stu+t;p+)if(p->num=j) /* 判断是否存在该学生。 */ break;else r-;if(r=0) printf(" 你输入的学生不存在 ,请按任意键返回 .n&q

28、uot;);getch();s();printf("n 你要修改的学生为 :n");printf("%-8ld%-8s%-8s",p->num,p->name,p->sex); /* 将要修改的学生信息的显 示。 */for(j=0;j<3;j+)printf("%-8d",p->scorej);printf("%-8d",p->ave);printf("%-8d",p->sum);printf("nn是否要修改学号:是请按y;不是请按n.nn

29、");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'|

30、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=&

31、#39;N'|e='n')z+;printf("n是否要修改三门成绩:是请按y;不是请按n.nn");f=getchar();if(f='y'|f='Y')printf(" 请输入正确的三门成绩: ");for(i=0;i<3;i+)scanf("%d",&p->scorei);p->sum = p->score0 + p->score1 + p->score2; p->ave = p->sum/3; v=getchar()

32、;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(

33、"%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8snn",学号","姓名","性别","高数 ","C 语言","英语","平均分","总分");for(p=stu;p<stu+t;p+) /* 显示学生信息。 */ printf("%-8ld%-8s%-8s",p->num,p->name,p->sex);for(j=0;j<3;j+) printf(&quo

34、t;%-8d",p->scorej);printf("%-8d",p->ave);printf("%-8d",p->sum);printf("nn");printf("nnn");prin tf("%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8snn",学号","姓名","性别","高数 ","C 语言","英语","平均分"

35、;,"总分");for(p=stu;p<stu+t;p+)for(i=0;i<3;i+)if(p->scorei<r) /* 判断不极格的学生。 */ b=b-1;o=o+1;printf("%-8ld%-8s%-8s",p->num,p->name,p->sex); /* 以下是显示不极格的 学生。 */for(j=0;j<3;j+)printf("%-8d",p->scorej);printf("%-8d",p->ave);printf("%

36、-8d",p->sum);printf("nn");break;if(b=10) printf("nn 班上所有的人都通过考试 .nn");elseif(b<10) printf("n以上为不极格的同学,全班不极格的人数为:%d人.nn",o);/*显示不极格学生的总人数。 */printf("n");printf(" 统计完成 ,请按任意键返回 .n");getch();s();(13) . 对学生信息的查找。void fint() /对学生信息的查找。 int i,m;

37、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) 查找

38、函数(用学号进行查找)。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;p<stu+t;p+)j-; if(p->num=num_a) break; /* 判断该学生是否存在。 */ if(j=0)printf(" 不

39、存在该学生 ,请按任意键返回 .nn"); a=getchar(); getch(); s();printf("n 你要查找的学生为 :nn"); /* 以下对已查找出的学生的显示。 */printf("%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8snn",学号","姓名","性别","高 数","C语言","英语","平均分","总分");printf("%-8ld%

40、-8s%-8s",p->num,p->name,p->sex); for(i=0;i<3;i+)printf("%-8d",p->scorei); printf("%-8d",p->ave);printf("%-8d",p->sum);printf("nn 查找完成 ,请按任意键返回 .");b=getchar();getch();s();(15) . 查找(用姓名查找)。void fintb()/查找(用姓名查找)。 char name_b20; int j=t

41、,i; struct student *p; system("cls");printf("ttt 请输入要查找的学生姓名 :nn");gets(name_b);/*输入姓名。 */for(p=stu;p<stu+t;p+) j-; if(strcmp(p->name,name_b)=0) break; /* 判断是否存在该学生。 */ if(j=0)printf(" 不存在该学生 ,请按任意键返回 .n");getch();s();printf("n 你要查找的学生为 :nn"); /* 显示已找出的学

42、生。 */printf("%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8snn",学号","姓名","性别","高 数","C语言","英语","平均分","总分");printf("%-8ld%-8s%-8s",p->num,p->name,p->sex); for(i=0;i<3;i+)printf("%-8d",p->scorei);

43、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);/* 输入用哪种方式

44、排序。 */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");/* 以下是对学生信息按学号排序。 */ fo

45、r(i=1;i<t;i+)for(p=stu;p<stu+t-i;p+) if(p->num<(p+1)->num) temp=*p; *p=*(p+1); *(p+1)=temp;printf("%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8snn",学号","姓名","性别","高 数","C语言","英语","平均分","总分");for(p=stu;p<stu+t;p

46、+) /* 显示排好序的学生信息。 */ printf("%-8ld%-8s%-8s",p->num,p->name,p->sex); for(i=0;i<3;i+)printf("%-8d",p->scorei); printf("%-8d",p->ave); printf("%-8dnn",p->sum);printf("nn 排序完成 ,请按任意键返回 .n");getch();s();(18) . 排序函数(按总分排序)。void arrangb

47、()/排序函数(按总分排序) 。 int i;struct student temp;struct student *p;system("cls");printf(" ttt 按总分排序 .nn");for(i=1;i<t;i+)for(p=stu;p<stu+t-i;p+) /* 以下是按总分排序的过程。 */ if(p->sum<(p+1)->sum) temp=*p;*p=*(p+1);*(p+1)=temp;printf("%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8sn",学号

48、","姓名","性别","高数 ","C 语言","英语","平均分","总分");for(p=stu;p<stu+t;p+) /* 将排好序的学生信息显示出来。 */ printf("%-8ld%-8s%-8s",p->num,p->name,p->sex); for(i=0;i<3;i+)printf("%-8d",p->scorei); printf("%

49、-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&quo

50、t;)=NULL) /* 打开前面已保存的文件。 */printf("can not open the filen"); return;for(i=0;i<pl;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",学号","姓名","性别","高数 "

温馨提示

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

评论

0/150

提交评论