学生信息管理系统c语言

合集下载

c语言学生管理系统代码

c语言学生管理系统代码

C语言学生管理系统代码
简介
学生管理系统是一个用于管理学生信息的简单程序,它可以实现添加学生信息、显示学生信息、修改学生信息和删除学生信息等功能。

通过这个系统,学校或机构可以更方便地管理和维护学生的相关数据。

功能
1.添加学生信息:通过输入学生的姓名、学号、年龄和性别等信息,将
学生信息存储在系统中。

每个学生信息包括学号、姓名、年龄和性别等关键信息。

2.显示学生信息:可以显示系统中所有学生的信息,包括学号、姓名、
年龄和性别。

3.修改学生信息:通过输入学生的学号,可以修改该学生的姓名、年龄
和性别等信息。

4.删除学生信息:通过输入学生的学号,可以删除该学生的信息。

实现
下面是一个简单的C语言学生管理系统代码示例:
```c #include <stdio.h> #include <string.h>
#define MAX_STUDENTS 100
// 定义学生结构体 struct Student { int id; char name[100]; int age; char
gender[10]; };
// 定义全局变量,用于存储学生信息和统计学生数量 struct Student
students[MAX_STUDENTS]; int num_students = 0;
// 添加学生 void addStudent() { if (num_students >= MAX_STUDENTS) { printf(。

C语言学生信息管理系统

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语言源代码

#include<stdio.h>#include<malloc.h>#include<string.h>#include<stdlib.h>#define len sizeof(struct student)FILE *fp;struct student{long num;char name[15];int age;char sex[3];char chushen[10];char dizhi[20];char phone[11];char email[20];struct student *next;};void menu(){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("=====================================\n");}struct student *creat() //录入学生信息{int n;struct student *head;struct student *p1,*p2;n=0;p1=p2=(struct student *) malloc(len);scanf("%d\t%d\t%s\t%s\t%s\t%s\t%s\t%s",&p1->num,&p1->age,p1->name,p1->sex,p1->chushen ,p1->dizhi,p1->phone,p1->email);head=NULL;while(p1->num!=0){n=n+1;if(n==1) head=p1;else p2->next=p1;p2=p1;p1=(struct student *)malloc(len);scanf("%d\t%d\t%s\t%s\t%s\t%s\t%s\t%s",&p1->num,&p1->age,p1->name,p1->sex,p1->chu shen,p1->dizhi,p1->phone,p1->email);}p2->next=NULL;return(head);}void insert(struct student *head) //插入学生信息{int search_num;struct student *p,*q,*s;p=head;printf("在哪个学生前插入请输入学号:\n");scanf("%d",&search_num);while((p!=NULL)&&(p->num!=search_num)){q=p;p=p->next;}s=(struct student *)malloc(len);q->next=s;system("cls");printf("请输入学生信息:\n");printf("学号\t年龄\t姓名\t性别\t出生\t地址\t电话\te-mail\n");scanf("%d\t%d\t%s\t%s\t%s\t%s\t%s\t%s",&s->num,&s->age,s->name,s->sex,s->chushen,s->diz hi,s->phone,s->email);s->next=p;}void printList(struct student *head) //浏览全部学生信息{struct student *p;p=head;if(head==NULL)printf("没有学生信息!!\n");else{do{fread(p,len,1,fp);printf("%d\t%d\t%s\t%s\t%s\t%s\t%s\t%s\n",p->num,p->age,p->name,p->sex,p->chushen,p->diz hi,p->phone,p->email);p=p->next;}while(p!=NULL);}}void findList_num(struct student *head,long search_num) //按学号查找{struct student *p;p=head;while((p!=NULL)&&(p->num!=search_num))p=p->next;if(p!=NULL)printf("%d\t%d\t%s\t%s\t%s\t%s\t%s\t%s\n",p->num,p->age,p->name,p->sex,p->chushen,p->diz hi,p->phone,p->email);elseprintf("没有该学生信息!!\n");}void findList_name(struct student *head,char *search_name) //按姓名查找{struct student *p;int cmp1=0,cmp=0;p=head;while(p!=NULL)if(strcmp(p->name,search_name)!=0){p=p->next;cmp++;}else{printf("%d\t%d\t%s\t%s\t%s\t%s\t%s\t%s\n",p->num,p->age,p->name,p->sex,p->chushen,p->dizhi,p->phone,p->email);p=p->next;cmp1=1;}if(cmp!=0&&cmp1==0)printf("没有该学生信息!!\n");}void xiugai(struct student *p1,long xiu_num) //修改学生信息{struct student *p2;p2=p1;while((p2!=NULL)&&(p2->num!=xiu_num))p2=p2->next;if(p2!=NULL){scanf("%d\t%d\t%s\t%s\t%s\t%s\t%s\t%s",&p2->num,&p2->age,p2->name,p2->sex,p2->chu shen,p2->dizhi,p2->phone,p2->email);}elseprintf("没有该学生信息!!\n");}struct student *delList(struct student *head,long del_num) // 删除学生信息{struct student *p,*q;p=head;q=head;while(p &&(p->num != del_num)){q=p;p=p->next;}if(p==NULL)printf("无此学号!\n");else{if(p == head){head = p->next;free(p);}else{q->next = p->next;free(p);}}return head;}void paixu(struct student *head) //按学号排序{struct student *p,*f,*t;char ch[100];int i;t=f=p=head;for(p=head;p->next!=NULL;p=p->next){for(t=head,f=t->next;t->next!=NULL;t=t->next,f=f->next){if(t->num>f->num>0){i=t->num;t->num=f->num;f->num=i;i=t->age;t->age=f->age;f->age=i;strcpy(ch,t->name);strcpy(t->name,f->name);strcpy(f->name,ch);strcpy(ch,t->sex);strcpy(t->sex,f->sex);strcpy(f->sex,ch);strcpy(ch,t->chushen);strcpy(t->chushen,f->chushen);strcpy(f->chushen,ch);strcpy(ch,t->dizhi);strcpy(t->dizhi,f->dizhi);strcpy(f->dizhi,ch);strcpy(ch,t->phone);strcpy(t->phone,f->phone);strcpy(f->phone,ch);strcpy(ch,t->email);strcpy(t->email,f->email);strcpy(f->email,ch);}}}// return head;}void save(struct student *head) //保存为磁盘文件{struct student *p;if((fp=fopen("keshe","w"))==NULL){printf("cannot open this file\n");exit(0);}p=head;while(p!=NULL){fprintf(fp,"%d\n",p->num);fprintf(fp,"%d\n",p->age);fprintf(fp,"%s\n",p->name);fprintf(fp,"%s\n",p->sex);fprintf(fp,"%s\n",p->chushen);fprintf(fp,"%s\n",p->dizhi);fprintf(fp,"%s\n",p->phone);fprintf(fp,"%s\n",p->email);p=p->next;}fclose(fp);}struct student *read() //从磁盘读取文件{struct student *head=NULL;struct student *p=NULL;struct student *t=NULL;int a;// fp=fopen("keshe","r");if((fp=fopen("keshe","r"))==NULL){printf("cannot open this file\n");exit(0);}while(1){t=(struct student *)malloc(len);a=fscanf(fp,"%d\t%d\t%s\t%s\t%s\t%s\t%s\t%s",&t->num,&t->age,t->name,t->sex,t->chush en,t->dizhi,t->phone,t->email);if(a==0||a==-1)return head;t->next=NULL;if(p==NULL){p=t;head=t;}else{p->next=t;p=p->next;p->next=NULL;}}fclose(fp);}void main(){int code=0;struct student *pt = NULL;while(code!=8){menu();printf("请输入上述序号进行操作:\n");scanf("%d",&code);system("cls");switch(code){case 1:{system("cls");printf("每个学生的信息之间用Tab键分隔\n");printf("===========================录入学生信息==============================\n");printf("---------------------------------------------------------------------\n");printf("学号\t年龄\t姓名\t性别\t出生\t地址\t电话\te-mail\n");pt=creat();save(pt);system("cls");printf("===========================录入学生信息==============================\n");printf("---------------------------------------------------------------------\n");printf("************录入学生信息成功***********!!\n");printf("按回车键返回主菜单\n");getchar();getchar();system("cls");};break;case 2:{system("cls");printf("===========================学生信息表================================\n");printf("---------------------------------------------------------------------\n");printf("学号\t年龄\t姓名\t性别\t出生\t地址\t电话\te-mail\n");pt=read();printList(pt);printf("================================================================ =====\n");printf("---------------------------------------------------------------------\n");printf("\n按回车键返回主菜单\n");getchar();getchar();system("cls");};break;case 3:{int search=0;system("cls");printf("===========================查询学生信息==============================\n");printf("---------------------------------------------------------------------\n");while(search!=3){printf("1、按学号查询\n2、按姓名查询\n3、退出查询\n");scanf("%d",&search);switch(search){case 1:{long search_num;system("cls");printf("请输入学生学号\n");scanf("%d",&search_num);system("cls");printf("===========================查询结果==================================\n");printf("---------------------------------------------------------------------\n");printf("学号\t年龄\t姓名\t性别\t出生\t地址\t电话\te-mail\n");findList_num(read(),search_num);printf("================================================================ =====\n");printf("---------------------------------------------------------------------\n");printf("\n按回车键返回查询菜单\n");getchar();getchar();system("cls");};break;case 2:{char search_name[15];system("cls");printf("请输入学生姓名\n");scanf("%s",search_name);system("cls");printf("===========================查询结果==================================\n");printf("---------------------------------------------------------------------\n");printf("学号\t年龄\t姓名\t性别\t出生\t地址\t电话\te-mail\n");findList_name(read(),search_name);printf("================================================================ =====\n");printf("---------------------------------------------------------------------\n");printf("\n按回车键返回查询菜单\n");getchar();getchar();system("cls");};}}system("cls");};break;case 4:{long del_num;system("cls");printf("===========================删除学生信息==============================\n");printf("---------------------------------------------------------------------\n");printf("请输入要删除学生信息的学号:\n");scanf("%d",&del_num);system("cls");pt=delList(read(),del_num);save(pt);printf("===========================删除结果================================\n");printf("-------------------------------------------------------------------\n");printf("学号为%d的学生信息成功删除\n",del_num);printf("\n按回车键返回主菜单\n");getchar();getchar();system("cls");};break;case 5:{system("cls");printf("每个学生的信息之间用Tab键分隔\n");printf("===========================插入学生信息==============================\n");printf("---------------------------------------------------------------------\n");insert(pt);save(pt);system("cls");printf("===========================插入学生信息==============================\n");printf("---------------------------------------------------------------------\n");printf("****插入学生信息成功***!!\n\n");printf("按回车键返回主菜单\n");getchar();getchar();system("cls");}break;case 6:{long search_num;system("cls");printf("请输入要修改的学生学号:\n");scanf("%d",&search_num);system("cls");printf("每个学生的信息之间用Tab键分隔\n");printf("===========================修改学生信息==================================\n");printf("-------------------------------------------------------------------------\n");printf("学号\t年龄\t姓名\t性别\t出生\t地址\t电话\te-mail\n");findList_num(read(),search_num);printf("\n");printf("请输入修改信息:\n");printf("学号\t年龄\t姓名\t性别\t出生\t地址\t电话\te-mail\n");pt=read();xiugai(pt,search_num);save(pt);printf("================================================================ =====\n");printf("---------------------------------------------------------------------\n");printf("****修改学生信息成功***!!\n\n");printf("\n按回车键返回查询菜单\n");getchar();getchar();system("cls");};break;case 7:{system("cls");printf(" 按学号从小到大排序\n\n");printf("===========================学生信息表================================\n");printf("---------------------------------------------------------------------\n");printf("学号\t年龄\t姓名\t性别\t出生\t地址\t电话\te-mail\n");pt=read();paixu(pt);printList(pt);save(pt);printf("================================================================ =====\n");printf("---------------------------------------------------------------------\n");printf("\n按回车键返回主菜单\n");getchar();getchar();system("cls");};break;case 8:read();break;}}}。

学生信息管理系统(c语言版)

学生信息管理系统(c语言版)

return s1;
}
/*按照数据结构成绩排序*/
void DSpaixu(StuList s1)
{
int i,j;
StuList s;
s.length=1;
for(i=0;i<s1.length-1;i++)
{
for(j=s1.length-1;j>i;j--)
scanf("%f",&s1.data[i].Java);
scanf("%f",&s1.data[i].Vc);
printf("\n");
for(k=0;k<i;k++)
{
if(s1.data[k].id==s1.data[i].id)
{
printf("学号重复了,请重新输入");
}
/*按照学号查找学生信息*/
void xuehaozhao(StuList s1)
{
StuList s;
int x,i=0,k=0;
s.length=0;
printf("请输入您要查找的学生的学号:");
scanf("%d",&x);
for(int j=0;j<s1.length;j++)
scanf("%f",&s1.data[i].DS);
scanf("%f",&s1.data[i].Java);
scanf("%f",&s1.data[i].Vc);

用c语言编写的一个学生信息管理系统

用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语⾔学⽣信息管理系统的具体代码,供⼤家参考,具体内容如下列表内容系统以菜单⽅式⼯作学⽣信息录⼊功能(学⽣信息⽤⽂件保存)—输⼊学⽣信息浏览功能——输出查询、排序功能——算法1、按学号查询2、按姓名查询学⽣信息的删除与修改界⾯简单明了;有⼀定的容错能⼒,⽐如输⼊的成绩不在0~100之间,就提⽰不合法,要求重新输⼊;⽤链表的⽅式实现。

#include <stdio.h>#include <string.h>#include <stdlib.h>#include <windows.h>#include <string.h>typedef struct Student{char name[100]; //姓名char num[100]; //学号char sex;//性别 (w代表⼥⽣m代表男⽣)int age;//年龄int score;//成绩}stu;typedef struct LNode{stu data;struct LNode *next;}LinkList;char nam[100];//名字char nu[100];//学号char s;//性别int ag;//年龄int sc;//成绩void welocome()//登陆界⾯{system("color b1");printf("````````````````````````````````````````````````````````````````````````````````");printf("\n");printf("\n");printf("\n");printf(" *********************** 欢迎登录学⽣信息管理平台 ************************* \n");printf("\n");printf("\n");printf("\n");printf("````````````````````````````````````````````````````````````````````````````````");}void menu()//功能菜单{system("color e3");printf(" |________________________________________________|\n");printf(" | |\n");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(" | |\n");printf(" |________________________________________________|\n"); return ;}void InitList( LinkList *&L)//初始化链表{L=(LinkList *)malloc(sizeof(LinkList));L->next=NULL;}void ListInsert(LinkList *&L,LinkList *p)//插⼊新的节点{LinkList *q=NULL;q=L;p->next=q->next;q->next=p;}void addstu(LinkList *&L)//增加新的学⽣{system("color f2");printf("请输⼊学⽣的信息:\n");printf("学号:");scanf("%s",nu);LinkList *q=L->next;while(q!=NULL ){if(strcmp(q->data.num,nu)==0)//判断是否存在{printf("该⽣已存在\n");break;}q=q->next;}if(q==NULL){LinkList *p;InitList(p);strcpy(p->data.num,nu);printf("姓名:") ;scanf("%s",nam) ;strcpy(p->,nam);printf("性别:(w为男 m为⼥)");scanf(" %c",&s);p->data.sex=s;printf("年龄:");scanf("%d",&ag);p->data.age=ag;printf("总成绩:");scanf("%d",&sc);while(sc>100||sc<0){printf("输⼊有误,请重新输⼊\n");scanf("%d",&sc);}p->data.score=sc;ListInsert(L,p);}}void deletestu(LinkList *L)//删除学⽣{system("color f4");printf("请输⼊您要删除的学⽣的学号:");scanf("%s",nu);//判断LinkList *p,*pre;if(L->next==NULL){printf("还没有学⽣信息,请增加学⽣信息\n");return;}pre=L;p=pre->next;int judge=0;while(p){if(strcmp(p->data.num,nu)==0){judge=1;pre->next =p->next;free(p);printf("删除学⽣成功\n");break;}pre=p;p=p->next;}if(judge==0)printf("该⽣不存在\n");}void changestu(LinkList *L)//改变学⽣信息{int judge=1;system("color e4");printf("请输⼊您要修改学⽣的学号:\n");scanf("%s",nu);LinkList *q=L->next;while(q!=NULL ){if(strcmp(q->data.num,nu)==0){judge=1;printf("请输⼊您要修改的信息选项:1.姓名 2. 总成绩 3.年龄 \n"); int n;scanf("%d",&n);switch(n){case 1:printf("请输⼊您要修改的名字:");scanf("%s",nam);printf("修改的名字为:%s\n",nam);strcpy(q->,nam);printf("修改名字成功!\n");break;case 2:printf("请输⼊您要修改的总成绩");scanf("%d",&sc);printf("修改的总成绩为:%d\n",sc);q->data.score=sc;printf("修改总成绩成功!\n");break;case 3:printf("请输⼊您要修改的年龄:");scanf("%d",&ag);printf("修改的年龄为:%d\n",ag);q->data.age=ag;printf("修改年龄成功!\n");break;default :printf("请输⼊正确的选项\n");break;}}q=q->next;}if(judge==0){printf("该⽣不存在\n");}}void findstu(LinkList *L)//按学号或者姓名查找学⽣并输出该⽣信息{int flag;system("color b1");printf("1.按学号查询:\n");printf("2.按姓名查询:\n");printf("请输⼊查询⽅式:");scanf("%d",&flag);if(flag==1){printf("请输⼊该⽣学号:");scanf("%s",nu);//判断LinkList *q=L->next;while(q!=NULL ){if(strcmp(q->data.num,nu)==0){printf("姓名:%s\n",q->);printf("学号:%s\n",q->data.num);printf("性别:%c\n",q->data.sex);printf("年龄:%d\n",q->data.age);printf("总成绩:%d\n",q->data.score);break;}q=q->next;}if(q==NULL)printf("该⽣不存在\n");}else{printf("请输⼊该⽣姓名:");scanf("%s",nam);LinkList *q=L->next;while(q!=NULL ){if(strcmp(q->,nam)==0){printf("姓名:%s\n",q->);printf("学号:%s\n",q->data.num);printf("性别:%c\n",q->data.sex);printf("年龄:%d\n",q->data.age);printf("总成绩:%d\n",q->data.score);break;}q=q->next;}if(q==NULL)printf("该⽣不存在\n");}}void display(LinkList *&L)//浏览全部学⽣信息{LinkList *q=L->next;if(q==NULL){printf("还没有学⽣信息,请增加学⽣信息\n");return;}while(q){system("color c0");printf(" 学号:%s 名字:%s 年龄:%d 性别:%c 总成绩:%d \n",q->data.num,q->,q->data.age,q->data.sex, q->data.score);q=q->next;}}void paixu(LinkList *L)//按成绩排序排序并输出排序后的结果{system("color f9");LinkList *q,*p,*r=L->next;//判断if(r==NULL){printf("还没有学⽣信息,请增加学⽣信息\n");return;}while(r) //两层循环完成排序{p=r;q=r->next;LinkList *tmp;//⽤于排序时暂存节点InitList(tmp);while(q){if(q->data.score > p->data.score){/*先复制q结点信息到tmp*/strcpy(tmp->data.num,q->data.num);strcpy(tmp->,q->);tmp->data.sex=q->data.sex;tmp->data.age=q->data.age;tmp->data.score=q->data.score;/*再复制p结点信息到q*/strcpy(q->data.num,p->data.num);strcpy(q->,p->);q->data.sex=p->data.sex;q->data.age=p->data.age;q->data.score=p->data.score;/*最后复制exchange结点信息到p*/strcpy(p->data.num,tmp->data.num);strcpy(p->,tmp->);p->data.sex=tmp->data.sex;p->data.age=tmp->data.age;p->data.score=tmp->data.score;}q=q->next;}r=r->next;}printf("排序后的学⽣信息是:\n");display(L);}void saveStuDentFile(LinkList * &L)//保存学⽣信息到⽂件{FILE *fp;LinkList *p=L->next;if((fp=fopen("student.txt","w"))==NULL)// 以可写的⽅式打开当前⽬录下的.txt{printf("不能打开此⽂件,请按任意键退出\n");exit(1);}while(p){fprintf(fp,"%s %s %c %d %d \n",p->data.num,p->,p->data.sex,p->data.age,p->data.score); p=p->next;printf("保存成功\n");}fclose(fp);}void readStuDentput (LinkList *&L) //运⾏前把⽂件内容读取到电脑内存{FILE *fp;fp=fopen("student.txt","rb"); //以只读⽅式打开当前⽬录下的.txtif(fp==NULL){printf("不存在打开⽂件\n");exit(0); //终⽌程序}int i=0;while(!feof(fp)){char nu[100];//学号char nam[100];//名字char s;//性别int ag;//年龄int sc;//成绩fscanf(fp," %s %s %c %d %d",nu,nam,&s,&ag,&sc);i++;}fclose(fp);FILE *FP;FP=fopen("student.txt","rb"); //以只读⽅式打开当前⽬录下的.txtif(FP==NULL){printf("⽆法打开⽂件\n");exit(0); //终⽌程序}int b=i-1;int j=1;while(!feof(FP)){fscanf(FP,"%s %s %c %d %d",nu,nam,&s,&ag,&sc);LinkList *n=(LinkList *)malloc(sizeof(LinkList));strcpy(n->data.num,nu);//把后者的内容拷贝到前者中strcpy(n->,nam);//把后者的内容拷贝到前者中n->data.sex=s;n->data.age=ag;n->data.score=sc;ListInsert(L,n);//插⼊新的节点n=n->next;if(j==b)break;j++;}fclose(FP); //关闭⽂件}int main(){system("cls");//清屏welocome();//登陆界⾯Sleep(3000);//延缓3秒LinkList *L;InitList(L);readStuDentput (L);//运⾏前把⽂件内容读取到电脑int a;int choose;while(1){printf("请输⼊您要选择的功能键:\n");menu();//功能菜单scanf("%d",&choose);switch(choose){case 0://退出printf("谢谢使⽤!欢迎下次光临");exit(0);case 1://增加学⽣信息addstu(L);//增加新的学⽣break;case 2://删除所有学⽣信息deletestu(L);//删除学⽣break;case 3://改变个学⽣的信息changestu(L);//改变学⽣信息break;case 4://查找某个学⽣的信息findstu(L);//按学号查找学⽣并输出该⽣信息break;case 5:// 对学⽣成绩进⾏排序paixu(L);break;case 6://输出所有学⽣的信息display(L);break;case 7://保存学⽣信息到⽂件saveStuDentFile(L);break;default:printf("请输⼊正确的选择\n");break;}}}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

学生信息管理系统c语言

学生信息管理系统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语言

/*********************************************************************** *************************学生信息管理系统(2)************************** *修复了在没有学生记录的情况下查看、排序和查询部分仍然显示出子菜单的问题* ************************************************************************/ #include <stdio.h>#include <string.h>#include <stdlib.h>#define N 50 //学生记录最大数量struct student //学生记录结构体定义{int ID;//学号char name[20];//姓名char sex[2];//性别int score[3];//三门课的成绩(高数,英语,专业课)int sum;//三门课的成绩和float average;//三门课的平均成绩};/*********************************************************************** ****************************进行函数声明******************************** ************************************************************************/ void Menu_select(); //显示主菜单void Inputstu(struct student stu[], int * stu_number); //录入学生信息void Browsestu(struct student stu[], int * stu_number); //查看学生信息void Sortstu(struct student stu[], int * stu_number); //排序学生信息void Searchstu(struct student stu[], int * stu_number); //查找学生信息void Deletestu(struct student stu[], int * stu_number); //删除学生信息void Modifystu(struct student stu[], int * stu_number); //修改学生信息void Countscore(struct student stu[], int * stu_number); //统计学生信息/*********************************************************************** ******************开始定义各个功能模块的函数**************************** ************************************************************************/ void Menu_seclect()//菜单选择函数部分{system("cls");system("title 主菜单");printf("\n\n");printf("\t\t|-----------------------------------|\n");printf("\t\t| 学生信息管理系统|\n");printf("\t\t|-----------------------------------|\n");printf("\t\t| 1---录入学生记录|\n");printf("\t\t| 2---查看学生记录|\n");printf("\t\t| 3---查询学生记录|\n");printf("\t\t| 4---排序学生记录|\n");printf("\t\t| 5---删除学生记录|\n");printf("\t\t| 6---修改学生记录|\n");printf("\t\t| 7---统计学生记录|\n");printf("\t\t| 0---【退出系统】|\n");printf("\t\t|-----------------------------------|\n");}void Inputstu(struct student stu[], int * stu_number)//1.增加学生记录函数部分{char ch = 'y';int i, count = 0;system("title 增加学生记录");while ((ch == 'y') || (ch == 'Y')){system("cls");printf("\n\t\t--------------------增加学生记录------------------\n");printf("\n\n\t\t 请输入学生信息\n");printf("\n\t\t 学号:");scanf("%d", &stu[count].ID);for (i = 0; i < *stu_number; i++)if (stu[count].ID == stu[i].ID){printf("\n\t\t 该学号已使用,请重输:\n");printf("\n\t\t 学号:");scanf("%d", &stu[count].ID);}printf("\n\t\t 姓名:");scanf("%s", &stu[count].name);printf("\n\t\t 性别:");scanf("\n%s", &stu[count].sex);printf("\n\t\t 数学成绩:");scanf("%3d", &stu[count].score[0]);printf("\n\t\t 英语成绩:");scanf("%3d", &stu[count].score[1]);printf("\n\t\t 专业成绩:");scanf("%3d", &stu[count].score[2]);stu[count].sum = stu[count].score[0] + stu[count].score[1] + stu[count].score[2];stu[count].average = (float)stu[count].sum / 3.0;printf("\n\n\t\t 是否输入下一个学生信息?(y/n)");scanf("\n%c", &ch);count++;}*stu_number = *stu_number + count;return;}void Browsestu(struct student stu[], int * stu_number)//2.浏览学生记录函数部分{int i, j, choose;struct student temp_stu[N], st;system("title 浏览学生记录");while (1){system("cls");printf("\n");printf("\t|---------------------------------------------------------------|\n");printf("\t| 浏览学生记录子菜单|\n");printf("\t|---------------------------------------------------------------|\n");printf("\t| 1---按学号顺序浏览|\n");printf("\t| 2---按名次顺序浏览|\n");printf("\t| 0---返回主菜单|\n");printf("\t|---------------------------------------------------------------|\n");printf("\t 请选择浏览方式:");scanf("%d", &choose);switch (choose){case 1:if(* stu_number==0){ printf("\t\t对不起,无可用的学生纪录!\n");getch();return;}else{system("cls");printf("\n\n\t 按学号升序浏览如下:\n");printf("\n\t 学号\t 姓名\t 性别\t数学\t英语\t专业\t总分\t平均分\n\n");for (i = 0; i < *stu_number; i++){printf("\t %d\t %s\t %s\t %d\t %d\t %d\t %d\t %.2f\n\n", stu[i].ID, stu[i].name, stu[i].sex, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].sum, stu[i].average);}printf("\n\t\t 浏览完毕,按任意键返回子菜单!");getch();break;}case 2:if(* stu_number==0){ printf("\t\t对不起,无可用的学生纪录!\n");getch();return;}else{for (i = 0; i < *stu_number; i++){temp_stu[i] = stu[i];}for (i = 1; i < *stu_number; i++)for (j = 1; j <= *stu_number - i; j++)if (temp_stu[j - 1].sum < temp_stu[j].sum){st = temp_stu[j - 1];temp_stu[j - 1] = temp_stu[j];temp_stu[j] = st;}system("cls");printf("\n\n\t 按名次升序浏览如下:\n");printf("\n\t名次\t学号\t姓名\t性别\t数学\t英语\t专业\t总分\t平均分\n");for (i = 0; i < *stu_number; i++){printf("\t %d\t%d\t%s\t %s\t %d\t %d\t %d\t %d\t %.2f\n\n", i + 1, temp_stu[i].ID, temp_stu[i].name, temp_stu[i].sex, temp_stu[i].score[0], temp_stu[i].score[1], temp_stu[i].score[2], temp_stu[i].sum, temp_stu[i].average);}printf("\n\t\t 浏览完毕,按任意键返回子菜单!");getch();break;}case 0:return;}}return;}void Sortstu(struct student stu[], int * stu_number)//3.排序学生成绩记录函数部分{int i, j;struct student st;system("title 排序学生记录");if(* stu_number==0){ printf("\t\t对不起,无可用的学生纪录!\n");getch();return;}else{for (i = 1; i < *stu_number; i++)for (j = 1; j <= *stu_number - i; j++)if (stu[j - 1].ID > stu[j].ID){st = stu[j - 1];stu[j - 1] = stu[j];stu[j] = st;}system("cls");printf("\n\n\t\t********************排序学生记录********************\n");printf("\n\n\t 按学号升序排序后的学生记录如下:\n");printf("\n\t 学号\t姓名\t性别\t数学\t英语\t专业\t总分\t平均分\n\n");for (i = 0; i < *stu_number; i++){printf("\t %d\t%s\t %s\t %d\t %d\t %d\t %d\t %.2f\n\n", stu[i].ID, stu[i].name, stu[i].sex, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].sum, stu[i].average);}printf("\n\t\t 排序完毕,按任意键返回主菜单!");getch();return;}}void Searchstu(struct student stu[], int * stu_number)//4.查询学生记录函数部分{int xh,i, num, choose, find;char xm[20];system("title 查询学生记录");while (1){system("cls");printf("\n");printf("\t|---------------------------------------------------------------|\n");printf("\t| 查询学生记录子菜单|\n");printf("\t|---------------------------------------------------------------|\n");printf("\t| 1---按学号查询|\n");printf("\t| 2---按姓名查询|\n");printf("\t| 0---返回主菜单|\n");printf("\t|---------------------------------------------------------------|\n");printf("\t 请选择查询方式:");scanf("%d", &choose);switch (choose){case 1:if(* stu_number==0){printf("\t\t对不起,无可用的学生纪录!\n");getch();return;}else{printf("\n\t 请输入要查询的学生学号:");scanf("%d", &xh);for (i = 0; i < *stu_number; i++)if (stu[i].ID == xh){printf("\n\t 要查询的学生信息如下:\n");printf("\n\t 学号\t 姓名\t 性别\t数学\t英语\t专业\t总分\t平均分\n\n");printf("\t %d\t %s\t %s\t %d\t %d\t %d\t %d\t %.2f\n\n", stu[i].ID, stu[i].name, stu[i].sex, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].sum, stu[i].average);printf("\n\t 显示完毕,按任意键返回子菜单!");getch();break;}if (i == *stu_number){printf("\n\t 要查询的学生不存在!按任意键返回子菜单!");getch();}break;}case 2:if(* stu_number==0){printf("\t\t对不起,无可用的学生纪录!\n");getch();return;}else{printf("\n\t 请输入要查询的学生姓名:");scanf("%s", xm);find = 0;num = 0;for (i = 0; i < *stu_number; i++){if (strcmp(stu[i].name, xm) == 0){find = 1;num++;if (num == 1){printf("\n\t 要查询的学生信息如下:\n");printf("\n\t 学号\t 姓名\t 性别\t数学\t英语\t专业\t总分\t 平均分\n\n");}printf("\t %d\t %s\t %s\t %d\t %d\t %d\t %d\t %.2f\n\n", stu[i].ID, stu[i].name, stu[i].sex, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].sum, stu[i].average);}}if (find){printf("\n\t 显示完毕,按任意键返回子菜单!");getch();}else{printf("\n\t 要查询的学生不存在!按任意键返回子菜单!");getch();}break;}case 0:return;}}return;}void Deletestu(struct student stu[], int * stu_number)//删除学生记录函数部分{int i, j,xh;char ch = 'y';system("title 删除学生记录");while ((ch == 'y') || (ch == 'Y')){system("cls");printf("\n\t\t------------------------删除学生记录------------------------\n\n");printf("\t\t 请输入要删除的学生学号:");scanf("%d", &xh);for (i = 0; i < *stu_number; i++){if (stu[i].ID == xh){printf("\n\t 要删除的学生信息如下:\n");printf("\n\t 学号\t 姓名\t 性别\t数学\t英语\t专业\t总分\t平均分\n\n");printf("\t %d\t %s\t %s\t %d\t %d\t %d\t %d\t %.2f\n\n", stu[i].ID, stu[i].name, stu[i].sex, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].sum, stu[i].average);break;}}if (i == *stu_number){printf("\n\t\t要删除的学生不存在!\n");}else{printf("\n\t 确定删除吗(y/n)?:");scanf("\n%c", &ch);if (ch == 'y' || ch == 'Y'){for (j = i + 1; j < *stu_number; j++){stu[j - 1] = stu[j];}printf("\n\t 该学生已被删除!\n");(*stu_number)--;}}printf("\n\t 是否继续删除其他学生(y/n)?:");scanf("\n%c", &ch);}return;}void Modifystu(struct student stu[], int * stu_number)//修改学生记录函数部分{int i, j, choose,xh;char ch = 'y';system("title 修改学生记录");while (ch == 'y' || ch == 'Y'){system("cls");printf("\n\t --------------------------修改学生记录--------------------------\n\n");printf("\t 请输入要修改的学生学号:");scanf("%d", &xh);for (i = 0; i < *stu_number; i++){if (stu[i].ID == xh){printf("\n\t 要修改的学生信息如下:\n");printf("\n\t 学号\t 姓名\t 性别\t数学\t英语\t专业\t总分\t平均分\n\n");printf("\t %d\t %s\t %s\t %d\t %d\t %d\t %d\t %.2f\n\n", stu[i].ID, stu[i].name, stu[i].sex, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].sum, stu[i].average);break;}}if (i == *stu_number){printf("\n\t\t要修改的学生不存在!\n");}else{printf("\n\t 确定修改吗(y/n)?:");scanf("\n%c", &ch);while (ch == 'y' || ch == 'Y'){printf("\n\t 1.基本信息修改 2.学生成绩修改\n");printf("\n\t 请选择修改内容:");scanf("%d", &choose);switch (choose){case 1:system("cls");printf("\n\t\t-------------请重新输入该生的基本信息-----------\n");printf("\n\t\t 学号:");scanf("%d", &stu[i].ID);for (j = 0; j < *stu_number; j++)if (stu[i].ID != xh && stu[i].ID == stu[j].ID){printf("\n\t\t 该学号已存在,请重新输入!\n");printf("\n\t\t 学号:");scanf("%d", &stu[i].ID);}printf("\n\t\t 姓名:");scanf("%s", &stu[i].name);printf("\n\t\t 性别:");scanf("\n%s", &stu[i].sex);break;case 2:system("cls");printf("\n\t\t-------------请重新输入该生的成绩信息-----------\n");printf("\n\t\t 数学成绩:");scanf("%3d", &stu[i].score[0]);printf("\n\t\t 英语成绩:");scanf("%3d", &stu[i].score[1]);printf("\n\t\t 专业成绩:");scanf("%3d", &stu[i].score[2]);stu[i].sum = stu[i].score[0] + stu[i].score[1] + stu[i].score[2];stu[i].average = (float)stu[i].sum / 3.0;}printf("\n\t\t 修改成功!是否继续修改该生的其他信息(y/n)?:");scanf("\n%c", &ch);}}printf("\n\t\t 是否继续修改其他学生的信息(y/n)?:");scanf("\n%c", &ch);}return;}void Countscore(struct student stu[],int * stu_number)//统计学生成绩函数部分{int i, j, choose, sum[3], grade[3][5], min_score[3], max_score[3];float avg[3];system("title 统计学生成绩");while (1){system("cls");printf("\n");printf("\t|---------------------------------------------------------------|\n");printf("\t| 统计学生成绩子菜单|\n");printf("\t|---------------------------------------------------------------|\n");printf("\t| 1---统计每门课程的总分和平均分|\n");printf("\t| 2---统计每门课程的最高分和最低分|\n");printf("\t| 3---统计每门课程各分数段人数|\n");printf("\t| 0---返回主菜单|\n");printf("\t|---------------------------------------------------------------|\n");printf("\t 请选择统计方式:");scanf("%d", &choose);if (choose == 1){for (j = 0; j < 3; j++){sum[j] = 0;avg[j] = 0.0;}for (j = 0; j < 3; j++)for (i = 0; i < *stu_number; i++){sum[j] = sum[j] + stu[i].score[j];}for (j = 0; j < 3; j++){avg[j] = (float)sum[j] / *stu_number;}printf("\n\t 数学课程总分为:%d,平均分为:%.2f\n", sum[0], avg[0]);printf("\n\t 英语课程总分为:%d,平均分为:%.2f\n", sum[1], avg[1]);printf("\n\t 专业课程总分为:%d,平均分为:%.2f\n", sum[2], avg[2]);printf("\n\n\t 统计完毕,按任意键返回子菜单!\n");getch();}elseif (choose == 2){for (j = 0; j < 3; j++) //min_score[3]和max_score[3]数组初始化{min_score[j] = 0;max_score[j] = 0;}for (j = 0; j < 3; j++){if (*stu_number > 0){min_score[j] = max_score[j] = stu[0].score[j]; //最高分最低分置初值}else{min_score[j] = max_score[j] = 0;}for (i = 1; i < *stu_number; i++){if (stu[i].score[j] < min_score[j]){min_score[j] = stu[i].score[j];}if (stu[i].score[j] > max_score[j]){max_score[j] = stu[i].score[j];}}}printf("\n\t 数学课程的最低分:%d,最高分:%d\n", min_score[0], max_score[0]);printf("\n\t 英语课程的最低分:%d,最高分:%d\n", min_score[1], max_score[1]);printf("\n\t 专业课程的最低分:%d,最高分:%d\n", min_score[2], max_score[2]);printf("\n\n\t 统计完毕,按任意键返回子菜单!\n");getch();}elseif (choose == 3){for (i = 0; i < 3; i++)for (j = 0; j < 5; j++){grade[i][j] = 0;}for (j = 0; j < 3; j++)for (i = 0; i < *stu_number; i++){switch (stu[i].score[j] / 10){case 10:case 9:grade[j][0]++;break;case 8:grade[j][1]++;break;case 7:grade[j][2]++;break;case 6:grade[j][3]++;break;default:grade[j][4]++;break;}}printf("\n\n");printf("\t 数学课程各分数段的人数如下:\n");printf("\t 90-100: %d | 80-90: %d | 70-80: %d | 60-70: %d | 60分以下: %d\n\n", grade[0][0], grade[0][1], grade[0][2], grade[0][3], grade[0][4]);printf("\t 英语课程各分数段的人数如下:\n");printf("\t 90-100: %d | 80-90: %d | 70-80: %d | 60-70: %d | 60分以下: %d\n\n", grade[1][0], grade[1][1], grade[1][2], grade[1][3], grade[1][4]);printf("\t 专业课程各分数段的人数如下:\n");printf("\t 90-100: %d | 80-90: %d | 70-80: %d | 60-70: %d | 60分以下: %d\n\n", grade[2][0], grade[2][1], grade[2][2], grade[2][3], grade[2][4]);printf("\n\n\t 统计完毕,按任意键返回子菜单!\n");getch();}elseif (choose == 0){break; //结束循环}}return;}/*********************************************************************** *********************程序的主函数从这里开始运行************************* ************************************************************************/ int main(void){struct student stu[N];int stu_number=0;int choose,flag=1;system("color 1F");system("title 学生信息管理系统");while (flag){system("cls");Menu_seclect();printf("\t\t 请选择主菜单序号(0-7):");scanf("%d", &choose);switch (choose){case 1:Inputstu(stu, &stu_number);break;case 2:Browsestu(stu, &stu_number);break;case 3:Searchstu(stu, &stu_number);break;case 4:Sortstu(stu, &stu_number);break;case 5:Deletestu(stu, &stu_number);break;case 6:Modifystu(stu, &stu_number);break;case 7:Countscore(stu, &stu_number);break;case 0:system("cls");system("color 2F");printf("\n\n\n\n\n");printf("\t*****************************************************************\n") ;printf("\t*****************************************************************\n") ;printf("\t* * * *\n");printf("\t* * 感谢您的使用,再见! * *\n");printf("\t* * * *\n");printf("\t*****************************************************************\n") ;printf("\t*****************************************************************\n") ;flag = 0;}}}。

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

学生信息管理系统1 课程设计目的与要求1.1课程设计目的本课程设计是在学习C语言基本理论之后的实践教学环节。

该实践教学是软件设计的综合训练,包括问题分析、总体结构设计、用户界面设计、程序设计基本技能和技巧。

要求学生在设计中逐步提高程序设计能力,培养科学的软件工作方法。

学生通过课程设计在下述各方面得到锻炼:1.能根据实际问题的具体情况,结合C语言的基本理论和基本技巧,正确分析问题,并能设计出解决问题的有效算法与程序。

2.提高程序设计和调试能力。

学生通过上机实习,验证自己设计的算法和程序的正确性。

学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改,进一步提高程序设计水平。

1.2课程设计要求通过一个学期的学习,我认为要学好C语言程序这门课程,不仅要认真阅读课本知识,更重要的是要通过上机实践才能增强和巩固我的知识。

特别是作为本科生,更要注重实践这一环节,只有这样我们才能成为合格的计算机人材。

通过这次课程设计,进一步巩固所学的语句,如语句嵌套等;加深对循环,分支等结构的运用。

具体如下:(1)数据组织方面尽量使用到:数组、链表、结构体、文件;(2)程序结构方面做到函数调用,尽量采用指针运算;(3)代码编写规范,形成良好的编程习惯;(4)程序须有一定的健壮性和必要的提示信息,考虑问题的多种可能和边界数据。

(5)课设完成须进行答辩,提交课设报告电子稿、装订的打印稿。

课设报告内容包括以下几个方面:●程序的总体设计和算法分析。

●程序流程图、函数说明●源程序代码清单●测试数据和测试过程记录●遇到的问题及解决方法分析●课程设计小结1.3课程设计的评价通过此次课程设计,我的知识面得到了扩展,发现课本上的东西是远远不够的,需要上网找资料寻找补充,而且小组合作的形式可以互相交流知识,弥补自己的不足。

通过课程设计,加深对结构化程序设计思想的理解,能进行一个系统功能需求分析,并设计合理的模块化结构。

提高程序开发能力。

12 问题描述设计一个学生信息管理系统,其中包括:学生基本信息:如学号、姓名、性别、年龄、地址、电话等。

功能包括:1.系统菜单形式显示2.学生信息录入功能—输出3.学生信息浏览功能—输出4.查询、排序功能—算法按学号查询按姓名查询5.学生信息的删除与修改23总体设计3.1 功能分析3.1.1菜单模块通过while语句给出信息提示;清屏;绘制菜单(包含输入,浏览,查询,修改,删除,排序,保存,退出);提示菜单选择并读入到变量;根据读入变量的值调用不同的模块函数;3.1.2信息录入模块打开文件While(){ 清屏;按照提示输入各种信息;While显示各种信息;通过选择1.确认并继续 2.重新填写 3.放弃并返回 4.确认并返回选择四种功能;}}3.1.3信息浏览模块打开文件While(){ 清屏;用for语句依次按照顺序输出学生信息通过选择可以翻页1.上一页2.下一页0.退出3}3.1.4信息查询While(){ 通过菜单式的选择是学号查询还是姓名printf("******学生信息管理系统******");printf("\n----------检索----------");printf("\n您想要:");printf("\n 1.按学号检索");printf("\n 2.按姓名检索");printf("\n 3.返回主菜单");printf("\n****************************\n");}如果选择学号进入学号模块通过输入学号If(学号存在继续){输出学生信息}Else 输出无此学生如果选择姓名进入姓名模块If(根据比较姓名判断学生是否存在){输出学生信息}Else 输出无此学生3.1.5删除模块while( 继续删除 )4{提示并读入待删除的学生的学生号;显示要删除的信息}删除成功3.1.6信息修改模块输入要修改学生信息的学号:If (判断是否有此学生){ 菜单形式显示要修改的项目printf("\n1.姓名2.年龄3.性别4.出生年月5.地址6.电话7.E-mail \n");printf("\n8.数学9.英语\n");}Swich(){ 选择要修改的项目进行修改}3.1.7打开文件模块void fileopen(){FILE *fp;int n;if((fp=fopen("data","r+"))==NULL)fp=fopen("data","w+");for(n=0;n<100;n++)fread(&stu[n],sizeof(struct student),1,fp);fread(&stunum,4,1,fp);fclose(fp);5}3.1.8保存文件模块void filesave(){int n;FILE *fp;fp=fopen("data","r+");for(n=0;n<100;n++)fwrite(&stu[n],sizeof(struct student),1,fp);fwrite(&stunum,4,1,fp);fclose(fp);printf("保存成功!press Enter to continue..");getch();}3.1.9退出模块case '8':ma=0;break;用的是跳出while语句回到安全模块3.1.10排序模块通过冒泡排序法for(m=0;m<y-1;m++)for(x=m+1;x<y;x++)6if(stu[m].sum<stu[x].sum){stu[99]=stu[m];stu[m]=stu[x];stu[x]=stu[99];stu[99].id=stu[x].id ;stu[x].id =stu[m].id;stu[m].id =stu[99].id ;}printf("排序后的顺序为:\n");然后显示排序好后的学生信息;3.2系统主要函数多功能计算器采用结构化程序设计思想,程序中除主函数外,共设计了23个函数,函数原型及功能说明如表3.2.1所示。

表3.2.1 函数原型及功能说明784 详细设计主模块94.1 程序总体结构图104.2 主函数流程图各部分模块11124.3 信息的录入流程图4.4 学生信息浏览流程图开始结束打开文件返回主菜单文件中有无信息输出所有信息YNNY4.5 按姓名或学号查询流程图4.6信息的删除流程图135 功能测试5.1系统主界面5.1系统主界面5.2录入学生信息功能5.2.1录入学生信息界面145.2.2录入学生信息界面5.2信息浏览功能5.2信息浏览界面155.3信息修改功能5.3.1信息修改界面5.4信息检索功能5.4.1信息检索界面165.4.2按学号检索界面5.4.4按姓名检索界面176 程序设计调试情况分析1.问题:c程序运行不出来,几个头文件中出现了相同的函数;解决方法:改变头文件中相同名字的函数名。

2.问题:调用检索函数一闪而过。

解决方法:添加getchar()语句使程序暂停。

3.问题:无法有效的控制输出函数循环终止。

解决方法:添加全局变量“stunum”,使用该全局变量来记录学生总数,从而控制输出循环的次数4.问题:查询函数数据量过多时同时输出,先输出的内容无法查看,或需用户自行查看。

解决方法:添加getchar()语句使程序暂停,当用户按Enter时继续。

5.问题:调试时,有的时候编译后没什么问题,就是在点击连接link时出现了错误;解决方法:将源程序保存,然后关掉Microsoft Visual C++ 6.0,重新启动Microsoft Visual C++ 6.0。

187 课程设计小结通过此次课程设计,我基本上对制作一个相对来说比较完整的程序有了一定的认识和了解。

这一周多来的制作,不但对C语言的知识有了一定的巩固,还增加了我们的动手能力。

学生信息管理系统,涉及到结构体,链表,文件和循环的知识,所以尤其对这几个方面有所加深和巩固。

其中又包括结构体的赋值,写到文件中。

从文件中赋值给结构体。

等等。

还能够通过编译时出现的出错提示信息,进行初步的纠错。

完成一个程序的一般步骤为设计,录入,编译,如果出错,则修改,然后再编译,编译成功后,看看结果是否正确,如果结果不正确,则再重复以上步骤。

小组成员分工组长:王彬冰负责信息浏览、信息删除模块和总流程图组员:汤璞君负责信息排序模块组员:刘帅负责信息录入模块参考文献[1]《C程序设计教程与实验》吉顺如清华大学出版社[2]《C程序习题集与课程设计》吉顺如计春雷电子工业出版社[3]《C程序设计思想与方法》尹宝林机械工业出版社19[4] 百度文库/view/83580befaeaad1f346933f89.html附录系统源程序#include<stdio.h>#include<conio.h>#include<string.h>20#include<stdlib.h>int stunum=0;struct student // 结构体{int id;char name[30];int age;char sex[6];char birthday[12];char add[80];char tel[15];char email[25];int math;int english;int sum;}stu[100] ;void check() //查询函数{void jsid();void jsname();int a;char ch;while (a){system("cls");printf("******学生信息管理系统******");printf("\n----------检索----------");printf("\n您想要:");printf("\n 1.按学号检索");printf("\n 2.按姓名检索");printf("\n 3.返回主菜单");printf("\n****************************\n");ch=getchar();21switch(ch){case '1':jsid();break;case '2':jsname();break;case '3':a=0;break;}}}void fileopen() //打开文件{FILE *fp;int n;if((fp=fopen("data","r+"))==NULL)fp=fopen("data","w+");for(n=0;n<100;n++)fread(&stu[n],sizeof(struct student),1,fp);fread(&stunum,4,1,fp);fclose(fp);}void filesave() //保存文件{int n;FILE *fp;fp=fopen("data","r+");for(n=0;n<100;n++)fwrite(&stu[n],sizeof(struct student),1,fp);fwrite(&stunum,4,1,fp);fclose(fp);printf("保存成功!press Enter to continue..");getch();}22void editname(int n) //按照名字修改{printf("\n新姓名:");scanf("%s",stu[n].name);}void editage(int n) //修改年龄函数{printf("\n新年龄:");scanf("%d",&stu[n].age);}void editsex(int n) // 修改性别函数{printf("\n新性别:");scanf("%s",stu[n].sex);}void editbir(int n) //修改生日{printf("\n新出生年月");scanf("%s",stu[n].birthday);}void editadd(int n){printf("\n新地址:"); //修改地址scanf("%s",stu[n].add);}void edittel(int n) //修改电话{printf("\n新电话:");scanf("%s",stu[n].tel);23}void editemail(int n){printf("\n新E-mail:"); //修改邮箱scanf("%s",stu[n].email);}void editmath(int n) //修改数学成绩{printf("\n新数学:");scanf("%d",&stu[n].math);stu[n].sum=stu[n].math+stu[n].english;}void editenglish(int n) // 修改经与成绩{printf("\n新英语:");scanf("%d",&stu[n].english);stu[n].sum=stu[n].math+stu[n].english;}void last(int n){if(n==stunum)system("cls");printf("******学生信息管理系统******");printf("\n----------检索----------");printf("\n已检索到末尾。

相关文档
最新文档