c语言程序设计大作业学生信息管理系统
- 格式:docx
- 大小:38.54 KB
- 文档页数:6
基于C语言的学生信息管理系统的设计与实现目录1结论 (2)2关键技术 (3)2.1C#技术 (3)2.2SQ1server (3)2.3Visua1Studio (3)3系统分析 (4)3.1可行性分析 (4)3.1.1技术可行性 (4)3.1.2经济可行性 (4)3.1.3操作可行性 (4)3.1.4时间可行性 (4)3.2系统性能分析 (5)3.3系统用例分析 (5)4系统设计 (6)4.1系统结构设计 (6)4.2系统顺序图 (7)4.2.1登录模块顺序图 (7)4.2.2添加课程信息模块顺序图 (8)4.2.3添加学生信息模块顺序图 (8)424修改密码模块顺序图 (9)4.3数据库设计 (9)4.3.1数据库E-R图设计 (9)4.3.2数据库表设计 (10)5系统的实现 (12)5.1管理员模块实现 (12)5.1.1登录界面 (12)5.1.2后台管理主界面 (13)5.1.3管理员管理界面 (13)5.1.4学生管理界面 (14)5.1.5课程管理界面 (14)5.2用户模块实现 (15)5.2.1选择课程界面 (15)5.2.2课表信息界面 (15)5.2.3我的成绩单界面 (16)6系统测试 (16)6.1测试方法 (16)6.2测试目的 (17)6.3测试策略 (17)6.4测试分析 (18)6.4.1用户登录模块测试用例 (19)6.4.2修改密码模块测试用例 (19)6.4.3学生管理模块测试用例 (20)6.4.4课程管理模块测试用例 (20)6.5测试总、结 (21)总结 (21)参考文献 (22)1绪论自从人类迈入信息社会以来,各种电子科学技术飞速发展,人们得以应用的电子产品越来越多,也对电子科技产生了依赖性。
在人们的日常生活中,手机和电脑已经成为了必不可少的电子产品。
而人们对手机和电脑的依赖,是因为通过手机以及电脑,能够运用各种各样的系统,通过虚拟网络完成一系列的事项,十分省时且快捷口在如今这个电子科技发达的时代,构建一个学生信息管理系统,不仅让信息得到良好的储存条件,还更方便系统使用用户的操作,直接通过电脑,使用键盘就可以输入信息、保存信息、快速查找信息以及删除不必要的信息。
移通学院C语言程序设计报告书设计名称:学生成绩管理系统专业:指导老师:班级:姓名:学号:座号:时间一、实验目的1.在编辑应用程序过程中,逐步加深对C语言编程的理解;2.加强实践的能力,动手能力,同时进一步对所学的知识进行巩固;3.培养初步编程的能力,为以后的学习奠定基础;二、实验内容运用所学的C语言知识编辑一个应用程序:学习成绩管理系统三.系统软件环境:本程序主要运行在: Visual C++ 6.0Turbo C/C++ 3.0四.课程设计题目:学生成绩管理系统程序说明:有N个学生,每个学生的数据包含学号不重复、姓名、三门课的成绩及平均成绩,试设计一学生成绩管理系统,使之能提供以下功能:1主菜单2各菜单项功能①成绩录入:输入学生的学号、姓名及三门课的成绩;②成绩查询:按学号查询学生记录;③成绩统计:计算学生的平均分;根据学生的平均分高低,对学生的数据进行排序后输出;④退出系统:退出整个系统即主菜单;五.数据结构设计描述:↓int num; /定义学号,变量为整型/char name; /定义姓名,变量为字符型/int score; /定义课程的成绩,变量为整型/float average; /定义平均分,变量为浮点型/七.系统各函数的功能,、相互调用关系1.函数实现功能说明:1menu函数是定义一个菜单函数,其功能在于输出菜单界面供使用者选择;2input函数是定义用于输入学生信息;3select 函数是定义用于查询学生信息;包括学号、姓名及各科成绩;4statistics 函数计算学生的平均分;根据学生的平均分高低,对学生的数据进行排序输出;2.相互调用关系:Main函数调用menu函数;Menu 函数可以调用input 函数、select函数和statistics 函数八.心得体会C语言是一种较为基础和普遍的编程语言,应用相当广泛,这次课程设计的要求与C语言的广泛应用相比较还有很大的差距;我们对于C语言的理解和使用还处在一个初级的阶段,我们要想掌握它,要学习的还很多,同时要懂得创新,许多的编程方法都是人们一步一步总结出来的,我想我们也要努力拓展自己的思维,努力去寻求新的方法,以创造出更为完善的应用程序; 九.程序:include <stdio.h>include <stdlib.h>include <conio.h>define N 3 /学生人数/define M 3 /课程门数/struct student{int num; /学号/char name20; /姓名/int score3; /三门课成绩/float average;}stuN; /学生数/void input; /查询/void select; /统计/void menu;void input{int i,j;printf"\t\t①成绩录入\n\n";fori=0;i<N;i++{printf"请输入学号:";scanf"%d",&stui.num;printf"请输入姓名:";scanf"%s",&;forj=0;j<M;j++{printf"第%d门成绩的分数:",j+1;scanf"%d",&stui.scorej;}printf"\n\n";}printf"\n\n";printf"输入完毕按任意键返回主菜单";}/2.查询/void selectint no{int i;printf"学生%d号: \n",no; printf"学号: %d\n",stuno-1.num; printf"姓名: %s\n",;for i=0;i<M;i++{printf"第%d门课程的成绩为: ",i+1; printf"%d\n",stuno-1.scorei;}printf"\n按任意键返回主菜单";getch;}/3.统计/void statistics{float temp=0;int i=0;/学生成绩平均分/temp=0;printf"\t\t③成绩统计\n\n";forj=0;j<N;j++{fori=0;i<M;i++{temp=temp+stuj.scorei;}stuj.average=temp/N;printf"\n学生%s的成绩平均成绩为:",;printf"%0.2f分",stuj.average;temp=0;}/排序/for j=0;j<N;j++fori=0;i<N-j-1;i++ifstui.average<stui+1.average{ temp=stui.average;stui.average=stui+1.average;stui+1.average=temp;}printf"\n\n学生平均成绩前三名:";fori=0;i<3;i++{printf"\n第%d名:%0.2f分",i+1,stui.average;}printf"\n\n按任意键返回主菜单";getch;}void menu{ int num=0;int n=0;printf"\n\t\t\t学生成绩管理系统\n\n";printf"\n\t\t\t①成绩录入\n\t\t\t②成绩查询\n\t\t\t③成绩统计\n\t\t\t④退出系统\n";printf"\t\t\tchoose:";scanf"%d",#switchnum{case 1:system"cls";input;break;case 2:system"cls";printf"\t\t②成绩查询\n\n"; printf"请输入要查询的学生号1~3:";scanf"%d",&n;selectn;break;case 3:system"cls";statistics;break;case 4:exit0;default:;}}void main{while1{system"cls"; /清屏/menu;}}。
学生管理系统c语言简单版学生管理系统c语言简单版介绍:学生管理系统是一种用于管理学生信息的软件,它可以方便地对学生的基本信息、课程成绩等进行录入、查询、修改和删除等操作。
本文将介绍如何使用C语言编写一个简单的学生管理系统。
功能:1. 添加学生信息2. 查询学生信息3. 修改学生信息4. 删除学生信息5. 显示所有学生信息实现方法:1. 添加学生信息添加学生信息需要输入以下内容:姓名、性别、年龄、班级和电话号码。
我们可以定义一个结构体来存储这些信息,代码如下:```struct Student {char name[20];char sex[10];int age;char class[20];char phone[20];};```然后定义一个数组来存储多个学生的信息:```struct Student students[100];int count = 0; // 学生数量```接下来,我们可以编写一个函数来添加新的学生信息:```void addStudent() {struct Student student;printf("请输入姓名:");scanf("%s", );printf("请输入性别:");scanf("%s", student.sex);printf("请输入年龄:");scanf("%d", &student.age);printf("请输入班级:");scanf("%s", student.class);printf("请输入电话号码:");scanf("%s", student.phone);students[count++] = student; // 将新的学生信息存储到数组中 printf("添加成功!\n");}```2. 查询学生信息查询学生信息可以按照姓名或电话号码进行查询。
C语言程序设计实习报告学生信息管理系统C 语言课程设计题目:学生信息管理系统设计者:梁天江专业:机械设计制造及其自动化班级学号: 072084-31所属院系:机电学院指导教师:吴湘宁7月17日1.题目和要求:1.1问题提出与要求:学生成绩管理系统[要求]设计一个学生成绩管理系统,对在校某班学生几门课程的考试成绩进行统一管理。
每个学生记录包括学号、姓名、年龄、数学、英语、物理成绩,默认以学号为序存放。
(1)一个文件按以班为单位存储学生记录。
(2)将允许的操作分为六种A:插入一个新的学生记录(录入学生信息)B:修改学生记录C:删除一个学生记录D:登记成绩E:修改成绩F:浏览全班成绩(3)计算学生的总成绩(4)输出全班成绩表1.2需求分析.根据题目要求,由于学生信息是存放在文件中,因此应提供文件的输入,输出等操作;在程序中需要浏览学生的信息,应提供显示,查找,排序等操作;另外还应提供键盘式选择菜单实现功能选择.2.功能实现设计:2.1总体设计:分析系统:根据题目的需求分析,可将这个系统设计为六大模块(见下图):插入学生信息,修改,删除,登记,浏览,统计。
2.2详细设计:1、主函数主函数设计得比较简洁,只提供输入、功能处理和输出部分的函数调用。
其中各功能模块用菜单方式选择;其流程图如下:[程序]void main(){int a;do{printf("\t\t\t\t\n");printf("\t\t\t\t学生成绩管理系统\n");printf("\n");printf("\t\t\t作者:梁天江班级:072084-31 学号: 1004528\n"); printf("\t\t\t-------------------------------------------\n\n");printf("\t 1.插入新的学生记录\n");printf("\t 2.修改学生记录\n");printf("\t 3.删除学生记录\n");printf("\t 4.显示学生成绩和总分\n");printf("\t 5.浏览全班成绩\n");printf("\t 6.退出\n\n");。
题目:学生信息管理系统一、需求分析任务要求:自学C语言中有关链表及外部文件得内容,设计学生信息管理系统。
具体要求如下:◆建立学生信息,信息至少包括名字、性别、年龄、学号、系别、家庭信息等内容;◆能够提供添加、删除与修改学生信息等功能;◆能将通讯录保存在文件中;◆能够按指定方式输出学生信息.系统功能需求分析:★1、为存储学生信息,需定义一个结构体类型,成员名字、性别、年龄、学号、系别、家庭信息等,并建立链表,定义该结构体类型得指针,用于指向各结点;★ 2、分别建立具有添加、删除、修改、查询等功能得子函数,完成相应功能,对程序实现模块化。
这其中要用到对链表得删除、插入等知识。
删除时用一结构体指针指向链表得第一个结点,检查该节点得值就是否等于输入得要删除得学号,若相等就删除,不相等则后移指针,直至表尾。
插入时也要先找到相应结点,再添加.★3、为实现存储功能,需用到文件得相关函数,打开文件,将添加、修改或删除得信息存入磁盘中。
★4、为以表格得形式输出文件,宏定义格式化输出语句,指定输出学生信息。
二、概要设计系统总体设计框架:对程序进行模块化,建立添加、修改、删除、查找与显示功能得子函数,各子函数中运用链表存储数据。
从主函数开始执行,调用各个子函数,并运用文件相关知识将信息存入磁盘中。
系统功能模块图:三、详细设计主要功能模块得算法设计思路如下:1、查询通讯录信息(void chakan())(1)为开辟一个新单元(2)输入查询关键字:(3)读取保存得文件数据输入ASCLL字符:(4)在链表中寻找相应结点;(5)调用输出函数,输出结点信息.2、添加信息函数(void add())(1)定义指向结构体变量得指针;(2)移动指针,找到插入结点;(3)在要插入得结点输入信息;(4)调用保存函数,打开文件,保存输入信息。
3、删除信息函数(void del())(1)定义指向结构体变量得指针;(2)用指针检验链表中就是否有记录,若没记录,返回主函数;(3)根据要修改得编号查找要删除得结点;(4)修改链表,删除对应结点。
《C语言程序设计》课程大作业——学生成绩管理系统一、任务与目的本大作业要求学生对《学生成绩管理系统》进行分析、设计及编程实现。
要求该系统实现部门级(或班级)成绩管理的常用功能,界面友好。
通过大作业,促使学生专业技能得到综合训练,让学生了解软件开发基本技术和工作过程。
通过本系统的开发,同学要了解软件开发的整个过程,掌握软件开发的基本方法,提前培养同学们从事软件行业应具备的基本素质和能力,为以后的学习作一个铺垫。
二、系统开发步骤软件开发一般有以下步骤:1。
问题定义2。
可行性研究3。
需求分析(需求分析阶段)4。
总体设计5. 详细设计6。
编码及单元测试7. 综合测试8. 软件维护(安装调试阶段)其中1、2、3步可以整合为调研分析阶段,4、5、6、7步可以整合为项目实施阶段.根据本次课程设计的实际情况,我们着重进行系统设计和编码实施.该阶段主要工作有:1。
系统结构的总体设计决定系统的总体结构,包括整个系统分哪些部分,各部分之间有什么联系以及已确定的需求对这些组成部分如何分配等方面。
2。
数据结构定义定义软件处理的对象——类,定义数据处理流程.3.详细设计对各功能模块的功能定义,说明模块之间的调用关系与接口(参数).4。
编码及调试根据详细设计的要求,按照统一的要求和编码规范,用JAVA语言编码实现,同时负责每个模块的独立调试。
5.综合测试软件开发的后期是软件装配和综合测试。
软件测试一般有专业的测试人员,同时通过发布使用试用版(体验版)等方式让用户体验、测试。
在多次测试改进后,才正式发布.三、系统功能需求描述管理内容包括:学号、姓名、班级、五门课成绩。
主要功能有:添加、修改、删除、读出、写入、查找、排序、计算总分、平均分、分类汇总等。
具体包括:1. 输入学生的成绩信息,包含学号、姓名、性别等基本信息和各课成绩;2. 显示全部学生各科成绩信息;3. 对各科成绩统计分析(总分、平均分、最高分、最低分、及格率等);4。
C语⾔学⽣信息管理系统⼀、需求分析学⽣信息管理系统:学⽣信息管理有许多使⽤功能,使⽤⾮常普遍。
需要有的功能是输⼊、输出、查找、排序、删除和修改等。
⽤菜单实现,界⾯功能简洁明了,需要容错,考虑⼈性化的设计。
⼆、总体设计学⽣包含许多属性,考虑使⽤结构体来存储。
由于不确定学⽣⼈数,还有要对信息增加、修改、删除等,使⽤动态链表实现较为⽅便。
菜单的设计根据⽤户的输⼊来执⾏不同的函数,有的函数中还要包括⼦菜单。
总体选择⽤switch-case遇到的问题:学⽣信息管理系统最关键的就是录⼊信息,需要加容错解决:输⼊单独写⼀个函数遇到的问题:输⼊的学号不能重复解决:⽤⼀个数组放学号,如果已经存在就置1,未存在为0三、详细设计编写的函数清单函数调⽤关系图Student *add(Student *head);//录⼊信息该函数⽤来添加信息,⾥⾯调⽤了int input(Student *p)输⼊函数形参是链表的头指针,返回值是添加数据后的头指针Student* add(Student *head){Student *p1;while((p1=(Student *)malloc(LEN))&&input(p1)){while(a[p1->num-190400]){system("cls");print(head);printf("输⼊的学号%ld重复,请重新输⼊!\n",p1->num); input(p1);}a[p1->num-190400]=1;n++;if(head==NULL){head=p1;p1->next=NULL;}else{p1->next=head;head=p1;}system("cls");}system("cls");free(p1);return head;}View Codevoid search(Student *head);//查找信息形参是链表的头指针,返回值是void查找信息采⽤两种⽅式:按学号查找和按姓名查找调⽤查找菜单函数void search_menu();void search(Student *head){Student *p1=head;int choice=1;long num;char s[20];while(choice){search_menu();printf("请输⼊选择:");scanf("%d",&choice);if(choice==0)system("cls");break;}else if(choice==1){system("cls");p1=head;//如果不初始化,第⼆次查找会出错printf("请输⼊学号查找:");scanf("%ld",&num);while(p1->num!=num&&p1->next!=NULL){p1=p1->next;}if(p1->num==num){printf("找到了!\n");printf("学号姓名年龄性别\n");printf("%4ld %6s %7d %5c\n",p1->num,p1->name,p1->age,p1->sex); }else{system("cls");print(head);printf("学号:%ld不存在!\n",num);}}else if(choice==2){system("cls");p1=head;printf("请输⼊姓名查找:");scanf("%s",s);while(strcmp(p1->name,s)!=0&&p1->next!=NULL){p1=p1->next;}if(strcmp(p1->name,s)==0){printf("找到了!\n");printf("学号姓名年龄性别\n");printf("%4ld %6s %7d %5c\n",p1->num,p1->name,p1->age,p1->sex); }else{system("cls");print(head);printf("学⽣:%s不存在!\n",s);}}else{system("cls");printf("请根据菜单重新输⼊!\n");}}}View CodeStudent *del(Student *head);//删除信息删除⼀条信息,⽤到链表的删除操作形参是链表的头指针,返回值是删除数据后的头指针删除⽅式有两种:输⼊学号或姓名调⽤删除菜单函数:void del_menu();Student *del(Student *head){Student *p1=head,*p2;int choice=1;long num;char s[20];while(choice){del_menu();printf("请输⼊选择:");scanf("%d",&choice);if(choice==0){system("cls");break;}else if(choice==1){system("cls");if(head==NULL){printf("没有任何信息!\n");return head;}p1=head;printf("请输⼊要删除的学号:");scanf("%ld",&num);while(p1->num!=num&&p1->next!=NULL){p2=p1;p1=p1->next;}if(p1->num==num)//找到了要删除的数字{if(p1==head)//删除头结点head=p1->next;else//删除中间或尾结点{p2->next=p1->next;}a[p1->num-190400]=0;p1=p1->next;printf("删除成功!\n");n--;}else{printf("没找到要删除的学号%ld!请重新输⼊\n",num); }}else if(choice==2){system("cls");if(head==NULL){printf("没有任何信息!\n");return head;}p1=head;printf("请输⼊要删除的姓名:");scanf("%s",s);while(strcmp(p1->name,s)!=0&&p1->next!=NULL){p2=p1;}if(strcmp(p1->name,s)==0)//找到了要删除的数字{if(p1==head)//删除头结点head=p1->next;else//删除中间或尾结点{p2->next=p1->next;}a[p1->num-190400]=0;p1=p1->next;printf("删除成功!\n");n--;}else{printf("没找到要删除的姓名%s!请重新输⼊\n",s);}}else{system("cls");printf("请根据菜单重新输⼊!\n");}}return head;}View CodeStudent *modify(Student *head);//修改信息形参是链表的头指针,返回值是修改数据后的头指针先输⼊要修改的学号或姓名,找到之后再修改信息调⽤修改菜单函数:void modify_menu();Student *modify(Student *head){Student *p1=head;int choice,choice1;long num;char s[20];int age;char sex;if(head==NULL){printf("没有任何信息!\n");return head;}while(1){printf("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n"); printf("┃____________0.退出______________________________┃\n"); printf("┃____________1.输⼊要修改的学⽣的学号____________┃\n");printf("┃____________2.输⼊要修改的学⽣的姓名____________┃\n");printf("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n"); printf("请输⼊选择:");scanf("%d",&choice1);if(choice1==0){system("cls");return head;}else if(choice1==1){printf("要修改的学⽣的学号:");p1=head;while(p1->num!=num&&p1->next!=NULL){p1=p1->next;}if(p1->num==num){printf("当前信息:\n");printf("学号姓名年龄性别\n");printf("%4ld %6s %7d %5c\n",p1->num,p1->name,p1->age,p1->sex);while(1){modify_menu();printf("请输⼊选择:");scanf("%d",&choice);getchar();if(choice==0){system("cls");break;}switch(choice){case1:system("cls");a[num-190400]=0;//修改这个学号要置零printf("请输⼊修改后的学号:");scanf("%ld",&num);while(a[num-190400]){printf("输⼊的学号%ld已经存在,请重新输⼊!\n",num);printf("请输⼊修改后的学号:");scanf("%ld",&num);}a[num-190400]=1;//修改后要置1p1->num=num;printf("修改成功!\n");printf("学号姓名年龄性别\n");printf("%4ld %6s %7d %5c\n",p1->num,p1->name,p1->age,p1->sex);break;case2:system("cls");printf("请输⼊修改后的姓名:");gets(s);//getchar();strcpy(p1->name,s);printf("修改成功!\n");printf("学号姓名年龄性别\n");printf("%4ld %6s %7d %5c\n",p1->num,p1->name,p1->age,p1->sex);break;case3:system("cls");printf("请输⼊修改后的年龄:");scanf("%ld",&age);p1->age=age;printf("修改成功!\n");printf("学号姓名年龄性别\n");printf("%4ld %6s %7d %5c\n",p1->num,p1->name,p1->age,p1->sex);break;case4:system("cls");printf("请输⼊修改后的性别:");scanf("%c",&sex);p1->sex=sex;printf("修改成功!\n");printf("学号姓名年龄性别\n");printf("%4ld %6s %7d %5c\n",p1->num,p1->name,p1->age,p1->sex);default:system("cls");printf("请重新输⼊!\n");}}}else{system("cls");print(head);printf("没有学号%ld,请重新输⼊!\n",num);}}else if(choice1==2){printf("要修改的学⽣的姓名:");scanf("%s",s);p1=head;while(strcmp(p1->name,s)!=0&&p1->next!=NULL){p1=p1->next;}if(strcmp(p1->name,s)==0){printf("当前信息:\n");printf("学号姓名年龄性别\n");printf("%4ld %6s %7d %5c\n",p1->num,p1->name,p1->age,p1->sex);while(1){modify_menu();printf("请输⼊选择:");scanf("%d",&choice);getchar();if(choice==0){system("cls");break;}switch(choice){case1:system("cls");a[num-190400]=0;//修改这个学号要置零printf("请输⼊修改后的学号:");scanf("%ld",&num);while(a[num-190400]){printf("输⼊的学号%ld已经存在,请重新输⼊!\n",num);printf("请输⼊修改后的学号:");scanf("%ld",&num);}a[num-190400]=1;//修改后要置1p1->num=num;printf("修改成功!\n");printf("学号姓名年龄性别\n");printf("%4ld %6s %7d %5c\n",p1->num,p1->name,p1->age,p1->sex);break;case2:system("cls");printf("请输⼊修改后的姓名:");gets(s);//getchar();strcpy(p1->name,s);printf("修改成功!\n");printf("学号姓名年龄性别\n");printf("%4ld %6s %7d %5c\n",p1->num,p1->name,p1->age,p1->sex);break;printf("请输⼊修改后的年龄:");scanf("%ld",&age);p1->age=age;printf("修改成功!\n");printf("学号姓名年龄性别\n");printf("%4ld %6s %7d %5c\n",p1->num,p1->name,p1->age,p1->sex);break;case4:system("cls");printf("请输⼊修改后的性别:");scanf("%c",&sex);p1->sex=sex;printf("修改成功!\n");printf("学号姓名年龄性别\n");printf("%4ld %6s %7d %5c\n",p1->num,p1->name,p1->age,p1->sex);break;default:system("cls");printf("请重新输⼊!\n");}}}else{system("cls");print(head);printf("没有学⽣:%s,请重新输⼊!\n",s);}}else{printf("请根据菜单重新输⼊!\n");}}return head;}View CodeStudent *bubblesort(Student *head);//信息排序将学⽣信息按学号进⾏升序排序,暂时⽤的是冒泡排序,交换链表结点的值形参是链表的头指针,返回值是排序后的头指针调⽤了void swap(int *a,int *b);交换两个结点的值、void sort_menu();排序菜单、void print(Student *head);打印函数Student* bubblesort(Student* head){int choice=1;while(choice){sort_menu();printf("请输⼊选择:");scanf("%d",&choice);if(choice==0){system("cls");break;}else if(choice==1){if(head==NULL&&head->next==NULL)return head;Student* p=NULL;int flag=1;while(p!=head->next&&flag)flag=0;for(;q->next&&q->next!=p;q=q->next){if(q->num>q->next->num){swap(&q->num,&q->next->num);flag=1;}}p=q;}printf("排序后:\n");print(head);}else{system("cls");printf("请根据菜单重新输⼊!\n");}}return head;}View Codeint input(Student *p);//因为要输⼊的有很多,写⼀个输⼊函数,容错包含在这个函数⾥int input(Student *p){p->num=190400;printf("请输⼊学⽣信息(以输⼊学号0为终⽌):\n");printf("注:学号六位(190400-190449)、年龄0-30、性别(f\\m)\n");printf("学号:");scanf("%ld",&p->num);if(p->num==0)return0;while(p->num<190400||p->num>190449){printf("学号为6位(190400-190449),请重新输⼊!\n");scanf("%ld",&p->num);}getchar();printf("姓名:");gets(p->name);printf("年龄:");scanf("%d",&p->age);while(p->age<0||p->age>30){printf("年龄为0-30,请重新输⼊!\n");scanf("%d",&p->age);}getchar();printf("性别:");scanf("%c",&p->sex);while(p->sex!='f'&&p->sex!='m'){getchar();printf("性别输⼊为f\\m,请重新输⼊!\n");scanf("%c",&p->sex);}return p->num;}View Codevoid swap(int *a,int *b);//排序中⽤void swap(int *a,int *b){int t;t=*a;*a=*b;*b=t;}View Codevoid print(Student *head);//打印信息传⼊链表的头节点,将整个链表的信息打印void save(Student *head);//保存void save(Student *head){Student *p=head;FILE *fp;if((fp=fopen("stud.dat","a"))==NULL){printf("打开⽂件失败!\n");exit(0);}for(int i=0;i<n;i++){fwrite(p,LEN,1,fp);p=p->next;}fclose(fp);printf("保存成功!\n");}View Code采⽤⽂件的处理⽅式void menu();//主菜单为了让使⽤界⾯更加可观,采⽤了⼀点美化⽅式void menu(){printf("*********************菜单*************************\n");printf("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n"); printf("┃____________0.退出______________________________┃\n"); printf("┃____________1.录⼊学⽣信息______________________┃\n"); printf("┃____________2.保存学⽣信息______________________┃\n"); printf("┃____________3.浏览学⽣信息______________________┃\n"); printf("┃____________4.查询学⽣信息______________________┃\n"); printf("┃____________5.修改学⽣信息______________________┃\n"); printf("┃____________6.删除学⽣信息______________________┃\n"); printf("┃____________7.将学⽣信息排序____________________┃\n"); printf("┃ 8.帮助┃\n");printf("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n"); }View Code各种⼦菜单void search_menu();void del_menu();void modify_menu();void help_menu();void sort_menu();{printf("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n"); printf("┃____________0.退出______________________________┃\n"); printf("┃____________1.输⼊学号搜索______________________┃\n");printf("┃____________2.输⼊姓名搜索______________________┃\n");printf("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n"); }void del_menu(){printf("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n"); printf("┃____________0.退出______________________________┃\n"); printf("┃____________1.输⼊学号删除______________________┃\n");printf("┃____________2.输⼊姓名删除______________________┃\n");printf("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n"); }void modify_menu(){printf("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n"); printf("┃____________0.退出______________________________┃\n"); printf("┃____________1.修改学号__________________________┃\n"); printf("┃____________2.修改姓名__________________________┃\n"); printf("┃____________3.修改年龄__________________________┃\n"); printf("┃____________4.修改性别__________________________┃\n"); printf("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n"); }void help_menu(){printf("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n"); printf("┃____________友情提⽰____________________________┃\n"); printf("┃____________按照提⽰输⼊________________________┃\n"); printf("┃____________每输⼊⼀个信息按回车________________┃\n");printf("┃____________学号范围[190400,190449]_____________┃\n");printf("┃____________年龄范围[0,30]______________________┃\n");printf("┃____________性别输⼊f/m_________________________┃\n"); printf("┃____________学号输⼊不能重复____________________┃\n");printf("┃____________不要恶意输⼊________________________┃\n"); printf("┃每结束⼀个操作就要保存┃\n");printf("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n"); }void sort_menu(){printf("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n"); printf("┃____________0.退出______________________________┃\n"); printf("┃____________1.根据学号升序排序__________________┃\n");printf("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n"); }View Code四、程序运⾏结果测试与分析运⾏过程中执⾏不同的函数会到不同的界⾯,也就是清屏开始界⾯录⼊学⽣信息输⼊0就终⽌输⼊输⼊的学号重复就重新输⼊浏览学⽣信息查询学⽣信息修改学⽣信息当输⼊的学号不存在修改学号时,如果重复了,就提⽰重新输⼊删除学⽣信息将学⽣信息排序五、结论与⼼得第⼀次⾃⼰⼀个⼈做完⼀个简陋的学⽣管理系统,学到了很多(还是太菜了)。
HUNAN UNIVERSITY程序设计训练报告学生姓名学生学号专业班级指导老师院长 (系主任)2013 年 5 月25 日目录一系统功能简介 (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进入界面图一输入密码进行身份验证,输入三次则系统锁定。
C语言学生信息管理系统简介本文档介绍了一个基于C语言的学生信息管理系统的设计和实现。
该系统可以实现学生信息的添加、删除、修改和查询等功能,同时支持将学生信息保存到文件中,以便后续的读取和操作。
功能需求系统具备以下功能:1.添加学生信息:输入学生的姓名、年龄、性别等基本信息,并分配一个唯一的学号。
2.删除学生信息:根据学号删除指定学生的信息。
3.修改学生信息:根据学号修改指定学生的信息,可选择修改姓名、年龄、性别等内容。
4.查询学生信息:根据学号或姓名查询学生信息,并输出学生的基本信息。
5.保存学生信息:将所有学生的信息保存到文件中,以便下次系统启动时读取。
系统设计数据结构设计学生信息可以使用结构体来表示,定义如下:typedef struct {char name[50]; // 姓名int age; // 年龄char gender[10]; // 性别int id; // 学号} Student;功能设计系统的主界面提供以下功能选项:1. 添加学生信息2. 删除学生信息3. 修改学生信息4. 查询学生信息5. 保存学生信息0. 退出系统添加学生信息用户选择该功能后,系统提示用户输入学生的姓名、年龄、性别等信息,并自动生成一个唯一的学号。
系统将输入的学生信息保存在一个学生数组中。
删除学生信息用户选择该功能后,系统提示用户输入要删除的学生的学号。
系统在学生数组中查找对应学号的学生信息,并将其删除。
修改学生信息用户选择该功能后,系统提示用户输入要修改的学生的学号。
系统在学生数组中查找对应学号的学生信息,并提示用户选择要修改的内容(如姓名、年龄、性别),然后根据用户的输入修改相应的字段。
查询学生信息用户选择该功能后,系统提示用户输入要查询的学生的学号或姓名。
系统在学生数组中查找对应学号或姓名的学生信息,并输出学生的基本信息。
保存学生信息用户选择该功能后,系统将所有学生的信息保存到一个文件中,以便下次系统启动时读取。
一、概述
随着信息技术的不断发展和应用,计算机程序设计作为重要的基础课程,对学生的综合能力有着重要的培养作用。
在C语言程序设计课程中,大作业是检验学生对知识的掌握和应用能力的重要环节。
学生信
息管理系统作为一种常见的大作业题目,涉及到了文件操作、结构体、指针等多个知识点,对学生的理论知识掌握和实战能力都有一定的考验。
二、需求分析
学生信息管理系统是一个管理学生基本信息的软件,具有录入、查找、删除、修改等功能。
在设计学生信息管理系统的时候,首先要明确系
统的功能需求,并且考虑到系统的扩展性和健壮性。
1. 学生基本信息包括学号、尊称、性别、芳龄、专业等内容,系统应
具备录入学生信息的功能,并且能够将信息保存在文件中,方便下次
使用。
2. 用户可以通过查找功能根据学号或尊称查询学生信息,系统需要具
备高效的查找算法。
3. 可以对学生信息进行删除和修改操作,需要保证操作的准确性和安
全性。
4. 系统需要具备良好的用户界面,方便用户的操作和管理。
三、系统设计
在进行学生信息管理系统的设计时,需要考虑到系统的模块化和扩展性,将整个系统划分为多个模块,进行单独设计和测试。
1. 学生信息录入模块:负责接收用户输入的学生信息,并将信息写入文件中。
2. 学生信息查找模块:通过学号或尊称进行查找操作,需要设计高效的查找算法。
3. 学生信息删除模块:实现对学生信息的删除功能。
4. 学生信息修改模块:实现对学生信息的修改功能。
5. 用户界面设计:设计友好的用户界面,方便用户的操作和管理。
四、系统实现
在进行系统实现时,需要根据设计的模块进行逐一实现和测试,保证系统的稳定性和功能完整性。
1. 学生信息录入模块实现:接收用户输入的学生信息,并将信息写入文件。
2. 学生信息查找模块实现:设计高效的查找算法,并实现根据学号或尊称进行查找操作。
3. 学生信息删除模块实现:实现对学生信息的删除功能,并确保操作的准确性和安全性。
4. 学生信息修改模块实现:实现对学生信息的修改功能,保证信息的一致性。
5. 用户界面设计实现:设计友好的用户界面,提高系统的易用性和美
观性。
五、系统测试
在系统实现完成后,需要进行全面的测试,包括功能测试、性能测试、兼容性测试等,保证系统的稳定性和可靠性。
1. 功能测试:对系统的各个功能进行逐一测试,确保功能的完整和准确。
2. 性能测试:测试系统的响应速度和并发能力,保证系统的高效性。
3. 兼容性测试:测试系统在不同评台和环境下的兼容性,确保系统的
稳定性和健壮性。
六、总结
学生信息管理系统作为C语言程序设计的大作业,涉及到了多个知识
点和技术,对学生的综合能力有重要的培养作用。
通过设计和实现学
生信息管理系统,可以提高学生的动手能力和实践能力,为他们将来
的职业发展打下坚实的基础。
也需要老师和同学们多多交流,共同进步,创造更多的程序设计作品。
七、系统优化
在完成基本功能的实现后,我们还可以对学生信息管理系统进行进一
步的优化和改进,提高系统的性能和用户体验。
1. 数据结构优化:可以考虑使用更加高效的数据结构来存储学生信息,
例如采用哈希表来进行快速的查找操作,或者使用树结构来进行信息
的组织和管理。
2. 界面美化:可以进一步优化系统的用户界面,采用更加美观和直观
的设计风格,提高用户的操作体验。
3. 安全性加强:加入数据加密和安全认证机制,保护学生信息的安全
性和保密性。
4. 多评台适配:考虑将系统进行多评台的适配,使其能够在不同的操
作系统下运行,提高系统的灵活性和通用性。
以上是对学生信息管理系统的进一步优化和改进的建议,通过不断的
优化和改进,可以使系统更加完善和健壮。
八、实际应用
学生信息管理系统不仅仅是一种课程设计的作业或者实验,其实际应
用非常广泛。
无论是学校的学生管理系统,还是企业的员工信息管理
系统,都具有类似的功能和架构。
通过学习和设计学生信息管理系统,不仅可以提升学生的编程能力,还可以为以后的工作和生活积累宝贵
的经验。
在学校里,学生信息管理系统可以用于学生档案的管理,包括学生成绩、考勤情况、课程安排等内容,为学院和老师提供便利的数据管理
工具。
同时也可以为学生提供个性化的成绩查询和学习辅助服务,方
便他们更好地了解自己的学业情况。
在企业中,学生信息管理系统的思想可以应用于员工信息管理、考勤管理、薪资管理等诸多方面。
通过开发类似的信息管理系统,企业可以节省大量的人力物力成本,并且提高管理的效率和精度。
九、学习经验
在设计和实现学生信息管理系统的过程中,学生们可以获得很多宝贵的学习经验和编程技能。
1. 边学习边实践:通过实际的项目设计和实现,可以更深入地理解C 语言的知识点,例如文件操作、结构体、指针等内容。
2. 团队合作:在大作业的设计和实施过程中,学生们可以组成团队协作,相互学习和交流,提高团队合作和交流能力。
3. 程序设计思维:在系统的设计和实现过程中,可以培养学生的程序设计思维,提高解决问题的能力和方法论。
4. 项目管理能力:通过大作业的设计和实现,可以培养学生的项目管理能力,包括需求分析、设计规划、进度跟踪等方面的能力。
这些学习经验和编程技能,对于学生未来的学习和就业都将具有重要的意义和帮助。
十、结语
学生信息管理系统是C语言程序设计课程中一项重要的大作业,通过
设计和实现这样一个系统,学生既可以提高自己的动手能力和实践能力,又可以为未来的学习和工作打下坚实的基础。
学生也可以通过这样的大作业,获得宝贵的学习经验和编程技能,为自己未来的发展积累宝贵的财富。
希望学生们在程序设计的学习过程中能够充分发挥自己的想象力和创造力,设计出更加美观、实用和高效的程序作品,为计算机科学领域的发展做出更大的贡献。
也希望老师们能够关注学生的学习和成长,指导他们解决问题,提高能力,促进课程的进步和发展。