當前位置:首頁 » 編程語言 » 學籍管理系統c語言課程

學籍管理系統c語言課程

發布時間: 2022-12-29 02:31:47

c語言課程設計 學生學籍信息管理系統 我是大一的 實在是難啊 不會 誰能幫忙做下謝謝啦

建議自己做做吧,這東西始終都得學會和練習。

⑵ c語言課程設計學籍管理系統

這個是我曾經做的,上面功課和你的不一樣,把漢字改下就行了,還有那個人數,人數和排名最後一名數字一樣,你運行一下就清楚了
#include<stdio.h>
#include<malloc.h>
#define M "%-6s%-6d%-6d%-6d%-6d%-6d%-7d%-6d\n"
#define H p->name,p->num,p->grade.Escore,p->grade.Mscore,p->grade.Cscore,p->grade.Pscore,p->grade.Allscore,p->grade.Allrank
typedef struct score{
int Escore;
int Mscore;
int Cscore;
int Pscore;
int Allscore;
int Allrank;
}Sco;
typedef struct student{
char name [20];
int num;
struct score grade;
struct student *next;
}*stu;
struct student *Create(struct student *head)
{
int i,n;
printf("請輸入學生個數;");
scanf("%d",&n);
printf("請輸入信息和成績\n");
printf("姓名,學號,英語,高數,C語言,體育:");
printf("\n");
stu p,q;
p=q=(stu)malloc(sizeof(student));
head=p;
for(i=0;i<n;i++)
{
p->next=q;
p=q;
scanf("%s%d%d%d%d%d",q->name,&q->num,&q->grade.Escore,&q->grade.Mscore,&q->grade.Cscore,&q->grade.Pscore);
q->grade.Allscore=q->grade.Escore+q->grade.Mscore+q->grade.Cscore+q->grade.Pscore;
q=(stu)malloc(sizeof(student));
}
p->next=NULL;
return head;
}
struct student *Change(struct student *head)
{
int n,i,k;
stu p;
p=head;
printf("請輸入要修改的學號:");
scanf("%d",&i);
printf("1.英語 2.高數 3.C語言 4.體育\n");
printf("請輸入要修改的成績:");
scanf("%d",&n);
while(p)
{
if(i==p->num)
switch(n)
{
case 1:
printf("請輸入英語分數:");
scanf("%d",&k);
p->grade.Escore=k;
break;
case 2:
printf("請輸入高數分數:");
scanf("%d",&k);
p->grade.Mscore=k;
break;
case 3:
printf("請輸入C語言分數:");
scanf("%d",&k);
p->grade.Cscore=k;
break;
case 4:
printf("請輸入體育分數:");
scanf("%d",&k);
p->grade.Pscore=k;
break;
}
if(i==p->num) break;
if(p->next)
p=p->next;
}
p->grade.Allscore=p->grade.Escore+p->grade.Mscore+p->grade.Cscore+p->grade.Pscore;
return head;
}
struct student *Insert(struct student *head)
{
stu p,q;
p=q=(stu)malloc(sizeof(student));
p=head;
printf("請輸入姓名和學號:\n");
scanf("%s%d",q->name,&q->num);
printf("請輸入英語,高數,C語言,體育成績:\n");
scanf("%d%d%d%d",&q->grade.Escore,&q->grade.Mscore,&q->grade.Cscore,&q->grade.Pscore);
q->grade.Allscore=q->grade.Escore+q->grade.Mscore+q->grade.Cscore+q->grade.Pscore;
while(p->next)
{
p=p->next;
}
p->next=q;
p=p->next;
p->next=NULL;
return head;
}
struct student *Delet(struct student *head)
{
stu p,q,m;
int n;
printf("請輸入要刪除的學號:");
scanf("%d",&n);
p=head;
if(n==p->num)
{
q=p;
head=p->next;
free(p);
}
else
{
q=p->next;
while(q)
if(q->next==NULL&&n==q->num)
{
m=q;
free(q);
p->next=NULL;
q=NULL;
}
else if(q->next!=NULL&&n==q->num)
{
p->next=q->next;
free(q);
q=NULL;
}
else
{
if(q->next!=NULL)
{
p=q;
q=q->next;
}
}
}
return head;
}
void Look(struct student *head)
{
stu p;
int n,i,k;
p=head;
printf("1.按學號查找 2.按分數查找\n");
printf("請輸入查找的類別:");
scanf("%d",&n);
if(n==1)
{
printf("請輸入要查找的學號:");
scanf("%d",&i);
while(p)
{
if(i==p->num)
{
printf("姓名 學號 英語 高數 C語言 體育 總成績 排名\n");
printf(M,H);
}
if(i==p->num) break;
if(p->next)
p=p->next;
}
}
if(n==2)
{
printf("1.英語 2.高數 3.C語言 4.體育 5.總分\n");
printf("請輸入要查找的課程:");
scanf("%d",&i);
switch(i)
{
case 1:
printf("請輸入要查找的英語最低分數:");
scanf("%d",&k);
printf("姓名 學號 英語 高數 C語言 體育 總成績 排名\n");
while(p)
{
if(k<=p->grade.Escore)
printf(M,H);
p=p->next;
}
break;
case 2:
printf("請輸入要查找的高數最低分數:");
scanf("%d",&k);
printf("姓名 學號 英語 高數 C語言 體育 總成績 排名\n");
while(p)
{
if(k<=p->grade.Mscore)
printf(M,H);
p=p->next;
}
break;
case 3:
printf("請輸入要查找C語言語最低分數:");
scanf("%d",&k);
printf("姓名 學號 英語 高數 C語言 體育 總成績 排名\n");
while(p)
{
if(k<=p->grade.Cscore)
printf(M,H);
p=p->next;
}
break;
case 4:
printf("請輸入要查找的體育最低分數:");
scanf("%d",&k);
printf("姓名 學號 英語 高數 C語言 體育 總成績 排名\n");
while(p)
{
if(k<=p->grade.Pscore)
printf(M,H);
p=p->next;
}
break;
case 5:
printf("請輸入要查找的總分最低分數:");
scanf("%d",&k);
printf("姓名 學號 英語 高數 C語言 體育 總成績 排名\n");
while(p)
{
if(k<=p->grade.Allscore)
printf(M,H);
p=p->next;
}
break;
}
}

}
struct student *Rank(struct student *head,struct student *p,int j)
{
int i;
stu q;
i=p->grade.Allscore;
q=head;
while(q)
{
if(q->grade.Allscore>i)
j++;
if(!q->next)break;
q=q->next;
}
p->grade.Allrank=j;
while(p)
{
if(!p->next)break;
{
p=p->next;
Rank(head,p,1);
}
}
return head;

}
void Rankshow(struct student *head,int j)
{
int i;
stu p,q;
q=head;
p=head;
i=j;
printf("姓名 學號 英語 高數 C語言 體育 總成績 排名\n");
while(q)
{
while(p)
if(i==p->grade.Allrank)
{
printf(M,H);
p=p->next;
}
else
p=p->next;
p=head;
i++;
if(!q->next)break;
q=q->next;
}
}
void show(struct student *head)
{
stu p;
printf("姓名 學號 英語 高數 C語言 體育 總成績 排名");
printf("\n");
p=head;
while(p)
{
printf(M,H);
p=p->next;
}
}
void main()
{
int n;
struct student *head,*p;
stu L;
printf("綜合素質測評系統\n");
printf("1.數據錄入\n");
printf("2.數據修改\n");
printf("3.插入操作\n");
printf("4.刪除操作\n");
printf("5.查找操作\n");
printf("6.排序操作\n");
printf("7.數據顯示\n");
printf("0.退出系統\n");
printf("請輸入操作:");
scanf("%d",&n);
while(n!=0)
{
switch(n)
{
case 0:
break;
case 1:
L=Create(head);
Rank(L,L,1);
printf("請輸入操作:");
break;
case 2:
Change(L);
Rank(L,L,1);
printf("請輸入操作:");
break;
case 3:
L=Insert(L);
Rank(L,L,1);
printf("請輸入操作:");
break;
case 4:
L=Delet(L);
Rank(L,L,1);
printf("請輸入操作:");
break;
case 5:
Look(L);
printf("請輸入操作:");
break;
case 6:
Rank(L,L,1);
Rankshow(L,1);
printf("請輸入操作:");
break;
case 7:
show(L);
printf("請輸入操作:");
break;
}
scanf("%d",&n);
}
}

⑶ 課程設計 C語言學籍管理系統!!!

給你看個我寫的班費管理系統,跟你這個比較類似,你改下就好了

#include<iostream>
#include<string>
#include<vector>
#include <fstream>
#include<sstream>

using namespace std;

class student
{
public:
student(string ,string ,string ,string );
string getSex(){return _sex;};
string getName(){return _name;};
string getID(){return _id;};
string getmoney(){return _money;};
void setMoney(string a){_money=a;};
void deleted(){_id="deleted";_name="deleted";_sex="deleted";_money="deleted";};
void setName(string);
void save();
void print();
private:
string _id;
string _name;
string _sex;
string _money;
string _total;
};

student::student(string id, string name, string sex,string money)
{
_id=id;_name=name;_sex=sex;
_money=money;
}

void student::save()
{
ofstream outf;
outf.open("myfile.txt",ios::app);
outf<<_id
<<"\t"<< _name
<<"\t"<<_sex
<<"\t"<<_money<<endl;
outf.close();
}

void student::print()
{
cout<<_id
<<"\t\t"<< _name
<<"\t\t"<<_sex
<<"\t\t"<<_money<<endl;
}

void printMenu(void)
{

cout<<"-------------class fee management system--------------"<<endl;
cout<<"| |"<<endl;
cout<<"| author:XY |"<<endl;
cout<<"| www.hdxuyi.cn |"<<endl;
cout<<"|----------------------------------------------------|"<<endl;
cout<<"| |"<<endl;
cout<<"| 1.Increase the student records |"<<endl;
cout<<"| 2.Delete student records |"<<endl;
cout<<"| 3.The total of class fee |"<<endl;
cout<<"| 4.search the class fee |"<<endl;
cout<<"| 5.view all class fee |"<<endl;
cout<<"| 6.add one class fee |"<<endl;
cout<<"| 0.exit |"<<endl;
cout<<"| |"<<endl;
cout<<"------------------------------------------------------"<<endl;
cout<<"make your choice:"<<endl;
}

void addstudent();//添加學生信息
void delstudent();//刪除學生信息
void selstudent();//查詢學生信息
void selall();//查詢所有信息
void total();//班費總額
void addmoney();//增加某個學生的班費(實為更新操作)

bool isinfile=false;//判斷是否讀取過txt
vector<student> stu;//全局對象student
int main()
{
int order=0;
printMenu();
cin>>order;
while(order!=0)
{
switch(order)
{
case 1:addstudent();printMenu();cin>>order;break;
case 2:delstudent();printMenu();cin>>order;break;
case 3:total();printMenu();cin>>order;break;
case 4:selstudent();printMenu();cin>>order;break;
case 5:selall();printMenu();cin>>order;break;
case 6:addmoney();printMenu();cin>>order;break;
default:break;
}
}
cout<<endl;
cout<<"------------------------------------------------------"<<endl;
cout<<"thank you for using the system~"<<endl;
cout<<"------------------------------------------------------"<<endl;
}

void infile()//讀取txt
{
if (isinfile==false)
{
stu.clear();
string tmp_id,tmp_name,tmp_sex,tmp_money;
int time =0;
string lines,field;

ifstream infile("myfile.txt");

while (getline (infile, lines))
{
istringstream stream(lines);
while(stream>>field)
{
switch(time)
{
case 0:tmp_id = field;time=1;break;
case 1:tmp_name = field;time=2;break;
case 2:tmp_sex = field;time=3;break;
case 3:tmp_money = field;time=0;
stu.push_back(student(tmp_id,tmp_name,tmp_sex,tmp_money));break;
}
}
}
isinfile==true;
infile.close();
}
}

void addstudent()
{
string tmp_id;
string tmp_name;
string tmp_sex;
string tmp_money;
cout<<"Insert-->ID:";
cin>>tmp_id;
cout<<"Insert-->Name:";
cin>>tmp_name;
cout<<"Insert-->Sex:";
cin>>tmp_sex;
cout<<"Insert-->Money:";
cin>>tmp_money;
student(tmp_id,tmp_name,tmp_sex,tmp_money).save();
cout<<"save success!"<<endl;
isinfile=false;
}

void selall()
{
infile();
if (stu.size()==0)
{
cout<<"ERR:---->No data in the system!"<<endl;
}
else
{
vector<student>::iterator iter=stu.begin();
vector<student>::iterator iter_end=stu.end();
cout<<endl;
cout<<"------------------------------------------------------"<<endl;
cout<<"id name sex money"<<endl;
for(;iter!=iter_end;iter++)
{
(*iter).print();
}
cout<<"------------------------------------------------------"<<endl;
}
cout<<endl;
}

void delstudent()
{
infile();
string search_name;
string search_id;
cout<<"delete---->id:"<<endl;
cin>>search_id;
cout<<"delete---->name:"<<endl;
cin>>search_name;
bool isFind=false;
if (stu.size()==0)
{
cout<<"ERR:---->No data in the system!"<<endl;
}
else
{
vector<student>::iterator iter=stu.begin();
vector<student>::iterator iter_end=stu.end();
for(;iter!=iter_end;iter++)
{
if( (*iter).getName()==search_name&&(*iter).getID()==search_id)
{
isFind=true;
stu.erase(iter);
}
}

//重新將刪除後的集合寫入txt
vector<student>::iterator iter1=stu.begin();
vector<student>::iterator iter1_end=stu.end();
ofstream outf;
outf.open("myfile.txt");
for(;iter1!=iter1_end;iter1++)
{
outf<<(*iter1).getID()
<<"\t"<<(*iter1).getName()
<<"\t"<<(*iter1).getSex()
<<"\t"<<(*iter1).getmoney()<<endl;
}
outf.close();
cout<<"delete success!"<<endl;
}
if(!isFind)
{
cout<<"Can't find this student!"<<endl;
}
cout<<endl;
}

void total()
{
infile();
if (stu.size()==0)
{
cout<<"ERR:---->No data in the system!"<<endl;
}
else
{
vector<student>::iterator iter=stu.begin();
vector<student>::iterator iter_end=stu.end();
cout<<"------------------------------------------------------"<<endl;
cout<<"id name sex money"<<endl;
for(;iter!=iter_end;iter++)
{
(*iter).print();
}
cout<<"------------------------------------------------------"<<endl;
}
cout<<endl;
}

void selstudent()
{
infile();
string search;
cout<<"search---->id or name:"<<endl;
cin>>search;
bool isFind=false;
if (stu.size()==0)
{
cout<<"ERR:---->No data in the system!"<<endl;
}
else
{
vector<student>::iterator iter=stu.begin();
vector<student>::iterator iter_end=stu.end();
cout<<"------------------------------------------------------"<<endl;
cout<<"id name sex money"<<endl;
for(;iter!=iter_end;iter++)
{
if( (*iter).getName()==search||(*iter).getID()==search)
{
isFind=true;
(*iter).print();
}
}
cout<<"------------------------------------------------------"<<endl;
}
if(!isFind)
{
cout<<"Can't find this student!"<<endl;
}
cout<<endl;
}

void addmoney()
{
infile();
string search;
string update;
cout<<"search---->id or name:"<<endl;
cin>>search;
bool isFind=false;
if (stu.size()==0)
{
cout<<"ERR:---->No data in the system!"<<endl;
}
else
{
vector<student>::iterator iter=stu.begin();
vector<student>::iterator iter_end=stu.end();
cout<<"id name sex money"<<endl;
for(;iter!=iter_end;iter++)
{
if( (*iter).getName()==search||(*iter).getID()==search)
{
(*iter).print();
isFind=true;
cout<<"update---->new class fee:"<<endl;
cin>>update;
(*iter).setMoney(update);
}
}

//重新將修改後的集合寫入txt
vector<student>::iterator iter1=stu.begin();
vector<student>::iterator iter1_end=stu.end();
ofstream outf;
outf.open("myfile.txt");
for(;iter1!=iter1_end;iter1++)
{
outf<<(*iter1).getID()
<<"\t"<<(*iter1).getName()
<<"\t"<<(*iter1).getSex()
<<"\t"<<(*iter1).getmoney()<<endl;
}
outf.close();
cout<<"update success!"<<endl;
}
if(!isFind)
{
cout<<"Can't find this student!"<<endl;
}
cout<<endl;
}

⑷ C語言設計一個學生學籍管理系統,要求文件形式保存,且用到鏈表

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

//鏈表結點結構體聲明
typedefstructsubjects
{
charname[20];
floatscore;
}sub;

typedefstructstudent
{
intnum;
charname[20];
subsubject[3];
structstudent*next;
}stu,*pstu;

#defineSIZEsizeof(stu)

//函數申明
pstuLoadInfo();
voidPrintMenu();
pstuAddStu(pstu);
pstuDeleStu(pstu);
pstuRwrStu(pstu);
voidFindStu(pstu,char);
voidCount(pstu,char*,float,float);
voidRank(pstu,char*);
voidSaveQuit(pstu);

//主函數
intmain()
{
floatscore1,score2;
charn,j;
charsubname[20];
pstuhead,ptr;

head=LoadInfo();
ptr=head->next;

//創建菜單,進入選擇循環
while(1)
{
PrintMenu();
printf("請輸入您的選擇編號:");
scanf("%d",&n);
getchar();
switch(n)
{
case1:
{
system("cls");
j=0;
while(4!=j)
{
printf("歡迎進入信息管理版塊! ");
printf("251、添加學生 ");
printf("252、刪除學生 ");
printf("253、修改學生信息 ");
printf("254、返回 ");
printf("請輸入您的選擇編號: ");
scanf("%d",&j);
getchar();

if(1==j)head=AddStu(head);
elseif(2==j)head=DeleStu(head);
elseif(3==j)head=RwrStu(head);
elseif(4==j);
elseprintf("輸入有誤,請重新輸入! ");

}
printf("請輸入回車鍵返回主菜單!");//此處本意按任意鍵返回,但是任意鍵的話,需要按鍵A,再按回車確定
getchar(); //則會連續收到兩個按鍵,造成錯誤讀入,可以改進scanf接收字元串,
system("cls"); //以下所有getchar()、system("cls")同理
break;
}
case2:
{
//信息查詢
system("cls");
printf("歡迎進入信息查詢版塊! ");
printf("請輸入要查詢的學生編號:");
scanf("%d",&j);
getchar();
//printf("%d ",j); //檢測輸入是否成功,調試程序用
FindStu(head,j); //查詢並輸出
printf(" 請輸入回車鍵返回主菜單!");
getchar();
system("cls");
break;
}
case3:
{
//成績統計
system("cls");
printf("歡迎進入成績統計版塊! ");
printf("請輸入科目:");
scanf("%s",&subname);
getchar();
printf("請輸入分數范圍(score1,score2):");
scanf("%f,%f",&score1,&score2);
getchar();
/*printf("%s%5.2f%5.2f ",subname,
score1,score2);*///檢測輸入是否成功,調試程序用
Count(head,subname,score1,score2); //統計並輸出
printf("請輸入回車鍵返回主菜單!");
getchar();
system("cls");
break;
}
case4:
{
//成績排序
system("cls");
printf("歡迎進入成績排序版塊,請輸入科目:");
scanf("%s",&subname);
getchar();
Rank(head,subname); //排序並輸出
printf(" 請輸入回車鍵返回主菜單! ");
getchar();
system("cls");
break;
}
case5:
{
//保存退出
SaveQuit(head); //文件操作,保存並退出
free(head);
return0;
}
default:
{
printf("輸入有誤,按回車鍵重新選擇! "); //主菜單錯誤輸出檢測
getchar();
system("cls");
}
}
}


}

//載入data數據,文件操作
pstuLoadInfo()
{
intnum;
charname[20];
charsub1[20];
charsub2[20];
charsub3[20];
floatscore1;
floatscore2;
floatscore3;

charfilename[]="D:\編程學習\編程實踐\c語言課程設計1學生信息管理\data.txt";//文件名,此處為簡化編程,採用固定地址名稱,未作輸入
FILE*fp;
pstuhead,ptr;

//創建帶表頭結點的空單鏈表head,用來存放載入信息
head=(pstu)malloc(SIZE);
ptr=head;
ptr->next=NULL;


//載入data文件,存入head鏈表
if(NULL==(fp=fopen(filename,"r"))) //判斷文件是否存在及可讀
{
printf("error!");
exit(0);
}

while(!feof(fp))
{
fscanf(fp,"%d%s%s%f%s%f%s%f ",&num,&name,
&sub1,&score1,&sub2,&score2,&sub3,&score3);//讀取一行,採用格式化讀取,避免了其他各種讀取方法的數據處理問題
//該方法缺點明顯,對數據格式要求教研,故data文件規定數據格式
ptr->next=(pstu)malloc(SIZE);
ptr=ptr->next;
ptr->next=NULL;

ptr->num=num;
strcpy(ptr->name,name);
strcpy(ptr->subject[0].name,sub1);
ptr->subject[0].score=score1;
strcpy(ptr->subject[1].name,sub2);
ptr->subject[1].score=score2;
strcpy(ptr->subject[2].name,sub3);
ptr->subject[2].score=score3;

}

fclose(fp); //關閉文件,已得到保存data信息的鏈表head

returnhead;
}


//列印主菜單
voidPrintMenu()
{
printf("*************************************** ");
printf("楓楓學生信息管理系統 ");
printf("*************************************** ");
putchar(' ');
printf("菜單 ");
printf("251、信息管理 ");
printf("252、信息查詢 ");
printf("253、成績統計 ");
printf("254、成績排序 ");
printf("255、保存退出 ");
}

//添加學生
pstuAddStu(pstux)
{
charnamestu[20];
char*p;
charsubname1[20],subname2[20],subname3[20];
pstuhead,ptr;

head=x;
ptr=head;

while(NULL!=ptr->next) //遍歷鏈表,找到鏈尾結點
{
ptr=ptr->next;
}

ptr->next=(pstu)malloc(SIZE); //默認在鏈表末追加添加信息
ptr=ptr->next;
ptr->next=NULL;

printf("請輸入添加學生的信息: ");

printf("請輸入添加學生的學號:");
scanf("%d",&ptr->num);
getchar();

printf("請輸入添加學生的姓名:");
scanf("%s",namestu);
getchar();
p=namestu;
strcpy(ptr->name,p);

printf("請輸入添加學生的科目1名稱:");
scanf("%s",&subname1);
getchar();
p=subname1;
strcpy(ptr->subject[0].name,p);

printf("請輸入添加學生的科目1成績:");
scanf("%f",&ptr->subject[0].score);
getchar();

printf("請輸入添加學生的科目2名稱:");
scanf("%s",&subname2);
getchar();
p=subname2;
strcpy(ptr->subject[1].name,p);

printf("請輸入添加學生的科目2成績:");
scanf("%f",&ptr->subject[1].score);
getchar();

printf("請輸入添加學生的科目3名稱:");
scanf("%s",&subname3);
getchar();
p=subname3;
strcpy(ptr->subject[2].name,p);

printf("請輸入添加學生的科目3成績:");
scanf("%f",&ptr->subject[2].score);
getchar();

putchar(' ');
returnhead;
}

//刪除學生
pstuDeleStu(pstux)
{
intnum;
pstuhead,ptr,qtr;

head=x;
ptr=head->next;
qtr=head;

printf("請輸入要刪除的學生的學號:");
scanf("%d",&num);
getchar();

while(ptr!=NULL)
{
if(ptr->num!=num) //遍歷查找鏈表結點,未找到跳過該結點
{
ptr=ptr->next;
qtr=qtr->next;
}
else //找到則刪除結點
{
ptr=ptr->next;
qtr->next=ptr;
break;
}
}

printf("該學生信息已刪除! ");
returnhead;
}

//修改學生信息
pstuRwrStu(pstux)
{
charnamestu[20];
char*p;
charsubname1[20],subname2[20],subname3[20];
intnum;
pstuhead,ptr;

head=x;
ptr=head->next;

printf("請輸入要修改的學生的學號:");
scanf("%d",&num);
getchar();

while(ptr!=NULL)
{
if(ptr->num==num)
{
printf("已找到該學生信息,請填入修改項目:");

printf("請輸入修改學生的姓名:");
scanf("%s",namestu);
getchar();
p=namestu;
strcpy(ptr->name,p);

printf("請輸入修改學生的科目1名稱:");
scanf("%s",subname1);
getchar();
p=subname1;
strcpy(ptr->subject[0].name,p);

printf("請輸入修改學生的科目1成績:");
scanf("%f",&ptr->subject[0].score);
getchar();

printf("請輸入修改學生的科目2名稱:");
scanf("%s",subname2);
getchar();
p=subname2;
strcpy(ptr->subject[1].name,p);

printf("請輸入修改學生的科目2成績:");
scanf("%f",&ptr->subject[1].score);
getchar();

printf("請輸入修改學生的科目3名稱:");
scanf("%s",subname3);
getchar();
p=subname3;
strcpy(ptr->subject[2].name,p);

printf("請輸入修改學生的科目3成績:");
scanf("%f",&ptr->subject[2].score);
getchar();

printf("該學生信息已修改! ");
break;
}
else
{
ptr=ptr->next;
}
}

returnhead;
}

//查找學生,參數為鏈表指針,和學生學號
//不好,應該將學號輸入放進子函數,簡化主函數結構,減少子函數參數
voidFindStu(pstux,chary)
{
pstuhead,ptr;

head=x;
ptr=head->next;

while(ptr!=NULL)
{
if(ptr->num==(int)y) //因主函數中為節省空間,學號輸入採用char數據,故強行准換
{
printf("已找到該學生信息! 如下:");
printf("%03d%s%s%5.2f%s%5.2f%s%5.2f ",
ptr->num,ptr->name,ptr->subject[0].name,ptr->subject[0].score,ptr->subject[1].name,ptr->subject[1].score,ptr->subject[2].name,ptr->subject[2].score); break; //注意此處找到並輸出信息後要手動退出循環
}
else
{
ptr=ptr->next;
}
}
if(ptr==NULL) //查詢成功檢測,while循環中若找到,則ptr停留在當前學生的結點上
{
printf("未能找到該學生信息! ");
}
}


//統計科目分數區間段的學生,參數為鏈表指針,科目名稱,分數區間上下限
//同理,參數的錄入應放入子函數,簡化結構和編程
voidCount(pstux,char*y,floatq,floatp)
{
pstuhead,ptr;
charname[20];
charflag=0; //手動設置的查找結果flag

head=x;
ptr=head->next;
strcpy(name,y);

//printf("%s%5.2f%5.2f ",name,q,p); //檢測輸入參數的傳遞,調試程序用

while(ptr!=NULL) //開始查找統計,科目查找用strcmp函數比較科目字元串,返回值0為字元串相等
{ //此處while循環體中,重復的查找步驟太多,應設置科目匹配flag,參照rank()函數
if(strcmp(name,ptr->subject[0].name)==0) //通過flag將科目確認放在while之外,循環體內只做分數區間的掃描和輸出
{
if(q<=ptr->subject[0].score&&ptr->subject[0].score<=p)
{
printf("%03d%s%s%5.2f ",ptr->num,ptr->name,ptr->subject[0].name,ptr->subject[0].score);
flag++;
}
}
if(strcmp(name,ptr->subject[1].name)==0)
{
if(q<=ptr->subject[1].score&&ptr->subject[1].score<=p)
{
printf("%03d%s%s%5.2f ",ptr->num,ptr->name,ptr->subject[1].name,ptr->subject[1].score);
flag++;
}
}
if(strcmp(name,ptr->subject[2].name)==0)
{
if(q<=ptr->subject[2].score&&ptr->subject[2].score<=p)
{
printf("%03d%s%s%5.2f ",ptr->num,ptr->name,ptr->subject[2].name,ptr->subject[2].score);
flag++;
}
}

ptr=ptr->next;
}

if(flag==0)
{
printf("未能找到該課程該區間分數段的學生! ");
}
}


//學科成績排名,採用交換數據的方法,參數為鏈表指針,科目名稱
//同理參數問題
//鏈表排序問題,此處用交換結點數據方法,還有其他多種排序方法
//如,交換結點,輔助指針數組排序(未實現,過程繁雜),插入法排序等
voidRank(pstux,char*y)
{
pstuhead,ptr,qtr;
charname[20];
charlen=0;
charflag=0; //簡化演算法,設置科目查找結果判斷值,flag=0表示科目輸入為未知科目,不存在
inti=0; //i、j循環次數控制參數
intj=0;
chartemp_name[20]; //數據交換時的暫存信息變數
floattemp0,temp1,temp2;
inttemp_num;

strcpy(name,y);
head=x;

ptr=head->next;
while(ptr!=NULL) //測鏈表長度,不包括表頭結點
{
ptr=ptr->next;
len++;
}
ptr=head->next; //指針ptr用過之後記得回原位


//開始查找科目
if(strcmp(name,ptr->subject[0].name)==0) flag=1;
if(strcmp(name,ptr->subject[1].name)==0) flag=2;
if(strcmp(name,ptr->subject[2].name)==0) flag=3;
if(flag==0)
{
printf("未找到該科目!");
return;
}

//開始排序,冒泡法比較各結點數據
//此處3個並列的if用switchcase更清晰結構
if(n==1)
{
for(i=0;i<len;i++)
{
ptr=head->next->next; //每一次內循環之後,ptr、qtr必然在最後兩個節點上
qtr=head->next; //故在進行內循環之前,要重新復位ptr、qtr
for(j=0;j<len-i-1;j++)
{
if(qtr->subject[0].score<ptr->subject[0].score)
{
temp_num=qtr->num; //交換數據,因數據格式(科目順序)明確規定,故不再做科目名稱的替換
strcpy(temp_name,qtr->name);
temp0=qtr->subject[0].score;
temp1=qtr->subject[1].score;
temp2=qtr->subject[2].score;

qtr->num=ptr->num;
strcpy(qtr->name,ptr->name);
qtr->subject[0].score=ptr->subject[0].score;
qtr->subject[1].score=ptr->subject[1].score;
qtr->subject[2].score=ptr->subject[2].score;

ptr->num=temp_num;
strcpy(ptr->name,temp_name);
ptr->subject[0].score=temp0;
ptr->subject[1].score=temp1;
ptr->subject[2].score=temp2;
}
qtr=qtr->next;
ptr=ptr->next;
}
}
}

if(n==2)
{
for(i=0;i<len;i++)
{
ptr=head->next->next;
qtr=head->next;
for(j=0;j<len-i-1;j++)
{
if(qtr->subject[1].score<ptr->subject[1].score)
{
temp_num=qtr->num;
strcpy(temp_name,qtr->name);
temp0=qtr->subject[0].score;
temp1=qtr->subject[1].score;
temp2=qtr->subject[2].score;

qtr->num=ptr->num;
strcpy(qtr->name,ptr->name);
qtr->subject[0].score=ptr->subject[0].score;
qtr->subject[1].score=ptr->subject[1].score;
qtr->subject[2].score=ptr->subject[2].score;

ptr->num=temp_num;
strcpy(ptr->name,temp_name);
ptr->subject[0].score=temp0;
ptr->subject[1].score=temp1;
ptr->subject[2].score=temp2;
}
qtr=qtr->next;
ptr=ptr->next;
}
}
}

if(n==3)
{
for(i=0;i<len;i++)
{
ptr=head->next->next;
qtr=head->next;
for(j=0;j<len-i-1;j++)
{
if(qtr->subject[2].score<ptr->subject[2].score)
{
temp_num=qtr->num;
strcpy(temp_name,qtr->name);
temp0=qtr->subject[0].score;
temp1=qtr->subject[1].score;
temp2=qtr->subject[2].score;

qtr->num=ptr->num;
strcpy(qtr->name,ptr->name);
qtr->subject[0].score=ptr->subject[0].score;
qtr->subject[1].score=ptr->subject[1].score;
qtr->subject[2].score=ptr->subject[2].score;

ptr->num=temp_num;
strcpy(ptr->name,temp_name);
ptr->subject[0].score=temp0;
ptr->subject[1].score=temp1;
ptr->subject[2].score=temp2;
}
qtr=qtr->next;
ptr=ptr->next;
}
}
}

//輸出排序過後的鏈表
ptr=head->next;
while(ptr!=NULL)
{
printf("%03d%s%s%5.2f%s%5.2f%s%5.2f ",
ptr->num,ptr->name,ptr->subject[0].name,ptr->subject[0].score,
ptr->subject[1].name,ptr->subject[1].score,
ptr->subject[2].name,ptr->subject[2].score);
ptr=ptr->next;
}
}


//保存文件並退出,文件操作
voidSaveQuit(pstux)
{
pstuhead,ptr;
FILE*fp;
charfilename[]="D:\編程學習\編程實踐\c語言課程設計1學生信息管理\data.txt";
head=x;
ptr=head->next;

if(NULL==(fp=fopen(filename,"w"))) //判斷文件是否存在及可讀
{
printf("error!");
exit(0);
}

while(ptr!=NULL) //遍歷鏈表結點,按data約定格式輸出數據
{
fprintf(fp,"%03d%s%s%5.2f%s%5.2f%s%5.2f ",
ptr->num,ptr->name,ptr->subject[0].name,ptr->subject[0].score,

⑸ 《C/C++程序設計》課程設計 1. 學生學籍管理系統 1.1 課程設計任務 設有N個學生,

課程設計?

⑹ 學生學籍信息管理系統C語言的報告總結

首先做一下自我介紹,本人呢從事了3年的酒店管理軟體開發職業經理人 在08年末自己創業了。就你說道的實訓報告書面內容如何書寫我有以下幾點內容建議供你參考:
從以下幾個問題出發:
■第1:如何讓你自己的作品在眾多同學中脫穎而出?(中心思想-做到同而不同(同樣的作品不同的感覺))
■第2:如何開場引出你的作品?(設計一些問題或者經常出現的煩惱來與台下的評委做個簡單的互動,把大家的注意力吸引到你的身邊,同時不乏趣味面的單調,起到拋磚引玉的作用)
■第3:如何介紹自己的作品?(3.1因為針對實訓課題是早已經擬定的,並給出了核心技術支持(可以是代碼或者是技術理論步驟)所以此部分內容介紹應該干練些。3.2著重點在於基於題目作品之上的創意部分的思路的由來、核心技術的實現辦法做重點的闡述(創意可以是功能優化方面的,復合型的多功能實現、核心技術指的是你所用到的新的知識點以及程序的演算法部分))3.3對比同類作品(指你同學或者老師的提供的DEMO代碼(在業內通常把演示程序叫做DEMO))的功能、性價比(運行速度、文件大小、程序穩定性、安全性等方面)做論證。讓聽眾覺得你自己的作品更有說服力。
■第4:如何讓自己的作品報告更加的吸引人呢?(1.要有完整的產品介紹(對於你來說就是一個報告書,你需要分為一下幾個部分:創意方案、實體產品(把你的軟體要打包刻錄成光碟並包裝或者在網路上發布)、PPT演示文稿、產品使用示範(在業內行話叫做DEMO演示系統))做到以上4點是產品的發布流程較完整,給人該絕更正規既可)
■■:如果你要是有其它問題或者想知道關於更多今後工作中的產品發布案例可以練習我的QQ313185141 或者登陸我工作室網路官方博客http://hi..com/firesoft 或者E-MAIL:[email protected]

⑺ C語言課程設計----學生學籍管理系統

<p><a href="https://wenwen.sogou.com/login/redirect?url=http%3a%2f%2fwww.docin.com%2fp-110271548.html" target="_blank">http://www.docin.com/p-110271548.html</a></p> <p>c語言編寫的學生信息管理系統的設計與實現,不知道是不是你要的。</p>

⑻ C語言課程設計----學生學籍管理系統 急急急 來大神~

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

typedef struct stud //學生信息結構
{
long num;
char name[20];
float score;
}Stud;

typedef struct node
{
Stud student;
struct node *next;
}Node;
Node *head=NULL;
void read(void);
void inser(long b);
void print();
void find(long b);
void searchname(char *s);
Node * del(long n);
void sort(int flag);
void menu();

void main()
{
char choose;
int flag=1;

while (flag)
{
menu(); //調用功能菜單函數,顯示菜單項。
printf(" 請選擇:");
choose=getchar();

switch(choose)
{
case '1':read(); //調用建立鏈表的函數;輸出鏈表信息;
print();
printf("\nPress any key Continue ");
//getchar();
getchar();
break;
case '2': //調用按學號查找學生信息的函數;並輸出查找結果信息;
long c;
printf("input the number you want to find:");
scanf("%ld",&c);
find(c);
printf("\nPress any key Continue.");
getchar();
break;
case '3':
//調用按姓名查找學生信息的函數;並輸出查找結果信息;
char s[20];
printf("input the name you want to find:");
scanf("%s",s);
searchname(s);
printf("\n Press any key Continue.");
getchar();
getchar();
break;
case '4':
//調用根據學號刪除某個學生信息的函數;並輸出刪除後的鏈表信息;
Node *h;
long n;
printf("input the number you want to delete:");
scanf("%ld",&n);
h=del(n);
if(h==NULL) printf("No find the student \n");
else print();
printf("\n Press any key Continue.");
getchar();
getchar();
break;
case '5':
//調用插入新的學生信息的函數;並輸出插入後的鏈表信息;
long a;
printf("input the number for the new:\n");
scanf("%ld",&a);
inser(a);
print();
printf("\n Press any key Continue.");
getchar();
getchar();
break;
case '6':
//調用按分數降序排序輸出的函數;並輸出排序後的鏈表信息;
sort(1);
print();
sort(0);
printf("\nPress any key Continue.");
getchar();
getchar();
break;
case '0':
//結束程序運行!
flag=0;
printf("\n *** The End! ***\n");
break;
default: printf("\n Wrong Selection !(選擇錯誤,重選)\n");
getchar();
}
}
}

void menu() //綜合作業功能菜單
{
printf(" \n 學 生 信 息 管 理 系 統\n");
printf(" \n 菜 單\n\n");
printf(" \n 1. 建 立 鏈 表 並 顯 示 \n");
printf(" \n 2. 查 找 某 學 號 的 學 生 信 息 \n");
printf(" \n 3. 查 找 某 姓 名 的 學 生 信 息 \n");
printf(" \n 4. 刪 除 某 個 學 號 的 學 生\n");
printf(" \n 5. 插 入 新 的 學 生 信 息 \n");
printf(" \n 6. 按 分 數 降 序 排 序 輸 出 \n");
printf(" \n 0. 退 出\n\n");
}

void read(void)
{
long a;
printf("input the number:");
scanf("%ld",&a);
while(a>0){
inser(a);
printf("input the number:");
scanf("%ld",&a);
}
}
void inser(long b)
{

Node *last,*current,*p;
current=head;
while(current!=NULL&&b>current->student.num){
last=current;
current=current->next;
}

if(current==NULL||b<current->student.num){
printf("input the name,score:");
p=(Node *)malloc(sizeof(Node));
p->student.num=b;
scanf("%s%f",p->student.name,&p->student.score);
p->next=NULL;
if(current==head){
p->next=head;
head=p;
}
else{
p->next=current;
last->next=p;
}
}
else if(b==current->student.num)
printf("error input a different number:");

}

void print()
{
Node *p=head;
printf("學號 姓名 成績:\n");
while(p!=NULL){
printf("%ld %s %f\n",p->student.num,p->student.name,p->student.score);
p=p->next;
}
printf("\n");
}
void find(long b)
{
Node *p=head;
while(p!=NULL&&b!=p->student.num)
p=p->next;
if(!p) printf("No found\n");
else {
printf("學號 姓名 成績\n");
printf("%ld %s %f\n",p->student.num,p->student.name,p->student.score);
}

}

void searchname(char *s)
{
Node *p=head;
int flag=0;
printf("學號 姓名 成績:\n");
while(p!=NULL)
{
if(strcmp(p->student.name,s)==0)
{
printf("%ld %s %f\n",p->student.num,p->student.name,p->student.score);
flag=1;
p=p->next;
continue;
}
else p=p->next;
}
if(!flag) printf("No find");
}
Node * del(long n)
{
Node *p=head,*last;
while(p->student.num!=n){
last=p;
p=p->next;
}
if(p==NULL) return p;
else if(p==head) head=p->next;
else last->next=p->next;
return head;
}
void sort(int flag)
{
/*flag==1 按分數排序 else 按學號排序*/
Node *p1,*p2,*k;
float t1;
long t2;
char s[20];
for(p1=head;p1->next;p1=p1->next)
{
k=p1;
for(p2=p1->next;p2;p2=p2->next)
if(flag==1&&k->student.score<p2->student.score||!flag&&k->student.num>p2->student.num)
k=p2;
if(k!=p1){
t1=p1->student.score;
p1->student.score=k->student.score;
k->student.score=t1;
t2=p1->student.num;
p1->student.num=k->student.num;
k->student.num=t2;
strcpy(s,p1->student.name);
strcpy(p1->student.name,k->student.name);
strcpy(k->student.name,s);
}
}
}

⑼ C語言課程設計,設計一個小型學籍管理系統

我以前小學期做過這種東西 那會兒做的時候確實挺煩的 說實話 除非你去淘寶買一個 否則網路知道里沒什麼人能從頭到尾幫助你 更別想幫你做一個了 因為網上幾乎不可能找到一個功能與你們的要求完全一樣的。這種東西無非是模擬幾個功能,一般就靠文件操作實現簡單的信息記錄讀取功能。趕緊自己開始做啦,要問問題的話等你編的時候遇到麻煩時再提吧 如果需要幫忙可以把實驗指導書之類的東西拿來看看

⑽ 學生學籍信息管理系統 C語言設計題

學籍管理系統軟體需求分析

________________________________________
編著 於博海、王利森、王艷梅、李岩、呂靖
1 引言
信息社會的高科技,商品經濟化的高效益,使計算機的應用已普及到經濟和社會生活的各個領域。計算機雖然與人類的關系愈來愈密切,還有人由於計算機操作不方便繼續用手工勞動。為了適應現代社會人們高度強烈的時間觀念,學籍管理系統軟體為教學辦公室帶來了極大的方便。該軟體是以漢語編程語言為實現語言,其功能在系統內部有源代碼直接完成。通過操作手冊,使用者可以了解本軟體的基本工作原理。操作人員只需輸入一些簡單的漢字、數字,即可達到自己的目標。
1.1 編寫目的
本需求的編寫目的在於研究學籍管理系統軟體的開發途徑和應用方法。
本需求的預期讀者是與學籍管理系統軟體開發有聯系的決策人,開發組成人員,扶助開發者,支持本項目的領導和公司人員,軟體驗證者。
1.2 背景及范圍
本項目的名稱:學籍管理系統開發軟體。
本項目的任務提出者及開發者是學籍管理系統軟體開發小組,用戶是教學辦公室。
本產品能具體化、合理化的管理學生的學籍檔案,用結構化的思維方式去了解計算機的基本工作原理和漢語程序設計語言。
1.3 定義 縮寫詞 略語
漢語程序設計語言:它是由北京元易達科技發展有限責任公司完全自主開發,完全自主版權的計算機語言,以漢語字詞為結構,最大限度的利用漢語本身的特點,是一種基於漢語基礎的通用的計算機的程序設計語言。
學籍管理系統: 學籍管理是幫助教學人員、行政人員對人事檔案的管理軟體。使用漢語編程語言,獨立完成其功能。
1.4 參考資料
<<漢語程序設計語言>> --------沈志斌 編著
電子工業出版社
<<軟體工程>> --------王利福 張世琨 朱冰 編著
北京大學出版社
<<資料庫原理及應用>> --------李紹原 主編
科學出版社
2 項目概述
該學籍管理系統軟體目前已有比較完善的管理與使用功能,並且是計算機行業中用漢語編程來完成的新軟體成員。研製學籍管理系統軟體是為了滿足教學辦公室對學生檔案管理的方便,以現代化的創新思維模式去工作。
2.1 目標
2.1.1 開發意圖
a. 為了學籍管理系統更完善;
b. 為了教學辦公室對學生檔案的管理更方便;
c. 為了減輕行政人員的工作負擔。
2.1.2 應用目標
通過本系統軟體,能幫助教研人員利用計算機,快速方便的對學生學籍管理進行管理、輸入、輸出、查找的所需操作,使散亂的人事檔案能夠具體化,直觀化、合理化。
2.1.3 作用及范圍
本軟體適用於教育界,它是比較完善的系統管理軟體,對學生的學籍可以隨時輸入、輸出、查找。
2.1.4 背景
現今學籍管理的繁索給具有強烈時間觀念的行政人員帶來了諸多不便,教學辦公室缺少一種完善的學籍管理軟體,為了對學生檔案的管理方便,因此開發了本軟體。
2.2 產品描述
本產品是一種依賴於漢語編程為基礎的系統軟體,它是以漢語編程系統詞為基礎,用漢語程序設計語言進行編程的產品。
2.3 產品功能
2.3.1 外部功能
學籍管理系統軟體具有輸入、輸出、查找功能。
2.3.2 內部功能
該軟體集命令、編程、編輯於一體,完成過濾、定位顯示。
2.3.3 功能表

2.3.4 功能描述圖

2.3.5 用戶特點
本軟體的使用對象是教學辦公室工作人員。會漢語、懂計算機的基本操作就可以利用該軟體進行所需操作。同時也會對漢語編程有認識。
2.4 一般約束
a. 本項目的開發經費不超過1萬元;
b. 輔導老師2人,開發人員6人;
c. 在管理方針,硬體的限制,並行操作安全和保密方面無約束。
2.5 假設和依據
假設開發經費不到位,管理不完善,設計時沒能用全得到考慮,本項目的開發都將受到很大的影響。
3 具體需求
3.1 功能需求(一)
3.1.1 規格說明
輸入每個人的具體信息

3.1.2 引言
為了把個人信息(包括:學號、姓名、性別、年級、班級、系別、專業、戶口所在地、家庭住址、聯系電話、戶口分類、考前學歷、現今學歷、出生日期、民族、政治面貌、身份證號、文考准考證號、自考准考證號、填卡日期、備注)輸入到資料庫。
3.1.3 輸入
個人信息。
3.1.4 加工
通過學籍管理系統輸入到資料庫中。
3.1.5 輸出
個人的全部信息。
3.2 功能需求(二)
3.2.1 規格說明
查詢個人的全部信息。

熱點內容
安卓開發選哪個版本的SDK 發布:2025-07-02 22:19:07 瀏覽:485
未上傳圖片 發布:2025-07-02 22:14:01 瀏覽:598
安卓qq直播怎麼分享聲音 發布:2025-07-02 22:13:21 瀏覽:249
安卓系統怎麼刷機清除內存 發布:2025-07-02 22:08:19 瀏覽:696
安卓手機6位數密碼有多少組 發布:2025-07-02 21:50:31 瀏覽:797
存儲卡視頻多了 發布:2025-07-02 21:49:40 瀏覽:850
ajax無刷新上傳圖片 發布:2025-07-02 21:32:56 瀏覽:117
編譯器不認pow函數 發布:2025-07-02 21:27:04 瀏覽:339
w10隱藏文件夾 發布:2025-07-02 21:27:03 瀏覽:534
電腦d盤拒絕訪問 發布:2025-07-02 21:27:02 瀏覽:779