1、 学生信息管理系统HUNAN UNIVERSITY程序设计训练报 告学生姓名 学生学号 专业班级 指导老师 院长 (系主任) 2013 年5 月 25 日目 录一 系统功能简介.。.。.。.。.。.。.。.。.。.。3二 本人完成的主要工作 .。.。.。.。.。.。.3三 实训分析 。.。.。.。.。.。.。.。 。4四 实训设计 。.。.。.。.。. 。.。.。.5五 实训源程序代码和调试过程 .。.。.。.。.。.。.。.7六 实训总结 。.。.。.。.。.。.。.。.。.。11附录1.。.。.。.。.。.。.。.。.。12附录2 。.。.。.。.。.。.。.。12-22一 系统功能简介。
2、学生信息管理系统1, 进入主界面:要求输入密码,输入三次错误系统锁定.2,输入记录:将学生的基本信息包括学号,姓名,性别,地区,分数等数据作为一个记录写入文件.3,显示记录:显示学生的各项信息 。4,增加记录: 增加多个学生的基本信息,位于之前的学生后面。5,删除记录: 删除学生信息。6,修改记录:可以修改学生的任何一项基本信息。7,查找记录:可以根据学生的学号查找并显示出学生的信息。8,统计记录: 统计全班通过情况和不及格情况。9,退出系统经过逐层逐块、不断细化、求精过程,编写程序并进行测试、验证,可以逐个模块地分开调试,并通过文件包含或用工程文件的形式进行逐步联合调试。二本人完成的主要工作
3、学生信息管理系统由我和龚晨同学共同完成。主程序的编写由我们两个共同完成。我负责的是:1、修改记录:可以修改学生的任何一项基本信息。2、查找记录:可以根据学生的学号查找并显示出学生的信息。3、统计记录: 统计全班通过情况和不及格情况。4、退出系统三 实训分析1、用结构化程序设计思想进行 C环境下程序设计。2、设计一个管理系统,上机编程、调试并通过该管理系统中的各功能模块。3、设计完成后,每人必须提交程序清单及关于程序设计、维护和使用方面的图文材料即程序设计说明书各一份。4、基于结构化程序设计思想和所使用的 C语言开发环境与开发工具,并运用“软件工程”和“数据结构”中的有关概念和方法,针对具体设计
4、题目和要求,分析功能要求,划分功能模块,用链表结构设计功能模块函数,以菜单方式调用相应功能模块来实现信息和数据处理四 实训设计1、系统功能模块结构图本图书管理系统理由输入记录,显示记录,增加记录,删除记录,修改记录,统计数据,查找记录,七个大模块组成,其总体结构图如下:学生信息管理系统增加记录模块 修改记录模块删除记录模块修改记录模块统计记录模块输入记录模块显示记录模块查找记录模块退出系统2。核心数据结构设计:1头文件说明如: includestring。hinclude#include#includeconio.h2,函数的编写定义结构类型;定义全局变量;定义、编写记录(数据)输入函数;定义
5、、编写记录(数据)显示函数;定义、编写记录(数据)增加函数;定义、编写记录(数据)删除函数;定义、编写记录(数据)修改函数;定义、编写记录(数据)统计函数;定义、编写记录(数据)查找函数;函数名称函数功能enter()进入函数input();输入函数display()显示函数add ()增加函数delet()删除函数amend()修改函数preside ();统计函数fint ();查找函数output();退出函数3。 核心算法描述(程序流程图) 主函数结构流程程序开始初始化、定义主菜单、分支菜单指针数组及变量读键盘按键的键值判断键值并弹出对应菜单N用户按了1-8键吗? N根据按键执行菜单选
6、项对应的函数 Y从被调用函数中返回并转移退出管理系统五实训源程序代码和调试过程(包括截图)1。1进入界面图一 输入密码进行身份验证,输入三次则系统锁定。1。2选择菜单图二 主菜单接界面,选择数字执行相应功能.1。3输入信息图三 依次输入学生的各项基本信息.1.4 显示信息图四 可以显示录入及增加的各项信息。1。5 增加信息图五 根据需要添加新的学生信息。1。6 删除记录图六 删除信息.1。7修改记录图七 可修改任何学生的任何一项纪录。1。8 统计信息图八 对所有的信息进行统计显示不及格人数.1。9 查找信息图九 根据学号查找出需要的学生信息.六实训结论通过C语言实训,让我加深了对C语言的了解,
7、而不只是单单的在课本中学到的那些理论,平时乏味的课程,通过自己动手亲自编写,变的生动有趣,而在自己动手的过程中,出现的问题很多,比理论要难的多,当一个程序写完以后,经常会有很多错误而没法解决。不过,通过几天的实训,逐渐积攒了一些经验,有些错误可以较快看出来。这次实训有很大的收获,让我对C语言有了更深的认识,平时在课堂上学到的东西可以自己动手编写,将其转化成一些实用的技能。如果是一个程序写完一处错误也没有,会有种成就感,于是兴趣就来了,兴趣来了,自然学的东西也就多了,能把理论变成实际的技能,让我对C语言有了浓厚的兴趣和更深层的认识。C语言是一个有序的学习,条理很清楚,不是一个零散的知识,实际上所
8、有的课程都如此,要从整体上把握。不过通过实训我也知道了自己的不足,存在的很多问题.希望能在以后的学习中,不断提高自己的能力,让问题越来越少。附录1参考文献1 刘振安等.C程序设计课程设计。北京:机械工业出版社,2004。92 谭浩强等.c语言程序设计。(第二版).清华大学出版社,2002,。83张引等著C程序设计设计基础课程设计浙江大学出版社 20075 曹哲等 C程序设计课程设计 机械工业出版社 2010.7附录2源程序代码#include stdio。h#include stdlib。h#include conio。hinclude define N 20struct student /定
9、义学生结构体/long num;char name20;char sex2;char address20;int score3;int sum;int ave; ;struct student stuN; int t=1,pl=0; void enter(); void input(); void display(); void add(); void delet(); void amend(); void preside(); void fint(); void output(); void main() int password;int i;printf(”nnnnttt欢迎进入学生信息管
10、理系统n”); /初始界面 输入验证密码*/for(i=1;i=3;i+)printf(”nnttt请输入密码:”);scanf(%d”,&password);if(password=000000)enter();break;printf(”error!please input again!”);printf(密码输入三次有误!系统锁定!”);void enter() /*进入主菜单函数*/ int choice,w;char k;system(”cls);printf(ttt学生信息管理系统nn”); printf(tt1. 录入.t2。 显示.t3。 增项。t4. 删项。ntt5。 修改。
11、t6. 统计.t7. 查找.t8.退出.n);printf(”n 输入序号执行相应功能:); scanf(d”,&choice); switch(choice) case 1: input();break; case 2: display(); break;case 3: add();break;case 4: delet();break;case 5: amend();break;case 6: preside(); break;case 7: fint(); break;case 8: output();break;default: w=1; if(w=1) printf(”输入有误,按任
12、意键重新选怿.n”); k=getchar(); getch(); enter(); void input() /*学生信息录入的函数/int x,count=0,i; char w,r20,o; struct student *p;p=stu;system(”cls);printf(”ttt 学生信息的录入.n); dopl+;printf(请输入第d 个学生的信息.nn”,t);printf(”学号:n); scanf(ld,pnum);printf(”姓名:n); scanf(s”,pname); printf(”n); printf(性别:n);gets(r); gets(&p-sex
13、); printf(”n);printf(”地区:n”);scanf(s,paddress);printf(n”);printf(三门成绩:1.语文。2.数学。3.英语.n”);for(i=0;i3;i+) scanf(”%d,pscorei);psum = p-score0 + pscore1 + p-score2;pave = psum/3;printf(nn 是否要继续输入学生信息,如果是请按 y;不是请按 n。n); o=getchar(); w=getchar(); if(w=y | w=Y) t+;x=1;p+; else x=0; while(x=1); if(w=n w=N)
14、printf(”按任意键返回。n);getch();enter(); void display() /显示学生信息/int i,j;system(”cls); printf(”ttt 学生信息显示。nn”); for(j=0;jt;j+) printf(”%st%st%st%stst%stststsnn”,”学号”,姓名”,性别”,”地区,”语文”,数学”,英语”,平均分”,”总分”); printf(ldt%ststst,stuj.num, stuj。name, stuj。sex,stuj.address); for(i=0;iname); printf(”n); printf(”性别:n)
15、; scanf(s”,p-sex); printf(”n); printf(”地区:n); scanf(”s,paddress); printf(”n); printf(”三门成绩:1。语文。2.数学。3。英语。n); for(i=0;i3;i+) scanf(d,&pscorei); for(i=0;isum = p-score0 + pscore1 + p-score2; p-ave = p-sum/3; a=getchar(); printf(n 是否要继续输入学生信息,如果是请按 y;不是请按 n。nn”); w=getchar(); p+; t+; if(w=yw=Y) x=1; i
16、f(w=nw=N) x=0; break; while(x=1) ; if(x=0) printf(n); printf(”按任意键返回。n”); getch(); enter(); void delet() /学生信息的删除/ long b; int z,j; int r=t; char c,x; struct student *p; system(”cls”); printf(nttt删除学生信息n); printf(” 请输入要删除学生的学号:nn”); scanf(”ld”,&b); for(p=stu;pstu+t;p+) if(p-num=b) break; else r; if(
17、r=0) printf(你要删除的学生不存在,请按任意键返回。n”); getch(); enter(); printf(”n 你要删除的学生为:n); printf(%8s%8s%-8s8s%8s%-8s8s8s-8snn”,”学号”,”姓名”,”性别”,地区,”语文 ,”数学”,”英语”,平均分,总分”); printf(”8ld8s8s8s”,pnum,p-name,psex,paddress); for(j=0;jscorej); printf(”-8d”,p-ave); printf(”%-8d”,p-sum); printf(”n你确定要删除吗?如是请输入 y;不是请输入 n。n)
18、; x=getchar(); c=getchar(); if(c=yc=Y) for(p=stu;pnum=j) break; else r-; if(r=0) printf(”你输入的学生不存在,请按任意键返回.n); getch(); enter(); printf(”n 你要修改的学生为:n”); printf(”%8s8s%8s-8s%-8s8s8s8s%-8snn,学号”,”姓名”,”性别”,地区”,”语文 ,”数学”,英语,”平均分”,”总分”); printf(%-8ld8s%8s8s”,pnum,pname,psex,paddress); for(j=0;j3;j+) prin
19、tf(”8d,p-scorej); printf(”%8d”,pave); printf(”%-8d”,psum); 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”);
20、scanf(s,pname); u=getchar(); if(d=nc=N) z+; printf(”n 是否要修改性别:是请按 y;不是请按n。nn); e=getchar(); k=getchar(); if(e=ye=Y) printf(请输入正确的性别:n); scanf(s”,p-sex); if(e=N|e=n) z+; printf(n 是否要修改地区:是请按 y;不是请按 n.nn”); h3=getchar(); h4=getchar(); if(h3=yh3=Y) printf(”请输入正确的地区:n); scanf(”s,paddress); if(h3=N|h3=n)
21、 z+; printf(n 是否要修改三门成绩:是请按 y;不是请按 n。nn); f=getchar(); if(f=y|f=Y) printf(”请输入正确的三门成绩:”); for(i=0;i3;i+) scanf(%d”,pscorei); psum = pscore0 + pscore1 + pscore2; pave = psum/3; v=getchar(); if(f=nf=N) printf(请按任意键返回。n”); getch(); enter(); void preside() /学生信息的统计/int i,j,o=0,b=10,r=60; struct student
22、*p; system(”cls”);printf(”nttt 学生信息统计。n);printf(”%8s%8s8s%-8s%-8s%8s8s%-8s8snn”,学号,”姓名”,性别”,”地区,”语文 ,”数学”,”英语”,”平均分”,总分”); for(p=stu;pname,psex,p-address); for(j=0;j3;j+) printf(8d,pscorej); printf(8d”,pave); printf(”8d,psum); printf(nn”); printf(”nnn”); for(p=stu;pstu+t;p+) for(i=0;isex,paddress);
23、for(j=0;j3;j+) printf(”8d”,p-scorej); printf(”8d”,pave); printf(”%8d,psum); printf(nn”); break; if(b=10) printf(”nn 班上所有的人都通过考试。nn); else if(b10)printf(”n 以上为不及格的同学,全班不及格的人数为:%d 人.nn”,o); printf(”n”); printf(统计完成,请按任意键返回。n”); getch(); enter(); void fint() /*查找学生信息/ int i,j=t; long num_a; struct stud
24、ent p; char a,b; system(cls”); printf(”nttt查找学生信息n); printf(ttt 请输入要查找的学生学号:n”); scanf(ld,&num_a); for(p=stu;pnum,pname,psex,paddress); for(i=0;i3;i+) printf(8d”,p-scorei); printf(8d,pave); printf(”8d,psum); printf(”nn 查找完成,请按任意键返回.); b=getchar(); getch(); enter(); void output() /退出系统/ system(cls”); exit(0); 第16页