学生管理系统
来源:互联网 发布:金蝶k3软件 编辑:程序博客网 时间:2024/05/17 23:24
在大一下学期,我们的实习是做一个学生管理系统。
系统啊……
崩溃啊……
不过还好我做出来了
附上代码:
这是主函数的:
#include <stdio.h>#include <stdlib.h>#include <string.h>#include "paixu.h"int flag=0;int main(){ int nn; tishi(); stu *head=(stu*)malloc(sizeof(stu)); head->next=NULL; int saveTag=0; while(scanf("%d",&nn)!=-1) { if(nn==10){printf("即将退出\n");system("pause");break;} if(nn>10||nn<1){printf("输入错误,请重新输入\n");system("pause");} switch(nn) { case 1: { int n,i; scanf("%d",&n); for(i=0;i<n;i++) head=zengjia(head); stu *p=head; while(1)//找到链表的尾部,若名次是0,则排序赋名次 { p=p->next; if(p->next==NULL)break; } if(p->mingci==0) { sortjiang(head); fumingci(head); } break; } case 2: { break; } case 3: { stu *p=head; output(head); break; } case 4: { break; } case 5: { printf("请输入删除方式:\n0表示按学号,1表示按姓名,2表示按名次\n"); int n; scanf("%d",&n); if(n==0) { int mm; scanf("%d",&mm); head=shanchunum(head,mm); if(flag==0)printf("删除失败!\n"); if(flag==1){printf("删除成功!\n");sortjiang(head);fumingci(head);} } else if(n==1) { getchar(); char mm[20]; gets(mm); head=shanchuxingming(head,mm); if(flag==0)printf("删除失败!\n"); if(flag==1){printf("删除成功!\n");sortjiang(head);fumingci(head);} } else if(n==2) { int mm; scanf("%d",&mm); head=shanchumingci(head,mm); if(flag==0)printf("删除失败!\n"); if(flag==1){printf("删除成功!\n");sortjiang(head);fumingci(head);} } if(head->next==NULL)printf("链表以空!\n"); break; } case 6: { printf("请输入要排序的方式:\n(0表示升序,1表示降序)\n"); int n,m; scanf("%d",&n); printf("请输入排序的标准:\n1表示按学号排序\n2表示按名字排序\n3表示按名次排序\n"); scanf("%d",&m); if(n==1) switch(m) { case 1:{jiangxuxuehao(head);break;} case 2:{jiangxuxingming(head);break;} case 3:{jiangxumingci(head);break;} } else if(n==0) switch(m) { case 1:{shengxuxuehao(head);break;} case 2:{shengxuxingming(head);break;} case 3:{shengxumingci(head);break;} } else if(n!=1&&n!=0)break; break; } case 7: { int t; t=savefile(head); if(t==0){printf("存储成功!!!\n"); saveTag=1;} if(t==-1){printf("存储失败!!!\n");saveTag=0;} break; } case 8: { break; } case 9: { FILE *fp; fp=fopen("E:\\计一高鹏专用\\学生管理系统\\student.txt","w"); fclose(fp); printf("创建成功!\n"); break; } } tishi(); } return 0;}
这是排序函数的(不光排序,啥都有):
如何建立?codeblocks:File->new->Files->c/c++source然后起一个名字(这里叫paixu)
#include <stdio.#include <stdlib.h>#include "paixu.h"#include <string.h>int flag;void tishi(){ printf("******************************************\n"); printf("* 请输入操作类型: *\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("* 9表示新建学生信息文件; *\n"); printf("* 10表示运行结束; *\n"); printf("******************************************\n");}void sortjiang(stu *head)//降序排列{ stu temp; stu *p,*q,*max; for(p=head->next;p->next!=NULL;p=p->next) { max=p; for(q=p->next;q!=NULL;q=q->next) if(q->sum>max->sum) max=q; if(max!=p) //交换结点的数据域内容,指针内容没变。 { temp.num=p->num; strcpy(temp.name,p->name); temp.sex=p->sex; temp.s[0]=p->s[0]; temp.s[1]=p->s[1]; temp.s[2]=p->s[2]; temp.s[3]=p->s[3]; temp.s[4]=p->s[4]; temp.aver=p->aver; temp.sum=p->sum; p->num=max->num; strcpy(p->name,max->name); p->sex=max->sex; p->s[0]=max->s[0]; p->s[1]=max->s[1]; p->s[2]=max->s[2]; p->s[3]=max->s[3]; p->s[4]=max->s[4]; p->aver=max->aver; p->sum=max->sum; max->num=temp.num; strcpy(max->name,temp.name); max->sex=temp.sex; max->s[0]=temp.s[0]; max->s[1]=temp.s[1]; max->s[2]=temp.s[2]; max->s[3]=temp.s[3]; max->s[4]=temp.s[4]; max->aver=temp.aver; max->sum=temp.sum; } }}void jiangxumingci(stu *head)//降序排列名次{ stu temp; stu *p,*q,*max; for(p=head->next;p->next!=NULL;p=p->next) { max=p; for(q=p->next;q!=NULL;q=q->next) if(q->mingci>max->mingci) max=q; if(max!=p) //交换结点的数据域内容,指针内容没变。 { temp.num=p->num; strcpy(temp.name,p->name); temp.sex=p->sex; temp.s[0]=p->s[0]; temp.s[1]=p->s[1]; temp.s[2]=p->s[2]; temp.s[3]=p->s[3]; temp.s[4]=p->s[4]; temp.aver=p->aver; temp.sum=p->sum; temp.mingci=p->mingci; p->num=max->num; strcpy(p->name,max->name); p->sex=max->sex; p->s[0]=max->s[0]; p->s[1]=max->s[1]; p->s[2]=max->s[2]; p->s[3]=max->s[3]; p->s[4]=max->s[4]; p->aver=max->aver; p->sum=max->sum; p->mingci=max->mingci; max->num=temp.num; strcpy(max->name,temp.name); max->sex=temp.sex; max->s[0]=temp.s[0]; max->s[1]=temp.s[1]; max->s[2]=temp.s[2]; max->s[3]=temp.s[3]; max->s[4]=temp.s[4]; max->aver=temp.aver; max->sum=temp.sum; max->mingci=temp.mingci; } }}void jiangxuxuehao(stu *head)//降序排列学号{ stu temp; stu *p,*q,*max; for(p=head->next;p->next!=NULL;p=p->next) { max=p; for(q=p->next;q!=NULL;q=q->next) if(q->num>max->num) max=q; if(max!=p) //交换结点的数据域内容,指针内容没变。 { temp.num=p->num; strcpy(temp.name,p->name); temp.sex=p->sex; temp.s[0]=p->s[0]; temp.s[1]=p->s[1]; temp.s[2]=p->s[2]; temp.s[3]=p->s[3]; temp.s[4]=p->s[4]; temp.aver=p->aver; temp.sum=p->sum; temp.mingci=p->mingci; p->num=max->num; strcpy(p->name,max->name); p->sex=max->sex; p->s[0]=max->s[0]; p->s[1]=max->s[1]; p->s[2]=max->s[2]; p->s[3]=max->s[3]; p->s[4]=max->s[4]; p->aver=max->aver; p->sum=max->sum; p->mingci=max->mingci; max->num=temp.num; strcpy(max->name,temp.name); max->sex=temp.sex; max->s[0]=temp.s[0]; max->s[1]=temp.s[1]; max->s[2]=temp.s[2]; max->s[3]=temp.s[3]; max->s[4]=temp.s[4]; max->aver=temp.aver; max->sum=temp.sum; max->mingci=temp.mingci; } }}void jiangxuxingming(stu *head)//降序排列姓名{ stu temp; stu *p,*q,*max; for(p=head->next;p->next!=NULL;p=p->next) { max=p; for(q=p->next;q!=NULL;q=q->next) if(strcmp(q->name,max->name)>0) max=q; if(max!=p) //交换结点的数据域内容,指针内容没变。 { temp.num=p->num; strcpy(temp.name,p->name); temp.sex=p->sex; temp.s[0]=p->s[0]; temp.s[1]=p->s[1]; temp.s[2]=p->s[2]; temp.s[3]=p->s[3]; temp.s[4]=p->s[4]; temp.aver=p->aver; temp.sum=p->sum; temp.mingci=p->mingci; p->num=max->num; strcpy(p->name,max->name); p->sex=max->sex; p->s[0]=max->s[0]; p->s[1]=max->s[1]; p->s[2]=max->s[2]; p->s[3]=max->s[3]; p->s[4]=max->s[4]; p->aver=max->aver; p->sum=max->sum; p->mingci=max->mingci; max->num=temp.num; strcpy(max->name,temp.name); max->sex=temp.sex; max->s[0]=temp.s[0]; max->s[1]=temp.s[1]; max->s[2]=temp.s[2]; max->s[3]=temp.s[3]; max->s[4]=temp.s[4]; max->aver=temp.aver; max->sum=temp.sum; max->mingci=temp.mingci; } }}void shengxumingci(stu *head)//升序排列名次{ stu temp; stu *p,*q,*max; for(p=head->next;p->next!=NULL;p=p->next) { max=p; for(q=p->next;q!=NULL;q=q->next) if(q->mingci<max->mingci) max=q; if(max!=p) //交换结点的数据域内容,指针内容没变。 { temp.num=p->num; strcpy(temp.name,p->name); temp.sex=p->sex; temp.s[0]=p->s[0]; temp.s[1]=p->s[1]; temp.s[2]=p->s[2]; temp.s[3]=p->s[3]; temp.s[4]=p->s[4]; temp.aver=p->aver; temp.sum=p->sum; temp.mingci=p->mingci; p->num=max->num; strcpy(p->name,max->name); p->sex=max->sex; p->s[0]=max->s[0]; p->s[1]=max->s[1]; p->s[2]=max->s[2]; p->s[3]=max->s[3]; p->s[4]=max->s[4]; p->aver=max->aver; p->sum=max->sum; p->mingci=max->mingci; max->num=temp.num; strcpy(max->name,temp.name); max->sex=temp.sex; max->s[0]=temp.s[0]; max->s[1]=temp.s[1]; max->s[2]=temp.s[2]; max->s[3]=temp.s[3]; max->s[4]=temp.s[4]; max->aver=temp.aver; max->sum=temp.sum; max->mingci=temp.mingci; } }}void shengxuxuehao(stu *head)//升序排列学号{ stu temp; stu *p,*q,*max; for(p=head->next;p->next!=NULL;p=p->next) { max=p; for(q=p->next;q!=NULL;q=q->next) if(q->num<max->num) max=q; if(max!=p) //交换结点的数据域内容,指针内容没变。 { temp.num=p->num; strcpy(temp.name,p->name); temp.sex=p->sex; temp.s[0]=p->s[0]; temp.s[1]=p->s[1]; temp.s[2]=p->s[2]; temp.s[3]=p->s[3]; temp.s[4]=p->s[4]; temp.aver=p->aver; temp.sum=p->sum; temp.mingci=p->mingci; p->num=max->num; strcpy(p->name,max->name); p->sex=max->sex; p->s[0]=max->s[0]; p->s[1]=max->s[1]; p->s[2]=max->s[2]; p->s[3]=max->s[3]; p->s[4]=max->s[4]; p->aver=max->aver; p->sum=max->sum; p->mingci=max->mingci; max->num=temp.num; strcpy(max->name,temp.name); max->sex=temp.sex; max->s[0]=temp.s[0]; max->s[1]=temp.s[1]; max->s[2]=temp.s[2]; max->s[3]=temp.s[3]; max->s[4]=temp.s[4]; max->aver=temp.aver; max->sum=temp.sum; max->mingci=temp.mingci; } }}void shengxuxingming(stu *head)//升序排列姓名{ stu temp; stu *p,*q,*max; for(p=head->next;p->next!=NULL;p=p->next) { max=p; for(q=p->next;q!=NULL;q=q->next) if(strcmp(q->name,max->name)<0) max=q; if(max!=p) //交换结点的数据域内容,指针内容没变。 { temp.num=p->num; strcpy(temp.name,p->name); temp.sex=p->sex; temp.s[0]=p->s[0]; temp.s[1]=p->s[1]; temp.s[2]=p->s[2]; temp.s[3]=p->s[3]; temp.s[4]=p->s[4]; temp.aver=p->aver; temp.sum=p->sum; temp.mingci=p->mingci; p->num=max->num; strcpy(p->name,max->name); p->sex=max->sex; p->s[0]=max->s[0]; p->s[1]=max->s[1]; p->s[2]=max->s[2]; p->s[3]=max->s[3]; p->s[4]=max->s[4]; p->aver=max->aver; p->sum=max->sum; p->mingci=max->mingci; max->num=temp.num; strcpy(max->name,temp.name); max->sex=temp.sex; max->s[0]=temp.s[0]; max->s[1]=temp.s[1]; max->s[2]=temp.s[2]; max->s[3]=temp.s[3]; max->s[4]=temp.s[4]; max->aver=temp.aver; max->sum=temp.sum; max->mingci=temp.mingci; } }}void input(stu *p)//输入函数,只输入一组数据{ char tmp[20]; printf("请输入学生的学号:\n"); scanf("%s",tmp); getchar(); p->num=atoi(tmp); printf("请输入学生的姓名:\n"); gets(p->name); printf("请输入学生的性别:\n"); scanf("%c",&p->sex); printf("请输入学生五门课的成绩:\n"); scanf("%lf%lf%lf%lf%lf",&p->s[0],&p->s[1],&p->s[2],&p->s[3],&p->s[4]); getchar(); p->sum=p->s[0]+p->s[1]+p->s[2]+p->s[3]+p->s[4]; p->aver=p->sum/5; p->mingci=0;}void output(stu *head)//输出函数{ stu *p=head; printf("学号 姓名 性别 成绩1 成绩2 成绩3 成绩4 成绩5 平均分 总分 名次\n"); while(1) { p=p->next; printf("%d %s %c %.2lf %.2lf %.2lf %.2lf %.2lf %.2lf %.2lf %d\n",p->num,p->name,p->sex,p->s[0],p->s[1],p->s[2],p->s[3],p->s[4],p->aver,p->sum,p->mingci); if(p->next==NULL) break; }}int savefile(stu *head){ int ans=-1,t; FILE *fp; fp=fopen("E:\\计一高鹏专用\\学生管理系统\\student.txt","w+"); stu *p=head->next; while(p!=NULL) { t=fprintf(fp,"%d %s %c %.2lf %.2lf %.2lf %.2lf %.2lf %.2lf %.2lf %d\n",p->num,p->name,p->sex,p->s[0],p->s[1],p->s[2],p->s[3],p->s[4],p->aver,p->sum,p->mingci); ans+=t; p=p->next; } fclose(fp); if(ans>0)ans=0; return ans;}void fumingci(stu *head)//赋名次函数,使用之前按降序排列{ stu *p=head; int i=1; while(1) { p=p->next; p->mingci=i++; if(p->next==NULL)break; }}stu * zengjia(stu *head)//增加函数,在链表的尾部增加数据{ stu *p=head,*w=head; while(1) { if(p->next==NULL)break; p=p->next; } stu *q=(stu *)malloc(sizeof(stu)); p->next=q; input(q); q->next=NULL; return w;}stu *shanchunum(stu *head,int t)//删除函数按学号{ flag=0; stu *p=head->next,*q,*ans=head; if(head->next->num==t) {ans=p;flag=1;} else for(p=head->next;p->next!=NULL;p=p->next) { if(p->next->num==t) { flag=1; q=p->next->next; p->next=q; break; } }return ans;}stu *shanchumingci(stu *head,int t)//删除函数按学号{ flag=0; stu *p=head->next,*q,*ans=head; if(head->next->mingci==t) {ans=p;flag=1;} else for(p=head->next;p->next!=NULL;p=p->next) { if(p->next->mingci==t) { flag=1; q=p->next->next; p->next=q; break; } }return ans;}stu *shanchuxingming(stu *head,char s[])//删除函数按学号{ flag=0; stu *p=head->next,*q,*ans=head; if(strcmp(head->next->name,s)==0) {ans=p;flag=1;} else for(p=head->next;p->next!=NULL;p=p->next) { if(strcmp(head->next->name,s)==0) { flag=1; q=p->next->next; p->next=q; break; } }return ans;}
这是headers里声明paixu.h 的:
如何建立?codeblocks:File->new->Files->c/c++header起个名字(paixu.h)
#ifndef PAIXU_H_INCLUDED#define PAIXU_H_INCLUDEDtypedef struct su{ int num; char name[20]; char sex; double s[5]; double aver; double sum; int mingci; struct su *next;}stu;void tishi();void sortjiang(stu *head);void jiangxusum(stu *head);void jiangxumingci(stu *head);void jiangxuxuehao(stu *head);void jiangxuxingming(stu *head);void shengxumingci(stu *head);void shengxuxuehao(stu *head);void shengxuxingming(stu *head);void input(stu *p);void output(stu *head);stu * zengjia(stu *head);void fumingci(stu *head);int savefile(stu *head);stu *shanchunum(stu *head,int t);stu *shanchumingci(stu *head,int t);stu *shanchuxingming(stu *head,char s[]);#endif // PAIXU_H_INCLUDED
0 0
- 一个学生管理系统
- 学生同学录管理系统
- 学生管理系统
- 销售学生管理系统
- 学生通讯管理系统
- 学生管理系统
- 学生管理系统
- 学生管理系统
- 学生管理系统
- 学生学籍管理系统
- 学生管理系统
- 学生通讯录管理系统
- 学生管理系统
- 学生管理系统源程序
- 学生管理系统源程序
- 学生管理系统实现
- 学生管理系统
- 学生管理系统
- IntelliJ Idea 常用快捷键列表
- 《Android开发艺术探索第十二章读书笔记》 Bitmap的加载和Cache
- Qt5 修改UI类型的方法
- 使用Python脚本从Hive中取数据计算后加载到Mysql示例
- 【备忘】 9套MYSQL视频教程下载
- 学生管理系统
- 7.玩转Spring Boot devtools热部署
- Docker学习总结之Run命令介绍
- 30秒优化到0.01秒
- 11.1 Swift继承的概念和语法
- YYModel的简介与使用
- ubuntu各目录含义
- Highcharts使用指南
- 使用 RMI + ZooKeeper 实现远程调用框架