软件工程课程设计实验报告-学生信息管理系统
{
stringinput(num,10,\number(press '0'return menu):\/*格式化输入学号并检验*/
flag=0;
if(strcmp(num,\输入为0,则退出添加操作,返回主界面*/ {return;} s=l->next;
while(s) /*查询该学号就是否已经存在,若存在则要求重新输入一个未被占用的学号*/
{
if(strcmp(s->data、num,num)==0) {
flag=1; break; }
s=s->next; }
if(flag==1) /*提示用户就是否重新输入*/ {
getchar();
printf(\ scanf(\ if(ch=='y'||ch=='Y') continue; else
return; } else
{break;} }
p=(Node *)malloc(sizeof(Node)); if(!p) {
printf(\如没有申请到,打印提示信息*/ return ; }
strcpy(p->data、num,num); /*将字符串num拷贝到p->data、num中*/ stringinput(p->data、name,15,\ p->data、cgrade=numberinput(\输入并检验分数,分数必须在0-100之间*/
p->data、mgrade=numberinput(\ p->data、egrade=numberinput(\
p->data、total=p->data、egrade + p->data、cgrade + p->data、mgrade; /*计算总分*/ p->data、ave=(float)(p->data、total/3); /*计算平均分*/ p->data、mingci=0;
p->next=NULL; /*表明这就是链表的尾部结点*/
软件工程课程设计实验报告-学生信息管理系统
r->next=p; /*将新建的结点加入链表尾部中*/ r=p;
saveflag=1; /*在main()有对该全局变量的判断,若为1,则进行存盘操作*/ }
return ; }
void Qur(Link l) /*按学号或姓名,查询学生记录*/ {
int select; /*1:按学号查,2:按姓名查,其她:返回主界面(菜单)*/ char searchinput[20]; /*保存用户输入的查询内容*/ Node *p;
if(!l->next) /*若链表为空*/ {
system(\
printf(\ getchar(); return; }
system(\
printf(\ =====>1 Search by number =====>2 Search by name\\n\ printf(\ please choice[1,2]:\ scanf(\
if(select==1) /*按学号查询*/ {
stringinput(searchinput,10,\
p=Locate(l,searchinput,\在l中查找学号为searchinput值的节点,并返回节点的指针*/
if(p) /*若p!=NULL*/ {
printheader(); printdata(p); printf(END);
printf(\ getchar(); } else
Nofind(); getchar(); }
else if(select==2) /*按姓名查询*/ {
stringinput(searchinput,15,\ p=Locate(l,searchinput,\ if(p) {
printheader();
软件工程课程设计实验报告-学生信息管理系统
printdata(p); printf(END);
printf(\ getchar(); } else
Nofind(); getchar(); } else
Wrong(); getchar(); }
void Del(Link l) /*删除学生记录:先找到保存该学生记录的节点,然后删除该节点*/ {
int sel;
Node *p,*r;
char findmess[20]; if(!l->next) {
system(\
printf(\ getchar(); return; }
system(\ Disp(l);
printf(\ =====>1 Delete by number =====>2 Delete by name\\n\ printf(\ please choice[1,2]:\ scanf(\ if(sel==1) {
stringinput(findmess,10,\ p=Locate(l,findmess,\ if(p) /*p!=NULL*/ {
r=l;
while(r->next!=p) r=r->next;
r->next=p->next;/*将p所指节点从链表中去除*/ free(p); /*释放内存空间*/
printf(\ getchar(); saveflag=1; } else
软件工程课程设计实验报告-学生信息管理系统
Nofind(); getchar(); }
else if(sel==2) {
stringinput(findmess,15,\
p=Locate(l,findmess,\ /*先按姓名查询到该记录所在的节点*/ if(p) {
r=l;
while(r->next!=p) r=r->next; r->next=p->next; free(p);
printf(\ getchar(); saveflag=1; } else
Nofind(); getchar(); } else
Wrong(); getchar(); }
void Modify(Link l) /*修改学生记录。先按输入的学号查询到该记录,然后提示用户修改学号之外的值,学号不能修改*/ {
Node *p;
char findmess[20]; if(!l->next) {
system(\
printf(\ getchar(); return; }
system(\
printf(\ Disp(l);
stringinput(findmess,10,\输入并检验该学号*/ p=Locate(l,findmess,\查询到该节点*/ if(p) /*若p!=NULL,表明已经找到该节点*/ {
printf(\、num);
软件工程课程设计实验报告-学生信息管理系统
printf(\、name);
stringinput(p->data、name,15,\ printf(\、cgrade);
p->data、cgrade=numberinput(\ printf(\、mgrade);
p->data、mgrade=numberinput(\ printf(\、egrade);
p->data、egrade=numberinput(\
p->data、total = p->data、egrade + p->data、cgrade + p->data、mgrade; p->data、ave=(float)(p->data、total/3); p->data、mingci=0;
printf(\ Disp(l); saveflag=1; } else
Nofind(); getchar(); }
void Insert(Link l) /*插入记录,按学号查询到要插入的节点的位置,然后在该学号之后插入一个新节点*/ {
Link p,v,newinfo; /*p指向插入位置,newinfo指新插入记录*/
char ch,num[10],s[10]; /*s[]保存插入点位置之前的学号,num[]保存输入的新记录的学号*/
int flag=0; v=l->next; system(\ Disp(l); while(1) {
stringinput(s,10,\ after the Number:\ flag=0; v=l->next;
while(v) /*查询该学号就是否存在,flag=1表示该学号存在*/ {
if(strcmp(v->data、num,s)==0) {flag=1;break;} v=v->next; }
if(flag==1)
break; /*若学号存在,则进行插入之前的新记录的输入操作*/ else {
getchar();
printf(\ scanf(\
相关推荐: