资源描述
学生学籍管理系统课程设计
———————————————————————————————— 作者:
———————————————————————————————— 日期:
13
西安科技大学
课 程 设 计 报 告
学
生
学
籍
管
理
系
统
学院:
专业:
班级:
学号:
姓名:
1,分析系统功能
(1) 用户进入主菜单后,就会在看到,菜单选项中添加有系统的各项功能,进入的
应的选项就可进行相应的操作.其主要功能有:
1、录入学生信息 2、删除学生信息
3、查询学生信息 4、学生信息排序
5、改学生信息 6、保存退出系统
(2) 用户选择所需操作的选项,进入相应的操作界面,在这里用户就可开始进行操作。
2, 结构框架图
录入学
生信息
主 菜 单
保存退
出系统
修改学
生信息
学生信
息排序
查询学
生信息
删除学
生信息
3,程序代码如下
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#define PF printf
#define SF scanf
static int n,i;
struct address_book
{
char name[20];
int num;
char sex;
char clas[40];
char grade[4];
long telephone;
char addr[40];
}stud[200];
void add()
{
char j;
front1:
system("cls"); /*清屏*/
PF("\n");
PF("\n请输入要添加的姓名:");
SF("%s",stud[n].name);
PF("\n请输入要添加的学号(8位):");
SF("%d",&stud[n].num);
PF("\n请输入要添加的性别(F/M):");
SF("\n%c",&stud[n].sex);
PF("\n请输入要添加的班级:");
SF("%s",&stud[n].clas);
PF("\n请输入要添加的总成绩:");
SF("%s",&stud[n].grade);
PF("\n请输入要添加的电话号码:");
SF("%ld",&stud[n].telephone);
PF("\n请输入要添加的地址:");
SF("%s",stud[n].addr);
getchar();
n++;
PF("是否继续(Y/N)?:");
j=getchar(); getchar();
if(j=='y'||j=='Y') goto front1; /*再输入记录*/
}
void del()
{int k=0,m,i;char j;
front2:
system("cls"); /*清屏*/
PF("\n请输入要删除的学号:");
scanf("%d",&m);
getchar();
for(i=0;i<n;i++)
if(m==stud[i].num){ k=1;break;} /*查找记录*/
if(k==1) /*删除记录*/
{ for(k=i;k<n-1;k++)
{ stud[k]=stud[k+1];
}
n--;PF("已删除\n\n");
}
else
{
PF("找不到要删除的记录!\n");
PF("按回车键返回:");
getchar();
}
PF("是否继续(Y/N)?:");
j=getchar(); getchar();
if(j=='y'||j=='Y') goto front2;
}
void find()
{int i,k,s=0; char j;
front3:
s=0;
system("cls"); /*清屏*/
PF("\n请输入要查询的学号: ");
SF("%d",&k);
for(i=0;i<n;i++)
if(k==stud[i].num)
{
PF(" 姓名 学号 性别 班级 总成绩 电话 地址 \n");
PF(" %-10s%-8d %c %-10s%4s %-8ld %-6s\n",stud[i].name,
stud[i].num,stud[i].sex,stud[i].clas,stud[i].grade,stud[i].telephone,
stud[i].addr);
s=1;
}
if(s==0)
PF("查无此人!\n");
getchar();
PF("是否继续查询(Y/N)?:");
j=getchar();getchar();
if(j=='y'||j=='Y') goto front3;
getchar();
}
void arrange()
{int k,i;
struct address_book t;
system("cls"); /*清屏*/
PF(" 姓名 学号 性别 班级 总成绩 电话 地址 \n");
for(k=0;k<n-1;k++)
for(i=0;i<n-k-1;i++)
if(stud[i].num>stud[i+1].num)
{t=stud[i];
stud[i]=stud[i+1];
stud[i+1]=t;}
else continue;
for(i=0;i<=n-1;i++)
if(stud[k].num!=0)
PF(" %-10s%-8d %c %-10s%4s %-8ld %-6s\n",stud[i].name,
stud[i].num,stud[i].sex,stud[i].clas,stud[i].grade,stud[i].telephone,
stud[i].addr);
PF("按回车键返回!");getchar();
getchar();
}
void change()
{int k=0,m;char j;
front5:
system("cls"); /*清屏*/
PF("\n请输入要修改记录的学号:");
SF("%s",m);
getchar();
for(i=0;i<n;i++)
if(m==stud[i].num) { k=1;break; } /*查找*/
if(k==1) /*修改*/
{ PF("\n");
PF("\n请输入修改后的姓名:");
SF("%s",stud[i].name);
PF("\n请输入修改后的学号:");
SF("%d",&stud[i].num);
PF("\n请输入修改后的性别(F/M):");
SF("\n%c",&stud[i].sex);
PF("\n请输入修改后的班级:");
SF("%s",&stud[i].clas);
PF("\n请输入修改后的总成绩:");
SF("%s",&stud[i].grade);
PF("\n请输入修改后的电话号码:");
SF("%ld",&stud[i].telephone);
PF("\n请输入修改后的地址:");
SF("%s",stud[i].addr);
PF("修改成功\n");
getchar();
}
if(k==0)
{
PF("找不到要修改的记录!\n");
PF("按回车键返回:");
getchar();
}
getchar();
PF("是否继续(Y/N)?:");
j=getchar(); getchar();
if(j=='y'||j=='Y') goto front5;
}
void main()
{
char j;
PF("\n\n\n\n\n\n\t\t\t 欢迎使用学生学籍管理系统");
PF("\n\n\n\t\t\t\t 制作人:李婉");
PF("\n\n\n\t\t\t\t 2014年1月3号");
PF("\n\n\n\n\n\t按回车键进入主菜单:");
getchar();
loop:
system("cls");
PF("\n");
PF("\t\t\t\t ************\n");
PF("\t\t\t\t * 主菜单 *\n");
PF("\t\t\t\t ************\n");
PF("\t\t 1:录入学生信息 2:删除学生信息\n\n");
PF("\t\t 3:查询学生信息 4:学生信息排序\n\n");
PF("\t\t 5:修改学生信息 6:保存退出系统\n\n");
PF("\t 请选择[1/2/3/4/5/6]: ");
j=getchar();
if(j=='\n') goto loop; /*返回主菜单*/
switch(j)
{
case '1': add(); goto loop; /*返回主菜单*/
case '2': del(); goto loop;
case '3': find(); goto loop;
case '4': arrange(); goto loop;
case '5': change(); goto loop;
case '6': { FILE *fp;
fp=fopen("C:\\Users\\小龙\\Desktop\\1.txt","w");
for(i=0;i<n;i++)
{fwrite(&stud[i],sizeof(struct address_book),1,fp);}
fclose(fp);exit(0);
}
default: goto loop;
}
}
4.界面
按回车键进入主菜单:
按键1进入录入学生信息:
若想继续添加,输入Y,否则输入N进入主菜单,按键2进入删除学生信息:
若想继续删除,输入Y,否则输入N进入主菜单,按键3进入查询学生信息:
若想继续查询,输入Y,否则输入N进入主菜单,按键4进入学生信息排序:
输入N进入主菜单,按键5进入修改学生信息:
输入N进入主菜单,按键6进入保存退出系统。
5.学习心得:
在学习C语言时,最初使用的是Microsoft visual 6++计算机编程软件,但我们是使用C++Sourse File 编一个.c程序。而老师则要求我们使用工程的MFC AppWizad exe 编程。这是c++里的知识。尽管当时听老师讲c++与C语言有许多共同之处,但我们还是无从下手。后来老师把程序发该我们,让我们用.C的编程就好多了。
在编程的过程中,经常会在语句结束时少“;”或者把中文输入的引号输入文件,很难发现错误所在。
在编程题时也出现了一些编译中的问题。例如,在开始未加头文件#include<string.h>导致有许多未定义的errors;在输入字符串时用到“%S”,使功能无法输出。
由于原来题目要求较少,题目较简单,在编译时,我先按照题目要求将它编写好,之后又给它添加了很多功能。在帮同学修改程序的过程中,也遇到过一个问题。在头文件后定义了子函数,可是之后忘了编写子函数,在纠错时,有的是不会发现错误的,但是连接过程中就会报告出错。我觉得在以后的编程过程中,最好用什么函数写什么函数,后者在写完一个子函数后再在头文件底下声明。
展开阅读全文