学生信息管理系统(C语言版)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学生信息管理系统(C语言版)相关的知识,希望对你有一定的参考价值。

用C/C++编写的学生信息管理系统,最好有课程设计的论文,如果没有的话只有做好的系统也可以,代码要求50%以上注释!
最好是把整套完整系统的下载地址告诉我。万分感谢!!如果可以用的话,一定再追加50分!

参考技术A #include "stdio.h"
#include "bios.h"
#include "conio.h"
#include "STRING.H"
#include "DOS.h"
#include "process.h"
#include "stdlib.h"
#include "math.h"
#define key_down 80
#define key_up 72
#define key_esc 1
#define key_alt_f 33
#define key_alt_x 45
#define key_enter 28
#define key_alt_c 46
#define key_alt_e 18
#define key_alt_s 31
#define key_alt_d 32
#define key_alt_r 19
#define key_alt_p 25
#define key_alt_o 24
struct student

char name[20];
long num;
char age[2];
char sex[4];
char xibie[16];
char jiguan[50];
struct
float chinese;
float english;
float math;
float total;
float ave;score;
struct student *next;
;
struct student agent[50];
struct student *head,*this1,*new1,*new2,*stud;
char numstr[40]=' ',' ';
int n=0;
int r=0;
int k=0;
long num;
int get_key();
void box(int startx,int starty,int high,int width);
void new1name(void),listall(void),wfile(void),rfile(void);
struct student *insert(struct student *head ,struct student *stud);
void cjlr(),cjtj(),cjpx(),cxxs(),list(),cxcj();
void del();
int mmm();
int nnn();
void ab();
mmm()
char aaa[6],bbb[6];
char d; //int r=0;
int i=0;
FILE *fp;
char a[6];
char b[6];
clrscr();
if((fp=fopen("file1","r"))==NULL)
window(1,1,80,25);
textbackground(1);
textcolor(0);
clrscr();
window(20,8,60,20);
textbackground(14);
textcolor(0);
clrscr();
gotoxy(8,2);
cprintf("NO UER!");
fclose(fp);
fp=fopen("file1","w");
gotoxy(2,4);
printf("Please input name:");
gets(a);fwrite(a,6,1,fp);
gotoxy(2,8);
printf("Please input key:");
gets(b); fwrite(b,6,1,fp);
fclose(fp);
ab();

else
window(1,1,80,25);
textbackground(1);
textcolor(0);
clrscr();
window(20,8,60,20);
textbackground(14);
textcolor(0);
clrscr();
gotoxy(8,2);
cprintf("Input Your Name And Password:");
gotoxy(2,8);
cprintf(" PWD:");
gotoxy(2,4);
cprintf("NAME:");
scanf("%s",aaa);

gotoxy(7,8);
while(d=getch())

if(d==13)
break;
cprintf("*");
bbb[i]=d;
i++;

fp=fopen("file1","r");
fread(a,6,1,fp);
fread(b,6,1,fp);
fclose(fp);
for(i=0;i<=5;i++)

if(aaa[i]!=a[i] || bbb[i]!=b[i])
exit(0);





ab();


nnn()
union REGS inregs ,outregs;
inregs.h.ah=0x2a;
intdos(&inregs,&outregs);
window(60,24,80,25);
textbackground(14);
textcolor(0);
clrscr();
cprintf("Data is 2004-%d-%d.\n",outregs.h.dh,outregs.h.dl);
return 0;


void ab()
int i;
clrscr();
window(1,1,80,25);
textbackground(1);
textcolor(0);
clrscr();
window(20,8,62,20);
textbackground(14);
textcolor(128);
clrscr();
for(i=0;i<=11;i++)
window(20,8+i,62,9+i);
textbackground(i);
textcolor(128+i*2);
clrscr();
cprintf(" Welcome To Students Management System!");

getch();

main()
int i,key,x,y,l;
char *menu[]="input(F)","print1(O)","del(D)","find(C)","print(P)","save(S)","exit(X)";
char *red[]="input","printf1","del","find","print","cpoy","exit";
char *f[]="xueji luru","chengji luru","chenji tongji","add student","chengji paixu";
char *c[]="student","chengji";
char buf[16*10*4],buf1[16*4];
struct student *stud;
if(k++==0)
mmm();
window(1,2,80,25);
textbackground(15);
textcolor(0);
clrscr();
textbackground(1);
clrscr();
window(1,1,80,1);
textbackground(15);
textcolor(0);
clrscr();
window(1,1,80,2);
gotoxy(1,1);
for(i=0,l=0;i<7;i++)
x=wherex();
y=wherey();
cprintf(" %s",menu[i]);
l=strlen(menu[i]);
gotoxy(x,y);
textcolor(RED);
cprintf(" %s",red[i]);
x=x+l+4;
gotoxy(x,y);
textcolor(BLACK);

nnn();
if(r++==0)
main();
window(1,2,80,25);
while(1)

key=0;
while(bioskey(1)==0);
key=get_key();
if(key==key_alt_x) exit(0) ;
if(key==key_alt_s) wfile();
if(key==key_alt_d) del();
if(key==key_alt_r) rfile();
if(key==key_alt_p) listall();
if(key==key_alt_o) list();
if(key==key_alt_f)
textbackground(0);
textcolor(15);
gotoxy(4,1);
cprintf("%s",menu[0]);
gettext(4,2,18,12,buf);
window(4,2,18,8);
textbackground(15);
textcolor(0);
clrscr();
window(4,2,19,9);
box(1,1,7,16);
for(i=2;i<7;i++)
gotoxy(2,i);
cprintf("%s",f[i-2]);
gettext(2,2,18,3,buf1);
textbackground(0);
textcolor(15);
gotoxy(2,2);
cprintf("%s",f[0]);
y=2;
key=get_key();
while(key!=key_alt_x && key!=key_enter && key!=key_esc)
if(key==key_up || key==key_down)
puttext(2,y,18,y+1,buf1);
if(key==key_up)
y=y==2?6:y-1;
if(key==key_down)
y=y==6?2:y+1;
gettext(2,y,18,y+1,buf1);
textbackground(0);
textcolor(15);
gotoxy(2,y);
cprintf("%s",f[y-2]);

key=get_key();

if(key==key_alt_x) exit(0);
if(key==key_enter)
switch(y-1)
case 1 : new1name();break;
case 2 : cjlr();break;
case 3 : cjtj();break;
case 4 : insert(head,stud);break;
case 5 : cjpx();break;
default : break;



else

window(1,1,80,1);
puttext(2,2,19,10,buf);
textbackground(15);
textcolor(0);
gotoxy(4,1);
cprintf("%s",menu[0]);


if(key==key_alt_c)
textbackground(0);
textcolor(15);
gotoxy(39,1);
cprintf("%s",menu[3]);
gettext(39,2,50,7,buf1);
window(39,2,49,5);
textbackground(15);
textcolor(0);
clrscr();
window(39,2,49,6);
box(39,1,4,11);
for(i=2;i<4;i++)

gotoxy(2,i);
cprintf("%s",c[i-2]);

gettext(39,2,49,3,buf1);
textbackground(0);
textcolor(15);
gotoxy(2,2);
cprintf("%s",c[0]);
y=2;
key=get_key();
while(key!=key_alt_x&&key!=key_enter&&key!=key_esc)
if(key==key_up||key==key_down)
puttext(39,y,49,y+1,buf1);
if(key==key_up)
y=y==2?3:y-1;
if(key==key_down)
y=y==3?2:y+1;
gettext(39,y,49,y+1,buf1);
textbackground(0);
textcolor(15);
gotoxy(2,y);
cprintf("%s",c[y-2]);

key=get_key();

if(key==key_alt_x) exit(0);
if(key==key_enter)
switch(y-1)
case 1: cxxs();break;
case 2: cxcj();break;

default:break;



else
window(1,1,80,2);
puttext(39,2,49,7,buf);
textbackground(15);
textcolor(0);
gotoxy(39,1);
cprintf("%s",menu[3]);




int get_key()
union REGS rg;
rg.h.ah=0;
int86(0x16,&rg,&rg);
return rg.h.ah;


void box(int startx,int starty,int high,int width)
int i;
gotoxy(startx,starty);
putch(0xda);
for(i=starty+1;i<width;i++)
putch(0xc4);
putch(0xbf);
for(i=starty+1;i<high;i++)
gotoxy(startx,i);
putch(0xb3);
gotoxy(width,i);putch(0xb3);
gotoxy(startx+1,width);
putch(0xc0);
for(i=startx+1;i<width;i++)
putch(0xc4);
putch(0xd9);
return;


/* void new1name(void)
int key;
window(1,2,80,25);
textbackground(BLUE);
clrscr();
cprintf("Are you sure input?");
key=get_key();
while(key!=key_alt_x && key!=key_esc)

window(1,2,80,25);
textbackground(BLUE);
clrscr();
new1=new2=(struct student *)malloc(sizeof(struct student));
if(head==NULL)
head=new1;
else
this1=head;
while(this1->next!=NULL)
this1=this1->next;
this1->next=new1;

this1=new1;
printf("\nRecord%d:",n+1);
printf("\nXing Ming:");
gets(this1->name);
printf("\nXue Hao:");
gets(numstr);
this1->num=atol(numstr);
printf("\nNian Ling:");
gets(this1->age);
printf("\nXing Bie:");
gets(this1->sex);
printf("\nXue Yuan:");
gets(this1->xibie);
printf("\nJi Guan:");
gets(this1->jiguan);
n++;
this1->next=NULL;
printf("Are you sure input :Y/N?");
if(getch()=='n')
main();
else
new1name();

*/

void new1name(void)
int key;
char a;
window(1,2,80,25);
textbackground(BLUE);
clrscr();
cprintf("Are you sure input?");
key=get_key();
while(key!=key_alt_x && key!=key_esc)

window(1,2,80,25);
textbackground(BLUE);
clrscr();
new1=new2=(struct student *)malloc(sizeof(struct student));
if(head==NULL)
head=new1;
else
this1=head;
while(this1->next!=NULL)
this1=this1->next;
this1->next=new1;

this1=new1;
printf("\nRecord%d:",n+1);
printf("\nXing Ming:");
gets(&a);
gets(this1->name);
printf("\nXue Hao:");
gets(numstr);
this1->num=atol(numstr);
printf("\nNian Ling:");
gets(this1->age);
printf("\nXing Bie:");
gets(this1->sex);
printf("\nXue Yuan:");
gets(this1->xibie);
printf("\nJi Guan:");
gets(this1->jiguan);
n++;
this1->next=NULL;
printf("Are you sure input :Y/N?");
if(getch()=='n')
main();
else
new1name();

main();

/*listallhanshuyonglaishuchuquanburenyuandejilu*/
void listall(void)

int i=0;
window(1,2,80,25);
textbackground(1);
textcolor(0);
clrscr();
if(head==NULL)
cprintf("\nempty list .\n");return;

this1=head;

do
cprintf("\nrecord number %d\n",++i);
cprintf(" name:%s",this1->name);
cprintf(" number:%ld",this1->num);
cprintf(" age:%s",this1->age);
cprintf(" sex:%s",this1->sex);
cprintf(" xibie:%s",this1->xibie);
cprintf(" jiguan:%s",this1->jiguan);
cprintf(" chinese:%6.2f",this1->score.chinese);
cprintf(" english:%6.2f",this1->score.english);
cprintf(" math:%6.2f",this1->score.math);
cprintf(" total:%6.2f",this1->score.total);
cprintf(" ave:%6.2f\n",this1->score.ave);
this1=this1->next;
//this1->next=NULL;
while(this1!=NULL);
getch();
main();

//*insert
struct student *insert(struct student *head,struct student *stud)

struct student *p0,*p1,*p2;
p1=head;
p0=stud;
if(head==NULL)
head=p0;p0->next=NULL;
else
while((p0->num>p1->num) && (p1->next!=NULL))
p2=p1;p1=p1->next;
if(p0->num<=p1->num)
if(head==p1)
head=p0;
p0->next=p1;

else
p2->next=p0;
p1->next=p1;


else
p1->next=p0;
p0->next=NULL;

n=n+1;
return(head);

void wfile(void)
FILE *fptr;
char a[10];
if(n<1)
printf("\nCan't write empty list.\n");return;
// char a[10];
cprintf("Please input filename:");
gets(a);
if((fptr=fopen(a,"wb"))==NULL)
printf("\nCant' open file agents.rec\n");
else
this1=head;
while(this1->next!=NULL)
fwrite(this1,sizeof(struct student ),1,fptr);
this1=this1->next;

// fwrite(this1,sizeof(struct student ),1,fptr);
fclose(fptr);
printf("\nFile of %d records have writen.\n",n);

getch();
main();

//*rfile
void rfile(void)
FILE *fptr;
char b[10];
cprintf("Please input filename:");
gets(b);
if((fptr=fopen(b,"rb"))==NULL)
printf("\nCan't open file %s\n",b);
else
n=0;
head=(struct student *)malloc(sizeof(struct student));
this1=head;
fread(this1,sizeof(struct student),1,fptr);
n++;
while(1)
if(feof(fptr))
fclose(fptr);
this1->next=NULL;printf("\nFile read.Total agents is now %d.\n",n);
getch(); main() ;
else
this1->next=(struct student *)malloc(sizeof(struct student));
this1=this1->next;
fread(this1,sizeof(struct student),1,fptr);
n++;
this1->next=NULL;

//fread(this1,sizeof(struct student),1,fptr);
//n++;
fclose(fptr);
printf("\nFile read.Total agents is now %d.\n",n);

getch();
main();

//*wfile
/*void wfile(void)
char a[10];
FILE *fptr;
if(n<1)
printf("\nCan't write empty list.\n");return;
cprintf("Please input filename:");
gets(a);
if((fptr=fopen(a,"wb"))==NULL)
cprintf("\nCant' open file ");puts(a);cprintf("\n");

else
fwrite(agent,sizeof(struct student ),n,fptr);
fclose(fptr);
printf("\nFile of %d records writen.\n",n);

getch();
main();

//*rfile
void rfile(void)
FILE *fptr;
char a[10];
cprintf("Please input filename:");
gets(a);
if((fptr=fopen(a,"wb"))==NULL)
cprintf("\nCan't open file ");puts(a);

else
while(fread(&agent[n],sizeof(agent[n]),1,fptr)==1)
n++;
fclose(fptr);
printf("\nFile read.Total agents is now %d.\n",n);

getch();
main();
*/
//*cjlr
void cjlr(void)
struct student *p1;
long num; char ddd[5];
char ccc[5];
window(1,2,80,25);
textbackground(BLUE);
clrscr();
p1=head;
printf("input the student' number:");
scanf("%ld",&num);
if(head==NULL)

printf("\nlist null!\n");

p1=head;
while(num!=p1->num && p1->next!=NULL)
p1=p1->next;
if(p1->num==num)
printf("chinese:");
scanf("%f",&p1->score.chinese);
// gets(ccc);printf("\n");
// p1->score.chinese=atof(ccc);
printf("english:");
scanf("%f",&p1->score.english);
// gets(numstr);
//p1->score.english=atof(numstr);
//getch();
printf("math:");
scanf("%s",ddd);
// gets(ddd);
p1->score.math=atof(ddd);
p1->score.total=p1->score.chinese+p1->score.english+p1->score.math;
p1->score.ave=(p1->score.chinese+p1->score.english+p1->score.math)/3.0;

getch();
main();

//*cjlr
/*void cjlr(void)
struct student *p1;
long num; char ddd[4];
window(1,2,80,25);
textbackground(BLUE);
clrscr();
p1=head;
printf("input the student' number:");
scanf("%ld",&num);
if(head==NULL)

printf("\nlist null!\n");

p1=head;
while(num!=p1->num && p1->next!=NULL)
p1=p1->next;
if(p1->num==num)
printf("chinese:");
scanf("%f",p1->score.chinese);
//gets(numstr);
//p1->score.chinese=atof(numstr);
//getch();
printf("english:");
scanf("%f",p1->score.english);
//gets(numstr);
//p1->score.english=atof(numstr);
// getch();
printf("math:");
//scanf("%f",p1->score.math);
gets(ddd);
p1->score.math=atof(ddd);
p1->score.ave=(p1->score.chinese+p1->score.english+p1->score.math)/3.0;
getch();

getch();
main();
*/
//*del
void del()
struct student *p1,*p2;
long num;
window(1,2,80,25);
textbackground(BLUE);
clrscr();
printf("input the del student' number:");
scanf("%ld",&num);
if(head==NULL)

printf("\nlist null!\n"); exit(1);

p1=head;
while(num!=p1->num && p1->next!=NULL)
p2=p1;p1=p1->next;

if(num==p1->num)
if(p1==head) head=p1->next;
else
p2->next=p1->next;
printf("the %ld message have del\n",num);
n=n-1;

else
printf("No find %ld!\n",num);
getch();
main();

//
void cjtj(void)
struct student *p;
for(p=head;p!=NULL;p=p->next)
p->score.total=p->score.chinese+p->score.english+p->score.math;
p->score.ave=p->score.total/3.0;


//
void cjpx(void)

struct student *p,*p1;
int i,j,t;
float temp;
for(i=0;i<n;i++)


p=head;
p1=p->next;
if(p->score.total<p1->score.total)
temp=p->score.total;
p->score.total=p1->score.total;
p1->score.total=temp;



//
void cxxs(void)
struct student *p;
char name1[20];
window(1,2,80,25);
textbackground(BLUE);
clrscr();
printf("shu ru yao cha xun de xue sheng de xing ming:");
gets(name1);
for(p=head;p!=NULL;p=p->next)
if(strcmp(p->name,name1)==0)

printf("xingming:%s\n",p->name);
printf("xuehao:%ld\n",p->num);
printf("nianling:%s\n",p->age);
printf("xingbie:%s\n",p->sex);
printf("xibie:%s\n",p->xibie);
printf("jiguan:%s\n",p->jiguan);

getch();
main();

/*chaxunchengji*/
void cxcj(void)
struct student *p;
char name2[20]; int i;
window(1,2,80,25);
textbackground(BLUE);
clrscr();
printf("shu ru yao cha xu de xue sheng de xingming:");
gets(name2);
for(p=head;p!=NULL;p=p->next)
if(strcmp(p->name,name2)==0)
printf("xingming:%s\n",p->name);
printf("chinese:%6.2f\n",p->score.chinese);
printf("english:%6.2f\n",p->score.english);
printf("math:%6.2f\n",p->score.math);
printf("total:%6.2f\n",p->score.total);
printf("ave:%6.2f\n",p->score.ave);

getch();
main();


/*dayingmugexueshen*/
void list(void)
char name3[20];
int i=0;
window(1,2,80,25);
textbackground(BLUE);
clrscr();
printf("shu ru yao da ying de xue sheng xingming:");
gets(name3);
if(head==NULL)
printf("\nempty list.\n");
return;

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

if(strcmp(this1->name,name3)==0)
printf("\nnrecord number %d\n",++i);
printf("xingmming:%s\n",this1->name);
printf("xuehao:%ld\n",this1->num);
printf("nianling:%d\n",this1->age);
printf("xingbie:%s\n",this1->sex);
printf("xueyuan:%s\n",this1->xibie);
printf("jiguan:%s\n",this1->jiguan);
printf("chinese:%6.2f\n",this1->score.chinese);
printf("english:%6.2f\n",this1->score.english);
printf("math:%6.2f\n",this1->score.math);
printf("total:%6.2f\n",this1->score.total);
printf("ave:%6.2f\n",this1->score.ave);


getch();
main();
本回答被提问者采纳
参考技术B #include <iostream.h> // cin 及 cout
#include <stdlib.h>
#include <malloc.h> // 用到申请内存函数 malloc() 和释放内存函数 free()
#include <string.h> // 字符串处理
#include <stdio.h> // 文件操作(读文件)
struct address /*家庭地址*/

char city[10]; /*城市*/
char town[10]; /*县城*/
char village[10]; /*乡镇*/
;

struct telephone /*联系方式*/

char SJ[50]; /*手机*/
char JD[30]; /*家庭电话*/
char XD[30]; /*学校电话*/
;

struct person /*个人信息*/

char name[20]; /*名字*/
char sex[10] ; /*性别*/
char MZ[16]; /*民族*/
char GJ[17]; /*国籍*/
char XL[19]; /*学历*/
;

struct score //成绩

char num[20]; //学号
char english[20];
char chinese[20];
char math[20];
char physics[20];
;

typedef struct linknode //定义节点的类型

char address[100]; //地址
char birthday[100]; //出生日期
struct score sc; //成绩
struct person pe; //个人信息
struct telephone te; //联系方式
bool flag;
struct linknode* next;
nodetype;

class List

nodetype* head;

public:
List();
List::~List();

linknode* creatlist(int); //创建链表
int listlen(); //返回链表长度
nodetype* findnode(int); //通过查找序号返回节点的指针
nodetype* find(char c[]); //通过查找姓名返回节点的指针
int find2(char c[]); //通过查找姓名返回节点的序号
nodetype* insnode(int); //插入节点
void delnode(int); //删除节点

nodetype* load(); //初始化:从外部读入数据

void readstr(FILE *f,char *string); //读行函数
bool check(char *a, char *b); //对比两个字符串是否相等
void help(); //显示帮助菜单

void editperson(nodetype*); //编辑个人说明
void editscore(nodetype*); //编辑学科成绩
void edittelephone(nodetype*); //编辑联系方式

void dispname(); //显示所有学生姓名
void dispnode(nodetype* p); //显示一个学生的所有信息
void dispperson(nodetype*); //显示一个学生的个人说明
void dispscore(nodetype*); //显示一个学生的学科成绩
void disptelephone(nodetype*); //显示一个学生的联系方式

;
bool List::check(char *a, char *b) //对比两个字符串是否相等

int i;
int j=strlen(b);
for(i=0; i<j; i++)

if(*a==*b)

a++;
b++;

else
return 0;

return 1;


nodetype* List::creatlist (int n) //创建链表

nodetype *h=NULL, *s, *t;
int i=1;

for(int j=0; j<n; j++)

if(i==1) //创建第一个节点

h=(nodetype*)malloc(sizeof(nodetype));
h->next=NULL;
t=h;

else //创建其余节点

s=(nodetype*)malloc(sizeof(nodetype));
s->next=NULL;
t->next=s;
t=s; //t 始终指向生成的单链表的最后一个节点


i++;


head=h;
return h;


void List::readstr(FILE *f,char *string)

do

//①: 先读入一行文本
fgets(string, 255, f); //fgets(): 从文件 f 读入长度为 255-1 的字符串
// 并存入到 string 中
while ((string[0] == '/') || (string[0] == '\n'));

return;


nodetype* List::load()

FILE *fp;
nodetype *p;
char c[255];
int num;
if((fp=fopen("student.txt", "r"))==NULL)

cout<<"打开文件失败"<<endl;
return 0;

readstr(fp, c);
sscanf(c, "The Length Of Link: %d", &num); //获取链表长度

p=creatlist(num); //创建链表

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

readstr(fp, c);
strcpy(p->address, c);
readstr(fp, c);
strcpy(p->birthday, c);

readstr(fp, c);
strcpy(p->sc.num, c);
readstr(fp, c);
strcpy(p->sc.chinese, c);
readstr(fp, c);
strcpy(p->sc.english, c);
readstr(fp, c);
strcpy(p->sc.math, c);
readstr(fp, c);
strcpy(p->sc.physics, c);

readstr(fp, c);
strcpy(p->pe.name, c);
readstr(fp, c);
strcpy(p->pe.sex, c);
readstr(fp, c);
strcpy(p->pe.GJ, c);
readstr(fp, c);
strcpy(p->pe.MZ, c);
readstr(fp, c);
strcpy(p->pe.XL, c);

readstr(fp, c);
strcpy(p->te.SJ, c);
readstr(fp, c);
strcpy(p->te.JD, c);
readstr(fp, c);
strcpy(p->te.XD, c);

p=p->next;


fclose(fp);

return p;


void List::dispnode(nodetype* p) //显示一个学生的所有信息

if(p!=NULL)

dispperson(p);
dispscore(p);
disptelephone(p);



void List::dispname() //显示所有学生姓名

nodetype* p=head;
cout<<"现有的学生: "<<endl;
if(p==NULL)
cout<<"没有任何学生数据"<<endl;
while(p!=NULL)

cout<<"姓名: "<<p->pe.name;

p=p->next;



int List::listlen() //返回链表长度

int i=0;
nodetype* p=head;
while(p!=NULL)

p=p->next;
i++;

return i;


nodetype* List::findnode (int i) //通过查找序号返回节点的指针

nodetype* p=head;
int j=1;
if( i>listlen()||i<=0 ) // i 上溢或下溢
return NULL;
else

while( p!=NULL && j<i ) //查找第 i 个节点并由 p 指向该节点

j++;
p=p->next;

return p;



nodetype* List::find(char c[]) //通过查找姓名返回节点的指针

nodetype* p=head;
int j=1;
strcat(c, "\n"); //从外部读入的字符串末尾都带了一个换行符
while( p!=NULL && !(check(c, p->pe.name))) //查找第 i 个节点并由 p 指向该节点

j++;
p=p->next;

return p;


int List::find2(char c[]) //通过查找姓名返回节点的序号

nodetype* p=head;
int j=1;
strcat(c, "\n"); //从外部读入的字符串末尾都带了一个换行符
while( p!=NULL && !(check(c, p->pe.name))) //查找第 i 个节点并由 p 指向该节点

j++;
p=p->next;

return j;


nodetype* List::insnode(int i)

nodetype *h=head, *p, *s;
s=(nodetype*)malloc(sizeof(nodetype)); //创建节点 s
s->next=NULL;
if(i==0) //i=0 时 s 作为该单链表的第一个节点

s->next = h;
h=s; //重新定义头节点

else

p=findnode(i); //查找第 i 个节点,并由 p 指向该节点
if(p!=NULL)

s->next=p->next;
p->next=s;

else cout<<"输入的 i 值不正确"<<endl;

head=h;

return s;


void List::delnode(int i) //删除第 i 个节点

nodetype *h=head, *p=head, *s;
int j=1;
if(i==1) //删除第一个节点

h=h->next;
free(p);

else

p=findnode(i-1); //查找第 i-1 个节点,并由 p 指向这个节点
if(p!=NULL && p->next!=NULL)

s=p->next; // s 指向要删除的节点
p->next=s->next;
free(s);

else
cout<<"输入的 i 值不正确"<<endl;

head=h;


void List::editperson(nodetype* p)

char c[100];
cout<<"请输入姓名: "<<endl;
cin>>c;
strcat(c, "\n");
strcpy(p->pe.name, c);

cout<<"请输入性别:"<<endl;
cin>>c;
strcat(c, "\n");
strcpy(p->pe.sex, c);

cout<<"请输入生日(格式举例:1982-1-1): "<<endl;
cin>>c;
strcat(c, "\n");
strcpy(p->birthday, c);

cout<<"请输入民族:"<<endl;
cin>>c;
strcat(c, "\n");
strcpy(p->pe.MZ, c);

cout<<"请输入国籍:"<<endl;
cin>>c;
strcat(c, "\n");
strcpy(p->pe.GJ, c);

cout<<"请输入学历:"<<endl;
cin>>c;
strcat(c, "\n");
strcpy(p->pe.XL, c);

cout<<"请输入家庭住址(例如:广西玉林市解放路11号)"<<endl;
cin>>c;
strcat(c, "\n");
strcpy(p->address, c);

cout<<"编辑个人信息完成!"<<endl;

dispperson(p);


void List::editscore(nodetype* p)

char a[50];
cout<<"请输入学号: "<<endl;
cin>>a;
strcat(a, "\n");
strcpy(p->sc.num, a);

cout<<"请输入语文成绩: "<<endl;
cin>>a;
strcat(a, "\n");
strcpy(p->sc.chinese, a);

cout<<"请输入英语成绩: "<<endl;
cin>>a;
strcat(a, "\n");
strcpy(p->sc.english, a);

cout<<"请输入数学成绩: "<<endl;
cin>>a;
strcat(a, "\n");
strcpy(p->sc.math, a);

cout<<"请输入物理成绩: "<<endl;
cin>>a;
strcat(a, "\n");
strcpy(p->sc.physics, a);

cout<<"编辑学科成绩完成!"<<endl;

dispscore(p);


void List::edittelephone(nodetype* p)

char c[50];
cout<<"请输入手机号码: "<<endl;
cin>>c;
strcat(c, "\n");
strcpy(p->te.SJ, c);

cout<<"请输入家庭电话号码: "<<endl;
cin>>c;
strcat(c, "\n");
strcpy(p->te.JD, c);

cout<<"请输入学校电话号码: "<<endl;
cin>>c;
strcat(c, "\n");
strcpy(p->te.XD, c);

cout<<"编辑联系方式完成!"<<endl;

disptelephone(p);


void List::dispperson(nodetype* p)

cout<<"姓名: "<<p->pe.name;
cout<<"性别: "<<p->pe.sex;
cout<<"民族: "<<p->pe.MZ;
cout<<"国籍: "<<p->pe.GJ;
cout<<"学历: "<<p->pe.XL;
cout<<"出生日期: "<<p->birthday;
cout<<"家庭住址: "<<p->address;


void List::dispscore(nodetype* p)

cout<<"学号: "<<p->sc.num;
cout<<"语文成绩: "<<p->sc.chinese;
cout<<"英语成绩: "<<p->sc.english;
cout<<"数学成绩: "<<p->sc.math;
cout<<"物理成绩: "<<p->sc.physics;


void List::disptelephone(nodetype* p)

cout<<"手机号码是: "<<p->te.SJ;
cout<<"家庭电话是: "<<p->te.JD;
cout<<"学校电话是: "<<p->te.XD;


void List::help()

cout<<endl<<endl;
cout<<"*********************************************************"<<endl;
cout<<"1: 编辑个人信息"<<endl;
cout<<"2: 编辑学科成绩"<<endl;
cout<<"3: 编辑联系方式"<<endl;
cout<<"4: 显示个人信息"<<endl;
cout<<"5: 显示学科成绩"<<endl;
cout<<"6: 显示联系方式"<<endl;
cout<<"7: 显示该学生所有信息"<<endl;
cout<<"8: 帮助菜单"<<endl;
cout<<"9: 返回上一级菜单"<<endl;
cout<<"*********************************************************"<<endl;


List::~List()

nodetype *pa=head, *pb;
if(pa!=NULL)

pb=pa->next;
if(pb==NULL)
free(pa);
else

while(pb!=NULL)

free(pa);
pa=pb;
pb=pb->next;

free(pa);



class Operater

List L1;
public:
void Loop(); //主循环
void display(); //显示菜单
;
List::List()

head = NULL;

void Operater::display()

cout<<endl<<endl;
cout<<"**************************** 学生管理系统 **************************"<<endl;
cout<<"1: 添加一个学生信息"<<endl;
cout<<"2: 删除一个学生信息"<<endl;
cout<<"3: 显示所有学生的姓名"<<endl;
cout<<"4: 根据姓名显示单个学生所有信息"<<endl;
cout<<"5: 根据姓名对单个学生进行编辑"<<endl;
cout<<"6: 帮助菜单"<<endl;
cout<<"7: 保存数据"<<endl;
cout<<"0: 退出系统"<<endl;
cout<<"********************************************************************"<<endl;


void Operater::Loop()

List L1; //List 对象
char ch[20];
nodetype *p, *head;
int i; //存放节点序号

p=L1.load(); //初始化:从外部读入数据创建链表

head=p;
display();

while(1)

cout<<endl<<endl;
cout<<"请输入选择(帮助选项--> 6 ): "<<endl;
cin>>ch;

////system("cls");
if(L1.check(ch, "1"))

p=L1.insnode(0);
head=p;

//system("cls");
cout<<endl;
cout<<"************** 添加一个学生信息 ******************"<<endl;
cout<<"下面输入个人信息: "<<endl;
L1.editperson(p);
cout<<"下面输入学科成绩: "<<endl;
L1.editscore(p);
cout<<"下面输入联系方式: "<<endl;
L1.edittelephone(p);


if(L1.check(ch, "2"))

//system("cls");
cout<<endl;
cout<<"************** 删除一个学生信息 ******************"<<endl;
L1.dispname();
cout<<"请输入学生姓名: "<<endl;
cin>>ch;
i=L1.find2(ch);
L1.delnode(i);


if(L1.check(ch, "3"))

//system("cls");
cout<<endl;
cout<<"************** 显示所有学生姓名 ******************"<<endl;
L1.dispname();


if(L1.check(ch, "4"))

//system("cls");
cout<<endl;
cout<<"************** 根据姓名显示单个学生所有信息 ******************"<<endl;
L1.dispname();
cout<<"请输入学生姓名: "<<endl;
cin>>ch;
p=L1.find(ch);
L1.dispnode(p);


if(L1.check(ch, "6"))

display();


if(L1.check(ch, "7")) //保存数据

FILE *fp;
if((fp=fopen("student.txt", "w"))==NULL)

cout<<"打开文件失败"<<endl;
return;


int i;
char t[255];

//将 L1.listlen() 赋予字符串中的数字
sprintf(t, "The Length Of Link: %d\n", L1.listlen());

fputs(t, fp);
strcpy(t, "\n");
fputs(t, fp);

p=L1.findnode(1); //将链表头指针赋予 p

for(i=0; i<L1.listlen(); i++)

fputs(p->address, fp); //输出地址
fputs(p->birthday, fp); //输出生日

fputs(p->sc.num, fp); //输出学号
fputs(p->sc.chinese, fp); //输出语文成绩
fputs(p->sc.english, fp); //输出英语成绩
fputs(p->sc.math, fp); //输出数学成绩
fputs(p->sc.physics, fp); //输出物理成绩

fputs(p->pe.name, fp); //输出姓名
fputs(p->pe.sex, fp); //输出性别
fputs(p->pe.GJ, fp); //输出国籍
fputs(p->pe.MZ, fp); //输出民族
fputs(p->pe.XL, fp); //输出学历

fputs(p->te.SJ, fp); //输出手机
fputs(p->te.JD, fp); //输出家庭电话
fputs(p->te.XD, fp); //输出学校电话
fputs(t, fp);

p=p->next;

p=head;
fclose(fp);


if(L1.check(ch, "5"))

char c[20];
//system("cls");
cout<<endl;
cout<<"************** 根据姓名对单个学生进行编辑 ******************"<<endl;
L1.dispname();
cout<<"请输入学生姓名: "<<endl;
cin>>c;
p=L1.find(c);

//system("cls");
cout<<endl<<endl;
cout<<"*********************************************************"<<endl;
cout<<"1: 编辑个人信息"<<endl;
cout<<"2: 编辑学科成绩"<<endl;
cout<<"3: 编辑联系方式"<<endl;
cout<<"4: 显示个人信息"<<endl;
cout<<"5: 显示学科成绩"<<endl;
cout<<"6: 显示联系方式"<<endl;
cout<<"7: 显示该学生所有信息"<<endl;
cout<<"8: 帮助菜单"<<endl;
cout<<"9: 返回上一级菜单"<<endl;
cout<<"*********************************************************"<<endl;

while(1)

cout<<endl<<endl;
cout<<"请输入选择(帮助选项--> 8 ): "<<endl;
cin>>c;
//system("cls");

if(L1.check(c, "1"))

//system("cls");
cout<<endl;
cout<<"************** 编辑个人信息 ******************"<<endl;
L1.editperson(p);


else if(L1.check(c, "2"))

//system("cls");
cout<<endl;
cout<<"************** 编辑学科成绩 ******************"<<endl;
L1.editscore(p);


else if(L1.check(c, "3"))

//system("cls");
cout<<endl;
cout<<"************** 编辑联系方式 ******************"<<endl;
L1.edittelephone(p);


else if(L1.check(c, "4"))

//system("cls");
cout<<endl;
cout<<"************** 显示个人信息 ******************"<<endl;
L1.dispperson(p);


else if(L1.check(c, "5"))

//system("cls");
cout<<endl;
cout<<"************** 显示学科成绩 ******************"<<endl;
L1.dispscore(p);


else if(L1.check(c, "6"))

//system("cls");
cout<<endl;
cout<<"************** 显示联系方式 ******************"<<endl;
L1.disptelephone(p);


else if(L1.check(c, "7"))

//system("cls");
L1.dispnode(p);


else if(L1.check(c, "8"))

//system("cls");
L1.help();


else if(L1.check(c, "9"))

display();
break; //用 break 跳出本循环,不要用 return ,return 是退出程序




else if(L1.check(ch, "0"))
return;

return;

int main()

system("color 3A");
Operater chp;
chp.Loop();
return 0;

源码分享C语言学生信息管理系统演示和说明(文件版)!

学生管理系统可以用来管理班级学生,能够对学生信息(包括姓名、性别、年龄、成绩等)进行增加、删除、更改、查询等操作。

该软件将学生信息保存在文件中,直接对文件中的数据进行增删改查操作,除了能够培养您的编程思维,还能让你深入了解文件操作。

软件运行后,首先会显示主菜单,让用户选择要进行的操作,如下图所示:

输入数字1~5,或者0,就可以进行相应的操作。例如输入数字1,就可以添加学生信息,如下所示:

添加成功后,会给出提示信息。

输入数字4,会显示子菜单,可以用来查询学生信息,如下图所示:

输入数字3,根据数学成绩来查询,如下图所示:

软件还会对用户输入的信息进行校验,不符合规则的数据会给出提示。例如,输入不合法的用户数据:

源码、程序下载地址:链接:https://pan.baidu.com/s/1I5xihUozCK7SfhivCAc_0w

—————————————

不管你是转行也好,初学也罢,进阶也可,如果你想学编程,进阶程序员~

【值得关注】我的 编程学习交流俱乐部 !【点击进入】

C语言入门资料(网盘链接免费分享):

C语言推荐书籍(PDF免费分享):

以上是关于学生信息管理系统(C语言版)的主要内容,如果未能解决你的问题,请参考以下文章

源码分享C语言学生信息管理系统演示和说明(文件版)!

用数据结构(c语言版)编写的学生选课系统

学生信息管理系统(C语言)

C语言 学生管理系统

关于学生信息管理的C语言编程问题求救(一定要是C语言编程,谢谢)

用C语言程序书写学生信息管理系统