数据结构C语言课程设计任务书完整版--学生管理系统

合集下载

原创c语言+数据库 学生管理系统课程设计

原创c语言+数据库 学生管理系统课程设计

原创C语言+数据库学生管理系统课程设计一、引言学生管理系统是一种应用程序,旨在管理学生的基本信息、课程信息、成绩信息以及其他相关信息。

本文将介绍一个基于C语言和数据库的学生管理系统的课程设计。

二、系统设计学生管理系统主要分为以下几个模块:学生信息管理、课程信息管理、成绩管理和报告生成。

2.1 学生信息管理学生信息管理模块主要用于添加、修改、删除和查询学生的基本信息。

学生的基本信息包括学号、姓名、性别、年龄等。

利用数据库存储学生信息可以提高系统的效率和数据的安全性。

通过C语言与数据库的交互,可以实现对学生信息的增删改查操作。

2.2 课程信息管理课程信息管理模块用于添加、修改、删除和查询课程的相关信息。

每门课程有自己的课程编号、课程名称、上课地点、上课时间等。

同样地,课程信息也可以通过数据库进行存储和管理。

2.3 成绩管理成绩管理模块用于录入和查询学生的成绩信息。

每名学生可以选择多门课程,并获取相应的成绩。

成绩信息包括学生学号、课程编号、成绩等。

通过C语言与数据库的结合,可以方便地进行成绩的录入、修改和查询。

2.4 报告生成报告生成模块将学生的基本信息、课程信息和成绩信息综合起来,生成一份完整的报告。

该报告可以用于学校的教务管理、学生的评估等。

通过对数据库中的数据进行查询和整合,可以实现报告的自动生成。

三、技术实现在这个学生管理系统的课程设计中,我们将使用C语言作为编程语言,以及使用MySQL作为数据库管理系统。

具体的实现步骤如下:1.建立数据库首先,我们需要创建一个数据库,用于存储学生信息、课程信息和成绩信息。

可以使用MySQL命令行或者图形化界面工具创建数据库。

2.建立表格在数据库中创建相关的表格,用于存储学生信息、课程信息和成绩信息。

表格的列可以根据实际需要进行设计,例如学生表格可以包括学号、姓名、年龄等列。

3.连接数据库使用C语言编写程序,连接到MySQL数据库。

可以使用MySQL提供的C语言接口库,实现与数据库的连接。

c语言课程设计-任务书8-学生学籍管理系统

c语言课程设计-任务书8-学生学籍管理系统
(4)写出课程设计报告,具体要求见相关说明文档
进度
要求
1.布置设计题目,讲解要求和说明2014.1.6
2.确定设计任务,确定具体的功能,熟悉相关知识2014.1。6
3。按功能需求确定程序的主要模块2014.1.7
4。编程实现程序的功能2014.1.7–2014.1.8
5.调试并完善程序2014。1.8–2014.1.9
(3)删除功能:当在A.TXT中删除一个学生时,自动地在B。TXT中删除此人所有信息。
(4) 排序功能:能实现选择按综合成绩或实得学分升序或降序排序并显示数据。
(二)其它要求:
(1)只能使用C语言,源程序要有适当的注释,使程序容易阅读
(2) 采用文本菜单界面
(3) 学生可自动增加新功能模块(视情况可另外加分)
学号课程编号课程名称学分平时成绩 实验成绩 卷面成绩 综合成绩 实得学分
01A01大学物理 36678 82
02B03高等数学 478—1 90
01B03高等数学 445—1 88
02C01VF 36576 66
………………………
设计
参数
(一)功能要求及说明:
(1)数据录入功能: 对B.TXT进行数据录入,只录入每个学生的学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩共7个数据. 综合成绩、学分由程序根据条件自动算出。
2.若填写内容较多可另纸附后.
3。一题多名学生共用的,在设计内容、参数、要求等方面应有所区别。
教研室主任:易军指导教师:熊茜、许莎
2014年1月2日
学 号:xx 姓 名:xxxxx
课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分: xx
课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分: xx

数据结构课程设计学生管理系统

数据结构课程设计学生管理系统

#include<stdio.h>#include <malloc.h>#include<string.h>#include<stdlib.h>#include <io.h>//建立结构体struct student{long num;//学号char name[10];//姓名char sex[10];//性别char id[20];//身份证号char adress[80];//家庭地址long tel; //电话号码struct student * next;};/*此学生信息管理系统一共分为八个模块,分别为信息录入、信息浏览、信息查询、信息删除、信息修改、信息插入、信息保存、信息读取,其中信息保存和信息读取为隐藏模块。

系统界面清晰,操作简单,用户输入密码之后就可进入进行各种操作。

*/FILE *fp;//文件指针int count=0;//记录学生数量struct student *head;//学生信息录入struct student *input(){struct student *head=NULL; //定义头指针struct student *p1,*p2; //定义结点while(1){int choice;printf(" |------------------| \n");printf(" | 【1】录入学生信息| \n");printf(" | 【0】退出| \n");printf(" |------------------| \n");printf(" 请输入你的选择:");scanf("%d",&choice);if(choice==1){printf(" *****学生信息录入模块***** \n");p1=(struct student *)malloc(sizeof(struct student));//开辟一个新结点printf(" 请输入学号: ");scanf("%ld",&p1->num);printf(" 请输入姓名: ");scanf("%s",p1->name);printf(" 请输入性别:");scanf("%s",p1->sex);printf(" 请输入身份证号:");scanf("%s",&p1->id);printf(" 请输入家庭住址:");scanf("%s",p1->adress);printf(" 请输入手机号:");scanf("%ld",&p1->tel );count++;if(head==NULL){head=p1;}elsep2->next=p1;//p1指向下一个结点p2=p1;}else if(choice==0)break;elseprintf(" 选择错误!请重新选择!\n");}p1->next=NULL;return head;}//学生信息浏览void displayall(struct student *head){struct student *p1=head;if(head==NULL){printf("无学生信息!\n");return;}else{printf("总共有%d个学生!\n",count);printf(" 所有学生信息为:\n");printf("***************************************************************\n");while(p1!=NULL){printf("\n学号:%ld\n姓名:%s\n性别:%s\n身份证号:%s\n家庭住址:%s\n手机号:%ld\n\n", p1->num, p1->name,p1->sex,p1->id,p1->adress,p1->tel);p1=p1->next;}}}void display(struct student *p1){{printf(" 该学生信息为:\n");printf("***************************************************************\n");printf(" \n学号\t姓名\t性别\t身份证号\t家庭住址\t手机号\n");printf("%ld\t%s\t%s\t%s\t\t%s\t\t%ld\n", p1->num,p1->name,p1->sex,p1->id,p1->adress,p1->tel); }}//查询学生信息struct student *query(struct student *head){ struct student *p1;int choice;int num;char name[10];if(head==NULL) {printf("链表为空或无学生记录!\n");return head;}while(1){printf(" |---------------|\n");printf(" |【1】按学号查询|\n");printf(" |【2】按姓名查询|\n");printf(" |【0】退出|\n");printf(" |---------------|\n");printf(" 请输入你的选择:");scanf("%d",&choice);if(choice==1){printf(" 请输入要查询学生的学号:"); scanf("%ld", &num);p1=head;while(1){if(num == p1->num) {printf(" *****找到该学生信息*****\n"); display(p1);break;}if(p1->next==NULL){printf(" 没有学号为%d的学生信息!\n",num); break;}else p1=p1->next;}}else if(choice==2){printf(" 请输入要查询学生的姓名:"); scanf("%s", name);p1=head;if(strcmp(name, p1->name)==0){printf(" *****找到该学生信息*****\n");}else{while((strcmp(name, p1->name)!=0)&& p1->next!=NULL) { p1=p1->next;if(strcmp(name, p1->name)==0){printf(" *****找到该学生信息*****\n");display(p1);break;}elseprintf(" 没有姓名为%s的学生!\n",name);}}}else if(choice==0)break;elseprintf(" 选择错误!\n");}return (p1);} //删除学生信息struct student *del(struct student *head){struct student * p1, * p2;int num,choice;if(head==NULL){printf(" 链表为空或无学生记录!\n");return head;}printf(" 请输入要删除的学生学号:");scanf("%ld",&num);p1=head;while(1){if(num == p1->num) {printf(" ****找到该学生信息****\n");display(p1);break;}if(p1->next==NULL){printf(" 没有学号为%d的学生信息!\n",num);return head;}else{p2=p1;}}printf(" |-------------|\n");printf(" |【1】确认删除|\n");printf(" |【0】返回|\n");printf(" |-------------|\n");printf(" 请输入你的选择:");scanf("%d",&choice);if(choice==1){count--;if(p1 == head)head=p1->next;elsep2->next=p1->next;free(p1);printf(" 该学生信息已删除!\n");}else if(choice==0)return head;elseprintf("无效选择,请重新输入!");return head;}//修改学生信息struct student *change(struct student *head){ struct student *p1,*p2;int choice;long num;int flog;if(head==NULL){printf(" 链表为空或无学生记录!\n"); return head;}printf(" 请输入要修改的学生的学号:"); scanf("%ld",&num);p1=head;while(1){if(num == p1->num) {flog=1;break;}if(p1->next==NULL){flog=0;break;}else{p2=p1;p1=p1->next;}}if(flog==0){printf(" 没有学号为%d的学生信息!\n",num); }else if(flog==1){printf(" ****找到该学生信息****\n"); display(p1);while(1){printf(" |**********************|\n");printf(" |【1】修改姓名|\n");printf(" |【2】修改性别|\n");printf(" |【3】修改身份证号|\n");printf(" |【4】修改家庭住址|\n");printf(" |【5】修改电话号码|\n");printf(" |【0】退出|\n");printf(" |**********************|\n");printf(" 请输入你的选择:");scanf("%d",&choice);switch(choice){case 1:{printf(" 请输入修改后的姓名:");scanf("%s",p1->name);break;}case 2:{printf(" 请输入修改后的性别:");scanf("%s",p1->sex);break;}case 3:{printf(" 请输入修改后的身份证号:"); scanf("%s",&p1->id);break;}case 4:{printf(" 请输入修改后的家庭住址:"); scanf("%s",p1->adress);break;}case 5:{printf(" 请输入修改后的电话号码:");scanf("%ld",&p1->tel);break;}case 0:return head;default:printf(" 无效选择,请重新输入!\n");}}}return head;}//插入一个学生信息struct student *insert(struct student *head){struct student *p1,*p2,*insertstu;int place,choice,mark=0,num=0;if(head==NULL){printf(" 信息为空请选择信息录入!\n");return head;}while(1){printf(" |-------------|\n");printf(" |【1】继续|\n");printf(" |【0】退出|\n");printf(" |-------------|\n");printf(" 请输入你的选择:");scanf("%d",&choice);if(choice==1){insertstu=(struct student *)malloc(sizeof(struct student));displayall(head);printf(" 请输入要插入的位置:");scanf("%d",&place);if(place==1){mark=1;insertstu->next=head;head=insertstu;}else{for(p2=p1=head,num=1;p1->next !=NULL;p2=p1,p1=p1->next,num++){ if(num==place){mark=1;insertstu->next=p1;p2->next=insertstu;break;}}if(place==num){mark=1;insertstu->next=p1;p2->next=insertstu;}else if(place==num+1){mark=1;p1->next=insertstu;insertstu->next=NULL;}else if(place>num+1){printf(" 超出插入范围,请核对!\n"); continue;}}if(mark==1){printf(" 请输入要插入的学生信息!\n"); printf(" 请输入学号:");scanf("%ld",&insertstu->num);printf(" 请输入姓名:");scanf("%s",insertstu->name);printf(" 请输入性别:");scanf("%s",insertstu->sex);printf(" 请输入身份证号:");scanf("%s",&insertstu->id);printf(" 请输入家庭住址:");scanf("%s",insertstu->adress);printf(" 请输入手机号:");scanf("%ld",&insertstu->tel );count++;display(insertstu);}}else if(choice==0)break;elseprintf("无效选择,请重新输入!\n");}return head;}//学生信息保存int SaveStudent(struct student *head){struct student *p1;p1=head;if((fp=fopen("student.txt","w+"))==NULL){printf("文件打开失败!\n");exit(0);}fprintf(fp,"%d\n",count);fprintf(fp,"学号\t姓名\t性别\t身份证号\t家庭住址\t手机号\n");while(p1!=NULL){fprintf(fp,"%ld\t%s\t%s\t%s\t\t%s\t\t%ld\n", p1->num, p1->name,p1->sex,p1->id,p1->adress,p1->tel);p1=p1->next;}return 1;fclose(fp);}void freeAll(struct student *head){struct student *p1, *p2;p1=p2=head;while(p1){p2=p1->next;free(p1);p1=p2;}}struct student *LoadStudent(){struct student *head;struct student *p1, *p2;fp = fopen("student.txt", "r+");if (!fp){printf("文件打开错误!\n");exit(0);}fscanf(fp,"%d\n", &count);fscanf(fp, "学号\t姓名\t性别\t身份证号\t家庭住址\t手机号\n");head=p1=p2=(struct student *)malloc(sizeof(struct student));fscanf(fp,"%ld%s%s%s%s%ld\n", &p1->num, p1->name,p1->sex,&p1->id,p1->adress,&p1->tel); while(!feof(fp)){p1=(struct student *)malloc(sizeof(struct student));fscanf(fp,"%ld%s%s%s%s%ld\n", &p1->num, p1->name,p1->sex,&p1->id,p1->adress,&p1->tel); p2->next=p1;p2=p1;}p2->next = NULL;fclose(fp);return head;}//主菜单void menu(struct student *head){int n;while(1){int choice;printf(" |*****学生信息系统*****|\n");printf(" |**********************|\n");printf(" |【1】录入学生信息|\n");printf(" |【2】浏览学生信息|\n");printf(" |【3】查询学生信息|\n");printf(" |【4】删除学生信息|\n");printf(" |【5】修改学生信息|\n");printf(" |【6】插入学生信息|\n");printf(" |【0】退出系统|\n");printf(" |**********************|\n");printf(" 请输入你的选择:");scanf("%d",&choice);switch(choice){case 1:{if(head==NULL){head=input();}else{head=insert(head);}break;}case 2:{displayall(head);break;}case 3:{query(head);break;}head=del(head);break;}case 5:{change(head);break;}case 6:{head=insert(head);break;}case 0:{n=SaveStudent(head);freeAll(head);printf("信息已成功保存!\n");return;}default:printf("无效选项,请重新输入!\n");}}}//欢迎界面void welcome(){int choice;printf(" ************************\n"); printf(" * *\n");printf(" * 欢迎使用学生信息系统*\n"); printf(" * *\n");printf(" ************************\n"); printf(" * *\n");printf(" ************************\n"); printf(" |【1】继续|\n");printf(" |【0】退出|\n");printf(" |------------|\n");printf(" 请输入你的选择:");scanf("%d",&choice);system("cls");if(choice==1){if((fp=fopen("student.txt","r+"))==NULL){ menu(head);}head=LoadStudent();menu(head);}}else{return;}}//程序入口void main(){char userName[9];char userPWD[7];int i;for(i=0;i<3;i++){printf("\n\n\n\n\n\n\n");printf("\n请输入您的用户名:");scanf("%s", userName);printf("\n请输入您的密码:");scanf("%s", userPWD);if ((strcmp(userName,"123")==0) && (strcmp(userPWD,"123")==0)){ printf("用户名和密码输入正确!\n");system("cls");//用户名和密码正确,显示欢迎菜单welcome();break;}else{if(i<2){system("cls");//用户名或密码错误,提示用户重新输入printf("用户名或密码错误,请重新输入!");}else{system("cls");//连续3次输错用户名或密码,退出系统。

数据结构课程设计学生信息管理系统完整版

数据结构课程设计学生信息管理系统完整版

数据结构课程设计学生信息管理系统HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】题目2.学生信息管理系统一、课程设计目的1.数据结构课程设计是综合运用数据结构课程中学到的几种典型数据结构,以及程序设计语言(C语言),自行实现一个较为完整的应用系统的设计与开发2.通过课程设计,自己通过系统分析、系统设计、编程调试,写实验报告等环节,进一步掌握应用系统设计的方法和步骤,灵活运用并深刻理解典型数据结构在软件开发中的应用。

3.学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力。

学生信息管理系统:(1)熟练掌握链表存储结构及其建立过程和常用操作;(3)学会自己调试程序的方法并掌握一定的技巧二、课程设计内容建立学生信息管理系统,通过链表实现对学生信息的输入,查找,删除,插入和排序等操作。

三、需求分析1.每位学生的信息有:学号,姓名,性别,出生日期,E-mile,电话,c成绩,数学成绩等,用链表对学生的信息进行存储。

2.全部数据可以只放在内存中;3.系统能实现的操作和功能如下:a) 输入学生信息:对不同学生分别输出下列信息:学号,姓名,性别,出生日期,E-mile,电话,c成绩,数学成绩等。

b) 查找学生信息:根据学生的学号或姓名对学生的信息进行查找。

c) 删除学生信息:删除某个学生的所有信息。

d) 插入学生信息:将某个学生的信息插入到已经输入的信息中。

e) 显示学生信息:将所有学生的信息显示出来。

f) 排序:将所有学生按某个学科的成绩依次排序。

四、概要设计1.系统结构图(功能模块图)2.功能模块说明①.输入学生信息,creat()函数:建立单向链表,组织循环,将学生的信息依次录入。

②:查找学生信息:a.按学号查找,find1()函数;b.按姓名查找,find2()函数;③.删除学生信息,del()函数:建立指针,在链表中寻找要删除信息的学生的学号,找到后p->next=p->next->next,将其删除。

C语言课程设计学生信息管理系统方案

C语言课程设计学生信息管理系统方案

c语言及数据结构与算法课程设计题目 :学生信息管理系统专业:姓名:学号:同组其他学生 ( 学号 ) :2021年月日目录一、需求解析. (3)二、整体设计. (4)三、详细设计. (5)四、调试与测试. (6)五、测试结果. (7)六、用户手册. (9)七、附录 (9)一、需求解析每年九月份都有大量再生抵达学校报道,使学校管理学生工作量增大,为此我们设计一学生信息管理系统,学生信息包括:学号,,年龄,性别,出生年月,地址,, E-mail 等。

使之能供应予下功能:〔1〕系统以菜单方式工作〔2〕学生信息录入功能 --- 输入〔3〕学生信息阅读功能 --- 输出〔4〕盘问、排序功能 --- 算法按学号盘问、按盘问、学生信息的删除与修改〔可选项〕二、整体设计组成框图主菜单欢送界面录入按姓名删除主函数盘问按学号阅读退出更正流程图开始密码可否正确Y主菜单1 录入学生信息2 阅读学生信息3----盘问学生信息删除4----删除学生信息5----更正学生信息0----退出系统阅读更正退出结束录入开始申请新空间输入各项数据显示数据结束N重新输入Y密码可否正确录入盘问阅读开始指针 p 指向头结点输出指针的数据P=p->nextNP==NULL?Y结束盘问更正 &删除输入姓名或学号输入要删除或修改的学号P=p->next P 指针的学号与姓名可否与输N P 指针的学号N 入的相同?与输入的可否相同YY输出数据更正p 的各项数据或将p=p->next结束结束三、详细设计主函数经过在 while 循环结构中嵌入switch 分支结构实现操作选择功能。

(1〕 Record 录入函数建立一个包括学生全部信息的结构体,申请空间,其指针为 p0,存入学生各项对应的数据。

(2〕 Insert 插入函数 :按输入的数据储藏在一个 stu 种类的指针里,假设原来链表里没有元素,那么将此作为第一个元素;假设原来的链表里有元素,那么将指向头结点指针储藏的学号与头指针下一个的学号大小进行比较,小的在前大的在后,此后指向头结点处...移,进行比较,直到尾结点为止。

学生管理系统(数据结构课程设计之完整代码)

学生管理系统(数据结构课程设计之完整代码)

数据结构课程设计学生信息管理系统C语言编写仅供参考:#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>#define LEN sizeof(LNode)typedef struct LNode{//用于存放学生信息节点int stuNumber;char telenum[50];int age;char chass[50];char deptName[50];/*char zhuanYe[50];char adress[50];*/char name[20];struct LNode *next;}LNode,*Link;//****************创建链表结点************************************************************************** Link createLink(Link L){ //初始化定义函数,声明变量void inserStu(Link L,Link Elem);//定义插入函数int count(Link L);int temp;temp=count(L);printf("节点个数为%d:\n",temp);Link p;int num=1, stuNumber;char telenum[50];char name[20];int age;/* char deptName[50];char adress[50];char zhuanYe[50];*/char chass[50];//开始输出学生信息while(1){printf("请输入学生的信息:学号,姓名,年龄,班级,院系,专业,家庭住址,电话号码\n");printf("学号输入负数结束!\n");printf("请输入学号%d: ",num);scanf("%10d",&stuNumber);if(stuNumber<0) {break;}printf("请输入姓名%d: ",num);getchar();gets(name);printf("请输入年龄%d: ",num);scanf("%d",&age);printf("请输入班级%d: ",num);getchar();gets(chass);printf("请输入电话号码: ",num);getchar();gets(telenum);printf("请输入院系%d: ",num);getchar();gets(deptName);*/if(stuNumber>=0){p=(Link)malloc(LEN);p->stuNumber=stuNumber;strcpy(p->chass,chass);/* strcpy(p->deptName,deptName);*/p->age=age;strcpy(p->telenum,telenum);strcpy(p->name,name);//插入新结点inserStu(L,p);num++;}}return (L);}//******************打印头结点为L的学生记录********************************************************void printList(Link L){printf("\n*********************学号,姓名,年龄,班级,电话号码**************************\n");printf("\n 学号姓名年龄专业班级电话号码\n");int n=1;Link p=L;int count(Link L);int temp;temp=count(L);//结点个数:if(temp==0)printf("系统中没有元素\n");//判断学生管理系统中有无信息elsewhile(p->next!=NULL){printf("%2d %-9d",n,p->next->stuNumber);printf("%-8s %-5d %-12s %s \n",p->next->name, p->next->age,p->next->chass,p->next->telenum/*p->next->deptName*/);//首个字符打印不出来p= p->next;n++;}printf("\n****************************************************************** *****************\n");return;}//********************************插入学生信息**************************************void inserStu(Link L,Link Elem){Link prior(Link L,Link p);Link p=L->next;//*******%%%%****while(p!=NULL&&Elem->stuNumber>=p->stuNumber){if(p->stuNumber==Elem->stuNumber){printf("重复输入学号,输入失败!");return ;}p=p->next;}//确定Elem的插入位置if(p==NULL){p=prior(L,p);Elem->next=NULL;p->next=Elem;//若为空表,插入到头结点之后}else{p=prior(L,p);Elem->next=p->next;p->next=Elem;}}//***********************找到当前地址元素的前一元素的地址*************************************************************************Link prior(Link L,Link p){if(L->next==NULL)return(L);Link p_prior=L;while(p_prior->next!=p){p_prior= p_prior->next ;}return (p_prior);}//********************************8按学号查询学生信息***************************************************************************int searchName(Link L,char n[]){int flag=0;//标志要查找的学生和学生记录中的姓名是否匹配Link p=L->next;int seat=1;if(L->next==NULL||L==NULL)printf("没有学生信息\n");else{while(p!=NULL){if(!strcmp(p->name,n))//比较要查找的姓名是否和当前学生信息所指的姓名匹配{flag=1;//输入姓名匹配printf("要查找的是第%d位学生\n",seat);printf("学号是:%d 名字:%s 年龄:%d 班级:%s 手机号:%s\n",p->stuNumber,p->name,p->age,p->chass,p->telenum);}p=p->next ;seat++;}}return flag;}//****************************************按学号查找学生信息*********************************************************************int searchNum(Link L,int n){int flag=0;//标志要查找的学生和管理信息系统中的学号是否匹配Link p=L->next;int seat=1;if(L->next==NULL)printf("没有学生信息\n");else{while(p!=NULL){if(p->stuNumber<=n){if(p->stuNumber==n)//比较要查找的学号是否和当前学生信息所指的学号匹配{flag=1;//输入学号匹配printf("要查找的是第%d位学生\n",seat);printf("学号是:%d 名字:%s 年龄:%d 班级:%s 手机号:%s\n",p->stuNumber,p->name,p->age,p->chass,p->telenum);}}p=p->next ;seat++;}}return flag;}//*******************************从通讯录中删除第i个元素*************************************************************************** void deleteElem(Link L,int i){Link p=L;int j=0;while(p->next&&j<i-1){p= p->next;j++;}if(!(p->next))//判断i时候合法,i不能大于元素的个数,也不能小于等于0{printf("第%d个学生删除失败\n",i);return;}Link q=p->next;p->next=q->next;free(q);}//*******************按姓名删除学生信息******************************************************************************* ***************int deleName(Link L, char n[]){ void deteStu(Link);int flag=0;//判断要删除的学生与系统中的姓名是否匹配Link p=L->next;int seat =1;if(L->next==NULL){printf("\n删除提示:系统中没有元素,删除失败!\n");deteStu( L);} else{while(p!=NULL){if(!strcmp(p->name ,n))//比较名字是否匹配{flag=1;printf("%s",p->name );p=p->next;deleteElem(L,seat);//删除第i个学生的信息}else{p=p->next ;seat++;}if(flag)printf("被删除了\n");}}return flag;}//*****************按学号删除学生信息*****************************************************************int deleNum(Link L,int n){ void deteStu(Link);int flag=0;Link p=L->next ;int seat=1;if(L->next==NULL){printf("\n删除提示:系统中没有元素,删除失败!\n");deteStu( L);}else{while(p!=NULL){if(p->stuNumber==n){flag=1;printf("%d",p->stuNumber);p=p->next;deleteElem(L,seat);break;}p=p->next ;seat++;}if(flag){printf("被删除了\n");}else{printf("没有找到学生信息\n");}}return flag;}//***************************************************************************** ********void searchWay1(Link L){ void searchMenu(Link L);int searchWay=0;//控制跳出循环,再次选择查询方式if(searchWay==0){printf("请输入要查询的学生的学号:\n");int n,s;scanf("%d",&n);s=searchNum(L, n);if(s==0)printf("查找失败\n");searchWay=1;}if(searchWay==1){searchMenu( L);}}//***************************************************************************** ***void searchWay2(Link L){ void searchMenu(Link L);int searchWay=0;//控制跳出循环,再次选择查询方式if(searchWay==0){char n[20];int flag;printf("请输入要查询的学生姓名\n");char temp2=getchar();gets(n);flag= searchName(L,n);if(flag==0)printf("查找失败!\n");searchWay=1;}if(searchWay==1){searchMenu( L);}}//*****************************************************************8void searchMenu(Link L){int mainMenu();printf(" ********************** 查询菜单************************************** \n");printf(" *** 1 输入学生学号查询学生信息\n");printf(" *** 2 输入学生姓名查询学生信息\n");printf(" *** 3 返回上级菜单\n");printf(" ********************** 查询菜单************************************** \n");printf("请选择1-3: ");int menu;scanf("%d",&menu);switch(menu){case 1:{ searchWay1(L);break;}case 2:{ searchWay2(L);break;}case 3:{break;//跳回主菜单程序}}}//************************************更新学生信息模块*****************************************void alterStu(Link L)//按学号更新学生信息{int n;printf("请输入要修改的学生学号:");scanf("%d",&n);Link p=L->next;if(p==NULL){printf("学生管理系统没有学生信息!");}while(p!=NULL)//循环查找学生信息,如果找到该学号则进入循环体更改学生信息{//***************************************************************************** *****************if(p->stuNumber==n){int num=1, stuNumber,age;char telenum[50];char name[20];char chass[50];printf("***********************更改学生信息*****************************************\n");printf("请输入学生的学号,姓名和电话号码\n");printf("请输入学号%d: ",num);scanf("%d",&stuNumber);printf("请输入姓名%d: ",num);getchar();gets(name);printf("请输入年龄%d: ",num);scanf("%d",&age);printf("请输入班级%d: ",num);getchar();gets(chass);printf("请输入电话号码: ",num);getchar();gets(telenum);p->age=age;p->stuNumber=stuNumber;strcpy(p->telenum,telenum);strcpy(p->name,name);strcpy(p->chass,chass);//更新新结点printf("***********************更改学生信息完毕*****************************************\n");//***************************************************************************** ********************}p=p->next;}}//****************保存学生信息模块*************************************************************************** void keepStu(Link L){Link p=L->next;FILE* fp;if((fp=fopen("student.txt","r"))==NULL)//打开文件,不存在此文件则新建{fp=fopen("E:\\测试\\student.txt","w");fclose(fp);}fp=fopen("E:\\测试\\student.txt","a");while(p!=NULL){fprintf(fp,"%d\t%s\t%s\n",p->stuNumber,p->name,p->telenum);p=p->next;}fclose(fp);printf("文件保存成功!\n");}//********************统计结点个数模块******************************************************************************* ****int count(Link L){int n=0;Link p=L->next;if(p==NULL){printf("不存在学生信息\n");}while(p!=NULL){p=p->next;n++;}return n;}//********************************导入学生信息模块**********************************************************************Link stuEntry(){FILE* fp;Link p,q ,L;if((fp=fopen("E:\\测试\\student.txt","r"))==NULL)//打开文件,不存在此文件则新建{;}L=q=(Link)malloc(LEN);printf("\n学号姓名手机号\n");printf("**********************************************************\n");while(!feof(fp)){p=(Link)malloc(LEN);fscanf(fp,"%d\t%s\t%s\n",&p->stuNumber,&p->name,&p->telenum);printf("\n%d\t%s\t%s\n",p->stuNumber,p->name,p->telenum);q->next=p;q=p;}q->next=NULL;fclose(fp);printf("按任意键结束:");getch();//返回return L;}//********************添加学生信息************************************************************************** void AddStu(Link L){ int temp;temp=count(L);printf("节点个数为%d:\n",temp);if(temp==0){createLink(L);}//如果没有学生信息则调用初始化函数createLink(L);}//****************删除学生菜单****************************************************void deteStu(Link L){int flag=0,way,n;printf("\n************************ 删除菜单********************\n");printf("\n选择操作方式************* 1:按学号********************\n");printf(" ************* 2:按姓名********************\n");printf(" ************* 3: 返回主菜单*********************\n");printf("\n请输入删除方式:");scanf("%d",&way);if(way<1||way>3){deteStu(L);}switch (way){case 1: {printf("请输入要删除的学生学号:");scanf("%d",&n);flag= deleNum(L,n);break;}case 2:{char n[20];printf("请输入要删除的学生姓名:");char temp1=getchar();gets(n);flag=deleName(L,n);break;}case 3:{break;}}if(flag){printf("删除成功!\n");deteStu(L);}}//**********************主菜单程序****************************************************************************** int mainMenu(){printf("\n****************************欢迎使用学生管理信息系统***********************************************\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("* *** 0 退出管理信息系统**** * \n");printf("****************************欢迎使用学生管理信息系统***********************************************");int menu=0;printf("请选择0-8:");scanf("%d",&menu);if(menu<0&&menu>8){printf("输入无效,请正确输入有效序号0-8:");scanf("%d",&menu);}return menu;}//**************************main()程序******************************************************************************* **********************void main(){Link L=(Link)malloc(LEN);//在主函数上首先让结构体指针初始化;L->next=NULL;int flag=0;//学生信息是否建立int menu=0;//菜单选项do{menu=mainMenu();switch(menu)//用于调用子菜单{case 1:{L=createLink(L);break;}case 2:{printList(L); break;}case 3:{searchMenu(L); break;}case 4:{alterStu(L) ;break;}case 5:{createLink(L);break;}case 6:{deteStu( L); break;}case 7:{keepStu( L); break;}case 8:{L=stuEntry();break;}case 0:{return;}}}while(1);}//***************************************************************************** *************************************************。

C语言课程设计报告——学生信息管理系统

C语言课程设计报告——学生信息管理系统

C语言程序设计课程设计报告设计题目:学生信息管理系统专业电子信息工程班级学生指导教师年学期一、总体设计<一>.模块划分总体分为4大板块,分别为:1、输入信息模块:输入信息并将信息保存到文件当中:2、浏览信息模块:显示需要全部的学生信息:3、编辑信息模块:输入密码,修改或删除学生信息:4、修改密码模块:修改系统密码;5、系统初始化模块:删除保存的数据和修改后的密码,初始化系统。

<二>.数据结构#define N 100 /* 所能容纳的数据数量*/struct student{int number;char name[10];char gender[6];int birthday;char major[18];char Class[10];char address[30];char dormitory[10];}stu[N];<三>. 函数原型声明1、int menu1(); 主菜单输出函数2、int menu2(); 浏览选项子菜单输出函数3、int menu3(); 编辑选项子菜单输出函数4、void input(); 信息输入函数5、void scan(); 浏览学生信息子函数6、void display(); 信息显示函数7、void save(int n); 将输入的信息保存为文件8、void edit(); 编辑学生信息子函数9、void search(int s); 查找函数10、void revise_info(); 信息修改函数11、void code(); 密码管理函数12、void del(); 信息删除函数13、void recover(); 初始化程序二、功能实现1.main( )(流程图)2.各功能模块详细流程图(1)、输入信息模块输入人数——输入信息——保存信息至文件(2)、浏览信息模块①、全部显示:从文件中读取信息至结构体——输出信息②、按姓名查找:输入姓名——从文件中读取信息至结构体——查找姓名——输出信息③、按学号查找:输入学号——从文件中读取信息至结构体——查找学号——输出信息(3)、编辑信息模块①、修改信息:输入学号——从文件中读取信息至结构体——查找学号——选择修改项目——修改信息——保存信息至文件②、删除信息:输入学号——从文件中读取信息至结构体——查找学号——确认删除——删除信息——保存剩余信息至文件(4)、修改密码模块从文件中读取旧密码——输入旧密码——输入新密码——保存至文件——修改成功(5)、系统初始化模块删除原文件——建立空白文件三、测试及调试(测试方案、存在的问题及解决方法)1、主菜单与子菜单无法建立联系,即输入相应的选项后不能运行相应的子函数。

数据结构课程设计报告(附源代码)-学生管理系统

数据结构课程设计报告(附源代码)-学生管理系统

课程设计报告(一)一.报告题目:学生管理系统二.实验目的:1.熟悉线性链表,掌握线性链表的基本操作;2.练习求线性表中指定结点元素及修改指定结点的元素、求指定结点的前驱/后继元素、删除指定结点的元素、在指点节点位置插入元素等。

3.通过文件保存和读取文件来提升文件操作的能力;4.C语言编程能力的提升训练。

三.实验环境:C语言编程,VC++6.0编程工具实现。

四.软件系统结构1.总体架构/层次:2.各功能的实现流程图:函数6:文件装入功能实现流程图函数7:文件保存功能实现流程图函数8:退出菜单功能实现流程图五.软件功能设计:本软件是要编写一个学生管理系统,一个学生有很多相关数据,包括学号、姓名、性别、年龄、家庭住址、练习电话,因此我们利用线性链表的知识来编写程序,这是因为线性链表有很多优良的特点,因此该程序是对线性链表的应用练习。

本软件利用线性链表的特点,结合文件相关函数的运用,它能够实现以下功能:1.用结点的数据域存放学生的学号、姓名、性别、年龄、家庭住址、练习电话;2.利用结点的指针域访问某个结点的前驱或者后继;3.录入新学生信息并按非降序插入到链表中;4.查找给定学号的结点学生信息;5.删除给定学号的结点学生信息;6.修改给定学号的结点学生信息;7.显示全部结点的学生信息;8.将链表中的学生信息全部存入文件;9.将已存在的学生信息文件中的学生信息按学号非降序插入到当前链表中;六.源程序代码:#include<stdio.h>#include<string.h>#include<stdlib.h>#include<windows.h>#define NAMELEN 15#define ADDRLEN 10#define TELLEN 15#define OVERFLOW 0#define ERROR 0#define FALSE 0#define OK 1#define TRUE 1struct stud{ long num;char name[NAMELEN+1];char sex;int age;char Addr[ADDRLEN+1];long rxsj;char lxfs[TELLEN+1];};typedef stud ElemType;//链表结点元素为结构体FILE *fp;typedef struct LNode{ElemType data;LNode *next;} *LinkList;//typedef LNode *;int InitList(LinkList &L){ //操作结果:构造一个空的线性表LL=(LinkList )malloc(sizeof(LinkList));//产生头结点,并使L指向头结点if(!L)//存储分配失败exit(OVERFLOW);L->next=NULL;// 指针域为空return OK;}int ListTraverse(LinkList L,void(*vi)(ElemType)){//条件:线性表已存在//操作结果:一次对L的每个数据元素调用函数vi()。

c语言学生成绩管理系统-数据结构课程设计报告-课程设计

c语言学生成绩管理系统-数据结构课程设计报告-课程设计

c语言学生成绩管理系统-数据结构课程设计报告-课程设计c语言学生成绩管理系统-数据结构课程设计报告|数据结构课程设计要求是这样的1、用c语言编写一个简单的学生信息管理程序,能实现对学生信息的简单管理。

2、具体要求:建立一个4个学生的信息登记表,每个学生的信息包括:学号,姓名,和3门课程的成绩(FOX,C,ENGLISH)。

程序运行时显示一个简单的菜单,例如:(1):信息输入(INPUT)(2):总分统计(COUNT)(3):总分排序(SORT)(4):查询(QUERY)其中:(1):对4个学生的信息进行输入;(2):对每个学生的3门课程统计总分;(3):对4个学生的总分按降序排序并显示出来;(4):查询输入一个学号后,显示出该学生的有关信息;............偶先写了个...#i nclude<iostream.h>#i nclude<stdlib.h>struct student{int num;char name[20];int foxscore;int cscore;int englishscore;struct student *next;};void menu(){cout<<" welecome to my student grade management system"<<endl;cout<<" please follow everyone step in the menu"<<endl;cout<<" 1.input information"<<endl;cout<<" 2.total scores"<<endl;cout<<" 3.sort"<<endl;cout<<" 4.query"<<endl;cout<<" ***************************************************"< <endl;}struct student *creat(struct student *head) // 函数返回的是与节点相同类型的指针{struct student *p1,*p2;p1=p2=(struct student*) malloc(sizeof(struct student)); // 申请新节点cin>>p1->num>>p1->name>>p1->foxscore>>p1->cscore>>p1->englishscore; // 输入节点的值p1-> next = NULL; // 将新节点的指针置为空while(p1->num>0){if (head==NULL) head=p1; //空表,接入表头else p2->next=p1; // 非空表,接到表尾p2 = p1;p1=(struct student *)malloc(sizeof(struct student));//申请下一个新节点cin>>p1->num>>p1->name>>p1->foxscore>>p1->cscore>>p1->englishscore; //输入节点的值}return head; //返回链表的头指针}void count(struct student *head){struct student *temp;temp=head; //取得链表的头指针while(temp!==NULL){int m;m=temp->foxscore+temp->cscore+temp->englishscore;cout<<m<<endl;//输出链表节点的值temp=temp->next; //跟踪链表增长}}void sort(struct student *head){struct student *tp;tp=head;int a;//定义总分数组int i,j,k;while(temp!==NULL){a[i]=tp->foxscore+tp->cscore+tp->englishscore;tp=tp->next;i=i+1;}for(j=1;j<=3;j++)//冒泡法排序for(k=1;k<=4-j;k++)if(a[k]<a[k+1]){int t=a[k];a[k]=a[k+1];a[k+1]=t;}for(i=1;i<5;i++)cout<<a[i]<<endl;}void query(struct student *head){struct student *temper;temper=head;int number;cin>>number;for(int i=1;i<=4;i++){if(number==temper->num){cout<<" name is:"<<temper->name<<endl;cout<<" fox score is:"<<temper->foxscore<<endl;cout<<" c score is:"<<temper->cscore<<endl;cout<<" English score is:"<<temper->englishscore<<endl;cout<<" congratulation,syetem have found what you want to search"<<endl;}temper=temper->next;}}void main(){menu();cout<<" firstly,please input information:"<<endl;struct student *head;head=NULL; /* 建一个空表*/head=creat(head); /* 创建单链表*/cout<<" secondly,count the total score each student:"<<endl; count(head);cout<<" thirdly,sorting the total score:"<<endl;sort(head);cout<<" enter num that you can search each shtudent''s information"<<endl;query(head);cout<<" thanks you for use my student grade management system"<<endl;}编译时候都没有错....debug输入时候出现了错误....调试运行后发现原来是while循环出了问题啊修改后.........#i nclude<iostream.h>#i nclude<stdlib.h>struct student{int num;char name[20];int foxscore;int cscore;int englishscore;struct student *next;};void menu(){cout<<" welecome to my student grade management system"<<endl;cout<<" please follow everyone step in the menu"<<endl;cout<<" 1.input information"<<endl;cout<<" 2.total scores"<<endl;cout<<" 3.sort"<<endl;cout<<" 4.query"<<endl;cout<<" ***************************************************"< <endl;}struct student *creat(struct student *head) // 函数返回的是与节点相同类型的指针{struct student *p1,*p2;p1=p2=(struct student*) malloc(sizeof(struct student)); // 申请新节点cin>>p1->num>>p1->name>>p1->foxscore>>p1->cscore>>p1->englishscore; // 输入节点的值p1-> next = NULL; // 将新节点的指针置为空for(int i=1;i<=4;i++){if (head==NULL) head=p1; //空表,接入表头else p2->next=p1; // 非空表,接到表尾p2 = p1;p1=(struct student *)malloc(sizeof(struct student)); //申请下一个新节点if(i<=3){cin>>p1->num>>p1->name>>p1->foxscore>>p1->cscore>>p1->englishscore;}//输入节点的值}return head; //返回链表的头指针}void count(struct student *head){struct student *temp;temp=head; //取得链表的头指针for(int i=1;i<=4;i++){int m;m=temp->foxscore+temp->cscore+temp->englishscore;cout<<m<<endl;//输出链表节点的值temp=temp->next; //跟踪链表增长}}void sort(struct student *head){struct student *tp;tp=head;int a;//定义总分数组int i,j,k;a=tp->foxscore+tp->cscore+tp->englishscore;tp=tp->next;a=tp->foxscore+tp->cscore+tp->englishscore;tp=tp->next;a=tp->foxscore+tp->cscore+tp->englishscore;tp=tp->next;a=tp->foxscore+tp->cscore+tp->englishscore;for(j=1;j<=3;j++)//冒泡法排序for(k=1;k<=4-j;k++)if(a[k]<a[k+1]){int t=a[k];a[k]=a[k+1];a[k+1]=t;}for(i=1;i<5;i++)cout<<a[i]<<endl;}void query(struct student *head){struct student *temper;temper=head;int number;cin>>number;for(int i=1;i<=4;i++){if(number==temper->num){cout<<" name is:"<<temper->name<<endl;cout<<" fox score is:"<<temper->foxscore<<endl;cout<<" c score is:"<<temper->cscore<<endl;cout<<" English score is:"<<temper->englishscore<<endl;cout<<" congratulation,syetem have found what you want to search"<<endl;}temper=temper->next;}}void main(){menu();cout<<" firstly,please input information:"<<endl;struct student *head;head=NULL; /* 建一个空表*/head=creat(head); /* 创建单链表*/cout<<" secondly,count the total score each student:"<<endl; count(head);cout<<" thirdly,sorting the total score:"<<endl;sort(head);cout<<" enter num that you can search each shtudent''s information"<<endl;query(head);cout<<" thanks you for use my student grade management system"<<endl;}可以在vc6.0上面编译通过............在vc++.net同样可以...。

c语言课程设计(学生信息管理系统)

c语言课程设计(学生信息管理系统)

c语言课程设计(学生信息管理系统)一、系统功能学生信息管理系统是一款基于C语言开发的数据管理程序,可实现对学生信息的增删改查等功能。

具体功能列表如下: a. 添加学生信息:可根据学生的基本信息,如学生学号、姓名、性别、地址、联系电话等,依次记录入系统; b. 删除学生信息:可根据学生学号、姓名等信息,从系统中删除不必要的学生信息; c. 修改学生信息:可根据已有的学生信息,修改学生某些属性内容,以更新系统中的数据; d. 查看学生信息:可根据学生学号、姓名等信息,查看指定学生的所有信息及多种查询功能; e. 数据保存功能:可将当前系统中的学生信息,保存成文件的形式; f. 备份/恢复功能:可对学生信息文件进行备份并对备份文件进行恢复; g. 查询统计功能:可根据学院代号、专业代号等信息,进行不同的查询统计; h. 排序功能:可根据学生学号、姓名等信息,对学生信息进行排序; i. 帮助功能:可提供详细的使用帮助文档,以帮助用户更好地使用系统;二、程序实现及结构1. 主程序:此程序用于控制整个系统的运行,可实现系统菜单显示、功能调用及功能切换等功能,可根据用户的操作需求,调用其他子程序实现各项功能。

2. 子程序:此程序是系统的主要部分,可实现学生信息的增删改查等功能,并可支持学生信息的备份,恢复,排序及查询统计等功能,用于实现主程序调用的功能。

3. 管理模块:此模块可实现对用户的登录及注册功能,可检测用户登录及注册的账号是否正确,以及是否有权限使用系统;4. 数据库模块:此模块可实现对学生信息的存储及调用,便于对各类学生信息进行更方便的管理。

此模块还可以负责系统的备份及恢复功能的实现。

5. 图形界面模块:此模块负责实现系统的图形化界面,使用户可以更加友好地操作系统,可以根据用户的需求,随时更改系统界面设置。

三、程序设计学生信息管理系统的设计主要有四个部分:1. 主程序:主程序的设计要求负责控制整个系统的运行,并根据用户的操作调用子程序实现各个功能。

C语言课程设计报告 --学生管理系统

C语言课程设计报告 --学生管理系统

C语言课程设计报告 --学生管理系统一、实验目的:通过本次实验,学习C语言的语法和数据类型,设计一个简单的学生管理系统,结合文件I/O所学,可以将学生信息保存至文件中,再读取时自动填充至程序中。

同时,体验软件开发的流程,从需求分析到具体实现。

二、需求分析:1、学生信息包括:学号、姓名、性别、年龄、成绩。

2、学生信息需要添加、删除、修改、查找和显示。

3、程序启动时自动从文件中读取数据,退出时自动保存数据。

三、实验过程:1、确定数据结构和变量类型通过分析需求,学生信息包含多个属性,可以使用结构体来保存每个学生的信息。

同时,为了便于程序运行,需要定义一个链表来保存所有学生信息。

/* 学生信息结构体 */typedef struct _Student {char id[12]; // 学号char name[20]; // 姓名char gender; // 性别int age; // 年龄double score; // 成绩} Student;/* 学生信息链表节点 */typedef struct _StudentNode {Student data; // 学生信息struct _StudentNode *next; // 下一节点指针} StudentNode;/* 学生信息链表头节点 */StudentNode *head = NULL;2、设计主菜单功能考虑学生管理系统的主要功能,可以设计以下主菜单:---------------------------1. 添加学生2. 删除学生3. 修改学生信息4. 查找学生5. 显示所有学生6. 退出---------------------------可以使用一个while循环来循环处理,直到用户选择退出。

3、实现主菜单功能添加学生:先从用户输入中获取学生信息,然后创建一个新的学生信息节点,并将其添加到链表的末尾。

1. 定义变量/* 输入缓存区大小 */#define BUFFER_SIZE 2562. 实现函数/* 添加学生到链表末尾 */void add_student() {Student student; // 待添加的学生信息printf("请输入学号:");scanf("%s", student.id);printf("请输入姓名:");scanf("%s", );printf("请输入性别(M/F):");scanf(" %c", &student.gender);printf("请输入年龄:");scanf("%d", &student.age);printf("请输入成绩:");scanf("%lf", &student.score);StudentNode *node =(StudentNode*)malloc(sizeof(StudentNode));node->data = student;node->next = NULL;if (head == NULL) {head = node;} else {StudentNode *p = head;while (p->next != NULL) {p = p->next;}p->next = node;}printf("添加学生成功!\n");}删除学生:先从用户输入中获取学生学号,然后遍历链表,找到该学号对应的学生信息节点,并删除。

C语言专题试验任务书1-学生信息管理系统

C语言专题试验任务书1-学生信息管理系统
(4)统计功能:可根据学生性别,统计男女学生总数;
(5)排序功能:可根据每个职工的工资,按由大到小排出名次和由小到大排名;
(6)文件保存功能:可对录入职工信息以文件形式保存;
(7)读取功能:可将保存在文件中的信息读入到当前系统中,供用户进行使用。
(8)编辑功能:可根据查询结果对相应得记录进行修改,修改时注意图书编码的唯一性;








1.问题描述
学生信息包括:学号(唯一,不重复)、姓名、性别、出生年月、
班级、住址、电话、英语、数学成绩。
Байду номын сангаас2.功能要求
(1)系统以菜单方式工作;
(2)输入功能:学生信息录入功能;
(3)输出功能:学生信息浏览功能;
(4)查询功能:(至少一种查询方式)可根据学号号、学生姓名等信息对已录入的所有职工信息进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。也可显示当前系统中所有学生信息,每条学生信息记录占据一行;




1.基本要求:
(1)分析系统各功能模块的工作原理;
(2)提出系统的设计方案;
(3)对设计进行编程、调试、修改。
2.创新要求:
在基本要求达到后,可进行文件、链表运算等。
3.专题实验论文编写要求:
(1)按照论文统一规格撰写打印报告;
(2)论文包括目录、正文、总结等;
(3)装订按学校统一要求完成。
(9)删除功能:主要实现对已添加的图书记录进行删除。如果当前系统中没有相应的记录,则提示“记录为空!”并返回操作。
3.必做功能与选做功能
必做功能:(1)(2)(3)(4)(5)

学生管理系统(含代码)

学生管理系统(含代码)

C语言课程设计任务书3题目:学生成绩管理系统功能:学生成绩管理系统,每个学生是一个记录,包括学号,姓名,性别,3门课程成绩。

系统要求实现以下功能:1、信息录入:录入学生成绩信息(包括学生学号、姓名、各门课程的成绩等);2、信息查询:输入学号,查询学生各门课程的成绩,并显示。

3、排序:按各门课程的成绩平均分进行排序,并显示。

4、信息删除与修改——输入学号,删除该学生的成绩信息。

098班陈焕流程图:主要源程序代码#include<iostream.h>#include<string.h>#include<fstream.h>class stu{char name[20];double math,chinese,english,average,sum; public:stu(){}stu(char n[20],double ma,double chin,double eng) {strcpy(name,n);math=ma;chinese=chin;english=eng;}double getsum(){sum=chinese+english+math;return sum;}double getaver(){average=getsum()/3;return average;}friend void main();};void main(){cout<<"请选择您需要的操作!"<<endl;cout<<"操作:"<<endl;cout<<"(0)数据录入"<<endl;cout<<"(1)增加人员"<<endl;cout<<"(2)删除人员"<<endl;cout<<"(3)修改数据"<<endl;cout<<"查询:"<<endl;cout<<"(4)按总成绩查询"<<endl;cout<<"(5)按姓名查询"<<endl;cout<<"(6)输出所有学生的数据"<<endl;cout<<"成绩名词"<<endl;cout<<"(7)按总分查询排名"<<endl;cout<<"(8)按语文查询排名"<<endl;cout<<"(9)按数学查询排名"<<endl;cout<<"(y)按英语查询排名"<<endl;cout<<"选择相关操作请输入相对的括号里的阿拉伯数字!"<<endl;char p;char w;stu *s[50];ofstream *file[50];int i=0;int j=0;bool flag2=0;do{cin>>p;if((p>='0'&&p<='10'))flag2=1;elsecout<<"指令错误!请重新输入:"<<endl;}while(flag2==0);do{switch(p){case '0':{char c;char name[20];double math,chinese,english;do{cout<<"请输入姓名"<<endl;cin>>name;cout<<"请输入数学成绩:"<<endl;cin>>math;cout<<"请输入语文成绩:"<<endl;cin>>chinese;cout<<"请输入外语成绩:"<<endl;cin>>english;file[j]=new ofstream("d:\\document",ios::ate);*file[j]<<"姓名"<<name<<"数学成绩"<<math<<"语文成绩"<<chinese<<"外语成绩"<<english<<endl;j++;s[i]=new stu(name, math, chinese, english);cout<<"数据录入成功,想继续录入吗(y/n)"<<endl; cin>>c;flag2=0;do{if(c!='y'&&c!='n'){cout<<"指令错误!请重新输入!"<<endl;cin>>c;}elseflag2=1;}while(flag2==0);}while(c=='y');break;}case '4':{double t;char c;do{int flag1=0;cout<<"请输入你要查询学生的总成绩"<<endl; cin>>t;for(int q=0;q<i;q++){if(s[q]->getsum()==t){flag1=1;cout<<"您要查询的学生是:"<<(*s[q]).name<<endl; }}if(flag1==0)cout<<"对不起!您要查询的学生不存在!"<<endl; cout<<"您想继续查询吗?(y/n)"<<endl;cin>>c;if(c!='y'&&c!='n'){cout<<"指令错误!请重新输入!"<<endl;cin>>c;}while(c=='y');break;}case '5':{char n[20];int j=0;char c;do{int flag=0;cout<<"请输入你要查询的学生姓名"<<endl;cin>>n;for(int j=0;j<i;j++){if(strcmp(n,(*s[j]).name)==0){flag=1;cout<<"您要查询的学生是:"<<(*s[j]).name<<endl;cout<<(*s[j]).name<<"的总成绩成绩是"<<(*s[j]).getsum()<<endl<<"平均成绩是:"<<(*s[j]).getaver()<<endl;}}if(flag==0)cout<<"对不起!您要查询的学生不存在!"<<endl;cout<<"您想继续查询吗?(y/n)"<<endl;cin>>c;if(c!='y'&&c!='n'){cout<<"指令错误!请重新输入!"<<endl;cin>>c;}}while(c=='y');break;}case '1':{char name[20];double math,chinese,english;char c;do{cout<<"请输入您要增加的学生的姓名:"<<endl;cin>>name;cout<<"请输入数学成绩:"<<endl;cin>>math;cout<<"请输入语文成绩:"<<endl;cin>>chinese;cout<<"请输入外语成绩:"<<endl;cin>>english;file[j]=new ofstream("d:\\document",ios::ate);*file[j]<<"姓名"<<name<<"数学成绩"<<math<<"语文成绩"<<chinese<<"外语成绩"<<english<<endl;j++;s[i]=new stu(name, math, chinese, english);i++;cout<<"数据录入成功,想继续录入吗(y/n)"<<endl;cin>>c;if(c!='y'&&c!='n'){cout<<"指令错误!请重新输入!"<<endl;cin>>c;}}while(c=='y');break;}case '2':{char name[20];bool flag3=0;char c;do{cout<<"请输入您要删除的学生姓名:"<<endl;cin>>name;for(int h=0;h<i;h++){if(strcmp(name,s[h]->name)==0){flag3=1;i--;do{s[h]=s[h+1];h++;}while(h<=i);}}if(flag3==0)cout<<"您要求删除的对象本来就不存在!请检查输入的正确性!"; cout<<"要继续删除吗?(y/n)"<<endl;cin>>c;if(c!='y'&&c!='n'){cout<<"指令错误!请重新输入!"<<endl;cin>>c;}}while(c=='y');break;}case '3':{char name[20];double mat,chin,eng;flag2=0;char c;do{cout<<"请输入您要修改的学生的姓名:"<<endl;cin>>name;for(int h=0;h<i;h++){if(strcmp(name,s[h]->name)==0){flag2=1;cout<<"请输入新的数学成绩:"<<endl;cin>>mat;cout<<"请输入新的语文成绩:"<<endl;cin>>chin;cout<<"请输入新的外语成绩:"<<endl;cin>>eng;s[h]->chinese=chin;s[h]->math=mat;s[h]->english=eng;cout<<"数据修改成功!";}}if(flag2==0){cout<<"您要修改的学生本来就不存在!请检查重新输入!"<<endl; }cout<<"想继续修改吗(y/n)"<<endl;cin>>c;if(c!='y'&&c!='n'){cout<<"指令错误!请重新输入!"<<endl;cin>>c;}}while(c=='y');break;}case '6':{cout<<"本系统所有学生数据如下:"<<endl;if(i==0)cout<<"管理系统中没有录入数据或者数据已经被删除!"<<endl; for(int k=0;k<i;k++){cout<<k+1<<" "<<"姓名:"<<" "<<s[k]->name<<"语文:"<<" "<<s[k]->chinese<<"数学:"<<" "<<s[k]->math<<"外语:"<<" "<<s[k]->english<<"总分:"<<" "<<(*s[k]).getsum() <<"平均分:"<<" "<<(*s[k]).getaver()<<endl;}break;}case '7':{int t;stu b;cout<<"本系统所以学生排名如下:"<<endl;for(int x=0;x<i-1;x++){t=x;for(int y=x+1;y<i;y++){if((s[t]->getsum())<(s[y]->getsum()))t=y;if(t!=x){b=*s[x];*s[x]=*s[t];*s[t]=b;}}}if(i==0)cout<<"管理系统中没有录入数据或者数据已经被删除!";for(int k=0;k<i;k++){cout<<k+1<<" "<<"姓名:"<<" "<<s[k]->name<<"语文:"<<" "<<s[k]->chinese<<"数学:"<<" "<<s[k]->math<<"外语:"<<" "<<s[k]->english<<"总分:"<<" "<<s[k]->getsum() <<"平均分:"<<" "<<s[k]->getaver()<<endl;}break;}case '8':{int t;stu b;cout<<"本系统所以学生语文排名如下:"<<endl;for(int x=0;x<i-1;x++){t=x;for(int y=x+1;y<i;y++){if((s[t]->chinese)<(s[y]->chinese))t=y;if(t!=x){b=*s[t];*s[t]=*s[x];*s[x]=b;}}}if(i==0)cout<<"管理系统中没有录入数据或者数据已经被删除!";for(int k=0;k<i;k++){cout<<k+1<<" "<<"姓名:"<<" "<<s[k]->name<<"语文:"<<" "<<s[k]->chinese<<"数学:"<<" "<<s[k]->math<<"外语:"<<" "<<s[k]->english<<"总分:"<<" "<<s[k]->getsum() <<"平均分:"<<" "<<s[k]->getaver()<<endl;}break;}case '9':{int t;stu b;cout<<"本系统所以学生数学排名如下:"<<endl;for(int x=0;x<i-1;x++){t=x;for(int y=x+1;y<i;y++){if((s[t]->math)<(s[y]->math))t=y;if(t!=x){b=*s[t];*s[t]=*s[x];*s[x]=b;}}}if(i==0)cout<<"管理系统中没有录入数据或者数据已经被删除!";for(int k=0;k<i;k++){cout<<k+1<<" "<<"姓名:"<<" "<<s[k]->name<<"语文:"<<" "<<s[k]->chinese<<"数学:"<<" "<<s[k]->math<<"外语:"<<" "<<s[k]->english<<"总分:"<<" "<<s[k]->getsum() <<"平均分:"<<" "<<s[k]->getaver()<<endl;}break;}case 'y':{int t;stu b;cout<<"本系统所以学生英语排名如下:"<<endl;for(int x=0;x<i-1;x++){t=x;{if((s[t]->english)<(s[y]->english))t=y;if(t!=x){b=*s[t];*s[t]=*s[x];*s[x]=b;}}}if(i==0)cout<<"管理系统中没有录入数据或者数据已经被删除!";for(int k=0;k<i;k++){cout<<k+1<<" "<<"姓名:"<<" "<<s[k]->name<<"语文:"<<" "<<s[k]->chinese<<"数学:"<<" "<<s[k]->math<<"外语:"<<" "<<s[k]->english<<"总分:"<<" "<<s[k]->getsum()<<"平均分:"<<" "<<s[k]->getaver()<<endl;}}break;}cout<<"您想继续进行其他操作吗?(y/n)"<<endl;bool flag4=0;do{cin>>w;if(w!='y'&&w!='n')cout<<"指令错误!请重新输入!"<<endl;elseflag4=1;}while(flag4==0);if(w=='y')cout<<"请输入操作代码(0 录入/4 按总分查询/5 按姓名查询/1 增加人员/2 删除人员/3 修改数据/6 显示所有成员数据/7 按总分排名/8 按语文排名/9按数学排名/y按英语排名)"<<endl;cin>>p;}while(w=='y');{delete s[x];cout<<"delete all members!"<<endl;}}测试情况及调试中问题与解决方案:测试情况失败好几次。

(完整版)C语言毕业课程设计及任务书-学生信息管理系统

(完整版)C语言毕业课程设计及任务书-学生信息管理系统

内蒙古科技大学本科生课程设计说明书题目:C语言课程设计——学生信息管理系统学生姓名:王佳星学号:专业:2011-计算机班级:3班指导教师:余金林内蒙古科技大学课程设计任务书目录内蒙古科技大学课程设计任务书 (I)第一章需求分析 (3)1.1引言 (3)1.2任务概述 (3)1.3数据描述 (3)1.4功能需求 (3)1.5性能需求 (3)第二章概要设计 (4)2.1总体设计 (4)2.2数据类型设计(或数据结构设计) (6)2.3接口设计函数声明 (6)2.4运行界面设计 (6)第三章详细设计 (8)3.1输入模块设计 (8)3.2输出模块设计 (8)3.3查找模块设计 (9)3.4保存及读取模块设计 (10)第四章测试分析 (11)4.1测试程序执行情况 (11)第五章课程设计总结 (14)附录:程序代码 (15)参考文献 (26)致谢 (26)第一章需求分析1.1引言学生基本信息管理系统1.2任务概述1.建立学生信息,信息至少包含学生姓名,学号,性别,年龄,出生日期,家庭地址,e-mail,电话地址等;2.能够提供新建、浏览、查找、修改和删除通讯录信息的功能;3.能够提供安不同方式查询的功能;如按姓名或电话等查询;1.3数据描述struct student{char NO[20];char name[20];int age;char sex[3]; *'F'表示性别男,'M'表示性别女*char birthday[10];char address[30];char phone[20];char e_mail[20];struct student *next; 下个结点};1.4功能需求1、输入功能:一次可以完成自定义学生人数的学生信息记录的输入。

2、删除功能:对指定学生的信息进行删除。

3、修改功能:对指定学生的信息进行修改。

4、查询功能:选择某种方式并输入该信息查询符合条件的学生信息。

c语言课程设计报告---学生信息管理系统

c语言课程设计报告---学生信息管理系统

题目:学生信息管理系统
一、需求分析
任务要求:
自学C 语言中有关链表及外部文件的内容,设计学生信息管理系统。

具体要求如下:
♦建立学生信息,信息至少包括名字、性别、年龄、学号、系别、家庭信息等内容;♦能够提供添加、删除和修改学生信息等功能;
♦能将通讯录保存在文件中;
★能够按指定方式输出学生信息。

系统功能需求分析:
★1、为存储学生信息,需定义一个结构体类型,成员名字、性别、年龄、学号、系别、家庭信息等,并建立链表,定义该结构体类型的指针,用于指向各结点;
★ 2 、分别建立具有添加、删除、修改、查询等功能的子函数,完成相应功能,对程序实现模块化。

这其中要用到对链表的删除、插入等知识。

删除时用一结构体指针指向链表的第一个结点,检查该节点的值是否等于输入的要删除的学号,若相等就删除,不相等则后移指针,直至表尾。

插入时也要先找到相应结点,再添加。

★3、为实现存储功能,需用到文件的相关函数,打开文件,将添加、修改或删除的信息存入磁盘中。

★4、为以表格的形式输出文件,宏定义格式化输出语句,指定输出学生信息。

二、概要设计
系统总体设计框架:
对程序进行模块化,建立添加、修改、删除、查找和显示功能的子函数,各子函数中运用链表存储数据。

从主函数开始执行,调用各个子函数,并运用文件相关知识将信息存入磁盘中。

系统功能模块图:
关闭文件。

数据结构C语言课程设计任务书完整版--学生管理系统

数据结构C语言课程设计任务书完整版--学生管理系统

数据结构课程设计报告题目一、学生管理系统的设计与实现——采用顺序表结构实现题目二、图的算法实现——采用邻接表和邻接矩阵结构实现班级:__计算机101______________姓名:__刘文辉_________________指导教师:__董跃华_________________成绩:__________________________信息工程学院2012 年06月18 日目录1需求分析 (3)1.1 目的 (3)1.2 功能 (3)2详细设计 (3)2.1 数据类型 (4)2.2 总体功能流程图 (4)2.3 伪码算法 (5)3调试分析 (14)3.1 遇到的问题 (14)3.2 算法的时空分析 (14)3.3改进设想 (14)3.4经验体会 (14)4测试结果 (15)5参考文献 ........................................................................................................................ 错误!未定义书签。

1、需求分析1.1、目的设计并实现一个学生管理系统,即定义一个包含学生信息(学号,姓名,成绩)的的顺序表,可以不考虑重名的情况①熟练查找和排序的数据结构算法②熟练掌握数据结构③复习C语言的各个知识点1.2、功能(1) 根据指定学生个数,逐个输入学生信息;(2) 逐个显示学生表中所有学生的相关信息;(3) 给定一个学生信息,插入到表中指定的位置;(4) 删除指定位置的学生记录;(5) 统计表中学生个数;(6) 利用直接插入排序或者折半插入排序按照姓名进行排序;(7) 利用快速排序按照学号进行排序;(8) 根据姓名进行折半查找,要求使用递归算法实现,成功返回此学生的学号和成绩;(9) 根据学号进行折半查找,要求使用非递归算法实现,成功返回此学生的姓名和成绩。

2、详细设计2.1、数据类型1、本次程序采用顺序存储结构,利用结构体数组的优点进行设计。

学生信息管理系统c语言数据结构

学生信息管理系统c语言数据结构

学生信息管理系统c语言数据结构以下是一个基于C语言的数据结构实现的学生信息管理系统示例:```cinclude <>include <>include <>// 定义学生结构体struct Student {char name[20];int age;int id;};// 定义学生信息管理系统结构体struct StudentSystem {struct Student students[100]; // 学生数组int count; // 学生数量};// 初始化学生信息管理系统void initStudentSystem(struct StudentSystem system) {system->count = 0;}// 添加学生信息void addStudent(struct StudentSystem system, char name, int age, int id) {if (system->count >= 100) {printf("学生数量已达上限!\n");return;}system->students[system->count].name[0] = '\0';strcpy(system->students[system->count].name, name);system->students[system->count].age = age;system->students[system->count].id = id;system->count++;}// 查询学生信息void queryStudent(struct StudentSystem system, int id) {for (int i = 0; i < system->count; i++) {if (system->students[i].id == id) {printf("学生姓名:%s,年龄:%d\n", system->students[i].name, system->students[i].age);return;}}printf("未找到该学生!\n");}// 显示所有学生信息void showAllStudents(struct StudentSystem system) {for (int i = 0; i < system->count; i++) {printf("学生姓名:%s,年龄:%d,学号:%d\n", system->students[i].name, system->students[i].age, system->students[i].id); }}// 测试代码int main() {struct StudentSystem system;initStudentSystem(&system); // 初始化学生信息管理系统 addStudent(&system, "张三", 20, 1001); // 添加学生信息 addStudent(&system, "李四", 21, 1002); // 添加学生信息 showAllStudents(&system); // 显示所有学生信息queryStudent(&system, 1002); // 查询学生信息return 0;}```。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构课程设计报告题目一、学生管理系统的设计与实现——采用顺序表结构实现题目二、图的算法实现——采用邻接表和邻接矩阵结构实现班级:__计算机101______________姓名:__刘文辉_________________指导教师:__董跃华_________________成绩:__________________________信息工程学院2012 年06月18 日目录1需求分析 (3)1.1 目的 (3)1.2 功能 (3)2详细设计 (3)2.1 数据类型 (4)2.2 总体功能流程图 (4)2.3 伪码算法 (5)3调试分析 (14)3.1 遇到的问题 (14)3.2 算法的时空分析 (14)3.3改进设想 (14)3.4经验体会 (14)4测试结果 (15)5参考文献 ........................................................................................................................ 错误!未定义书签。

1、需求分析1.1、目的设计并实现一个学生管理系统,即定义一个包含学生信息(学号,姓名,成绩)的的顺序表,可以不考虑重名的情况①熟练查找和排序的数据结构算法②熟练掌握数据结构③复习C语言的各个知识点1.2、功能(1) 根据指定学生个数,逐个输入学生信息;(2) 逐个显示学生表中所有学生的相关信息;(3) 给定一个学生信息,插入到表中指定的位置;(4) 删除指定位置的学生记录;(5) 统计表中学生个数;(6) 利用直接插入排序或者折半插入排序按照姓名进行排序;(7) 利用快速排序按照学号进行排序;(8) 根据姓名进行折半查找,要求使用递归算法实现,成功返回此学生的学号和成绩;(9) 根据学号进行折半查找,要求使用非递归算法实现,成功返回此学生的姓名和成绩。

2、详细设计2.1、数据类型1、本次程序采用顺序存储结构,利用结构体数组的优点进行设计。

ADT List{数据对象:D={ai|ai∈Elemset,i=1,2,……n,n>=0}数据关系:R1={<a(i-1),a(i)>|a(i-1),a(i) ∈D,i=2,………n}基本操作:Last_locate()操作结果:得到最后一个元素的位置基本操作:Stu_Insert()操作结果:学生信息的插入基本操作:Stu_Insert_appoint()操作结果:学生信息插入到指定位置基本操作:Stu_Delete_appoint()操作结果:删除某位置上的学生信息基本操作:Stu_OutAll()操作结果:学生信息的输出基本操作:Stu_Count()操作结果:学生个数的统计基本操作:InsertSort()操作结果:按姓名直接排序基本操作:Stu_Partition(int low,int high)操作结果:按学号快速排序基本操作:Stu_Search_Bin ()操作结果:非递归折半查找基本操作:DG_Stu_Search_Bin(char key[10],int low,int high) 操作结果:递归折半查找}ADT List}2.2、总体功能流程图1、功能模块2、主界面流程图2.3、伪码算法1、插入操作的伪代码及流程图int Stu_Insert(){scanf("%d",&n);for(i=0;i<n;i++){ scanf("%d",&stu[i].number);scanf("%s",&stu[i].name);scanf("%d",&stu[i].score);}return 1;}2、插入学生信息到指定位置的伪代码及流程图int Stu_Insert_appoint(){scanf("%d",&j);//j为插入的位置for(i=Last_locate();i<=j;i--)//进行元素后移操作{tu[i+1].number=stu[i].number;stu[i+1].name[15]=stu[i].name[15];stu[i+1].score=stu[i].score;}scanf("%d",&stu[j].number);scanf("%s",&stu[j].name);scanf("%d",&stu[j].score);}3、删除指定位置的学生信息的伪代码及流程图int Stu_Delete_appoint(){scanf("%d",&j);free(stu[j])for(i=j+1;i<=Last_locate();i++){stu[i-1]=stu[i];}return 1;}4、学生信息的全部结果输出的伪代码及流程图int Stu_OutAll(){int i=0;while(stu[i].number){printf("%d\t\t",stu[i].number);printf("%s\t\t",stu[i].name);printf("%d\t\t\n",stu[i].score);i++;}return 1;}5、学生数量统计的伪代码及流程图int Stu_Count(){int i=0;while(stu[i].number){i++;}printf("学生总人数:\t");printf("%d",i);return 1;}6、快速排序的伪代码及流程图int Score_Partition(){Privotkey = stu[low].key;While(low<high){While(low<high&&stu[high].key>=privotkey) –high;Stu[low]←→Stu[high]While(low<high&&Stu[low].key<=privotkey) ++low Stu[low]←→Stu[high]}return low;}7、直接插入排序伪代码及流程图V oid InsertSort(){For(i=2;i<= Last_locate();++i){If(LT(stu[i].key,stu.[i-1].key)){Stu[0]=stu[i]Stu[i]=stu[i-1]For(j=i-2;LT(stu[0].key,stu[j].key);--j)Stu[j+1]=stu[j];Stu[j+1]=stu[0]}}}8、折半查找非递归伪代码及流程图int Search_Bin (SSTable ST, int key ) {int low, high, mid;low = 1; high = ST.length;while (low <= high) {mid = (low + high) / 2;if (key==ST.elem[mid].key) return mid;else if (key<ST.elem[mid].key) high = mid - 1;else low = mid + 1;}return 0;}9、折半查找递归伪代码及流程图int DGSearch_Bin (SSTable ST,int key,int low,int high){ int lo, hig, mi;low = 1; hig = ST.length;mid = (lo + hig) / 2;if(ST.elem[mi].key==key) return mid;if(ST.elem[mi].key>key) return D(ST,key,lo,mi-1);if(ST.elem[mi].key<key) return D(ST,key,mid+1,high);return 0;}3、调试设计3.1、遇到的问题几乎没什么大问题3.2、算法的时空分析T(n)=O(n2)3.3、改进设想在进入某个功能模块时,或者某个功能的某个步骤时,可以允许出现输入错误,因此,要实现进入某个步骤时实现撤销操作…..3.4、经验体会由于第一次写这么复杂的程序,开始有点无从下手,在选择合适的数据结构的时候不知道怎么去选,只能一个一个的去试,最后从结合了C语言的结构体和程序需要用到的算法中慢慢摸索到了合适的数据结构,写程序时会出现好多小的语法问题或者逻辑问题,一点点逻辑问题就会让人抓狂。

但最后还是静下心来梳理情绪,慢慢的找到了问题。

开始的时候没有好好理解折半插入排序。

便把第0个位置也存了信息。

导致哨兵没地方放。

然后又全部修改了。

也许哨兵不一定要放在第0个位置。

但开始遇到的这个问题时,脑子里就只有一个想法,就是全部把信息结构修改一遍,虽然这看起来不是个好方法,但对于这种小程序来说,还是比较容易修改。

总体来说,收获很大。

4、测试结果4.2查询学生信息4.3添加学生信息到指定位置4.4删除学生信息4.5按姓名递归折半查找4.6按学号快速排序5、参考文献1、数据结构(C语言版)——严蔚敏、吴伟民2、C程序设计(第三版)——谭浩强。

相关文档
最新文档