永发信息网

学生档案管理系统C语言程序设计的功能

答案:2  悬赏:80  手机版
解决时间 2021-02-27 10:35
  • 提问者网友:世勋超人
  • 2021-02-27 06:15
学生档案管理系统C语言程序设计的功能
最佳答案
  • 五星知识达人网友:忘川信使
  • 2021-02-27 07:09
我自己写的
#include
#include
#include
#include
#include
#include
#define LEN sizeof(STUDENT)
typedef struct stu
{char num[6];
char name[5];
int score[3];
int sum;
float average;
int order;
struct stu *next;
}STUDENT;
STUDENT *init();
int menu_select();
STUDENT *create();
void print(STUDENT *head);
void search(STUDENT *head);
STUDENT *delete(STUDENT *head);
STUDENT *sort(STUDENT *head);
STUDENT *insert(STUDENT *head,STUDENT *new);
void save(STUDENT *head);
STUDENT *load();
main()
{STUDENT *head,new;
head=init();
for(;;)
{switch(menu_select())
{
case 1:head=create();break;
case 2:print(head);break;
case 3:search(head);break;
case 4:head=delete(head);break;
case 5:head=sort(head);break;
case 6:head=insert(head,&new);break;
case 7:save(head);break;
case 8:head=load(); break;
case 9:exit(0);
}
}
}
STUDENT *init()
{
return NULL;
}
menu_select()
{int n;
printf("\npress any key to enter the menu......");
getch();
system("cls");
printf("********************************************************************************\n");
printf("\t\t Welcome to\n");
printf("*************************************MENU***************************************\n");
printf("\t\t\t1.Enter the record\n");
printf("\t\t\t2.Print the record\n");
printf("\t\t\t3.Search record on name\n");
printf("\t\t\t4.Delete a record\n");
printf("\t\t\t5.Sort to make new a file\n");
printf("\t\t\t6.Insert record to list\n");
printf("\t\t\t7.Save the file\n");
printf("\t\t\t8.Load the file\n");
printf("\t\t\t9. Quit\n");
printf("\n\t\tMade by Gou xiaobo.\n");
printf("********************************************************************************\n");
do{
printf("\n\t\t\tEnter your choice(1~9):");
scanf("%d",&n);
}while(n<1||n>9);
return(n);
}
STUDENT *create()
{int i,s;
STUDENT *head=NULL,*p;
clrscr();
for(;;)
{p=(STUDENT *)malloc(LEN);
if(!p)
{printf("\nOut of memory.");
return (head);
}
printf("Enter the num(0:list end):");
scanf("%s",p->num);
if(p->num[0]=='0') break;
printf("Enter the name:");
scanf("%s",p->name);
printf("Please enter the %d scores\n",3);
s=0;
for(i=0;i<3;i++)
{
do{
printf("score%d:",i+1);
scanf("%d",&p->score[i]);
if(p->score[i]<0 || p->score[i]>100)
printf("Data error,please enter again.\n");
}while(p->score[i]<0 || p->score[i]>100);
s=s+p->score[i];
}
p->sum=s;
p->average=(float)s/3;
p->order=0;
p->next=head;
head=p;
}
return(head);
}
void print(STUDENT *head)
{int i=0;
STUDENT *p;
clrscr();
p=head;
printf("\n************************************STUDENT************************************\n");
printf("-------------------------------------------------------------------------------\n");
printf("| Rec | Num | Name | Sc1 | Sc2 | Sc3 | Sum | Ave | Order |\n");
printf("-------------------------------------------------------------------------------\n");
while(p!=NULL)
{
i++;
printf("| %3d | %4s | %-4s | %3d | %3d | %3d | %3d | %4.2f | %-5d|\n",
i, p->num,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);
p=p->next;
}
printf("-------------------------------------------------------------------------------\n");
printf("**************************************END**************************************\n");
}
void search(STUDENT *head)
{STUDENT *p;
char s[5];
clrscr();
printf("Please enter name for searching.\n");
scanf("%s",s);
p=head;
while(strcmp(p->name,s) && p != NULL)
p=p->next;
if(p!=NULL)
{printf("\n*************************************FOUND************************************\n");
printf("-------------------------------------------------------------------------------\n");
printf("| Num | Name | sc1 | sc2 | sc3 | Sum | Ave | Order |\n");
printf("-------------------------------------------------------------------------------\n");
printf("| %4s | %4s | %3d | %3d | %3d | %3d | %4.2f | %-5d|\n",
p->num,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);
printf("-------------------------------------------------------------------------------\n");
printf("***************************************END**************************************\n");
}
else
printf("\nThere is no num %s student on the list.\n",s);
}
STUDENT *delete(STUDENT *head)
{int n;
STUDENT *p1,*p2;
char c,s[6];
clrscr();
printf("Please enter the deleted num: ");
scanf("%s",s);
p1=p2=head;
while(strcmp(p1->num,s) && p1 != NULL)
{p2=p1;
p1=p1->next;
}
if(strcmp(p1->num,s)==0)
{printf("**************************************FOUND************************************\n");
printf("-------------------------------------------------------------------------------\n");
printf("| Num | Name | sc1 | sc2 | sc3 | Sum | Ave | Order |\n");
printf("-------------------------------------------------------------------------------\n");
printf("| %4s | %4s | %3d | %3d | %3d | %3d | %4.2f | %-5d|\n",
p1->num,p1->name,p1->score[0],p1->score[1],p1->score[2],p1->sum,p1->average,p1->order);
printf("-------------------------------------------------------------------------------\n");
printf("***************************************END**************************************\n");
printf("\nAre you sure to delete the student Y/N ?");
for(;;)
{scanf("%c",&c);
if(c=='n'||c=='N') break;
if(c=='y'||c=='Y')
{
if(p1==head)
head=p1->next;
else
p2->next=p1->next;
n=n-1;
printf("\n(Num):%s(student have been deleted.)\n",s);
printf("Don't forget to save.\n");break;
}
}
}
else
printf("\nThere is no num %s student on the list.\n",s);
return(head);
}
STUDENT *sort(STUDENT *head)
{int i=0;
STUDENT *p1,*p2,*t,*temp;
temp=head->next;
head->next=NULL;
while(temp!=NULL)
{
t=temp;
temp=temp->next;
p1=head;
p2=head;
while(t->averageaverage&&p1!=NULL)
{
p2=p1;
p1=p1->next;
}
if(p1==p2)
{
t->next=p1;
head=t;
}
else
{
t->next=p1;
p2->next=t;
}
}
p1=head;
while(p1!=NULL)
{
i++;
p1->order=i;
p1=p1->next;
}
printf("Sorting is sucessful.\n");
return (head);
}
STUDENT *insert(STUDENT *head,STUDENT *new)
{STUDENT *p0,*p1,*p2;
int n,sum1,i;
p1=head;
p0=new;
printf("\nPlease enter a new record.\n");
printf("Enter the num:");
scanf("%s",new->num);
printf("Enter the name:");
scanf("%s",new->name);
printf("Please enter the %d scores.\n",3);
sum1=0;
for(i=0;i<3;i++)
{
do{
printf("score%d:",i+1);
scanf("%d",&new->score[i]);
if(new->score[i]>100||new->score[i]<0)
printf("Data error,please enter again.\n");
}while(new->score[i]>100||new->score[i]<0);
sum1=sum1+new->score[i];
}
new->sum=sum1;
new->average=(float)sum1/3;
new->order=0;
if(head==NULL)
{head=p0;p0->next=NULL;}
else
{while((p0->averageaverage)&&(p1->next!=NULL))
{p2=p1;
p1=p1->next;
}
if(p0->average>=p1->average)
{if(head==p1)head=p0;
else p2->next=p0;
p0->next=p1;}
else
{p1->next=p0;p0->next=NULL;}
}
n=n+1;
head=sort(head);
printf("\nStudent %s have been inserted.\n",new->name);
printf("Don't forget to save the new file.\n");
return(head);
}
void save(STUDENT *head)
{FILE *fp;
STUDENT *p;
char outfile[10];
printf("Enter outfile name,for example c:\\score\n");
scanf("%s",outfile);
if((fp=fopen(outfile,"w"))==NULL)
{
printf("Cannot open the file\n");
return;
}
printf("\nSaving the file......\n");
p=head;
while(p!=NULL)
{
fwrite(p,LEN,1,fp);
p=p->next;
}
fclose(fp);
printf("Save the file successfully!\n");
}
STUDENT *load()
{STUDENT *p1,*p2,*head=NULL;
FILE *fp;
char infile[10];
printf(" Enter infile name,for example c:\\score\n");
scanf("%s",infile);
if((fp=fopen(infile,"r"))==NULL)
{
printf("Can not open the file.\n");
return(head);
}
printf("Loading the file!\n");
p1=(STUDENT *)malloc(LEN);
if(!p1)
{
printf("Out of memory!\n");
return(head);
}
head=p1;
while(!feof(fp))
{
if(fread(p1,LEN,1,fp)!=1) break;
p1->next=(STUDENT *)malloc(LEN);
if(!p1->next)
{
printf("Out of memory!\n");
return (head);
}
p2=p1;
p1=p1->next;
}
p2->next=NULL;
fclose(fp);
printf("\nnYou have success to read data from the file!\n");
return (head);
}
全部回答
  • 1楼网友:迟山
  • 2021-02-27 08:07
给,已经编译运行确认了: #include #include #include #include #define n 10 int m=0; struct student { char num[13]; char name[20]; char sex; char address[30]; int age; }; typedef struct lb { struct student xinxi; struct lb *next; }lb_1,*lb_2; void caidang() { printf(" \t \t \t (欢迎使用本班级档案管理系统)\t\t\t\t\n"); printf("★*★*★*★*★*★*★*★*★*★ 欢迎进入我们的系统 ★*★*★*★*★*★*★*★*★*★\n\n"); printf("1.录入学生资料\t\t\t\t\t4.查询学生信息\n\n"); printf("2.修改学生信息\t\t\t\t\t5.删除学生信息\n\n"); printf("3.保存学生信息\t\t\t\t\t0.退出档案系统\n\n"); printf(" \n"); printf("★*★*★*★*★*★*★*★*★*★ 欢迎进入本系统 ★*★*★*★*★*★*★*★*★*★\n"); } void color() { textbackground(8); textcolor(9); clrscr(); } void wrong() { printf("\n对不起您的输入错误!\n"); } void sorry() { printf("\n对不起该同学现没有任何信息!\n"); } void printe(lb_1 *p) { printf(" %-2s %s\t %s\t%s\t %d\t \n",p->xinxi.num,p->xinxi.name,p->xinxi.sex,p->xinxi.address,p->xinxi.age); } lb_1 *locate(lb_2 l,char findmess[],char nameornum[]) { lb_1 *r; if(strcmp(nameornum,"num")==0) { r=l->next; while(r!=null) { if(strcmp(r->xinxi.num,findmess)==0) return r; r=r->next; } } else if(strcmp(nameornum,"name")==0) { r=l->next; while(r!=null) { if(strcmp(r->xinxi.name,findmess)==0) return r; r=r->next; } } return 0; } void tianjia(lb_2 l) { lb_1 *p,*r,*s; char num[13]; r=l; s=l->next; while(r->next!=null) r=r->next; while(1) { printf(" 请输入添加的学生学号(输入'0'返回上一级菜单:)"); scanf("%s",num); if(strcmp(num,"0")==0) break; while(s) { if(strcmp(s->xinxi.num,num)==0) { printf("(必看提示):学号为'%s'的学生已有信息,若要修改请你输入'2 修改'!\n",num); printe(s); printf("\n"); return; } s=s->next; } p=(lb_1 *)malloc(sizeof(lb_1)); strcpy(p->xinxi.num,num); printf(" 请你输入学号:"); scanf("%s",p->xinxi.num); getchar(); printf(" 请你输入姓名:"); scanf("%s",p->xinxi.name); getchar(); printf(" 请你输入性别:"); scanf("%s",p->xinxi.sex); getchar(); printf(" 请你输入地址:"); scanf("%s",p->xinxi.address); getchar(); printf(" 请你输入年龄:"); scanf("%d",&p->xinxi.age); getchar(); p->next=null; r->next=p; r=p; m=1; } } void shanchu(lb_2 l) { int sel; lb_1 *p,*r; char findmess[20]; if(!l->next) { printf("\n******(必看提示):对不起,现文件中没有信息:所以您不能查询!\n"); return; } printf("\n <必看提示> <以学号删除请输入1\n> <以姓名删除请输入2\n> please:"); scanf("%d",&sel); if(sel==1) { printf("请输入要删除的学生的学号please:"); scanf("%s",findmess); p=locate(l,findmess,"num"); if(p) { r=l; while(r->next!=p) r=r->next; r->next=p->next; free(p); printf("\n*******(必看提示):该学生的信息已完全删除成功!\n"); m=1; } else sorry(); } else if(sel==2) { printf("请输入要删除的学生的姓名please:"); scanf("%s",findmess); p=locate(l,findmess,"name"); if(p) { r=l; while(r->next!=p) r=r->next; r->next=p->next; free(p); printf("\n******(必看提示):该学生信息已成功删除!\n"); m=1; } else sorry(); } else wrong(); } void chaxiong(lb_2 l) { int sel; char findmess[20]; lb_1 *p; if(!l->next) { printf("\n******(必看提示):对不起,现文件中没有信息:所以您不能查询!\n"); return; } printf("\n以学号查询请输入1:\n以姓名查询请输入2:\n以性别查询请输入3:\n以性别查询请输入4:\n please:"); scanf("%d",&sel); if(sel==1) { printf("请你输入要查找的学号:"); scanf("%s",findmess); p=locate(l,findmess,"num"); if(p) { printf("\t\t\t\t查找结果\n"); printf(" 学号:%s\n姓名:%s\n性别:%s\n地址:%s\n年龄:%d\n",p->xinxi.num,p->xinxi.name,p->xinxi.sex,p->xinxi.address,p->xinxi.age); } else sorry(); } if(sel==2) { printf("请你输入要查找的姓名:"); scanf("%s",findmess); p=locate(l,findmess,"name"); if(p) { printf("\t\t\t\t查找结果\n"); printf(" 学号:%s\n姓名:%s\n性别:%s\n地址:%s\n年龄:%d\n",p->xinxi.num,p->xinxi.name,p->xinxi.sex,p->xinxi.address,p->xinxi.age); } else sorry(); } else wrong(); } void xiugei(lb_2 l) { lb_1 *p; long int i,j; char findmess[20]; if(!l->next) { printf("\n(必看提示):对不起,现文件中没有信息:所以您不能查询!\n"); return; } for(i=1;i<=2;i++) { printf("\n\n\n\n\n"); printf("请输入密码:"); scanf("%s",&j); if(j==2007)break; else {if(j!=2007) return(caidang()); } } printf("请你输入要修改的学生学号:"); scanf("%s",findmess); p=locate(l,findmess,"num"); if(p) { printf("请你输入新学号(原来是%s):",p->xinxi.num); scanf("%s",p->xinxi.num); printf("请你输入新姓名(原来是%s):",p->xinxi.name); scanf("%s",p->xinxi.name); printf("请你输入新性别(原来是%s):",p->xinxi.sex); scanf("%s",p->xinxi.sex); printf("请你输入新地址(原来是%s):",p->xinxi.address); scanf("%s",p->xinxi.address); printf("请你输入新年龄(原来是%d):",p->xinxi.age); scanf("%s",p->xinxi.age); getchar(); m=1; } else sorry(); } void baocong(lb_2 l) { file* fp; lb_1 *p; int flag=1,count=0; fp=fopen("c:\\lyg","wr"); if(fp==null) { printf("\n=====>提示:重新打开文件时发生错误!\n"); exit(1); } p=l->next; while(p) { if(fwrite(p,sizeof(lb_1),1,fp)==1) { p=p->next; count++; } else { flag=0; break; } } if(flag) { printf("\n 提示;正在保存文件 共保存了%d条信息\n",count);m=0; } fclose(fp); } void main() { lb_2 l; file *fp; int sel;long i,j,d; char ch; char jian; int count=0; lb_1 *p,*r; color(); clrscr(); l=(lb_1*)malloc(sizeof(lb_1)); l->next=null; r=l; fp=fopen("c:\\lyg","rb"); if(fp==null) { printf("\t\t\t\t\n\n"); printf("\n"); printf(" *_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*\n" " *_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*\n" " welcome to come to our system!!! \n" " you can only inquire your own messages! if you want to see about other \n" " students' messages,you need first to send inquirment to them,asking for \n" " agreement,then you can visit his/her messages! \n" " have a good time! now you can come in!!! \n" " *_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*\n" " *_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*\n" " 注意:系统启动码为 : ilovemyschoolverymuch !!! \n" " *_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*\n" " *_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*\n"); printf("欢迎使用,本系统中现没有任何记录,您要先创建文件请按以下操做进行please:\n"); printf("\n 提示:文件还不存在,是否创建?(y/n)请做选择--\n"); printf("\n"); scanf("%c",&jian); if(jian=='y'||jian=='y') {fp=fopen("c:\\lyg","wb"); clrscr(); } {for(i=1;i<=2;i++) { printf("\n\n\n\n\n"); printf("请输入密码:"); scanf("%ld",&j); if(j==2007)break; else {if(j!=2007)return; } } } exit(0);clrscr(); } while(!feof(fp)) { p=(lb_1*)malloc(sizeof(lb_1)); if(fread(p,sizeof(lb_1),1,fp)) { p->next=null; r->next=p; r=p; count++; } } fclose(fp); while(1) { caidang(); printf("请你选择操作:"); scanf("%d",&sel); clrscr(); printf("\n\n\n"); if(sel==0) { if(m==1) { getchar(); printf("\n(必看提示):链表中的信息已经改动,如果确认把改动保存在文件中请做选择(y/n)?\n"); scanf("%c",&ch); if(ch=='y'||ch=='y') baocong(l); } break;clrscr(); } switch(sel) { case 1: tianjia(l);break; case 4: chaxiong(l);break; case 3: baocong(l);break; case 2: xiugei(l);break; case 5: shanchu(l);break; default: getchar();break; } } end: getchar(); }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯