C语言之学生管理系统
c语言制作学生管理系统

学生成绩管理系统(纯C语言做)完成的功能如下:1) 显示全部的记录(读取文件)2) 删除记录(输入一个学生的学号,删除该学生的信息)3) 插入记录(按约定的格式输入一个学生的信息将它插入)4) 查找记录(输入一个学生学号,输出其各科成绩)5)计算总分和平均分6) 排序(根据平均分排名,总分相同者名次一样)7) 保存文件(插入或删除某个记录后,将文件保存)8) 分类合计(分别统计100—90,90—80,80-70,70,60,60分一下的人数,并求出百分比)只要4个成绩即可,部分源代码给出:#include"stdio。
h"main(){char c;int i;do{clrscr ();for(i=0;i〈80;i++)printf(”*");printf("\t 1: 添加一个学生\n”);printf(”\t 2:删除一个学生\n");printf("\t 3: 查找一个学生\n”);printf(”\t 4: 学生信息排序\n”);printf("\t 5:退出\n”);printf(”\t请选择输入选项[1\\2\\3\\4\\5]:\n");do{c=getchar();}while(c!=’1’&&c!=’2’&&c!='3'&&c!=’4’&&c!=’5');getchar();switch(c){case ’1':input(); break;case '2': del(); break; case ’3’:find();break;case '4': arrange(); break; case ’5’:exit(0);}printf(" 按任意键返回主菜单:\n”);getchar();clrscr();}while(1);}/* Note:Your choice is C IDE */#include "stdio。
C语言学生信息管理系统

/*带有登陆功能的学生信息管理系统,其中管理员账号为:admin 密码为:123456*/ #include<stdio.h>#define STU_NUM 50 //学生数量typedef struct{char ID[50]; //学生学号char name[30]; //学生姓名char password[50]; //学生登录密码char class[20]; //学生班级int math_score; //数学成绩int C_score; // C语言成绩int OS_score; //操作系统成绩int age; //年龄}STU;typedef struct{char user[30];char key[50];}Admin;int Student_Num=0;Admin admin[1]={"admin","123456"};STU student[STU_NUM];char login_user[50]; //存储当前登陆用户名char logpassword[50]; //存储当前登陆密码//保存到文件void save(){FILE *fp;int d;if((fp=fopen("stu.dat","wb"))==NULL){printf("can not open data file!\n");return;}fwrite(&Student_Num,sizeof(int),1,fp);for(d=0;d<STU_NUM;d++)if(fwrite(&student[d],sizeof(STU),1,fp)!=1)printf("file write error\n");fclose(fp);}//将文件内容装载到相应数组void load(){FILE *fp;int e;if((fp=fopen("stu.dat","rb"))==NULL){printf("can not open file\n");return;}fread(&Student_Num,sizeof(int),1,fp);for(e=0;e<STU_NUM;e++)if(fread(&student[e],sizeof(STU),1,fp)!=1){if(feof(fp)){fclose(fp);return;}printf("file read error\n");}fclose(fp);}//管理员登陆int admin_login_confirm(){Admin temp;int wt=0;int confirm=0;do{printf("input your username:");scanf("%s",er);printf("input your password:");scanf("%s",temp.key);if(strcmp(er,admin[0].user)==0 && strcmp(temp.key,admin [0].key)==0){confirm=1;break;}else{confirm=0;wt++;printf("wrong password! \n");}}while(wt<3);return confirm;}int check(char ck[50]){int check=0;int ckflag=0;for(check=0;check<Student_Num;check++){if(strcmp(ck,student[check].ID)==0)ckflag=1;return ckflag;}return ckflag;}//学生登录int student_login(){int a;int ok=0;int wrong=0;STU tem;do{printf("user_ID:");scanf("%s",tem.ID);printf("password:");scanf("%s",tem.password);for(a=0;a<Student_Num;a++){if(strcmp(tem.ID,student[a].ID)==0 && strcmp(tem.password,student[a].password)==0){strcpy(login_user,student[a].ID);strcpy(logpassword,student[a].password);ok=1;break;}else{ok=0;}}if(ok==0){wrong++;printf("wrong password\n");}elsebreak;}while(wrong<3);return ok;}//添加学生信息void Add_student(){printf("ID:");scanf("%s",student[Student_Num].ID);while(check(student[Student_Num].ID)==1){printf("the ID is already have!\n");printf("ID:");scanf("%s",student[Student_Num].ID);}printf("name:");scanf("%s",student[Student_Num].name);printf("password:");scanf("%s",student[Student_Num].password);printf("class:");scanf("%s",student[Student_Num].class);printf("math_score:");scanf("%d",&student[Student_Num].math_score);printf("C_score:");scanf("%d",&student[Student_Num].C_score);printf("OS_score:");scanf("%d",&student[Student_Num].OS_score);printf("age:");scanf("%d",&student[Student_Num].age);Student_Num++;}//显示学生信息void display_student(){int b;printf("ID\tname\tclass\tmath_score\tC_score\t\tOS_score\tage\n");for(b=0;b<Student_Num;b++){printf("%s\t%s\t%s\t%d\t\t%d\t\t%d\t\t%d",student[b].ID,student[b].name,student[b].class,student[b].math_sc ore,student[b].C_score,student[b].OS_score,student[b].age);printf("\n");}}//更改学生信息void alter_student(){char alter[50];STU ch;int al,change=0;printf("the ID you want to change:");scanf("%s",alter);for(al=0;al<STU_NUM;al++){if(strcmp(alter,student[al].ID)==0){printf("ID:");scanf("%s",ch.ID);while(check(ch.ID)==1){printf("the ID is already have!\n");printf("ID:");scanf("%s",ch.ID);}printf("name:");scanf("%s",);printf("password:");scanf("%s",ch.password);printf("class:");scanf("%s",ch.class);printf("math_score:");scanf("%d",&ch.math_score);printf("C_score:");scanf("%d",&ch.C_score);printf("OS_score:");scanf("%d",&ch.OS_score);printf("age:");scanf("%d",&ch.age);printf("are you sure you want to change? (Y/N)[ ]\b\b");if(getchar()=='Y'||getchar()=='y'){student[al]=ch;change=1; break;}}}if(change==0) printf("no such user");save();}//查找void search(){char search[50];int sc;printf("the ID you want to search:");scanf("%s",search);for(sc=0;sc<STU_NUM;sc++){if(strcmp(search,student[sc].ID)==0) {printf("ID\tname\tclass\tmath_score\tC_score\t\tOS_score\tage\n");printf("%s\t%s\t%s\t%d\t\t%d\t\t%d\t\t%d",student[sc].ID,student[sc].name,student[sc].class,student[sc].math_ score,student[sc].C_score,student[sc].OS_score,student[sc].age);printf("\n");break;}}if(sc>=STU_NUM) printf("no such student!\n");}//删除void delete_student(){char del[50];STU dele;int de;printf("the ID you want to delete:");scanf("%s",del);for(de=0;de<STU_NUM;de++){if(strcmp(del,student[de].ID)==0) {printf("ID\tname\tclass\tmath_score\tC_score\t\tOS_score\tage\n");printf("%s\t%s\t%s\t%d\t\t%d\t\t%d\t\t%d",student[de].ID,student[de].name,student[de].class,student[de].mat h_score,student[de].C_score,student[de].OS_score,student[de].age);printf("\n");break;}}if(de>=STU_NUM) printf("no such student!\n");else{printf("are you sure you want to delete? y/n [ ]\b\b");if(getchar()=='Y'||getchar()=='y'){dele=student[de];student[de]=student[Student_Num-1];student[Student_Num-1]=dele;Student_Num--;}}save();}//更改学生登录密码void change_password(){char ps1[50],ps2[50],old[50];int point=0;int inputcnt=1;printf("please input your old password:");scanf("%s",old);while(strcmp(old,logpassword)!=0){printf("old password is wrong!\n");printf("please input your old password:");scanf("%s",old);if(inputcnt>=2) { printf("you have wrong 3 times!\n"); return;}inputcnt++;}printf("input new password:");scanf("%s",ps1);printf("confirm new password:");scanf("%s",ps2);if(strcmp(ps1,ps2)==0){printf("Are you sure to change? y/n [ ]\b\b");if(getchar()=='Y'||getchar()=='y'){for(point=0;point<Student_Num;point++){if(strcmp(login_user,student[point].ID)==0){strcpy(student[point].password,ps1);save();break;}}}}}//显示主菜单void display_Main_Menu(){printf("***************Welcome to Student Management System***************\n");printf("** **\n");printf("** 1.administrator Login er Login 3.exit system **\n");printf("** **\n");printf("******************************************************************\n");printf("your choice:[ ]\b\b");}//管理员功能菜单void display_admin_function(){printf("***********************************************\n");printf("**** M | 1.add student ****\n");printf("**** | 2.save stdudent information ****\n");printf("**** E | 3.alter student information ****\n");printf("**** | 4.search for student information ****\n");printf("**** N | 5.delete student information ****\n");printf("**** | 6.display student information ****\n");printf("**** U | 7.exit ****\n");printf("***********************************************\n");}//学生功能菜单void display_user_function(){printf("============student login============\n");printf("** 1.check information **\n");printf("** 2.change password **\n");printf("** 3.exit **\n");printf("=====================================\n");}//管理员功能选择int Admin_function(){int ach;while(1){display_admin_function();printf("select your choice[ ]\b\b");scanf("%d",&ach);switch(ach){case 1: Add_student(); break;case 2: save(); break;case 3: alter_student(); break;case 4: search(); break;case 5: delete_student(); break;case 6: display_student(); break;case 7: display_Main_Menu(); return 0;default: printf("repeat!\n"); break;}}}//学生功能选择int user_function(){int uch;int back=0;while(1){display_user_function();printf("hello,student make your choice[ ]\b\b");scanf("%d",&uch);switch(uch){case 1: display_student(); break;case 2: change_password(); break;case 3: back=1; return back;default: printf("everything is ok\n"); break;}return back;}int main(){int choice;load();display_Main_Menu();while(1){scanf("%d",&choice);switch(choice){case 1: if(admin_login_confirm()==1) {Admin_function(); break;}else{printf("you have input wrong password 3 times! exit the system...\n");return 0;}case 2: if(student_login()==1) {if(user_function()==1) return 0;elsebreak;}elseprintf("you have input wrong password 3 times! exit the system...\n");return 0;case 3: return 0;default: printf("please input 1~3\n");display_Main_Menu();break;}}}。
学生管理系统c语言简单版

学生管理系统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语言编写的一个学生信息管理系统

路漫漫其修远兮,吾将.上F而求索・百度文库用C语言实现线性表的基本操作,能创建一个基于学生信息管理的链表,至少包含数据输入、数据输出、数据处理等操作。
在主函数里能实现以下功能。
运行后出现一个选择提示。
可选择的功能有1)创建新的学生信息链表2)增加一个新的学生信息3)按学号删除某个学生信息4)按学号查找某个学生信息5)可以按照学生成绩对■链表排序6)退出系统#include "stdio.h"#include "stdlib.h"#include "string.h n#include ,,conio.h Hjiemian();struct student(char name[50];char sex[5];int age;char num[50];float scorel;float score2;float score3;float sum;float ave;}stu[50],del;void gnl()(int i=0;char numl;for(i=0;i<50;i++)(printf「请输入要添加的学生资料:\n“);printf(“学号巧;scanf("%s",stu[i].num);printf("姓名巧;scanf("%s",stu[i].name);printf(“性别巧;scanf("%s",&stu[i].sex);printf(“年龄巧;scanf("%d",&stu[i].age);11目上下而求索•百度文库printf(”请输入学生的三门成绩:'俏;printf("语文门;scanf(,,%f,,,&stu[i].scorel);printf(“数学门;scanf(,,%f,,,&stu[i].score2);printf("英语巧;scanf(,,%f,,,&stu[i].score3);printf("是否继续添加:y/n\n“); scanf(,,%c,,,&numl);scanf(,,%c,,,&numl);if(numl==,N, 11 numl=="n,){system(,,cls"); jiemian();)))void gn2()(int i;char num[50];printf「请输入要查找的学生学号:\n“);scanf(,,%s,,/num);for(i=0;i<50;i++)if(strcmp(stu[i].num,num)==O) (stu[i].sum=stu[i].scorel+stu[i].score2+stu[i].score3;stu[i].ave=stu[i].sum^;printf(',%s\t%s\t%s\t%d\t%,2f\t%.2f\t%.2f\t%.2f\t%.2f:\n'l/stu[i].num/stu[i].name/stu[i].sex/stu[i] .age,s tu[i].scorel/stu[i].score2/stu[i].score3/stu[i].sum/stu[i].ave);break;)if(i==50)printf("查找不到!请重新输入!\n");22路漫漫其修远兮,吾将上F而求索・百度文库getch(); systemf'cls"); jiemian();)void gn3()(char numlJ=0;printf("请输入要修改的学生学号:\n“);scanf(,,%s,,/stu[i].num);printf(,l%s\t%s\t%s\t%d\t%,2f\t%.2f\t%.2f\t%.2f\t%.2f:\n'l/stu[i].num/stu[i].name/stu[i].sex/stu[i] .age,s tu[i].scorel/stu[i].score2/stu[i].score3/stu[i].sum/stu[i].ave);printf("姓名门;scanf(,,%s,,/stu[i].name);printf(“性别门;scanf(,,%s,,/stu[i].sex);printf("年龄门;scanf(,,%d,,,&stu[i].age);printf(“请输入学生的三门成绩:\n“);printf("语文门;scanf(,,%f,,,&stu[i].scorel);printf(“数学门;scanf(,,%f,,,&stu[i].score2);printf("英语门;scanf(,,%f,,,&stu[i].score3);printf("是否继续修改:y/n?\n“);scanf(,,%c"/&numl);scanf(,,%c,\&numl);if(numl==,N, 11 numl==,n,)systemf'cls"); jiemian();)void gn4()(int i;char num[50];printf("请输入要删除的学生学号:\n“);scanf(,,%s,,,num);for(i=0;i<50;i++) 33if(strcmp(num,stu[i].num)==O)(printf(,,%s\t%s\t%s\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f:\n,,/stu[i].num/stu[i].name/stu[i].sex/stu[i] .age,stu[i].scorel/stu[i].score2/stu[i].score3/stu[i].sum/stu[i].ave);stu[i]=del;printf("信息已删除,按任意键返回..\n“); break;)if(i==50)printf ("您输入的信息不存在!\n”);getch();system("cls"); jiemian();)void gn5()(int i=0;stu[i].sum=stu[i].scorel+stu[i].score2+stu[i].score3;stu[i].ave=stu[i].sum/3;printf("学号\t姓名\t性别\t年龄\t语文\t数学\t英语\t总成绩\t平均成绩\n");for(i=0;i<50;i++)(if(stu[i].age==O)break;printf(,,%s\t%s\t%s\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f:\n,,/stu[i].num/stu[i].name/stu[i].sex/stu[i] .age,stu[i].scorel/stu[i].score2/stu[i].score3/stu[i].sum/stu[i].ave);)printf("按任意键返回.getch();system(,,cls n);jiemian();)void gn6()(FILE *fp;int i;char filename[50];printf(,,\n N); 44路漫漫其修远兮,吾将上F而求索・百度文库printf(,,\n M);printf(“请输入要保存的文件名:");scanf(”%s”,filename);if((fp=fopen(filename/,wb,,))==NULL)printf("文件名为空,不能保存!\n");for(i=0;i<50;i++)(if(fwrite(&stu[i],sizeof(struct student),l,fp)!=l) printf("文件保存失败!\n”);)fclose(fp);printf (“文件己保存!\n“);printf。
C实现简单的学生信息管理系统控制台程序

C实现简单的学生信息管理系统控制台程序学生信息管理系统是一种用于管理学生的基本信息的应用程序。
在这个系统中,可以实现学生信息的录入、修改、查询和删除等功能,以便对学生信息进行有效的管理和维护。
下面是一个用C语言实现的简单学生信息管理系统的示例代码。
```c#include <stdio.h>#include <stdlib.h>//定义学生结构体struct studentint id;char name[50];int age;};//全局变量,用于存储学生信息struct student students[100];int count = 0;//函数声明void menu(;void addStudent(;void listStudents(;void searchStudent(;void deleteStudent(;void updateStudent(;//主函数int maimenu(;return 0;//菜单函数void menint choice;doprintf("\n====== Student Information Management System ======\n");printf("1. Add student\n");printf("2. List students\n");printf("3. Search student\n");printf("4. Delete student\n");printf("5. Update student\n");printf("0. Exit\n");printf("Please enter your choice: "); scanf("%d", &choice);switch (choice)case 1:addStudent(;break;case 2:listStudents(;break;case 3:searchStudent(;break;case 4:deleteStudent(;break;case 5:updateStudent(;break;case 0:printf("Exit the system\n");break;default:printf("Invalid choice! Please try again\n");break;}} while (choice != 0);//添加学生函数void addStudenif (count >= 100)printf("The number of students has reached the upper limit!\n");return;}struct student newStudent;printf("Please enter student ID: ");scanf("%d", &newStudent.id);printf("Please enter student name: ");scanf("%s", );printf("Please enter student age: ");scanf("%d", &newStudent.age);students[count] = newStudent;count++;printf("Add student successfully!\n");//列出学生函数void listStudentif (count == 0)printf("No student information is available!\n");return;}printf("====== Student List ======\n");printf("ID\tName\t\tAge\n");for (int i = 0; i < count; i++)printf("%d\t%s\t\t%d\n", students[i].id, students[i].name, students[i].age);}void searchStudenif (count == 0)printf("No student information is available!\n"); return;}int id;printf("Please enter student ID: ");scanf("%d", &id);for (int i = 0; i < count; i++)if (students[i].id == id)printf("Student Information:\n");printf("ID: %d\n", students[i].id);printf("Name: %s\n", students[i].name);printf("Age: %d\n", students[i].age);return;}}printf("Student with ID %d does not exist!\n", id);void deleteStudenif (count == 0)printf("No student information is available!\n"); return;}int id;printf("Please enter student ID: ");scanf("%d", &id);for (int i = 0; i < count; i++)if (students[i].id == id)for (int j = i; j < count - 1; j++)students[j] = students[j+1]; // 将后面的学生信息往前移动}count--;printf("Delete student successfully!\n");return;}}printf("Student with ID %d does not exist!\n", id); //更新学生函数void updateStudenif (count == 0)printf("No student information is available!\n"); return;}int id;printf("Please enter student ID: ");scanf("%d", &id);for (int i = 0; i < count; i++)if (students[i].id == id)printf("Please enter student name: ");scanf("%s", students[i].name);printf("Please enter student age: ");scanf("%d", &students[i].age);printf("Update student information successfully!\n"); return;}}printf("Student with ID %d does not exist!\n", id);```这是一个简单的学生信息管理系统控制台程序,实现了学生的添加、列出、查询、删除和更新等功能。
学生信息管理系统c语言

学生信息管理系统c语言1学生信息管理系统C语言学生信息管理系统C语言是一个以全校学生信息为对象,以c 语言为编程语言,以windows或linux系统环境下操作的具有管理功能的软件系统。
它的主要功能是实现学校的学生信息的管理和处理,如查询、添加、修改、删除学生信息等功能。
2学生信息管理系统C语言的成熟度目前,用c语言开发出来的学生信息管理系统已经具备较高的成熟度,它可以实现大多数主流学校的学生信息管理系统的基本需求,如学生信息查询、增加、删除、修改等,同时也可以实现更多复杂的功能,比如报表统计、统一登录和权限管理等。
3学生信息管理系统C语言的主要功能学生信息管理系统C语言的主要功能有:学生信息查询、增加、删除、修改,录入、报表统计、统一登录和权限管理等功能,其中学生信息查询的功能可以实现学生的基本信息,学习成绩,校园缴费,报到服务等查询;增加、删除和修改功能可以方便学校对学生信息进行管理;报表统计使用Excel或Access或界面精密Tsort对学生信息进行统计;统一登录和权限管理是指学校可以给不同用户赋予不同的权限,不同用户只能访问其角色所拥有的功能。
4学生信息管理系统C语言的优缺点学生信息管理系统用c语言编写的优点是:代码调试方便,程序运行速度快,新手也能上手,而且对于数据库实现也比较容易;优点也有缺点,首先,C语言是一门面向过程编程语言,缺乏面向对象、动态内存分配等特性,可维护性和可扩展性较差,其次,C语言的数据类型容易混乱,入口函数的嵌套层次太深容易出错。
5改进建议为了提高学生信息系统C语言的安全性、可扩展性和可维护性,让系统更加智能,建议:①使用现代化的Java、Python或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语言学生管理系统

C语言学生管理系统#include#include#include#include#include#define LEN sizeof(struct student)#define FORMAT "%-8d%-15s%-12.1lf%-12.1lf%-12.1lf%-12.1lf\n"#define DATA stu[i].num,stu[i].name,stu[i].elec,stu[i].expe,stu[i].requ,stu[i].sum struct student/*定义学生成绩结构体*/{ int num;/*学号*/char name[15];/*姓名*/double elec;/*选修课*/double expe;/*实验课*/double requ;/*必修课*/double sum;/*总分*/};struct student stu[50];/*定义结构体数组*/void in();/*录入学生成绩信息*/void show();/*显示学生信息*/void order();/*按总分排序*/void del();/*删除学生成绩信息*/void modify();/*修改学生成绩信息*/void menu();/*主菜单*/void insert();/*插入学生信息*/void total();/*计算总人数*/void search();/*查找学生信息*/void main()/*主函数*/{ int n;menu();scanf("%d",&n);/*输入选择功能的编号*/while(n){ switch(n){ case 1: in();break;case 2: search();break;case 3: del();break;case 4: modify();break;case 5: insert();break;case 6: order();break;case 7: total();break;default:break;}getch();menu();/*执行完功能再次显示菜单界面*/scanf("%d",&n);}}void in()/*录入学生信息*/{ int i,m=0;/*m是记录的条数*/char ch[2];FILE *fp;/*定义文件指针*/if((fp=fopen("data.txt","a+"))==NULL)/*打开指定文件*/ { printf("can not open\n");return;}while(!feof(fp)) {if(fread(&stu[m] ,LEN,1,fp)==1)m++;/*统计当前记录条数*/}fclose(fp);if(m==0)printf("No record!\n");else{system("cls");show();/*调用show函数,显示原有信息*/}if((fp=fopen("data.txt","wb"))==NULL){ printf("can not open\n");return;}for(i=0;iscanf("%s",ch);while(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)/*判断是否要录入新信息*/ {printf("number:");scanf("%d",&stu[m].num);/*输入学生学号*/ for(i=0;i<m;i++)< p="">if(stu[i].num==stu[m].num){printf("the number is existing,press any to continue!");getch();fclose(fp);return;}printf("name:");scanf("%s",stu[m].name);/*输入学生姓名*/printf("elective:");scanf("%lf",&stu[m].elec);/*输入选修课成绩*/printf("experiment:");scanf("%lf",&stu[m].expe);/*输入实验课成绩*/printf("required course:");scanf("%lf",&stu[m].requ);/*输入必修课成绩*/ stu[m].sum=stu[m].elec+stu[m].expe+stu[m].requ;/*计算出总成绩*/if(fwrite(&stu[m],LEN,1,fp)!=1)/*将新录入的信息写入指定的磁盘文件*/{ printf("can not save!"); getch(); }else { printf("%s saved!\n",stu[m].name);m++;}printf("continue?(y/n):");/*询问是否继续*/scanf("%s",ch);}fclose(fp);printf("OK!\n");}void show(){ FILE *fp;int i,m=0;fp=fopen("data.txt","rb");while(!feof(fp)){if(fread(&stu[m] ,LEN,1,fp)==1)m++;}fclose(fp);printf("number name elective experiment required sum\t\n");for(i=0;i<m;i++)< p="">{printf(FORMAT,DATA);/*将信息按指定格式打印*/}}void menu()/*自定义函数实现菜单功能*/{system("cls");printf("\n\n\n\n\n");printf("\t\t|---------------------STUDENT-------------------|\n");printf("\t\t|\t 0. exit |\n");printf("\t\t|\t 1. input record |\n");printf("\t\t|\t 2. search record |\n");printf("\t\t|\t 3. delete record |\n");printf("\t\t|\t 4. modify record |\n");printf("\t\t|\t 5. insert record |\n");printf("\t\t|\t 6. order |\n");printf("\t\t|\t 7. number |\n");printf("\t\t|-----------------------------------------------|\n\n");printf("\t\t\tchoose(0-7):");}void order()/*自定义排序函数*/{ FILE *fp;struct student t;int i=0,j=0,m=0;if((fp=fopen("data.txt","r+"))==NULL){printf("can not open!\n");return;}while(!feof(fp))if(fread(&stu[m] ,LEN,1,fp)==1)m++;fclose(fp);if(m==0){printf("no record!\n");return;}if((fp=fopen("data.txt","wb"))==NULL){printf("can not open\n");return;}for(i=0;i<m-1;i++)< p="">for(j=i+1;j<="" p="">if(stu[i].sum<stu[j].sum)< p="">{ t=stu[i];stu[i]=stu[j];stu[j]=t;}if((fp=fopen("data.txt","wb"))==NULL){ printf("can not open\n");return;}for(i=0;i{printf("%s can not save!\n");getch();}fclose(fp);printf("save successfully\n");}void del()/*自定义删除函数*/{FILE *fp;int snum,i,j,m=0;char ch[2];if((fp=fopen("data.txt","r+"))==NULL){ printf("can not open\n");return;}while(!feof(fp)) if(fread(&stu[m],LEN,1,fp)==1) m++; fclose(fp);if(m==0){printf("no record!\n");return;}printf("please input the number:");scanf("%d",&snum);for(i=0;i<m;i++)< p="">if(snum==stu[i].num)break;printf("find the student,delete?(y/n)");scanf("%s",ch);if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)/*判断是否要进行删除*/for(j=i;j<m;j++)< p="">stu[j]=stu[j+1];/*将后一个记录移到前一个记录的位置*/m--;/*记录的总个数减1*/if((fp=fopen("data.txt","wb"))==NULL){ printf("can not open\n");return;}for(j=0;j<="" p="">if(fwrite(&stu[j] ,LEN,1,fp)!=1){ printf("can not save!\n");getch();}fclose(fp);printf("delete successfully!\n");}void search()/*自定义查找函数*/{ FILE *fp;int snum,i,m=0;char ch[2];if((fp=fopen("data.txt","rb"))==NULL){ printf("can not open\n");return;}while(!feof(fp)) if(fread(&stu[m],LEN,1,fp)==1) m++;fclose(fp);if(m==0) {printf("no record!\n");return;}printf("please input the number:");scanf("%d",&snum);for(i=0;i<m;i++)< p="">if(snum==stu[i].num)/*查找输入的学号是否在记录中*/{ printf("find the student,show?(y/n)");scanf("%s",ch);if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0){printf("number name elective experiment required sum\t\n");printf(FORMAT,DATA);/*将查找出的结果按指定格式输出*/ break;}}if(i==m) printf("can not find the student!\n");/*未找到要查找的信息*/}void modify()/*自定义修改函数*/{ FILE *fp;int i,j,m=0,snum;if((fp=fopen("data.txt","r+"))==NULL){ printf("can not open\n");return;}while(!feof(fp))if(fread(&stu[m],LEN,1,fp)==1) m++;if(m==0) {printf("no record!\n");fclose(fp);return;}printf("please input the number of the student which do you want to modify!\n"); scanf("%d",&snum);for(i=0;i<m;i++)< p="">if(snum==stu[i].num)/*检索记录中是否有要修改的信息*/break;printf("find the student!you can modify!\n");printf("name:\n");scanf("%s",stu[i].name);/*输入名字*/printf("\nelective:");scanf("%lf",&stu[i].elec);/*输入选修课成绩*/printf("\nexperiment:");scanf("%lf",&stu[i].expe);/*输入实验课成绩*/printf("\nrequired course:");scanf("%lf",&stu[i].requ);/*输入必修课成绩*/stu[i].sum=stu[i].elec+stu[i].expe+stu[i].requ;if((fp=fopen("data.txt","wb"))==NULL){ printf("can not open\n");return;}for(j=0;j<="" p="">if(fwrite(&stu[j] ,LEN,1,fp)!=1){ printf("can not save!"); getch(); }fclose(fp);}void insert()/*自定义插入函数*/{ FILE *fp;int i,j,k,m=0,snum;if((fp=fopen("data.txt","r+"))==NULL){ printf("can not open\n");return;}while(!feof(fp))if(fread(&stu[m],LEN,1,fp)==1) m++;if(m==0) {printf("no record!\n");fclose(fp);return;}printf("please input position where do you want to insert!(input the number)\n"); scanf("%d",&snum);/*输入要插入的位置*/for(i=0;i<m;i++)< p="">if(snum==stu[i].num)break;for(j=m-1;j>i;j--)stu[j+1]=stu[j];/*从最后一条记录开始均向后移一位*/printf("now please input the new information.\n");printf("number:");scanf("%d",&stu[i+1].num);for(k=0;k<m;k++)< p="">if(stu[k].num==stu[i+1].num){printf("the number is existing,press any to continue!");getch();fclose(fp);return;}printf("name:\n");scanf("%s",stu[i+1].name);printf("\nelective:");scanf("%lf",&stu[i+1].elec);printf("\nexperiment:");scanf("%lf",&stu[i+1].expe);printf("\nrequired course:");scanf("%lf",&stu[i+1].requ);stu[i+1].sum=stu[i+1].elec+stu[i+1].expe+stu[i+1].requ;if((fp=fopen("data.txt","wb"))==NULL){ printf("can not open\n");return;}for(k=0;k<=m;k++)if(fwrite(&stu[k] ,LEN,1,fp)!=1)/*将修改后的记录写入磁盘文件中*/{ printf("can not save!"); getch(); }fclose(fp);}void total(){ FILE *fp;int m=0;if((fp=fopen("data.txt","r+"))==NULL){ printf("can not open\n");return;}while(!feof(fp))if(fread(&stu[m],LEN,1,fp)==1)m++;/*统计记录个数即学生个数*/if(m==0) {printf("no record!\n");fclose(fp);return;}printf("the class are %d students!\n",m);/*将统计的个数输出*/ fclose(fp);}</m;k++)<></m;i++)<></m;i++)<></m;i++)<></m;j++)<></m;i++)<></stu[j].sum)<></m-1;i++)<></m;i++)<></m;i++)<>。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
流程图:运行结果:程序源码:#include <stdio.h>#include <malloc.h>#include <string.h>#include <stdlib.h>#include<conio.h>#define LEN sizeof(struct student)//求字节数运算符struct student{char name[20];long int num;char sex[4];int age;char address[30];float score;struct student *next;//链表};//定义一个结构题int TOTAL_NUM = 0;//学生总数struct student *head = NULL;void mainmenu ();//主界面void record (); //记录数据void insert(struct student *stu); //插入数据void display(struct student *stu); //显示一个学生的信息void displayAll (); //显示所有学生的信息void query(); //查询学生信息void query_by_num(); //按学号查询学生信息void query_by_name();void readData (); //读取文件里学生的信息void writeData (); //向文件写入学生信息void freeAll (); //清空链表内容void del (); //删除学生信息void change (); //更改学生信息void sort();//排序void devise (struct student *p); //选择更改内容int main (void){mainmenu ();return 0;}//系统主菜单void mainmenu (){int choice;choice = -1;readData ();printf ("\t\t\t----------------------------------------------------\n"); printf ("\t\t\t| 欢迎使用通信工程专业学生信息管理系统|\n");printf ("\t\t\t----------------------------------------------------\n"); printf ("\t\t\t本程序需要在当前目录下建立student.txt才可正常运行\n");do{printf ("\n\n\n");printf ("\t\t\t--------------------------------------------\n");printf ("\t\t\t通信工程专业学生信息管理系统|\n");printf ("\t\t\t--------------------------------------------\n");printf ("\t\t\t[1]----录入学生信息|\n");printf ("\t\t\t[2]----浏览学生信息|\n");printf ("\t\t\t[3]----查询学生信息|\n");printf ("\t\t\t[4]----删除学生信息|\n");printf ("\t\t\t[5]----修改学生信息|\n");printf ("\t\t\t[6]----排序|\n");printf ("\t\t\t[0]----退出系统|\n");printf ("\t\t\t--------------------------------------------\n");printf ("请输入您的选择");scanf ("%d", &choice);switch (choice){case 0:writeData ();freeAll (); exit (0);case 1:record ();break;case 2:displayAll ();break;case 3:query ();break;case 4:del ();break;case 5:change ();break;case 6:sort ();break;default:printf ("\n无效选项!");break;}}while (choice != 0);}//录入学生信息void record (){struct student *p0;p0 = (struct student *)malloc(LEN);printf ("\t\t\t请输入学生的姓名:");scanf ("%s",p0->name);printf ("\t\t\t请输入学生的学号:");scanf ("%ld",&p0->num);printf ("\t\t\t请输入学生的性别:");scanf ("%s",p0->sex);printf ("\t\t\t请输入学生的年龄:");scanf ("%d",&p0->age);printf ("\t\t\t请输入学生的地址:");scanf ("%s",p0->address);printf ("\t\t\t请输入学生的成绩:");scanf ("%f",&p0->score);insert (p0);printf ("\t\t\t该学生的信息为:\n");printf ("\t\t\t-------------------------------------------------------------------------------\n");printf ("\t\t\t姓名\t学号\t\t年龄\t性别\t地址\t\t成绩\n");display (p0);}void insert (struct student *stu){struct student *p0, *p1, *p2;p1 = head;p0 = stu;if (head == NULL){head = p0;p0->next = NULL;}else{while ((p0->num > p1->num)&&(p1->next != NULL)){p2 = p1;p1 = p1->next;}if (p0->num <= p1->num){if (head == p1)head = p0;elsep2->next = p0;p0->next = p1;}else{p1->next = p0;p0->next = NULL;}}TOTAL_NUM++;}void display (struct student *p){printf ("\t\t\t%s\t%ld\t\t%d\t%s\t%s\t\t%f\n", p->name, p->num, p->age, p->sex,p->address, p->score);}//浏览学生信息void displayAll(){struct student *p;printf("\t\t\t学生总数:%d\n", TOTAL_NUM);p = head;if (head != NULL){printf("\t\t\t姓名\t学号\t\t年龄\t性别\t地址\t\t成绩\n");printf("\t\t\t-------------------------------------------------------------------------------\n");do{display(p);p = p->next;}while(p != NULL);}printf ("\n");}void query(){int choice;choice = -1;do{printf("\n");printf("--------------------\n");printf("| 按学号查询请按1 |\n");printf("| 按姓名查询请按2 |\n");printf("| 取消请按0 |\n");printf("+--------------------+\n");printf("请输入您的选择");scanf("%d", &choice);switch(choice){case 0:return;case 1:query_by_num();break;case 2:query_by_name();break;default:printf("\n无效选项!");break;}}while(choice != 0);}//按姓名查询学生信息void query_by_name(){char name[20];struct student *p1;printf("请输入学生的姓名");scanf("%s", name);if(head==NULL){printf("无学生记录\n");return;}p1=head;while(strcmp(name, p1->name) && p1->next!=NULL)p1=p1->next;if(!strcmp(name, p1->name)){printf("\t\t\t姓名\t学号\t\t年龄\t性别\t地址\t\t成绩\n");printf("\t\t\t-------------------------------------------------------------------------------\n");display(p1);}elseprintf("没有该学生记录请核对");}//按学号查询学生信息void query_by_num (){int num;struct student *p1;printf("请输入学生的学号");scanf("%ld", &num);if(head==NULL){printf("无学生记录\n");return;}p1 = head;while (num!=p1->num && p1->next!=NULL)p1 = p1->next;if (num == p1->num){printf ("\t\t\t姓名\t学号\t\t年龄\t性别\t地址\t\t成绩\n");printf ("\t\t\t-------------------------------------------------------------------------------\n");display (p1);}elseprintf ("\t\t\t没有该学生记录请核对");}//写入文件void writeData (){FILE* fp;//文件指针struct student *p;fp = fopen("1.txt", "w");if (!fp){printf("文件打开错误");return;}fprintf(fp,"%d\n", TOTAL_NUM);for(p = head; p!= NULL; p= p->next){fprintf(fp,"%s\t%ld\t%s\t%d\t%s\t%f\n", p->name, p->num, p->sex, p->age, p->address, p->score);}fclose (fp);}void freeAll (){struct student *p1, *p2;p1 = p2=head;while(p1){p2=p1->next;free (p1);p1 = p2;}}//读取文件void readData (){FILE* fp;//文件指针struct student *p1, *p2;fp = fopen("student.txt", "r");if (!fp){printf("文件打开错误");return;}fscanf(fp,"%d\n", &TOTAL_NUM);head = p1 = p2 = (struct student *)malloc(LEN);fscanf(fp,"%s\t%ld\t%s\t%d\t%s\t%f\n", p1->name, &p1->num, p1->sex,&p1->age, p1->address, &p1->score);while(!feof(fp)){p1 = (struct student *)malloc(LEN);fscanf(fp,"%s\t%ld\t%s\t%d\t%s\t%f\n", p1->name, &p1->num, p1->sex, &p1->age, p1->address, &p1->score);p2->next = p1;p2 = p1;}p2->next = NULL;fclose(fp);}//删除学生信息void del (){struct student *p1, *p2;long int num;if (head == NULL){printf("无学生记录\n");return;}printf("请输入您要删除的学生的学号");scanf("%ld", &num);p1 = head;while (num != p1->num && p1->next != NULL){p2 = p1;p1 = p1->next;}if(num == p1->num){if(p1 == head)head = p1->next;elsep2->next = p1->next;free(p1);TOTAL_NUM--;}elseprintf("没有该学生记录请核对\n");}void sort() //排序模块。