當前位置:首頁 » 編程語言 » c語言簡單的管理系統

c語言簡單的管理系統

發布時間: 2025-06-26 01:27:13

A. 用c語言編寫一個學生管理系統

#include<iostream>
#include<string>
#include<fstream>

#include<iomanip>
using namespace std;

class student
{
protected:
int number;
char name[20];
char sex[6];
char place[20];
char nation[6];
char birth[20];
char party[10];
char id[20];
double score[3];
public:
student *next;
student(){ }
~student(){ }
char* getname(){ return name; }
int getnumber(){ return number;}
double getscore(int i) { return score[3];}
float getg(){ return (score[0]+score[1]+score[2]); }
void input()
{
int e=1;
cout<<"\t\t\t按提示輸入:"<<endl;
cout<<"\t\t輸入編號: ";
cin>>number;
cout<<"\t\t輸入姓名: ";
cin>>name;
do
{
cout<<"\t\t輸入性別: ";
cin>>sex;
if(strcmp(sex,"男")==0 || strcmp(sex,"女")==0)
{
cout<<"\t\t輸入籍貫: ";
cin>>place;
cout<<"\t\t輸入民族: ";
cin>>nation;
cout<<"\t\t輸入生日: ";
cin>>birth;
cout<<"\t\t輸入政治面貌: ";
cin>>party;
cout<<"\t\t輸入身份證號: ";
cin>>id;
cout<<"\t\t輸入數學分數: ";
cin>>score[0];
cout<<"\t\t輸入英語分數: ";
cin>>score[1];
cout<<"\t\t輸入計算機分數: ";
cin>>score[2];
e=0;
}
else
{
cout<<"\t\t\t無此類型性別!重新輸入!"<<endl;
e=1;
}
}while(e);
return ;
}
void input(ifstream & is)
{
is>>number>>name>>sex>>place>>nation>>birth>>party>>id
>>score[0]>>score[1]>>score[2];
is.get();
}
void output()
{
cout<<"學生基本信息如下:"<<endl;
cout<<"編號:"<<number
<<" 姓名:"<<name
<<" 性別:"<<sex
<<" 籍貫:"<<place
<<" 民族:"<<nation
<<" 生日:"<<birth
<<" 政治面貌:"<<party<<endl
<<"身份證號:"<<id
<<" 數學:"<<score[0]
<<" 英語:"<<score[1]
<<" 計算機:"<<score[2]
<<" 總分:"<<getg()<<endl<<endl;
}
void output(ofstream & os)
{
os<<setw(6)<<number
<<setw(15)<<name
<<setw(6)<<sex
<<setw(20)<<place
<<setw(6)<<nation
<<setw(20)<<birth
<<setw(20)<<party
<<setw(20)<<id
<<setw(6)<<score[0]
<<setw(6)<<score[1]
<<setw(6)<<score[2]<<endl;
}
};

class school
{
public:
school(){ head=new student; head->next=NULL; key=0; }
~school(){ delete head; }
void input();
void mend();
void del();
int find(student **p,int num,char *pn="^");
void found();
void show();
void count();
void save();
void begin();
void clear();
char mainmenu();
int getkey(){ return key;}
void setkey(int k){ key=k; }
private:
student *head;
int key;
};
//錄入函數
void school::input()
{
student *p,*p2=NULL;
p=head;
int n;
while(p->next)
p=p->next;
while(n)
{
p2=new student;
p2->input();
p->next=p2;
p2->next=NULL;
p=p->next;
school::setkey(1);
cout<<"\t\t\t按1繼續,按0返回 : ";
cin>>n;
}
}
//子查找函數
int school::find(student **p1,int num,char *pn)
{
student *p;
p=head;
while(p->next)
{
(*p1)=p;
if( (p->next)->getnumber()==num||!strcmp( (p->next)->getname(),pn ) )
return 1;
p=p->next;
}
return 0;
}
//查找函數
void school::found()
{
student *p;
int num=-1,n=9;
char name[20]="^";
do
{
cout<<"\t\t1:按編號查找,2:按姓名查找: ";
cin>>n;
}while(n<1||n>2);
if(n==1)
{
cout<<"\t\t\t輸入編號: ";
cin>>num;
}
if(n==2)
{
cout<<"\t\t\t輸入姓名: ";
cin>>name;
}
if(!find(&p,num,name) )
{
cout<<"\t\t找不到你要查找的內容!"<<endl;
return;
}
(p->next)->output();
}
//刪除函數
void school::del()
{
student *p,*p2;
int num;
cout<<"\t\t\t輸入編號: ";
cin>>num;
if( !find(&p,num,"^") )
{
cout<<"\t\t找不到你要刪除的內容!"<<endl;
return;
}
(p->next)->output();
p2=p->next;
p->next=p2->next;
delete p2;
school::setkey(1);
}
//顯示函數
void school::show()
{
student *p;
p=head;
while(p->next)
{
(p->next)->output();
p=p->next;
}
}
//修改函數
void school::mend()
{
student *p;
int num=-1,n;
char name[20]="^";
do
{
cout<<"\t\t1:按編號修改,2:按姓名修改: ";
cin>>n;
}while(n<1||n>2);
if(n==1)
{
cout<<"\t\t\t輸入編號: ";
cin>>num;
}
if(n==2)
{
cout<<"\t\t\t輸入姓名: ";
cin>>name;
}
if( !find(&p,num,name) )
{
cout<<"\t\t找不到你要修改的內容!"<<endl;
return;
}
(p->next)->output();
(p->next)->input();
school::setkey(1);
}
//保存函數
void school::save()
{
student *p;
p=head;
ofstream os("student.txt",ios::out);
if (school::getkey()==1)
{
while(p->next)
{
(p->next)->output(os);
p=p->next;
}
}
cout<<"\t\t\t文件已保存! "<<endl;
school::setkey(0);
}
//初始化函數
void school::begin()
{
student *p,*p2;
p=head;
clear();
long t;
ifstream is("student.txt",ios::in);
if(!is)
{
ofstream os("student.txt",ios::out);
os.close();
return ;
}
int num=-1;
while(1)
{
num=-1;
t=is.tellg();
is>>num;
is.seekg(t);
if(num<0)
{
is.close();
return;
}
p2=new student;
p2->input(is);
p->next=p2;
p2->next=NULL;
p=p->next;
}
}
//清空函數
void school::clear()
{
student *p,*p2;
p=head->next;
while( p )
{
p2=p;
p=p->next;
delete p2;
}
}
//統計函數
void school::count()
{
student *p;
p=head;
int n=0;
double g[3]={0,0,0};
float j[3]={0,0,0};
while(p->next)
{
p=p->next;
n++;
for(int i=0;i<3;i++)
{
g[++i]=g[i]+( p->getscore(i) );
(p->getscore(i) )>=60? j[i++] : 0 ;
}
}
cout<<"\t\t\b\b\b\b數學總分:"<<g[0]<<" 平均分:"<<g[0]/n
<<" 及格率:"<<j[0]/n<<endl<<"\t\t\b\b\b\b英語總分:"<<g[1]
<<" 平均分:"<<g[1]/n<<" 及格率:"<<j[1]/n<<endl
<<"\t\t\b\b\b\b計算機總分: "<<g[2]<<" 平均分: "<<g[2]/n
<<" 及格率:"<<j[2]/n<<endl;
}
//主選菜單函數
char school::mainmenu()
{
char n[6];
cout<<"\n\n ☆☆☆☆歡迎進入高校學籍管理系統☆☆☆☆"<<endl<<endl
<<" * * * * * * * * * * * * * * * * * * * * * * * * * * * *"<<endl
<<" * * * * * * * * * * * * * * * * * * * * * * * * * * * *"<<endl
<<" * * 1: 錄入學生信息 * *"<<endl
<<" * * 2: 顯示學生信息 * *"<<endl
<<" * * 3: 查找學生信息 * *"<<endl
<<" * * 4: 刪除學生信息 * *"<<endl
<<" * * 5: 修改學生信息 * *"<<endl
<<" * * 6: 統計學生成績 * *"<<endl
<<" * * 7: 保存學生信息 * *"<<endl
<<" * * 0: 退出系統 * *"<<endl
<<" * * * * * * * * * * * * * * * * * * * * * * * * * * * *"<<endl
<<" * * * * * * * * * * * * * * * * * * * * * * * * * * * *"<<endl
<<" 請選擇:";
cin>>n;
return n[0];
}
//主函數
void main()
{
school pp;
int k=1;
char n;
pp.begin();
while(k==1)
{
n=pp.mainmenu();
switch(n)
{
case '1':pp.input(); break;
case '2':pp.show(); break;
case '3':pp.found(); break;
case '4':pp.del(); break;
case '5':pp.mend(); break;
case '6':pp.count(); break;
case '7':pp.save(); break;
case '0':
if(pp.getkey()==1)
{
cout<<"\t\t\t是否保存? 1 : 保存 0:不保存 : ";
cin>>k;
if(k==1)
pp.save();
}
pp.clear();
k=0;
break;
}
}
}

B. C語言 學生成績管理系統

[cpp]viewplainprint?
<spanstyle="font-size:16px;">#include"stdio.h"

#include"string"

/*定義學生結構體*/

structStudent

{

charID[20];

charName[20];

floatMark1;

floatMark2;

floatMark3;

floatAverage;

};


/*聲明學生數組及學生數量*/

structStudentstudents[1000];

intnum=0;/*求平均值*/

floatAvg(structStudentstu)

{

return(stu.Mark1+stu.Mark2+stu.Mark3)/3;

}/*通過學號返回數組下標*/

intStudent_SearchByIndex(charid[])

{

inti;

for(i=0;i<num;i++)

{

if(strcmp(students[i].ID,id)==0)

{

returni;

}

}

return-1;

}/*通過姓名返回數組下標*/

intStudent_SearchByName(charname[])

{

inti;

for(i=0;i<num;i++)

{

if(strcmp(students[i].Name,name)==0)

{

returni;

}

}

return-1;

}/*顯示單條學生記錄*/

voidStudent_DisplaySingle(intindex)

{

printf("%10s%10s%8s%8s%8s%10s ","學號","姓名","成績","成績","成績","平均成績");

printf("------------------------------------------------------------- ");

printf("%10s%10s%8.2f%8.2f%8.2f%10.2f ",students[index].ID,students[index].Name,

students[index].Mark1,students[index].Mark2,students[index].Mark3,students[index].Average);

}/*插入學生信息*/

voidStudent_Insert()

{

while(1)

{

printf("請輸入學號:");

scanf("%s",&students[num].ID);

getchar();printf("請輸入姓名:");

scanf("%s",&students[num].Name);

getchar();printf("請輸入成績:");

scanf("%f",&students[num].Mark1);

getchar();printf("請輸入成績:");

scanf("%f",&students[num].Mark2);

getchar();printf("請輸入成績:");

scanf("%f",&students[num].Mark3);

getchar();students[num].Average=Avg(students[num]);

num++;printf("是否繼續?(y/n)");

if(getchar()=='n')

{

break;

}

}}/*修改學生信息*/

voidStudent_Modify()

{

//floatmark1,mark2,mark3;

while(1)

{

charid[20];

intindex;

printf("請輸入要修改的學生的學號:");

scanf("%s",&id);

getchar();

index=Student_SearchByIndex(id);

if(index==-1)

{

printf("學生不存在! ");

}

else

{

printf("你要修改的學生信息為: ");

Student_DisplaySingle(index);

printf("--請輸入新值-- ");


printf("請輸入學號:");

scanf("%s",&students[index].ID);

getchar();


printf("請輸入姓名:");

scanf("%s",&students[index].Name);

getchar();


printf("請輸入成績:");

scanf("%f",&students[index].Mark1);

getchar();


printf("請輸入成績:");

scanf("%f",&students[index].Mark2);

getchar();


printf("請輸入成績:");

scanf("%f",&students[index].Mark3);

getchar();


students[index].Average=Avg(students[index]);

}

printf("是否繼續?(y/n)");

if(getchar()=='n')

{

break;

}

}

}/*刪除學生信息*/

voidStudent_Delete()

{

inti;

while(1)

{

charid[20];

intindex;

printf("請輸入要刪除的學生的學號:");

scanf("%s",&id);

getchar();

index=Student_SearchByIndex(id);

if(index==-1)

{

printf("學生不存在! ");

}

else

{

printf("你要刪除的學生信息為: ");

Student_DisplaySingle(index);

printf("是否真的要刪除?(y/n)");

if(getchar()=='y')

{

for(i=index;i<num-1;i++)

{

students[i]=students[i+1];//把後邊的對象都向前移動

}

num--;

}

getchar();

}

printf("是否繼續?(y/n)");

if(getchar()=='n')

{

break;

}

}

}/*按姓名查詢*/

voidStudent_Select()

{

while(1)

{

charname[20];

intindex;

printf("請輸入要查詢的學生的姓名:");

scanf("%s",&name);

getchar();

index=Student_SearchByName(name);

if(index==-1)

{

printf("學生不存在! ");

}

else

{

printf("你要查詢的學生信息為: ");

Student_DisplaySingle(index);

}

printf("是否繼續?(y/n)");

if(getchar()=='n')

{

break;

}

}

}/*按平均值排序*/

voidStudent_SortByAverage()

{

inti,j;

structStudenttmp;

for(i=0;i<num;i++)

{

for(j=1;j<num-i;j++)

{

if(students[j-1].Average<students[j].Average)

{

tmp=students[j-1];

students[j-1]=students[j];

students[j]=tmp;

}

}

}

}/*顯示學生信息*/

voidStudent_Display()

{

inti;

printf("%10s%10s%8s%8s%8s%10s ","學號","姓名","成績","成績","成績","平均成績");

printf("------------------------------------------------------------- ");

for(i=0;i<num;i++)

{

printf("%10s%10s%8.2f%8.2f%8.2f%10.2f ",students[i].ID,students[i].Name,

students[i].Mark1,students[i].Mark2,students[i].Mark3,students[i].Average);

}

}/*將學生信息從文件讀出*/

voidIO_ReadInfo()

{

FILE*fp;

inti;

if((fp=fopen("Database.txt","rb"))==NULL)

{

printf("不能打開文件! ");

return;

}

if(fread(&num,sizeof(int),1,fp)!=1)

{

num=-1;

}

else

{

for(i=0;i<num;i++)

{

fread(&students[i],sizeof(structStudent),1,fp);

}

}

fclose(fp);

}/*將學生信息寫入文件*/

voidIO_WriteInfo()

{

FILE*fp;

inti;

if((fp=fopen("Database.txt","wb"))==NULL)

{

printf("不能打開文件! ");

return;

}

if(fwrite(&num,sizeof(int),1,fp)!=1)

{

printf("寫入文件錯誤! ");

}

for(i=0;i<num;i++)

{

if(fwrite(&students[i],sizeof(structStudent),1,fp)!=1)

{

printf("寫入文件錯誤! ");

}

}

fclose(fp);

}

/*主程序*/

voidmain()

{

intchoice;

IO_ReadInfo();

while(1)

{

/*主菜單*/

printf(" ------學生成績管理系統------ ");

printf("1.增加學生記錄 ");

printf("2.修改學生記錄 ");

printf("3.刪除學生記錄 ");

printf("4.按姓名查詢學生記錄 ");

printf("5.按平均成績排序 ");

printf("6.退出 ");

printf("請選擇(1-6):");

scanf("%d",&choice);

getchar();

switch(choice)

{

case1:

Student_Insert();

break;

case2:

Student_Modify();

break;

case3:

Student_Delete();

break;

case4:

Student_Select();

break;

case5:

Student_SortByAverage();

Student_Display();

break;

case6:

exit(0);

break;

}

IO_WriteInfo();

}

}
</span>

C. 怎樣用c語言編寫學生管理系統

1、一定要先寫好主函數的框架,然後再往上面加東西,這樣說有點籠統,我把我的主函數在下面,可以借鑒下哈。我的主函數是一個while(1)的無限循環,裡面一個switch選擇,利用一個菜單函數,讓其返回值當成switch選擇的值,然後進入不同的功能主函數,其他功能主函數和主函數的套路一樣。

熱點內容
硬碟是外部存儲器 發布:2025-06-26 07:28:42 瀏覽:202
安卓系統開發起源是什麼呢 發布:2025-06-26 07:28:41 瀏覽:349
自己wifi密碼忘了怎麼辦 發布:2025-06-26 07:22:18 瀏覽:371
百度網盤批量解壓 發布:2025-06-26 07:16:33 瀏覽:660
伺服器搭建node環境 發布:2025-06-26 07:05:51 瀏覽:935
電腦編程惡搞 發布:2025-06-26 06:55:29 瀏覽:292
要配置一台台式機需要哪些硬體 發布:2025-06-26 06:55:27 瀏覽:229
自適應波束演算法 發布:2025-06-26 06:40:38 瀏覽:109
ftp學習心得200字 發布:2025-06-26 06:39:38 瀏覽:934
行業語言編譯 發布:2025-06-26 06:26:48 瀏覽:164