您的当前位置:首页学生信息管理系统C++

学生信息管理系统C++

2024-05-22 来源:小侦探旅游网
.

【学生成绩管理】

实现功能:输入、输出、插入、删除、查找、追加、读入、显示、保存、拷贝、排序、索引、分类合计、退出。

能实现对学生信息的简单管理。 具体要求:

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

程序运行时显示一个简单的菜单,例如: (1):信息输入(INPUT) (2):总分统计(COUNT) (3):总分排序(SORT) (4):查询(QUERY) 其中: (1):对4个学生的信息进行输入; (2):对每个学生的3门课程统计总分;

(3):对4个学生的总分按降序排序并显示出来; (4):查询输入一个学号后,显示出该学生的有关信息;

用的大一做的系统,由保存数据结构的object.cpp 主函数 main.cpp 方法头文件use.h组成

Use.h

#ifndef USE_H_INCLUDED #define USE_H_INCLUDED

#endif // USE_H_INCLUDED #include #include

void Meau() {

printf(\"-------欢迎使用学生信息管理系统

-------\\n--------------------------------------\\n输入指令完成命令: \\n1.打印信息\\n2.插入新信息\\n3.删除学生信息\\n4.查找学生\\n5.更改学生信息\\n6.排序显示学生信息\\n7.文件另存为\\ne.保存并退出\\n--------------------------------------\\n请输入指令\\n\"); }

void ZhuangBSave() {

int T=2; while(T--)

.

.

{

system(\"cls\"); Meau();

Sleep(500);

printf(\"Saveing.\\r\"); Sleep(500);

printf(\"Saveing..\\r\"); Sleep(500);

printf(\"Saveing...\\r\"); Sleep(500);

printf(\"Saveing....\\r\"); Sleep(500);

printf(\"Saveing.....\\r\");

} }

void ZhuangBExit() {

int c=6; while(c--) {

printf(\"Saved!And he program will be close in %d second.\\r\ Sleep(1000); } }

Object.h

#include #include #include #include struct score {

long long num; char a[10]; int ch; int ma; int en; int c; int ph; int sum;

struct score *next; };

.

.

void swap(score* p1,score* p2) {

int t; t=p1->num;

p1->num=p2->num; p2->num=t; t=p1->ch;

p1->ch=p2->ch; p2->ch=t; t=p1->ma;

p1->ma=p2->ma; p2->ma=t; t=p1->en;

p1->en=p2->en; p2->en=t; t=p1->c; p1->c=p2->c; p2->c=t; t=p1->ph;

p1->ph=p2->ph; p2->ph=t; char c[10];

strcpy(c,p1->a); strcpy(p1->a,p2->a); strcpy(p2->a,c); }

bool cmp0(score* p1,score* p2) {

return p1->numnum; }

bool cmp01(score* p1,score* p2) {

if(p1->ch==p2->ch)

return p1->numnum; return p1->chch; }

bool cmp11(score* p1,score* p2) {

if(p1->ch==p2->ch)

return p1->numnum;

.

.

return p1->ch>p2->ch; }

bool cmp02(score* p1,score* p2) {

if(p1->ma==p2->ma)

return p1->numnum; return p1->mama; }

bool cmp12(score* p1,score* p2) {

if(p1->ma==p2->ma)

return p1->numnum; return p1->ma>p2->ma; }

bool cmp03(score* p1,score* p2) {

if(p1->en==p2->en)

return p1->numnum; return p1->enen; }

bool cmp13(score* p1,score* p2) {

if(p1->en==p2->en)

return p1->numnum; return p1->en>p2->en; }

bool cmp04(score* p1,score* p2) {

if(p1->c==p2->c)

return p1->numnum; return p1->cc; }

bool cmp14(score* p1,score* p2) {

if(p1->c==p2->c)

return p1->numnum; return p1->c>p2->c; }

bool cmp05(score* p1,score* p2) {

if(p1->ph==p2->ph)

return p1->numnum; return p1->phph; }

.

.

bool cmp15(score* p1,score* p2) {

if(p1->ph==p2->ph)

return p1->numnum; return p1->ph>p2->ph; }

bool cmp06(score* p1,score* p2) {

if(p1->sum==p2->sum)

return p1->numnum; return p1->sumsum; }

bool cmp16(score* p1,score* p2) {

if(p1->sum==p2->sum)

return p1->numnum; return p1->sum>p2->sum; }

bool cmp07(score* p1,score* p2) {

if(strcmp(p1->a,p2->a)==1) return 1; else

return 0; }

bool cmp17(score* p1,score* p2) {

if(strcmp(p1->a,p2->a)==1) return 0; else

return 1; }

void ScoreSort(struct score *head,bool (*cmp)(score* p1,score* p2)) {

struct score *p1,*p2;

for(p1=head; p1!=NULL; p1=p1->next)

for(p2=p1->next; p2!=NULL; p2=p2->next) {

if((*cmp)(p1,p2)) {

swap(p1,p2); } }

.

.

}

void ScorePri(struct score *head) {

//int c=0;

//system(\"cls\");

printf(\"=================================================\\n\"); struct score *pri; pri=head;

while(pri!=NULL) {

//printf(\"test %d\\n\

printf(\"学号:%I64d 姓名:%s\\n语文:%d 数学:%d 英语:%d \\nc语言:%d 物理:%d \\n总成绩:%d 平均成绩:%.2lf \\n=================================================\\n\a,pri->ch,pri->ma,pri->en,pri->c,pri->ph,pri->sum,pri->sum/5.0); pri=pri->next; }

printf(\"End\\n\"); }

struct score *ScoreIns(struct score *head) {

struct score *p1,*p2,*newl;

newl=(score*)malloc(sizeof(score));

printf(\"请依次输入学号,语文,数学,英语,c语言,物理成绩\\n\");

scanf(\"%I64d%d%d%d%d%d\l->c,&newl->ph);

newl->sum=newl->ch+newl->ma+newl->en+newl->c+newl->ph; printf(\"输入学生姓名\\n\"); scanf(\"%s\ if(head==NULL) {

head=newl;

newl->next=NULL; return head; }

p1=head; p2=p1->next;

if(newl->numnum) {

newl->next=head; return newl; }

.

.

while(p2!=NULL) {

if(newl->num>p1->num&&newl->numnum) {

newl->next=p2; p1->next=newl; break; }

p1=p2;

p2=p1->next; }

if(p2==NULL) {

p1->next=newl; newl->next=NULL; }

return head; }

void ZhuangBDel() {

Sleep(500);

printf(\"删除中.\\r\"); Sleep(500);

printf(\"删除中..\\r\"); Sleep(500);

printf(\"删除中...\\r\"); Sleep(500);

printf(\"删除中....\\r\"); Sleep(500);

printf(\"删除中.....\\r\"); Sleep(500);

printf(\"已删除!\\n\"); }

struct score *ScoreDel(struct score *head) {

struct score *p1,*p2,*h; long long n=0; int flag,flag1=0; int ord;

char n1[100],s[2]; flag=0;

printf(\"输入1学号查询,输入2姓名查询\\n\");

.

.

scanf(\"%d\ if(ord==1) {

printf(\"请输入学号\\n\"); scanf(\"%I64d\ }

else if(ord==2) {

printf(\"请输入姓名\\n\"); scanf(\"%s\ } else {

printf(\"Illegal input\\n\"); return head; }

if(ord==1) {

printf(\"您要删除的学生学号为%I64d,是否删除?(Y/N)\ scanf(\"%s\

if(strcmp(s,\"Y\")!=0) return head; }

if(ord==2) {

printf(\"您要删除的学生姓名为%s,是否删除?(Y/N)\ scanf(\"%s\

if(strcmp(s,\"Y\")!=0) return head; }

p1=head; p2=p1->next;

if((ord==1&&p1->num==n)||(ord==2&&strcmp(p1->a,n1)==0)) {

h=p1->next; free(p1); flag=1;

ZhuangBDel(); return h; } else {

if(p1->next==NULL) flag1=0;

while(flag1!=0&&p2->next!=NULL)

.

.

{

if((ord==1&&p1->num==n)||(ord==2&&strcmp(p2->a,n1)==0)) {

p1->next=p2->next; free(p2); flag=1; }

p1=p2;

p2=p1->next; }

if(flag1!=0&&p2->next==NULL) {

if((ord==1&&p1->num==n)||(ord==2&&strcmp(p2->a,n1)==0)) {

p1->next=NULL; free(p2); flag=1; } } }

if(flag==0||flag1==1)

printf(\"Error:Not Found!\\n\"); else

ZhuangBDel(); return head; }

void ScoreSearch(struct score *head) {

struct score *p1; long long n; int flag; flag=0;

printf(\"输入需要查找的学号\\n\"); scanf(\"%I64d\

for(p1=head; p1!=NULL; p1=p1->next) {

if(p1->num==n) {

printf(\"姓名:%s\\n语文成绩:%d\\n数学成绩:%d\\n英语成绩:%d\\nC语言成绩:%d\\n物理成绩:%d\\n总成绩:%d\\n平均成绩:%.2lf\\n\5.0);

flag=1;

.

.

} }

if(flag==0)

printf(\"Error:Not Found!\\n\"); }

void ScoreChange(struct score *head) {

long long m; int n,a; char b[100];

struct score *p1;

printf(\"请输入需要修改信息的学号\\n\"); scanf(\"%I64d\

for(p1=head; p1!=NULL; p1=p1->next) {

if(p1->num==m) break; }

if(p1==NULL) {

printf(\"Not Found!\\n\"); return; }

printf(\"输入1修改语文成绩\\n输入2修改数学成绩\\n输入3修改英语成绩\\n输入4修改c语言成绩\\n输入5修改物理成绩\\n输入6修改姓名\\n\"); scanf(\"%d\ if(a==1) {

printf(\"该成员语文成绩为%d,请输入修改值\\n\ scanf(\"%d\ p1->ch=n;

printf(\"修改成功!\\n\");

}

else if(a==2) {

printf(\"该成员数学成绩为%d,请输入修改值\\n\ scanf(\"%d\ p1->ma=n;

printf(\"修改成功!\\n\"); }

else if(a==3) {

printf(\"该成员英语成绩为%d,请输入修改值\\n\

.

.

scanf(\"%d\ p1->en=n;

printf(\"修改成功!\\n\"); }

else if(a==4) {

printf(\"该成员C语言成绩为%d,请输入修改值\\n\ scanf(\"%d\ p1->c=n;

printf(\"修改成功!\\n\"); }

else if(a==5) {

printf(\"该成员物理成绩为%d,请输入修改值\\n\ scanf(\"%d\ p1->ph=n;

printf(\"修改成功!\\n\"); }

else if(a==6) {

printf(\"该成员姓名为%s,请输入修改值\\n\ scanf(\"%s\ strcpy(p1->a,b);

printf(\"修改成功!\\n\"); } else

printf(\"输入错误,退出修改\\n\"); }

void ScoreView(struct score *head) {

int a,b;

//bool *cmp(score* p1,score* p2);

printf(\"输入1按语文成绩排列\\n输入2按数学成绩排列\\n输入3按英语成绩排列\\n输入4按C语言成绩排列\\n输入5按物理成绩排列\\n输入6按总成绩排列\\n输入7按名字排列\\n\"); scanf(\"%d\

printf(\"输入0升序排列,输入1降序排列\\n\"); scanf(\"%d\ if(a==1&&b==0)

ScoreSort(head,&cmp01); if(a==1&&b==1)

ScoreSort(head,cmp11); if(a==2&&b==0)

.

.

ScoreSort(head,cmp02); if(a==2&&b==1)

ScoreSort(head,cmp12); if(a==3&&b==0)

ScoreSort(head,cmp03); if(a==3&&b==1)

ScoreSort(head,cmp13); if(a==4&&b==0)

ScoreSort(head,cmp04); if(a==4&&b==1)

ScoreSort(head,cmp14); if(a==5&&b==0)

ScoreSort(head,cmp05); if(a==6&&b==0)

ScoreSort(head,cmp06); if(a==6&&b==1)

ScoreSort(head,cmp16); if(a==7&&b==0)

ScoreSort(head,cmp07); if(a==7&&b==1)

ScoreSort(head,cmp17); ScorePri(head);

ScoreSort(head,cmp0); }

void Save(score *head,char a[]) {

FILE *fp;

score* pri=head; fp=fopen(a,\"w\"); while(pri!=NULL) {

fprintf(fp,\"%I64d %d %d %d \ fprintf(fp,\"%s \ pri=pri->next; }

return; }

void NSave(score* head) {

char a[100],b[100],c[]=\"/\ printf(\"输入另存为的地址\\n\");

.

%d %d

.

scanf(\"%s\

printf(\"输入文件名称\\n\"); scanf(\"%s\ strcat(a,c); strcat(a,b); strcat(a,d); Save(head,a); return; }

struct score *Load(score *head) {

//int c=0; FILE *fp;

fp=fopen(\"E:\\\\data.txt\ if(fp==NULL) {

//printf(\"No data\\n\"); return NULL; }

freopen(\"E:\\\\data.txt\ score *newl,*p1,*p2;

newl=(score*)malloc(sizeof(score));

while(scanf(\"%I64d%d%d%d%d%d\n,&newl->c,&newl->ph)!=EOF) {

//printf(\"test %d\\n\

newl->sum=newl->ch+newl->ma+newl->en+newl->c+newl->ph; scanf(\"%s\ if(head==NULL) {

head=newl;

newl->next=NULL; }

p1=head;

p2=p1->next;

if(newl->numnum) {

newl->next=head; head=newl; }

while(p2!=NULL) {

if(newl->num>p1->num&&newl->numnum)

.

.

{

newl->next=p2; p1->next=newl; }

p1=p2;

p2=p1->next; }

if(p2==NULL) {

p1->next=newl; newl->next=NULL; }

newl=(score*)malloc(sizeof(score)); }

free(newl);

freopen(\"CON\ return head; }

Main.cpp

#include #include #include #include #include #include #include \"use.h\"

using namespace std;

struct score *Load(score *head); void ScorePri(struct score *head);

struct score *ScoreIns(struct score *head); struct score *ScoreDel(struct score *head); void ScoreSearch(struct score *head); void ScoreChange(struct score *head); void ScoreView(struct score *head); void Save(score *head,char a[]); void NSave(score* head);

int main() {

struct score *key;

.

.

key=NULL;

key=Load(key); char keyb; Meau(); while(1) {

keyb=getchar(); if(keyb=='1') {

ScorePri(key);

printf(\"Oo---------------------------------oO\\n\"); getchar(); getchar(); system(\"cls\"); Meau(); }

if(keyb=='2') {

key=ScoreIns(key);

printf(\"Oo---------------------------------oO\\n\"); getchar(); getchar(); system(\"cls\"); Meau(); }

if(keyb=='3') {

key=ScoreDel(key);

printf(\"Oo---------------------------------oO\\n\"); getchar(); getchar(); system(\"cls\"); Meau(); }

if(keyb=='4') {

ScoreSearch(key);

printf(\"Oo---------------------------------oO\\n\"); getchar(); getchar();

.

按任按任按任按任意键意键意键意键继续

继续

继续

继续

.

system(\"cls\"); Meau(); }

if(keyb=='5') {

ScoreChange(key);

printf(\"Oo---------------------------------oO\\n\"); getchar(); getchar(); system(\"cls\"); Meau(); }

if(keyb=='6') {

ScoreView(key);

printf(\"Oo---------------------------------oO\\n\"); getchar(); getchar(); system(\"cls\"); Meau(); }

if(keyb=='7') {

NSave(key); ZhuangBSave();

printf(\"Oo---------------------------------oO\\n\"); getchar(); getchar(); system(\"cls\"); Meau(); }

if(keyb=='e') {

char inp[]=\"E:\\\\data.txt\"; Save(key,inp); ZhuangBSave(); ZhuangBExit(); return 0; } }

return 0;

.

按任按任按任意键意键意键继续

继续

继续

.

}

功能界面如下:

.

因篇幅问题不能全部显示,请点此查看更多更全内容