学生信息管理系统程序设计报告HUNAN UNIVERSITY程序设计训练报告学生姓名李乐平学生学号***********专业班级市场营销二班指导老师贺再红院长 (系主任) 马超群2012 年7 月 2 日目录一系统功能简介 (3)二本人完成的主要工作 (3)三实训分析 ............................... ..4四实训设计 ........... .. (5)五实训源程序代码和调试过程 (7)六实训总结 (11)附录1 (12)附录2 .................................12-22一系统功能简介.学生信息管理系统1, 进入主界面:要求输入密码,输入三次错误系统锁定。
2,输入记录:将学生的基本信息包括学号,姓名,性别,地区,分数等数据作为一个记录写入文件。
3,显示记录:显示学生的各项信息。
4,增加记录: 增加多个学生的基本信息,位于之前的学生后面。
5,删除记录: 删除学生信息。
6,修改记录:可以修改学生的任何一项基本信息。
7,查找记录:可以根据学生的学号查找并显示出学生的信息。
8,统计记录: 统计全班通过情况和不及格情况。
9,退出系统经过逐层逐块、不断细化、求精过程,编写程序并进行测试、验证,可以逐个模块地分开调试,并通过文件包含或用工程文件的形式进行逐步联合调试。
二本人完成的主要工作学生信息管理系统由我和龚晨同学共同完成。
主程序的编写由我们两个共同完成。
我负责的是:1、修改记录:可以修改学生的任何一项基本信息。
2、查找记录:可以根据学生的学号查找并显示出学生的信息。
3、统计记录: 统计全班通过情况和不及格情况。
4、退出系统三实训分析1、用结构化程序设计思想进行 C环境下程序设计。
2、设计一个管理系统,上机编程、调试并通过该管理系统中的各功能模块。
3、设计完成后,每人必须提交程序清单及关于程序设计、维护和使用方面的图文材料即程序设计说明书各一份。
4、基于结构化程序设计思想和所使用的 C语言开发环境与开发工具,并运用“软件工程”和“数据结构”中的有关概念和方法,针对具体设计题目和要求,分析功能要求,划分功能模块,用链表结构设计功能模块函数,以菜单方式调用相应功能模块来实现信息和数据处理四实训设计1、系统功能模块结构图本图书管理系统理由输入记录,显示记录,增加记录,删除记录,修改记录,统计数据,查找记录,七个大模块组成,其总体结构图如下:2.核心数据结构设计:1.头文件说明如:#include<string.h>#include<stdio.h>#include<stdlib.h>#include<conio.h>2,函数的编写定义结构类型;定义全局变量;定义、编写记录(数据)输入函数;定义、编写记录(数据)显示函数;定义、编写记录(数据)增加函数;定义、编写记录(数据)删除函数;定义、编写记录(数据)修改函数;定义、编写记录(数据)统计函数;定义、编写记录(数据)查找函数;3. 核心算法描述(程序流程图)主函数结构流程五实训源程序代码和调试过程(包括截图)1.1进入界面图一输入密码进行身份验证,输入三次则系统锁定。
1.2选择菜单图二主菜单接界面,选择数字执行相应功能。
1.3输入信息图三依次输入学生的各项基本信息。
1.4 显示信息图四可以显示录入及增加的各项信息。
1.5 增加信息图五根据需要添加新的学生信息。
1.6 删除记录图六删除信息。
1.7修改记录图七可修改任何学生的任何一项纪录。
1.8 统计信息图八对所有的信息进行统计显示不及格人数。
1.9 查找信息图九根据学号查找出需要的学生信息。
六实训结论通过C语言实训,让我加深了对C语言的了解,而不只是单单的在课本中学到的那些理论,平时乏味的课程,通过自己动手亲自编写,变的生动有趣,而在自己动手的过程中,出现的问题很多,比理论要难的多,当一个程序写完以后,经常会有很多错误而没法解决。
不过,通过几天的实训,逐渐积攒了一些经验,有些错误可以较快看出来。
这次实训有很大的收获,让我对C语言有了更深的认识,平时在课堂上学到的东西可以自己动手编写,将其转化成一些实用的技能。
如果是一个程序写完一处错误也没有,会有种成就感,于是兴趣就来了,兴趣来了,自然学的东西也就多了,能把理论变成实际的技能,让我对C语言有了浓厚的兴趣和更深层的认识。
C语言是一个有序的学习,条理很清楚,不是一个零散的知识,实际上所有的课程都如此,要从整体上把握。
不过通过实训我也知道了自己的不足,存在的很多问题。
希望能在以后的学习中,不断提高自己的能力,让问题越来越少。
附录1参考文献[1 ] 刘振安等.C程序设计课程设计.北京:机械工业出版社,2004.9[2] 谭浩强等.c语言程序设计.(第二版).清华大学出版社,2002,.8[3] 张引等著《C程序设计设计基础课程设计》浙江大学出版社2007[5] 曹哲等《C程序设计课程设计》机械工业出版社2010.7附录2源程序代码#include <stdio.h>#include <stdlib.h>#include <conio.h>#include <string.h>#define N 20struct student /*定义学生结构体*/{long num;char name[20];char sex[2];char address[20];int score[3];int sum;int ave;};struct student stu[N];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("\n\n\n\n\t\t\t欢迎进入学生信息管理系统\n"); /*初始界面输入验证密码*/for(i=1;i<=3;i++){printf("\n\n\t\t\t请输入密码:");scanf("%d",&password);if(password==000000){enter();break;}printf("error!please input again!");}printf("密码输入三次有误!系统锁定!");}void enter() /*进入主菜单函数*/{int choice,w;char k;system("cls");printf("\t\t\t学生信息管理系统\n\n");printf("\t\t1. 录入.\t2. 显示.\t3.增项.\t4.删项.\n\t\t5. 修改.\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("输入有误,按任意键重新选怿.\n");k=getchar();getch();enter();}}void input() /*学生信息录入的函数*/{int x,count=0,i;char w,r[20],o;struct student *p;p=stu;system("cls");printf("\t\t\t 学生信息的录入.\n");do{pl++;printf("请输入第%d 个学生的信息.\n\n",t);printf("学号:\n");scanf("%ld",&p->num);printf("姓名:\n");scanf("%s",&p->name);printf("\n");printf("性别:\n");gets(r);gets(&p->sex);printf("\n");printf("地区:\n");scanf("%s",&p->address);printf("\n");p rintf("三门成绩:1.语文.2.数学.3.英语.\n");for(i=0;i<3;i++)scanf("%d",&p->score[i]);p->sum = p->score[0] + p->score[1] + p->score[2];p->ave = p->sum/3;printf("\n\n 是否要继续输入学生信息,如果是请按y;不是请按n.\n");o=getchar();w=getchar();if(w=='y' || w=='Y'){t++;x=1;p++;}elsex=0;}while(x==1);if(w=='n' || w=='N')printf("按任意键返回.\n");getch();enter();}void display() /*显示学生信息*/{int i,j;system("cls");printf("\t\t\t 学生信息显示.\n\n");for(j=0;j<t;j++){printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n\n","学号","姓名","性别","地区","语文","数学","英语","平均分","总分");printf("%ld\t%s\t%s\t%s\t",stu[j].num,stu[j].name,stu[j].sex,stu[j].address);for(i=0;i<3;i++)printf("%d\t",stu[j].score[i]);printf("%d\t", stu[j].ave);printf("%d\t", stu[j].sum);printf("\n\n");}printf("\n 按任意键返回.\n");getch();enter();}void add() /*学生信息的增加*/{int i,x;char a, w;struct student *p;p=stu+t;system("cls");printf("\n\t\t\t增加学生信息.\n");do{printf("请输入第%d 个学生的信息.\n\n",t+1);printf("学号:\n");scanf("%ld",&p->num);printf("\n");printf("姓名:\n");scanf("%s",p->name);printf("\n");printf("性别:\n");scanf("%s",p->sex);printf("\n");printf("地区:\n"); scanf("%s",p->address);printf("\n");printf("三门成绩:1.语文.2.数学.3.英语.\n");for(i=0;i<3;i++)scanf("%d",&p->score[i]);for(i=0;i<3;i++)p->sum = p->score[0] + p->score[1] + p->score[2];p->ave = p->sum/3;a=getchar();printf("\n 是否要继续输入学生信息,如果是请按y;不是请按n.\n\n"); 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();enter();}}void delet() /*学生信息的删除*/{long b;int z,j;int r=t;char c,x;struct student *p;system("cls");printf("\n\t\t\t删除学生信息\n");printf(" 请输入要删除学生的学号:\n\n");scanf("%ld",&b);for(p=stu;p<stu+t;p++)if(p->num==b)break;elser--;if(r==0){printf("你要删除的学生不存在,请按任意键返回.\n");getch();enter();}printf("\n 你要删除的学生为:\n");printf("%-8s%-8s%-8s8s %-8s %-8s %-8s %-8s %-8s\ n\n ","学号","姓名","性别地区","语文","数学","英语","平均分","总分");printf("%-8ld%-8s%-8s%-8s",p->num,p->name,p->sex,p->address); for(j=0;j<3;j++)printf("%-8d",p->score[j]);printf("%-8d",p->ave);printf("%-8d",p->sum);printf("\n你确定要删除吗?如是请输入y;不是请输入n.\n");x=getchar();c=getchar();if(c=='y'||c=='Y'){for(p=stu;p<stu+t;p++) *p=*(p+1);t--;printf("系统已为删除信息,请按任意键返回. \ n " ) ;getch();enter();}if(c=='n'||c=='N'){printf("删除信息取消!按任意键返回.\n");getch();enter();}}void amend() /*学生信息的修改*/{long j;int i,z,r=t;charc,d,e,f,q,u,l,v,m,k,h1,h2,h3,h4;struct student *p;system("cls");printf("\n\t\t\t修改学生信息\n");printf(" 请输入要修改学生的学号:\n\n");scanf("%ld",&j);for(p=stu;p<stu+t;p++)if(p->num==j)break;elser--;if(r==0){printf("你输入的学生不存在,请按任意键返回.\n");getch();enter();}printf("\n 你要修改的学生为:\n");printf("%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8s\n\n","学姓名","性别","地区","语文","数学","英语","平均分","总分");printf ("%-8ld%-8s%-8s%-8s",p-,p->name,p->sex,p->address);for(j=0;j<3;j++)printf("%-8d",p->score[j]);printf("%-8d",p->ave);printf("%-8d",p->sum);printf("\n\n是否要修改学号:是请按y;不是请按n.\n\n");l=getchar();c=getchar();if(c=='y'||c=='Y'){printf("请输入正确的学号:\n\n");scanf("%ld",&p->num);}if(c=='n'||c=='N')z=1;printf("是否要修改姓名:是请按y;不是请按n.\n");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.\n\n");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.\n\n");h3=getchar();h4=getchar();if(h3=='y'||h3=='Y'){printf("请输入正确的地区:\n");scanf("%s",p->address);}if(h3=='N'||h3=='n')z++;printf("\n 是否要修改三门成绩:是请按y ;不是请按n . \ n \ n " ) ;f=getchar();if(f=='y'||f=='Y'){printf("请输入正确的三门成绩:");for(i=0;i<3;i++)scanf("%d",&p->score[i]);p->sum = p->score[0] + p->score[1] + p->score[2];p->ave = p->sum/3;}v=getchar();if(f=='n'||f=='N'){printf("请按任意键返回.\n");getch();。