当前位置:首页 » 编程语言 » 学籍管理系统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 规格说明
查询个人的全部信息。

热点内容
服务器怎么设置电脑远程端口 发布:2025-07-03 16:28:46 浏览:72
电信无线路由器官方密码是什么 发布:2025-07-03 16:25:00 浏览:773
空间只能申请访问 发布:2025-07-03 16:23:27 浏览:735
华硕天选2air配置如何选择 发布:2025-07-03 16:10:09 浏览:571
asp搜索源码 发布:2025-07-03 15:49:55 浏览:235
医美大数据库 发布:2025-07-03 15:47:07 浏览:357
c语言将二进制转化为十进制 发布:2025-07-03 15:32:47 浏览:988
c语言帮助文档 发布:2025-07-03 15:22:43 浏览:320
双端口存储器在情况下会发生读写冲突 发布:2025-07-03 15:12:54 浏览:271
快站数据库 发布:2025-07-03 14:45:44 浏览:40