第一篇:学生管理系统论文(C语言)
[1]
目 录
摘要..............................................................................................................................................3 第1章
绪论...................................................................................................................................4 第2章
系统分析...........................................................................................................................5
2.1设计目的.............................................................................................................................5 2.2需求分析.............................................................................................................................5 2.3、系统模块的实现..............................................................................................................5 第3章
数据库设计.......................................................................................................................6
3.1.设计原则........................................................................................................................6 3.2 数据库组成.....................................................................................................................7 3.1 面向对象数据库设计方法...............................................................................................7 第4章
系统设计...........................................................................................................................7
4.1 登录界面设计....................................................................................................................7 4.2菜单设计...........................................................................................................................11 第五章总结与展望.........................................................................................................................42 致
谢............................................................................................................................................42
[1]
摘要
随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。管理信息系统是一个不断发展的新型学科,任何一个单位要生存要发展,要高效率地把内部活动有机地组织起来,就必须建立与自身特点相适应的管理信息系统。
学生管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。经过分析,我采用微软公司的Microsoft Visual C++ 6.0.中的c语言平台开发,后台建立在文件的读取基础上,尤其是数据窗口能方便而简洁操纵数据库的智能化对象,首先在短时间内建立系统应用原型,然后,对初始原型系统进行需求迭代,不断修正和改进,直到形成高可行性系统。通过对计算机硬件和软件方面的了解,来论证本系统的解决方案。另外对学校等领域进行调研和分析,参照相关各种资料进行数据库编程实践。在指导老师的大力帮助下,基本上完成了设计任务书的要求。
用户模块和管理员模块。对于用户模块来说,只能浏览属于本用户(学生)的相关信息;而管理员模块,则可以添加、查询、修改、删除、查看所有学生的信息,并且可以对班级信息、课程信息、学生成绩和教师信息进行简单的管理。
关键字:MIS
数据库
C语言
模块
Microsoft Visual C++ 6.0.[1]
第1章
绪论
1.1设计思想
本系统主要用于学校学生信息管理,总体任务是实现学生信息关系的系统化、规范化和自动化,其主要任务是用计算机对学生各种信息进行日常管理,如查询、修改、增加、删除,针对这些要求设计了学生信息管理系统本系统主要用于学校学生信息管理,总体任务是实现学生信息关系的系统化、规范化和自动化,其主要任务是用计算机对学生各种信息进行日常管理,如查询、修改、增加、删除,针对这些要求设计了学生信息管理系统
1.2 数据库种类选择
C语言中可以调用数据库,但是想到数据库的复杂性,我们采用C语言用的文件的读取,与存储,用文件把数据存入记事本用,在调用记事本用的数据,记事本就相当于一个数据库,完成数据的存储与读取。
1.3 程序语言简介
1、C语言把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。
2、结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。C 语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。[15]
3、C语言功能齐全:具有各种各样的数据类型,并引入了指针概念,可使程序效率更高。而且计算功能、逻辑判断功能也比较强大,可以实现决策目的的游戏。[15]
4、C语言适用范围大:适合于多种操作系统,如Windows、DOS、UNIX等等;也适用于多种机型。C语言对编写需要硬件进行操作的场合,优于其它高级语言,有一些大型 应用软件也是用C语言编写的。[15]
5、C语言应用指针:可以直接进行靠近硬件的操作,但是C的指针操作不做保护,也给它带来了很多不安全的因素。C++在这方面做了改进,在保留了指针操作的同时又增强了安全性,受到了一些用户的支持,但是,由于这些改进增加语言的复杂度,也为另一部分所诟病。Java则吸取了C++的教训,取消了指针操作,也取消了C++改进中一些备受争议的地方,在安全性和适合性方面均取得良好的效果,但其本身解释在虚拟机中运行,运行效率低于C++/C。一般而言,C,C++,java被视为同一系的语言,它们长期占据着程序使用榜的前二名。
[1]
第2章 系统分析
2.1 设计目的
作为C课程结课设计,验证自身的学习效果,同时希望利用所学的基本知识和技能,进行简单程序设计。希望通过项目实践,熟悉巩固所学知识,以使自身达到熟练掌握C的基本知识和技能,基本掌握面向过程程序开发的基本思路和方法,了解C语言的文件读取和储存开发基本知识,为今后的进一步深入学习,奠定基础。
2.2 需求分析
学生管理系统的开发目的是为了实现学生课程、学籍的信息化管理。本系统需要完成的功能有:学籍基本信息、班级信息、课程基本信息、学生成绩信息以及系统管理员才具有的教师管理和用户管理。
1.学籍基本信息:可对学生基本信息进行添加、删除、修改、查找等功能,学籍基本信息有:学号、姓名、性别、出生日期、民族、电话、政治面貌、健康情况、身高、专业、班级、籍贯、毕业学校、家庭住址、特长、备注等属性。2.班级信息:可对班级信息进行添加、删除、修改、查找和报表输出等功能,班级信息:班级名,年级、专业、辅导员、备注属性。
3.课程基本信息:可对课程进行添加、删除、修改、查找和报表输出等功能,课程基本信息:科目编号、课程名称、修课性质、考核性质、开课学期、开课单位、专业名称等属性。
4.学生成绩信息:可对每一个学生成绩信息进行添加、删除、修改、查找和报表输出等功能,学生成绩信息有:学号、专业名称、科目编号、成绩属性。5.系统用户表:可对系统设置权限,分为老师和学生权限,分别完成不同的工作,成绩属性有:用户名、密码、权限属性。
2.3 系统模块的实现
在系统中包括以下功能:学籍基本信息、班级信息、课程基本信息、学生成绩息系统用户表。系统各模块关系如图所示:
[1]
登录主界面 12班级基本信息3课程基本信息4学生成绩信息学籍信息 教师界面 10学生界面 输入信息显示信息查找信息删除信息添加信息修改信息退 出查找信息退
3.1 设计原则
1.密码管理:学生修改学生查询密码;教师可以修改查询密码。
2.每个教师可以查看所有学生的成绩,包括每门课程的成绩、每门课程的平均成绩、每个分数段的成绩。
3.学生根据自己的学号查询本人的成绩。
4.教师可以登记、修改、查询自己所讲授课程的学生的成绩、该课程的总分、平均成绩、各分数段成绩人数统计、不及格学生的名单、成绩等等。
[1]
第3章
数据库设计
出
3.2 数据库组成
数据表3个:
学生表(5个字段: xh, xm, xb, csrq, bj),其中有各班学生的记录 课程表(4个字段:kch,kcm, js, xf),其中有课程的记录; 成绩表(3个字段:xh, kch, cj),其中有学生成绩的记录。登录表(2个字段,tt,ss)有用户名,密码
3.1 面向对象数据库设计方法
1)考虑对象的静态和动态属性
对象属性决定了数据库或包含具有相同类型对象的表的内容。
2)描述数据实体及其属性
包含所有静态属性的单个对象被称作数据实体。每个单独的数据实体必须唯一,这样可以与其他实体区分。包含在数据实体中的对象的性质被称作为属性。(attribute)3)用方法来说明对象的行为
关系数据库对象的行为决定了数据对象参与事务的特征。事务的发生对应着事件,通过使用响应事件的方法来实现事务。
4)在单个表中合并不同实体
可以在单个表中包含不同对象类型的说明,只要可以按照相同方式描述 属性和行为,以及区分不同对象类型即可。
第4章
系统设计
4.1 登录界面设计
(1)功能描述
登录界面是学生信息管理系统的入口,它可以使学生、教师和管理员以不同权限登录管理系统。其结构如图6所示:
[1]
图6 登录界面结构图
(2)源代码设计
登录界面是利用C技术的窗口创建工具生成登录窗体 void langing(){
int password1,i,t,aa=1,bb,y;char teacher[2][5];system(“cls”);
[1]
printf(“nn”);printf(“*******************************欢迎进入学生管理系统*****************************”);while(1){
printf(“请选择你的身份:老师------1,学生---------0n”);
scanf(“%d”,&i);
if(i==0||i==1)
break;
printf(“输入的代号不正确,请重新输入n”);}
printf(“这是第1次输入n”);for(aa=1;;aa++)
{
printf(“请输入你的账号:”);
scanf(“%s”,teacher[0]);
printf(“请输入你的密码:”);for(y=0;y<80;y++)
{ teacher[1][y] = getch();/*逐次赋值,但不回显*/ if(teacher[1][y]=='b')//important,e { printf(“b”);putch(' ');printf(“b”);y--;continue;
} if(teacher[1][y] == 'x0d')/*回车则终止循环*/
{ teacher[1][y]=' ';break;
} printf(“*”);/*以星号代替字符个数*/
}
printf(“n”);load1(debark,fname2);
if(i==1&&strcmp(teacher[0],debark[0].password)==0&&strcmp(teacher[1],debark[0].user)==0)
{
printf(“是否修改密码1------修改,任意键--------不修
[1]
改n”);
scanf(“%d”,&password1);
if(password1==1)
{
correct1();
}
printf(“请选择要完成的操作:1-学籍信息 2-班级基本信息 3-课程基本信息 4-学生成绩信息n”);scanf(“%d”,&differentiate);switch(differentiate)
{
case 1: menu();break;
case 2: menu2();break;
case 3: menu3();break;
case 4: menu4();break;
}
} else
{
for(t=1;t<6;t++)
if(i==0&&strcmp(teacher[0],debark[t].password)==0&&strcmp(teacher[1],debark[t].user)==0)
{
printf(“是否修改密码1------修改,任意键--------不修改n”);scanf(“%d”,&password1);
if(password1==1)
{
correct1();
} printf(“请选择要完成的操作:1-学籍信息 2-班级基本信息 3-课程基本信息 4-学生成绩信息n”);scanf(“%d”,&differentiate);studentboundary();switch(differentiate)
{case 1: search(student,Global);break;
case 2: search2(ClassInfo,Global2);break;
case 3: search3(d,Global3);break;case 4: search4(StuGrade,Global4);break;
}
}
}
[1]
bb=aa+1;
if(aa==3)
{
printf(“输入错误,将退出程序n”);
exit(0);
} printf(“输入有错,请重新输入,超过三次将退出,这是第%d次输入n”,bb);
} } void main(){ langing();} 4.2菜单设计
登陆成功之后就开始进入要查找的信息的窗口,分为学籍信息、班级基本信息、课程基本信息、学生成绩信息窗口,选过之后就开始进入菜单窗口,分为8个选项,分别完成为输入信息、显示、查找信息、删除、添加、修改、返回主菜单、退出。
截屏如下:
代码如下:
void menu()//菜单函数 {
[1]
void langing();char n;printf(“请按任意键进入系统。n”);getch();while(1){ treachboundary();scanf(“%c”,&n);if(n>='1'&&n<='7')
{ switch(n)
{
case '1': import(student,30);break;
case '2': display(student);break;
case '3':search(student,Global);break;
case '4':del(student,Global);break;
case '5':insert(student,20);break;
case '6':correct();break;
case '7':langing();break;
case '8':out();break;
}
} } }
void menu2(){ void langing();char n;printf(“请按任意键进入系统。n”);getch();while(1){ treachboundary();scanf(“%c”,&n);if(n>='1'&&n<='7'){ switch(n)
{
case '1': import2(ClassInfo,30);break;
case '2': display2(ClassInfo);break;
case '3':search2(ClassInfo,Global2);break;
case '4':del2(ClassInfo,Global2);break;
case '5':insert2(ClassInfo,20);break;
[1]
case '6':correct2();break;
case '7':langing();break;
case '8':out();break;
} } } }
void menu3(){ void langing();char n;printf(“请按任意键进入系统。n”);getch();while(1){ treachboundary();scanf(“%c”,&n);if(n>='1'&&n<='7'){ switch(n)
{
case '1': import3(d,30);break;
case '2': display3(d);break;
case '3':search3(d,Global3);break;
case '4':del3(d,Global3);break;
case '5':insert3(d,20);break;
case '6':correct3();break;case '7':langing();break;
case '8':out();break;
} } } }
void menu4(){ void langing();char n;printf(“请按任意键进入系统。n”);getch();while(1){ treachboundary();scanf(“%c”,&n);
[1]
if(n>='1'&&n<='7'){ switch(n)
{
case '1': import4(StuGrade,30);break;
case '2': display4(StuGrade);break;
case '3':search4(StuGrade,Global4);break;
case '4':del4(StuGrade,Global4);break;
case '5':insert4(StuGrade,20);break;
case '6':correct4();break;
case '7':langing();break;
case '8':out();break;
} } } } 下面的输入信息、显示、查找信息、删除、添加、修改、返回主菜单、退出的代码如下
void save(aa f[],char fn[100])//保存数据 { int i;FILE *fp;if((fp=fopen(fn,“wb”))==NULL){
printf(“文件打开失败!系统将结束,欢迎再次使用n”);
exit(0);} for(i=0;i void save1(bb f[],char fn[100])//保存数据 { int i;FILE *fp;if((fp=fopen(fn,“wb”))==NULL){ printf(“文件打开失败!系统将结束,欢迎再次使用n”); exit(0);} [1] for(i=0;i<6;i++)fwrite(&f[i],sizeof(bb),1,fp);fclose(fp);printf(“保存成功!n”);printf(“按任意键将继续n”);getch();} void save2(cc f[],char fn[100])//保存数据 { int i;FILE *fp;if((fp=fopen(fn,“wb”))==NULL){ printf(“文件打开失败!系统将结束,欢迎再次使用n”); exit(0);} for(i=0;i void save3(dd f[],char fn[100])//保存数据 { int i;FILE *fp;if((fp=fopen(fn,“wb”))==NULL){ printf(“文件打开失败!系统将结束,欢迎再次使用n”); exit(0);} for(i=0;i void save4(ee f[],char fn[100])//保存数据 { [1] int i;FILE *fp;if((fp=fopen(fn,“wb”))==NULL){ printf(“文件打开失败!系统将结束,欢迎再次使用n”); exit(0);} for(i=0;i /////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// //从文件中提取数据 void load(aa f[],char fn[100])//下载数据 { int i=0;FILE *fp; if((fp=fopen(fn,“rb”))==NULL){ printf(“文件打开失败!系统将结束,欢迎再次使用n”);exit(0);} for(i=0;i<6;i++)if(fread(&student[i],sizeof(aa),1,fp)!=1)//1.用于接收数据的地址(指针)(buffer)//2.单个元素的大小(size):单位是字节而不是位,例如读取一个int型数据就是4个字节 //3.读取size个字节的次数(count)// 4.提供数据的文件指针(stream) { fclose(fp);Global=i;return;} fclose(fp); [1] } void load1(bb f[],char fn[100])//下载数据 { int i=0;FILE *fp; if((fp=fopen(fn,“rb”))==NULL){ printf(“文件打开失败!系统将结束,欢迎再次使用n”);exit(0);} for(i=0;i<20;i++)if(fread(&debark[i],sizeof(bb),1,fp)!=1)//1.用于接收数据的地址(指针)(buffer)//2.单个元素的大小(size):单位是字节而不是位,例如读取一个int型数据就是4个字节 //3.读取size个字节的次数(count)// 4.提供数据的文件指针(stream) { fclose(fp);Global1=i;return;} fclose(fp);} void load2(cc f[],char fn[100])//下载数据 { int i=0;FILE *fp; if((fp=fopen(fn,“rb”))==NULL){ printf(“文件打开失败!系统将结束,欢迎再次使用n”);exit(0);} for(i=0;i<20;i++)if(fread(&ClassInfo[i],sizeof(cc),1,fp)!=1)//1.用于接收数据的地址(指针)(buffer)//2.单个元素的大小(size):单位是字节而不是位,例如读取一个int型数据就是4个字节 //3.读取size个字节的次数(count)// 4.提供数据的文件指针(stream) { fclose(fp);Global2=i;return; [1] } fclose(fp);} void load3(dd f[],char fn[100])//下载数据 { int i=0;FILE *fp; if((fp=fopen(fn,“rb”))==NULL){ printf(“文件打开失败!系统将结束,欢迎再次使用n”);exit(0);} for(i=0;i<20;i++)if(fread(&d[i],sizeof(dd),1,fp)!=1)//1.用于接收数据的地址(指针)(buffer)//2.单个元素的大小(size):单位是字节而不是位,例如读取一个int型数据就是4个字节 //3.读取size个字节的次数(count)// 4.提供数据的文件指针(stream) { fclose(fp);Global3=i;return;} fclose(fp);} void load4(ee f[],char fn[100])//下载数据 { int i=0;FILE *fp; if((fp=fopen(fn,“rb”))==NULL){ printf(“文件打开失败!系统将结束,欢迎再次使用n”);exit(0);} for(i=0;i<20;i++)if(fread(&StuGrade[i],sizeof(ee),1,fp)!=1)//1.用于接收数据的地址(指针)(buffer)//2.单个元素的大小(size):单位是字节而不是位,例如读取一个int型数据就是4个字节 //3.读取size个字节的次数(count)// 4.提供数据的文件指针(stream) { fclose(fp); [1] Global4=i;return;} fclose(fp);} //////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////// //输出到显示器上 void shuchu(aa student[]){ int i,c;for(i=0;i %sn”, student[i].ID,student[i].name,student[i].sex, student[i].birthdate ,student[i].notion, student[i].telephone,student[i].politics,student[i].healthy, student[i].height,student[i].profession, student[i].classes,student[i].native,student[i].school,student[i].home,student[i].speciality,student[i].remark); } } void shuchu2(cc ClassInfo[]){ int i,c;for(i=0;i %sn”, ClassInfo[i].class_name,ClassInfo[i].grade,ClassInfo[i].major, ClassInfo[i].instructor,ClassInfo[i].remark); } } [1] void shuchu3(dd a[]){ int i,c;for(i=0;i } } void shuchu4(ee a[]){ int i,c;for(i=0;i } } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //把数据输入到文件中 void import(aa f[],int n)//输出 { int number,i,c,t;printf(“要输入的信息的个数n”);scanf(“%d”,&number); printf(“(注:输入汉字用CTrl+空格)n”);for(i=0;i printf(“请输入第%d个学籍的信息n”,t);printf(“学号: ”); scanf(“%s”,&student[i].ID); [1] printf(“姓名: ”); scanf(“%s”,&student[i].name); printf(“性别: ”); scanf(“%s”,&student[i].sex); printf(“出生日期: ”); scanf(“%s”,&student[i].birthdate); printf(“民族: ”); scanf(“%s”,&student[i].notion); printf(“电话: ”); scanf(“%s”,&student[i].telephone); printf(“政治面貌: ”); scanf(“%s”,&student[i].politics); printf(“健康情况<不超过20字符>: ”); scanf(“%s”,&student[i].healthy); printf(“身高: ”); scanf(“%s”,&student[i].height); printf(“专业: ”); scanf(“%s”,&student[i].profession); printf(“班级: ”); scanf(“%s”,&student[i].classes); printf(“籍贯: ”); scanf(“%s”,&student[i].native); printf(“毕业学校: ”); scanf(“%s”,&student[i].school); printf(“家庭住址: ”); scanf(“%s”,&student[i].home); printf(“特长: ”); scanf(“%s”,&student[i].speciality); printf(“备注: ”); scanf(“%s”,&student[i].remark);} printf(“是否保存:是------Y,不保存任意键n”); Global=i;c=getchar();c=getchar();if(c=='Y') { printf(“您的信息将保存到名为friend的文件中n”);save(student,fname1); } } void import2(cc f[],int n)//输出 { int number,i,c,t; [1] printf(“要输入的信息的个数n”);scanf(“%d”,&number);printf(“(注:输入汉字用CTrl+空格)n”);for(i=0;i printf(“请输入第%d个班级的信息n”,t);printf(“班级名: ”); scanf(“%s”,&ClassInfo[i].class_name); printf(“年级: ”); scanf(“%s”,&ClassInfo[i].grade); printf(“专业: ”); scanf(“%s”,&ClassInfo[i].major); printf(“辅导员: ”); scanf(“%s”,&ClassInfo[i].instructor); printf(“备注: ”); scanf(“%s”,&ClassInfo[i].remark);} printf(“是否保存:是------Y,不保存任意键n”); Global2=i;c=getchar();c=getchar();if(c=='Y') { printf(“您的信息将保存到名为friend的文件中n”);save2(ClassInfo,fname3); } } void import3(dd f[],int n)//输出 { int number,i,c,t;printf(“要输入的信息的个数n”);scanf(“%d”,&number);printf(“(注:输入汉字用CTrl+空格)n”);for(i=0;i printf(“请输入第%d个课程的信息n”,t);printf(“科目编号: ”); scanf(“%s”,&d[i].a1); printf(“课程名称: ”); scanf(“%s”,&d[i].a2); printf(“修课性质: ”); scanf(“%s”,&d[i].a3); printf(“考核性质: ”); scanf(“%s”,&d[i].a4); [1] printf(“开课学期: ”); scanf(“%s”,&d[i].a5);printf(“开课单位: ”); scanf(“%s”,&d[i].a6); printf(“专业名称: ”); scanf(“%s”,&d[i].a7);} printf(“是否保存:是------Y,不保存任意键n”); Global3=i;c=getchar();c=getchar();if(c=='Y') { printf(“您的信息将保存到名为friend的文件中n”);save3(d,fname4); } } void import4(ee f[],int n)//输出 { int number,i,c,t;printf(“要输入的信息的个数n”);scanf(“%d”,&number);printf(“(注:输入汉字用CTrl+空格)n”);for(i=0;i printf(“请输入第%d个学生成绩的信息n”,t);printf(“学号: ”); scanf(“%s”,&StuGrade[i].ID_1); printf(“专业名称: ”); scanf(“%s”,&StuGrade[i].a7_1); printf(“科目编号: ”); scanf(“%s”,&StuGrade[i].a1_1); printf(“成绩: ”); scanf(“%s”,&StuGrade[i].result);} printf(“是否保存:是------Y,不保存任意键n”); Global4=i;c=getchar();c=getchar();if(c=='Y') { printf(“您的信息将保存到名为friend的文件中n”);save4(StuGrade,fname5); } [1] } ///////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////// //输入数据 void display(aa f[])//输出数据 { load(student,fname1);shuchu(student);getch();} void display2(cc f[])//输出数据 { load2(ClassInfo,fname3);shuchu2(ClassInfo);getch();} void display3(dd f[])//输出数据 { load3(d,fname4);shuchu3(d);getch();} void display4(dd f[])//输出数据 { load4(StuGrade,fname5);shuchu4(StuGrade);getch();} /////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////// //查找 void search(aa f[],int n)//查找 [1] { int c;load(student,fname1);while(1){ printf(“请输入1-----查找,2------退出:n”);scanf(“%d”,&c); switch(c) { case 1: { int i,m=0; char one[21]; printf(“请输入要查找的学号:n”);scanf(“%s”,one);for(i=0;i { if(strcmp(one,f[i].ID)==0) { printf(“ 学号:%sn 姓名: %sn 性别: %sn 出生日期: %sn 民族: %sn 电话: %sn 政治面貌: %sn 健康情况: %sn 身高: %sn 专业: %sn 班级: %sn 籍贯: %sn 毕业学校: %sn 家庭住址: %sn 特长: %sn 备注: %sn”, student[i].ID,student[i].name,student[i].sex, student[i].birthdate ,student[i].notion, student[i].telephone,student[i].politics,student[i].healthy, student[i].height,student[i].profession, student[i].classes,student[i].native,student[i].school,student[i].home,student[i].speciality,student[i].remark); } } } break;case 2: return; } } } void search2(cc f[],int n)//查找 { int c;load2(ClassInfo,fname3);while(1){ printf(“请输入1-----查找,2------退出:n”);scanf(“%d”,&c); [1] switch(c) { case 1: { int i,m=0; char one[21];printf(“请输入要查找的班级名:n”);scanf(“%s”,one);for(i=0;i { if(strcmp(one,f[i].class_name)==0) { printf(“ 班级名:%sn 年级: %sn 专业: %sn 辅导员: %sn 备注: %sn”, ClassInfo[i].class_name,ClassInfo[i].grade,ClassInfo[i].major, ClassInfo[i].instructor,ClassInfo[i].remark); } } } break; case 2: return; } } } void search3(dd f[],int n)//查找 { int c;load3(d,fname4);while(1){ printf(“请输入1-----查找,2------退出:n”);scanf(“%d”,&c); switch(c) { case 1: { int i,m=0; char one[21];printf(“请输入要查找的科目编号:n”);scanf(“%s”,one);for(i=0;i { if(strcmp(one,f[i].a1)==0) { printf(“ 科目编号:%sn 课程名称: %sn 修课性质: %sn 考核性质: %sn 开课学期: %sn 开课单位: %sn 专业名称: %sn”,[1] d[i].a1,d[i].a2,d[i].a3,d[i].a4,d[i].a5,d[i].a6,d[i].a7); } } } break; case 2: return; } } } void search4(ee f[],int n)//查找 { int c;load4(StuGrade,fname5);while(1){ printf(“请输入1-----查找,2------返回:n”); scanf(“%d”,&c); switch(c) { case 1: { int i,m=0; char one[21]; printf(“请输入要查找的学号:n”);scanf(“%s”,one);for(i=0;i { if(strcmp(one,f[i].ID_1)==0) { printf(“ 学号:%sn 专业名称: %sn 科目编号: %sn 成绩: %sn ”, f[i].ID_1,f[i].a7_1,f[i].a1_1,f[i].result); } } } break; case 2: return; } } } ////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////// //删除 [1] void del(aa a[],int n)//删除 { int i,j=0,m=0,x;char one[20];char c[2];load(a,fname1);x=Global;printf(“请输入要删除的人的学号:”);scanf(“%s”,one);for(i=0;i void del2(cc a[],int n)//删除 { int i,j=0,m=0,x;char one[20];char c[2];load2(a,fname3);x=Global2;printf(“请输入要删除的人的班级名:”); [1] scanf(“%s”,one);for(i=0;i void del3(dd a[],int n)//删除 { int i,j=0,m=0,x;char one[20];char c[2];load3(a,fname4);x=Global3;printf(“请输入要删除的人的课程信息:”);scanf(“%s”,one);for(i=0;i [1] { m=1;Global3--;} else if(!m&&i==(Global-1)){ printf(“记录中没有此人!n”);printf(“按任意键返回”);getch();return;} } printf(“是否保存删除后的文件?(是-Y,否-其他键)”);scanf(“%s”,c);if(strcmp(c,“Y”)==0)save3(a,fname4);printf(“按任意键返回”);getch();} void del4(ee a[],int n)//删除 { int i,j=0,m=0,x;char one[20];char c[2];load4(a,fname5);x=Global4;printf(“请输入要删除的人的学号:”);scanf(“%s”,one);for(i=0;i [1] } } printf(“是否保存删除后的文件?(是-Y,否-其他键)”);scanf(“%s”,c);if(strcmp(c,“Y”)==0)save4(a,fname5);printf(“按任意键返回”);getch();} /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //添加 void insert(aa a[],int n)//添加 { int i;char c;load(a,fname1);printf(“请输入要插入的数据(输入'E'结束):n”);for(i=Global;i<20;i++){ printf(“学号: ”); scanf(“%s”,&a[i].ID); if((strcmp(a[i].ID,“E”))==0)break; printf(“姓名: ”); scanf(“%s”,&a[i].name); printf(“性别: ”); scanf(“%s”,&a[i].sex); printf(“出生日期: ”); scanf(“%s”,&a[i].birthdate); printf(“民族: ”); scanf(“%s”,&a[i].notion); printf(“电话: ”); scanf(“%s”,&a[i].telephone); printf(“政治面貌: ”); scanf(“%s”,&a[i].politics); printf(“健康情况<不超过20字符>: ”); scanf(“%s”,&a[i].healthy); printf(“身高: ”); scanf(“%s”,&a[i].height); printf(“专业: ”); scanf(“%s”,&a[i].profession); printf(“班级: ”); [1] scanf(“%s”,&a[i].classes); printf(“籍贯: ”); scanf(“%s”,&a[i].native); printf(“毕业学校: ”); scanf(“%s”,&a[i].school); printf(“家庭住址: ”); scanf(“%s”,&a[i].home); printf(“特长: ”); scanf(“%s”,&a[i].speciality); printf(“备注: ”); scanf(“%s”,&a[i].remark); printf(“----------------n”);} printf(“是否保存?(是-Y,不是-其他键)”);scanf(“%c”,&c);scanf(“%c”,&c);Global=i;if(c=='Y')save(a,fname1);printf(“按任意键返回”);getch();} void insert2(cc a[],int n)//添加 { int i;char c;load2(a,fname3);printf(“请输入要插入的数据(输入'E'结束):n”);for(i=Global2;i<20;i++){ printf(“班级名: ”); scanf(“%s”,&a[i].class_name); if((strcmp(a[i].class_name,“E”))==0)break; printf(“年级: ”); scanf(“%s”,&a[i].grade); printf(“专业: ”); scanf(“%s”,&a[i].major); printf(“辅导员: ”); scanf(“%s”,&a[i].instructor); printf(“备注: ”); scanf(“%s”,&a[i].remark); printf(“------------------------------[1] -----------------n”);} printf(“是否保存?(是-Y,不是-其他键)”);scanf(“%c”,&c);scanf(“%c”,&c);Global2=i;if(c=='Y')save2(a,fname3);printf(“按任意键返回”);getch();} void insert3(dd a[],int n)//添加 { int i;char c;load3(a,fname4);printf(“请输入要插入的数据(输入'E'结束):n”);for(i=Global3;i<20;i++){ printf(“科目编号: ”); scanf(“%s”,&a[i].a1); if((strcmp(a[i].a1,“E”))==0)break; printf(“课程名称: ”); scanf(“%s”,&a[i].a2); printf(“修课性质: ”); scanf(“%s”,&a[i].a3); printf(“考核性质: ”); scanf(“%s”,&a[i].a4); printf(“开课学期: ”); scanf(“%s”,&a[i].a5); printf(“开课单位: ”); scanf(“%s”,&a[i].a6); printf(“专业名称: ”); scanf(“%s”,&a[i].a7); printf(“----------------n”);} printf(“是否保存?(是-Y,不是-其他键)”);scanf(“%c”,&c);scanf(“%c”,&c);Global3=i;if(c=='Y')save3(a,fname4);printf(“按任意键返回”);getch(); [1] } void insert4(ee a[],int n)//添加 { int i;char c;load4(a,fname5);printf(“请输入要插入的数据(输入'E'结束):n”);for(i=Global4;i<20;i++){ printf(“学号: ”); scanf(“%s”,&a[i].ID_1); if((strcmp(a[i].ID_1,“E”))==0)break; printf(“专业名称: ”); scanf(“%s”,&a[i].a7_1); printf(“科目编号: ”); scanf(“%s”,&a[i].a1_1); printf(“成绩: ”); scanf(“%s”,&a[i].result); printf(“----------------n”);} printf(“是否保存?(是-Y,不是-其他键)”);scanf(“%c”,&c);scanf(“%c”,&c);Global4=i;if(c=='Y')save4(a,fname5);printf(“按任意键返回”);getch();} /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //修改函数 void correct1()//修改函数 { char c;int i,m=0;bb change;load1(debark,fname2);for(i=0;i<6;i++) [1] { printf(“ 请输入修改后的内容 n”); printf(“账号: ”); scanf(“%s”, change.user); printf(“密码: ”); scanf(“%s”, change.password); m=1; debark[i]=change; printf(“是否保存修改?(是-Y,不是-其他键)”); scanf(“%c”,&c); scanf(“%c”,&c); if(c=='Y') { save1(debark,fname2); return; } else { printf(“密码不被保存!!n”); return; } } } void correct()//修改函数 { char one[20],c;int i,m=0;aa change;load(student,fname1);shuchu(student);printf(“请输入要修改的人的学号(不超过20字符):”);gets(one);scanf(“%s”,one);for(i=0;i { printf(“ 请输入修改后的内容 n”); printf(“学号: ”); scanf(“%s”,&change.ID); printf(“姓名: ”); scanf(“%s”,&change.name); printf(“性别: ”); scanf(“%s”,&change.sex); [1] printf(“出生日期: ”); scanf(“%s”,&change.birthdate); printf(“民族: ”); scanf(“%s”,&change.notion); printf(“电话: ”); scanf(“%s”,&change.telephone); printf(“政治面貌: ”); scanf(“%s”,&change.politics); printf(“健康情况<不超过20字符>: ”); scanf(“%s”,&change.healthy); printf(“身高: ”); scanf(“%s”,&change.height); printf(“专业: ”); scanf(“%s”,&change.profession); printf(“班级: ”); scanf(“%s”,&change.classes); printf(“籍贯: ”); scanf(“%s”,&change.native); printf(“毕业学校: ”); scanf(“%s”,&change.school); printf(“家庭住址: ”); scanf(“%s”,&change.home); printf(“特长: ”); scanf(“%s”,&change.speciality); printf(“备注: ”); scanf(“%s”,&change.remark); m=1; student[i]=change; } else if(!m&&i==(Global-1)) { printf(“记录中没有此人!n”);printf(“按任意键返回”);getch();return; } printf(“是否保存修改?(是-Y,不是-其他键)”); scanf(“%c ”,&c); scanf(“%c”,&c);if(c=='Y')save(student,fname1);printf(“按任意键返回”);getch();} [1] void correct2()//修改函数 { char one[20],c;int i,m=0;cc change;load2(ClassInfo,fname3);shuchu2(ClassInfo);printf(“请输入要修改的人的班级(不超过20字符):”);gets(one);scanf(“%s”,one);for(i=0;i scanf(“%s”,&change.class_name); printf(“年级: ”); scanf(“%s”,&change.grade); printf(“专业: ”); scanf(“%s”,&change.major); printf(“辅导员: ”); scanf(“%s”,&change.instructor); printf(“备注: ”); scanf(“%s”,&change.remark); m=1; ClassInfo[i]=change;} else if(!m&&i==(Global-1)){ printf(“记录中没有此人!n”);printf(“按任意键返回”);getch();return;} printf(“是否保存修改?(是-Y,不是-其他键)”);scanf(“%c ”,&c);scanf(“%c”,&c);if(c=='Y')save2(ClassInfo,fname3);printf(“按任意键返回”);getch();} void correct3()//修改函数 { [1] char one[20],c;int i,m=0;dd change;load3(d,fname4);shuchu3(d);printf(“请输入要修改的人的课程信息(不超过20字符):”);gets(one);scanf(“%s”,one);for(i=0;i void correct4()//修改函数 [1] { char one[20],c;int i,m=0;ee change;load4(StuGrade,fname5);shuchu4(StuGrade);printf(“请输入要修改的人的学号(不超过20字符):”);gets(one);scanf(“%s”,one);for(i=0;i ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// //退出 [1] void out()//退出 { char c;printf(“真的要退出吗?(是-Y,不是-其他键:)”);c=getchar();if((c=getchar())=='Y'){ printf(“感谢您的支持!请多提宝贵意见!再见!n”);exit(0);} else return;} 定义的字符串代码为 #include /////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////// //结构体 typedef struct { char ID[20];//学号 char name[20];//姓名 char sex[20];//性别 char birthdate[20];//出生日期 char notion[20];//民族 char telephone[20];//电话 char politics[20];//政治面貌 char healthy[20];//健康情况 char height[20];//身高 char profession[20];//专业 char classes[20];//班级 [1] char native[20];//籍贯 char school[20];//毕业学校 char home[20];//家庭住址 char speciality[20];//特长 char remark[20];//备注 } aa;aa student[30];//学生的信息个数 typedef struct { char user[20];//用户名 char password[20];//密码 } bb;bb debark[6]={{“001”,“001”},{“002”,“002”},{“003”,“003”},{“004”,“004”},{“005”,“005”},{“006”,“006”}};typedef struct { char class_name[20];//班级名 char grade[20];//年级 char major[20];//专业 char instructor[20];//辅导员 char remark[20];//备注 } cc;cc ClassInfo[30];typedef struct { char a1[20];//科目编号 char a2[20];//课程名称 char a3[20];//修课性质 char a4[20];//考核性质 char a5[20];//开课学期 char a6[20];//开课单位 char a7[20];//专业名称 } dd;dd d[30];typedef struct { char ID_1[20];//学号 char a7_1[20];//专业名称 char a1_1[20];//科目编号 char result[20];//成绩 } ee;ee StuGrade[30]; [1] 第五章 总结与展望 学生信息管理系统(课程设置和打印统计)的完成,它在审核这一功能中能够对不同情况的资料进行设置和打印,针对需要的信息进行设置和打印。在本系统的开发过程中,由于本人是初次开发软件,在知识、经验方面都存在着不足。另外,在整个开发的过程中,时间也比较仓促。因此,该系统必然会存在一些缺陷和不足。因为对学生管理的整个流程不够熟悉,在需求分析时未能做到完全满足用户的需求。虽然网络在学生管理系统中的应用不是很多,但是未来的发展方向,在本次开发过程由于硬件的限制,未能实现网络功能,因此在以后的系统更新过程中可能会造成一些不必要的数据损失。 这个系统的主要不足存在于3个方面:第一、在于性能测试方面系统做好以后需要很多方面的测试但是由于本设计时一个人独立完成的能力有限所有只进行了负荷测试和压力测试。第二、安全性能方面:学生管理系统应该有一个很好的安全保密性能,登陆页面应该有验证码的输入功能由于时间的关系本设计没有体现出来这个功能。第三、数据库方面的信息欠缺、数据库应该全部显示每个专业,每个年级、班级、以及个人的全方面的信息但是本设计没有完整的把所有功能全部实现。 尽管本管理系统存在着很多不足,但其功能全面、易于日后程序更新、数据库管理容易、界面友好、操作方便、效率高、安全性好等优点是本管理系统所必需的。相信本学生管理系统是一套学校在日常管理中必不可少的管理软件,通过开发这个系统,我掌握了的项本过程,了解了的基本知识巩固了我对C的学习,但在这次毕业设计中的最大收获并不是掌握这几门开发工具的应用,而是学会了设计系统的思维方法,以及与同学们之间相互帮助的精神。 致 谢 作为河南化工学院的学生,我倍感荣幸,也非常珍惜这次难得的学习机会。在学习过程中,我有幸得到了尊敬的邵华老师的精心指导和关怀。尤其在论文辅导过程中,邵老师对我要求严格,他以丰富的教育技术理论与实践经验给了我很多启发,在论文选题上和撰写中悉心指导,其严谨治学的作风给我很大的影响。在此,我表达对导师的深深感激之情!其次,感谢学校为我毕业论文的完成提供场所给予大力的支持。再次,感谢我的同学给予我的帮助、鼓励和支持。最后,我还要感谢我的家人在这些年来给予我的大力支持,他们是我精神和情感的寄托,是他们让我在无助中能够找到奋斗的动力,让我在迷茫中能够找到前进的方向,谢谢你们! [1] [1] Benjamin B.Bederson and Jon Meyer and Lance Good, Jazz: an extensible zoomable user interface graphics toolkit in Java, {UIST}, 2000, pp,171-180 [2] The Evolution of Microsoft SQL Server: 1989 to 2000 [3] Kalen Delaney(2001).“Inside SQL Server 2000”.Microsoft Press.[4]C语言程序设计 谭浩强 清华大学出版社 1999年 [5] 安全信息管理和安全管理信息系统[J].工业安全与防尘 谢贤平,李怀宇..1995,21 [6]数据结构 严蔚敏 吴伟民著 清华大学出版社 1990年 [1] 111111111学院 毕 业 论 文 题 目 学生成绩管理系统 姓 名 1 1 1 所在系别 计 算 机 系 专业班级 计算机应用技术计算机111班 学 号 1111111111 指导教师 1 1 1 日 期 2012 年 4 月 15 日 临汾职业技术学院 09届计算机应用技术专业毕业论文 目 录 摘 要 „„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„1 临汾职业技术学院 09届计算机应用技术专业毕业论文 学生成绩管理系统 计算机111班 1111 指导老师 111 摘 要:学生成绩管理系统是为了实现学校对学生成绩管理的系统化、规范化和自动化,从而提高学校管理效率而设计的。它完全取代了原来一直用人工管理的工作方式,避免了由于管理人员的工作疏忽以及管理质量问题所造成的各种错误,为及时、准确、高效的完成学生成绩管理提供了强有力的工具和管理手段。学生成绩管理系统是一个中小型数据库管理系统,它界面美观、操作简单、安全性高,基本满足了学生成绩管理的要求。 本系统是在以ACCESS2003作为后台数据库来开发的。学生成绩管理系统在运行阶段,效果好,数据准确性高,提高了工作效率,同时也实现了学生成绩管理计算机化。关键字: 成绩 管理系统 数据库 Abstract:The system of “The Managment of Student's Mark” has been designed mainly for acheiving such goal of letting the students' marks to be well-managed and modelized automaticly in order to higher the school's managing speed.it has already replaced the original artificial method completely thus the avoiding of wrongs that could be caused by carelessness and the lack of managing skill.due to the more accurate results within a shorter time, the system is obviously providing a stronger managing mean.“The Managment of Student's Mark” is a middle-sized system of data Management, which is both simple-controlling and safe.this technique is the nowadays best system towards the management of student's marks since it is now being mostly satisfied.The system's opening relies on ACCESS2003 as a backup of the data management.this technology not only shortened the managing time but also, it hightlights the high-quality by providing more accurate datas.on top of it, it has also put the computerized “The Managment of Student's Mark” into practice.Key word: Mark Administrative System The Database 临汾职业技术学院 09届计算机应用技术专业毕业论文 学校对系统的开发大力支持。因此经济上是可行的。 本系统可以马上开始实施,并尽可能做到提前完成。从人力资源优化角度来说,可以充分利用学校已有人力资源。从开发成本角度来说,将支出成本降到最底。所以在三个可选择的方案中推荐此方案为最佳方案。 临汾职业技术学院 09届计算机应用技术专业毕业论文 2.4 系统功能模块设计 该系统的目标是提高学生成绩管理的效率,通过本系统可以对学生个人信息、课程和任课教师信息、选课信息进行管理和维护。该系统分为教师权限和学生权限,主要功能包括: 1.用户管理 2.基于数据管理 3.学生对个人数据的查询及管理 具体模块功能如下图2-1,图2-2: 图2-1 临汾职业技术学院 09届计算机应用技术专业毕业论文 图2-2 临汾职业技术学院 09届计算机应用技术专业毕业论文 3:课程表中的课程号与学生成绩表中的课程号对应,课程表中的课程号依附于学生成绩表中的课程号。 4:课程号于老师是一对一的关系,课程名对成绩是一对一的关系。 学号于课程号同样是一对多的关系,课程号对成绩是一对多的关系,一个学号和一个课程号对于成绩是一一对应的关系。E-R图如下图3-1 图3-1 3.3 数据库逻辑结构设计 学生成绩信息系统中的关系模式如下: 学生基本信息(学号,姓名 ,性别),主键是学号。学生成绩表(学号,课程号,成绩),主键是学号+课程号。课程表(课程号,课程名,教师姓名)。主键是课程号。 临汾职业技术学院 09届计算机应用技术专业毕业论文 临汾职业技术学院 09届计算机应用技术专业毕业论文 图4-3 图4-4 4.2 成绩信息模块的设计 这一模块的主要功能是用于实现对学生各科成绩的录入,修改与查询。学生成绩录入,修改界面图4-5: 临汾职业技术学院 09届计算机应用技术专业毕业论文 图4-5 学生成绩查询界面图4-6: 临汾职业技术学院 09届计算机应用技术专业毕业论文 图4-6 4.3 添加信息模块的设计 这一模块的主要功能是对教师,学生信息的录入,修改与查询。图4-7,图4-8,图4-9: 图4-7 临汾职业技术学院 09届计算机应用技术专业毕业论文 图4-8 图4-9: 临汾职业技术学院 09届计算机应用技术专业毕业论文 4.4 查询统计模块的设计 这一模块的主要功能是对学生选课及教师授课信息的查询。图4-10,图4-11,图4-12: 图4-10: 临汾职业技术学院 09届计算机应用技术专业毕业论文 图4-11 图4-12 4.5 开发中的难点和解决技巧 1.一个全面的Access应用至少会涉及到以下三种基本Access 对象类型:(1)表用于存储你或其他人向数据库中添加的数据。 (2)窗体用于显示和输入数据,控制其他窗体的打开和关闭以及打印报表。 临汾职业技术学院 09届计算机应用技术专业毕业论文 (3)报表打印表中的细节信息、总结信息或者将两者都进行打印。2.Access模块:包含VBA子过程和函数(公共,任何窗体或报表均可访问)要想成为一个完善的关系型数据库管理系统(RDBMS),一个应用必须具备以下四个基本功能,其中每个功能都有其自己的表现形式(或者视图):(1)数据组织(表的创建和操作) (2)表链接和数据提取(查询,临时表等)(3)数据输入和编辑(窗体实现)(4)数据表示(报表) 3.数据库实用工具(一些需要在不打开数据库的情况下执行) (1)压缩和修复(最好压缩和修复为新数据库,防止数据库不小心损坏不能恢复)(2)添加切换面板窗体(没有将创建新) (3)创建.mde文件(编译过的VBA代码,源文件不可用,用户将不能再修改其中的设计对象)4.设计表需要注意的事项 (1)字段名称:不能重复,最长64字符,可中间包含(空格,“。”没“!”和“[]” (2)数据类型,说明,主键,字段大小,格式(不影响值本身,只是显示方式),Precision(Decimal类型特有,指定总共用多少数位表示一个数值,默认18位),Scale(Decimal特有,决定小数位数),小数位数,输入掩码,标题,默认值,有效性规则,有效性文本,必填字段,允许0长度,索引,新值(自动编号类型特有)5.字段类型需要注意的事项 (1)文本:默认,最大255个字符(指定长度后,如果输入数据超出,将自动截去多余)(2)备注:最大65535个字符(不能作为关键字段)(3)数字型:根据字段大小属性设置一个合适的类型 (4)自动编号:(长整型),产生方法取决于新值属性(最大20亿左右) (5)Yes/No:逻辑(布尔)字段(True:-1,False:0),可被索引,但不能作为关键字段(6)货币:currency,固定格式(小数4位) 6.设置“主键”:唯一性,可创建多字段的主键和相应的索引 临汾职业技术学院 09届计算机应用技术专业毕业论文 求,能够完成学生信息的存储和成绩的查询以及各类相关报表的打印。并提供部分系统测试功能,使用户方便进行数据备份和恢复、数据删除。对于数据的一致性的问题也通过程序进行了有效的解决。 但是由于毕业设计时间较短和本人水平所限,所以该系统还有许多不尽如人意的地方,希望使用者能给予指正,这些都有待进一步改善。 致谢 在此更要感谢我的导师和专业老师,是你们的细心指导和关怀,使我能够顺利的完成毕业论文。在我的学业和论文的研究工作中无不倾注着老师们辛勤的汗水和心血。老师的严谨治学态度、渊博的知识、无私的奉献精神使我深受启迪。从尊敬的导师身上,我不仅学到了扎实、宽广的专业知识,也学到了做人的道理。在此我要向我的导师致以最衷心的感谢和深深的敬意。 参考文献 [1]白以恩.计算机网络基础及应用.哈尔滨:工业大学出版社,2000 [2]包锦阳.大专生毕业论文(设计)写作指导.浙江大学出版社,2004 [3] 李俊德.ACCESS2003入门与实例演练.中国青年出版社,2005 [4]张泽虹.数据库原理及应用:Access2003.电子工业出版社,2005 [5]彭湘凯,曾光辉.数据库原理与应用.机械工业出版社,2007 [6]楼土明.信息系统应用与开发.浙江摄影出版社,2009 [7]张作华.管理制度——人事与组织机构管理制度.伊犁人民出版社,2000 [8]毛国君.高级数据库原理与技术.人民邮电出版社,2004 [9]上海市教育委员会.信息系统与数据库技术学习指导及习题解析.机械工业出版社,2009 [10]何宁,黄文斌,熊建强.数据库技术应用教程.机械工业出版社,2007 [11]吴京慧,刘爱红,廖国琼.数据库系统原理与设计实验教程.清华大学出版社,2009 [12]刘晓强.信息系统与数据库技术.机械工业出版社,2008 [13]丁宝康,陈坚.数据库系统工程师考试全程指导.清华大学出版社,2006 [14]张平.数据库应用基础Access2003.人民邮电出版社,2007 临汾职业技术学院 09届计算机应用技术专业毕业论文 [15]魏茂林.数据库应用技术.电子工业出版社,2009 [16]黄河,乐磊.微软解疑专家(5)——Access数据库.北京大学出版社,2001 [17]神龙工作室.新编Access2003数据库管理入门与提高.人民邮电出版社,2007 [18]启明工作室.ACCESS 数据库应用实例完全解析.人民邮电出版社,2007 [19]高英,张晓冬.ACCESS数据库应用系统开发与实例.人民邮电出版社,2008 [20]王宇虹.专家门诊--ACCESS开发答疑200问1CD.人民邮电出版社,2009 #include “stdio.h” #include “stdlib.h” #include “string.h” #include “conio.h” #include “stdlib.h” #define null 0 struct record { char name[20];char phone[20];char adress[40];char postcode[10];char e_mail[30];}student[500];struct LinkList { struct record US;struct LinkList *next;}a;struct LinkList *head=null;int num=0;FILE *fp;int menu_select();int adduser();int list();int search();int display();int add();int listbyname();int dele();int save();int exit(); void main(){ system(“cls”);for(;;){ switch(menu_select()){ case 0:adduser();break;case 1:list();break;case 2:search();break;case 3:add();break;case 4:dele();break;case 5:save();break;case 6:exit(0);} } } menu_select(){ char s[80];int a;printf(“*_* press any key enter menu!*_* n”);getch();system(“cls”);printf(“tt********************MENU*********************nn”);printf(“tt 0.输入记录n”);printf(“tt 1.显示记录 n”);printf(“tt 2.按姓名查找n”);printf(“tt 3.插入记录 n”);printf(“tt 4.删除记录n”);printf(“tt 5.记录保存文件n”);printf(“tt 6.Quitn”);printf(“tt***********************************************n”);do{ printf(“n Enter you choice(0~11):”);scanf(“%s”,s);a=atoi(s);} while(a<0||a>11);return a;} adduser(){ printf(“ntt**************** 请输入用户信息 ****************n”);printf(“ntt输入姓名:”);scanf(“%s”,&student[num].name);printf(“ntt输入电话号码:”);scanf(“%s”,&student[num].phone);printf(“ntt输入地址:”);scanf(“%s”,&student[num].adress);printf(“ntt输入邮编:”);scanf(“%s”,&student[num].postcode);printf(“ntt输入e-mail:”);scanf(“%s”,&student[num].e_mail);num++;printf(“ntt是否继续添加?(Y/N):”);if(getch()=='y')adduser();return(0);} list(){ int i;system(“cls”);if(num!=0){ printf(“ntt*************** 以下为通讯录所有信息************”);for(i=0;i printf(“ntt姓名: %s”,student[i].name);printf(“ntt电话: %s”,student[i].phone);printf(“ntt地址: %s”,student[i].adress);printf(“ntt邮编: %s”,student[i].postcode);printf(“ntte-mail:%s”,student[i].e_mail);printf(“tt”);if(i+1 add(){ int i;if((fp=fopen(“student.bin”,“wb”))==NULL){ printf(“ntt文件打开失败”);} for(i=0;i save(){ int j;FILE*fp;fp=fopen(“student.txt”,“w”);if(fp==NULL)printf(“can't open the file.”);if(num!=0){ for(j=0;j fwrite(student,sizeof(student),1,fp);} } printf(“保存成功!”);fclose(fp);return(0);} #include char name[20]; //药品名称 char number[50]; //药品编号 char price[50]; //单价 char inventory[50]; //库存数量 char brand[20]; //品牌 } medicine[100]; //假设最大数为100.//定义全局变量num int num; int menu_select(){ char s[80];int a;/*定义整形变量*/ system(“cls”);printf(“tt-------------您好!您已进入药房管理系统-----------nn”);printf(“ttt1.输入药品信息n”);printf(“ttt2.查看药品信息n”);printf(“ttt3.修改药品信息n”);printf(“ttt4.按编号查找药品n”);printf(“ttt5.按价格排序 n”);printf(“ttt6.删除药品信息n”);printf(“ttt7.退出n”);printf(“tt-----------nn”); do{ } printf(“Enter you choice(1~7):”); scanf(“%s”,s); a=atoi(s); while(a<1 || a>7); return a;} int addmedicine(){ printf(“ttt--------------请输入您要保存的信息------------n”);printf(“ttt输入药品名称:n”);scanf(“%s”,medicine[num].name);printf(“ttt输入药品编号:n”);scanf(“%s”,medicine[num].number);printf(“ttt单价:n”);scanf(“%s”,medicine[num].price); printf(“ttt品牌:n”); } scanf(“%s”,medicine[num].brand);printf(“ttt库存数量 :n”);scanf(“%s”,medicine[num].inventory);num++;printf(“ttt是否继续添加?(Y/N):n”);if(getch()=='y' || getch()=='Y') addmedicine();return(0);void modifybyname() //按药品名称修改 { char c;int i,mark=0;char name[20];printf(“ntt请输入要修改的药品名称:”);scanf(“%s”,name);if(num==0){ printf(“ntt文件中无相关药品”);printf(“ntt按任意键返回主菜单”);getch();mark++;return;} for(i=0;i if(strcmp(medicine[i].name,name)==0){ printf(“ntt以下是您要修改的药品信息”);printf(“ntt药品名称: %s”,medicine[i].name); printf(“ntt药品编号: %s”,medicine[i].number); printf(“ntt单价: %s”,medicine[i].price); printf(“ntt品牌: %s”,medicine[i].brand); printf(“ntt库存数量: %s”,medicine[i].inventory); printf(“ntt是否修改(y/n)”); if(getch()=='y'){ printf(“nt----------------------请选择修改信息-------------------------”);printf(“nt 1-修改药品名称 ”);printf(“nt 2-修改药品编号 ”); printf(“nt 3-修改单价 ”); printf(“nt 4-修改品牌 ”); printf(“nt 5-修改库存数量 ”);printf(“nt------------”);printf(“nt请选择您所要的服务:”);scanf(“%s”,&c);switch(c){ case '1': printf(“nt请输入新药品名称: ”); scanf(“%s”,medicine[i].name);break; case'2':printf(“nt请输入新药品编号: %s”); scanf(“%s”,medicine[i].number);break; case'3':printf(“nt请输入新单价: ”); scanf(“%s”,medicine[i].price);break; case'4':printf(“nt请输入新品牌: ”); scanf(“%s”,medicine[i].brand);break; case'5':printf(“nt请输入新库存数量: ”); } } scanf(“%s”,medicine[i].inventory);break;} } if(mark==0){ printf(“ntt药品信息修改完毕”);printf(“nt是否继续修改?(Y/N):”);if(getch()=='y')modifybyname();return;} } void list(){ int i;system(“cls”);if(num!=0){ printf(“ttt----------已为您显示所有药品信息----------n”); for(i=0;i { printf(“ttt药品名称:%sn”,medicine[i].name);printf(“ttt药品编号:%sn”,medicine[i].number);printf(“ttt单价:%sn”,medicine[i].price); printf(“ntt品牌: %sn”,medicine[i].brand); } int searchbyname()printf(“ttt库存数量:%sn”,medicine[i].inventory); if(i+1 { system(“pause”); } } printf(“ttt------------------------------n”);} else printf(“ttt系统中无任何记录n”); printf(“ttt按任意键返回主菜单:n”); getch(); return;{ int mark=0;int i;printf(“ttt----------按药品名称查找----------n”);char name[20];printf(“ttt请输入药品名称:n”);scanf(“%s”,name);for(i=0;i if(strcmp(medicine[i].name,name)==0) { printf(“ttt-------以下是您查找的药品信息-------n”);printf(“ttt药品名称: %s”,medicine[i].name);printf(“ttt药品编号: %s”,medicine[i].number);printf(“ttt单价: %s”,medicine[i].price); printf(“ntt品牌: %s”,medicine[i].brand);printf(“ttt库存数量:%sn”,medicine[i].inventory);printf(“ttt-----------------------n”); mark++; if((i+1) { printf(“ttt是否继续查找相同名称的药品信息:(y/n)n”); if(getch()=='y' || getch()=='Y') { continue; } else return(0); } else } } { printf(“ttt请按任意键返回主菜单”); getch(); return(0); } } if(mark == 0){ } return 0; printf(“ttt没有您要查找的药品记录n”); printf(“ttt请按任意键返回主菜单n”); getch(); return(0);int searchbynumber(){ int mark=0;int i;printf(“ttt---------------按药品编号查找--------------n”);char number[10];printf(“ttt请输入药品编号:n”);scanf(“%s”,number);for(i=0;i printf(“ttt---------------以下是您查找的药品信息---------------n”); printf(“ttt药品名称: %s”,medicine[i].name); printf(“ttt药品编号: %s”,medicine[i].number); printf(“ttt单价: %s”,medicine[i].price); printf(“ntt品牌: %s”,medicine[i].brand); printf(“ttt库存数量:%sn”,medicine[i].inventory); } void deletebynumber(){ int i,j;int deletemark=0;char number[20];printf(“ttt请输入要删除药品编号:n”);scanf(“%s”,number);if(num==0){ printf(“ttt对不起,系统中无任何记录n”); printf(“ttt------------------n”); printf(“ttt请按任意键返回主菜单n”); mark++; getch(); return(0);} } if(mark==0){ printf(“ttt没有改药品的信息n”);printf(“ttt请按任意键返回主菜单n”);getch();return(0);} return(0); printf(“ttt请按任意键返回主菜单n”); getch();return;} for(i=0;i if(strcmp(medicine[i].number,number)==0) { printf(“ttt以下是您要删除的用户记录:n”);printf(“ttt药品名称: %s”,medicine[i].name);printf(“ttt药品编号: %s”,medicine[i].number);printf(“ttt单价: %s”,medicine[i].price); printf(“ntt品牌: %s”,medicine[i].brand); printf(“ttt库存数量:%sn”,medicine[i].inventory); } printf(“ttt是否删除?(y/n)”); if(getch()=='y' || getch()=='Y') { } else return; for(j=i;j medicine[j]=medicine[j+1]; num--; deletemark++; printf(“ttt删除成功”); printf(“ttt是否继续删除?(y/n)”); if(getch()=='y' || getch()=='Y') deletebynumber(); return; } continue;if(deletemark==0){ printf(“ttt没有该药品的记录”); printf(“ttt是否继续删除?(y/n)”); if(getch()=='y' || getch()=='Y') deletebynumber(); return; } } void deletebyname(){ int a=0;int findmark=0;int j;int deletemark=0;int i;char name[20];printf(“ttt请输入要删除药品名称:n”);scanf(“%s”,name);for(i=a;i printf(“ttt以下是您要删除的药品信息:”); findmark++; printf(“ttt________________________________”); printf(“ttt药品名称: %s”,medicine[i].name);return; printf(“ttt药品编号: %s”,medicine[i].number); printf(“ttt单价: %s”,medicine[i].price); printf(“ntt品牌: %s”,medicine[i].brand); printf(“ttt库存数量:%sn”,medicine[i].inventory); printf(“ttt________________________________”); printf(“ttt是否删除?(y/n)”); if(getch()=='y' || getch()== 'Y') { for(j=i;j medicine[j]=medicine[j+1]; num--; deletemark++; printf(“ttt删除成功”); if((i+1) { printf(“ttt是否继续删除相同名称的药品信息?(y/n)”); if(getch()=='y') { a=i; continue; } } printf(“ttt是否继续删除?(y/n)”); if(getch()=='y') deletebyname(); return; } if((i+1) { printf(“ttt是否继续删除相同名称的药品信息?(y/n)”); if(getch()=='y' || getch()== 'Y') { a=i; continue; } } } else continue;} if((deletemark==0)&&(findmark==0)){ printf(“ttt没有该药品的记录”);printf(“ttt是否继续删除?(y/n)”);if(getch()=='y' || getch()== 'Y') deletebynumber();return;} else if(findmark!=0){ printf(“ttt没有重名信息”);printf(“ttt没有该药品的记录”);printf(“ttt是否继续删除?(y/n)”);if(getch()=='y' || getch()== 'Y') deletebynumber();return;} } int dele() //删除记录 { } char choic;printf(“ttt1-按药品编号删除 2-按药品名称删除”);printf(“ttt请选择:”);choic=getch();switch(choic){ case '1':deletebynumber();break;case '2':deletebyname();break;} return(0);int sortbyprice() //按药品单价进行排序 { int i,j;struct medicine tmp;for(i=1;i tmp=medicine[i]; j=i-1; do { medicine[j+1]=medicine[j]; j--; }while((strcmp(tmp.price,medicine[j].price)<0&&j>=0)); medicine[j+1]=tmp;} } printf(“ttt排序成功,是否显示?(y/n)”); } if(getch()=='y') list();return(0);int main(){ printf(“tt--------------------------n”); printf(“tt---------Welcome to management system----------n”); printf(“tt----------Made By 蒋俊杰 李梁伟 郑奈春-------------n”); printf(“tt--------------------------n”); printf(“请按任意键进入主菜单:)n”); getch(); int selectnum; while(1) { selectnum = menu_select();switch(selectnum){ case 1: { } case 2: { addmedicine(); //添加药品信息 break; list(); break; } case 3: { modifybyname(); //修改药品信息 break; } case 4: { searchbynumber(); //按药品编号查找 break; } case 5: { sortbyprice();//按药品单价排序 break; } case 6: { dele(); break; } case 7: { printf(“BYE BYE!n”);system(“pause”);getchar(); exit(0);} } } getchar(); return 0;} #include “stdio.h” #include “string.h” #define N 20 struct mem { char name[20]; char tel[20]; char wu[20]; char dz[20];}mem[N];void sorttel(struct mem tel[]){ struct mem temp; int i,j; FILE *fp;if((fp=fopen(“c: elephone.txt”,“rb”))==NULL){ printf(“不能打开文件n”);} for(i=0;i for(j=0;j if(strcmp(mem[j+1].tel,mem[j].tel)<0) { temp=mem[j]; mem[j]=mem[j+1]; mem[j+1]=temp; } for(i=0;i void sortname(struct mem tel[]){ struct mem temp; int i,j; FILE *fp;if((fp=fopen(“c: elephone.txt”,“rb”))==NULL){ printf(“不能打开文件n”);} for(i=0;i for(j=i+1;j if(strcmp(mem[j].name,mem[i].name)<0) { temp=mem[i]; mem[i]=mem[j]; mem[j]=temp; } for(i=0;i void sor(){int k; do{printf(“--------------------排序菜单-------------------n”); printf(“------------------------n”); printf(“ 1:按号码排序n”); printf(“ 2:按姓名排序n”); printf(“ 0:退出n”); printf(“------------------------n”); printf(“请输入0-2选择功能n”); scanf(“%d”,&k);getchar(); switch(k) { case 1:sorttel(mem);break; case 2:sortname(mem);break; case 0:return; } }while(1);} void add(){ char name[10];char tel[10]; char wu[10]; char dz[10];FILE *fp;if((fp=fopen(“c: elephone.txt”,“a”))==NULL){ printf(“不能打开文件n”); exit(0);} printf(“请输入姓名”); gets(name); printf(“请输入电话号码”); gets(tel); printf(“请输入工作单位”); gets(wu); printf(“请输入地址”); gets(dz);printf(“n”); fprintf(fp,“%s %s %s %sn”,name,tel,wu,dz); fclose(fp);} void del(){ FILE *fp; int i=0,n; char name[10]; printf(“请输入删除名字”); gets(name); if((fp=fopen(“c: elephone.txt”,“r”))==NULL){ printf(“不能打开文件n”); exit(0);} while(!feof(fp)) { fscanf(fp,“%s%s%s%s”,mem[i].name,mem[i].tel,mem[i].wu,mem[i].dz); if(strcmp(name,mem[i].name)!=0)i++; } fclose(fp);if((fp=fopen(“c: elephone.txt”,“w”))==NULL){ printf(“不能打开文件n”); exit(0);} for(n=0;n fprintf(fp,“%s %s %s %s”,mem[n].name,mem[n].tel,mem[n].wu,mem[n].dz);fclose(fp);} void dis(){ FILE * fp;int i=0,n;printf(“ 姓名 电话号码 工作单位 地址n”); if((fp=fopen(“c: elephone.txt”,“r”))==NULL){ printf(“不能打开文件n”); exit(0);} while(!feof(fp)) {fscanf(fp,“%s%s%s%s”,mem[i].name,mem[i].tel,mem[i].wu,mem[i].dz);i++;} fclose(fp); n=i; for(i=0;i printf(“%-8s%11s%13s%24sn”,mem[i].name,mem[i].tel,mem[i].wu,mem[i].dz);} void mod(){ FILE * fp;int i=0,n;char name[10];char nn[10];char nt[10];char nwu[10];char ndz[10]; printf(“请输入要修改的姓名”);gets(name);printf(“请输入修改后的姓名”);gets(nn);printf(“请输入修改后的电话号码”);gets(nt);printf(“请输入修改后的工作单位”);gets(nwu);printf(“请输入修改后的地址”);gets(ndz);printf(“n”);if((fp=fopen(“c: elephone.txt”,“r”))==NULL){ printf(“不能打开文件n”); exit(0);} while(!feof(fp)) { fscanf(fp,“%s%s%s%s”,mem[i].name,mem[i].tel,mem[i].wu,mem[i].dz); if(strcmp(name,mem[i].name)==0) {strcpy(mem[i].name,nn);strcpy(mem[i].tel,nt);strcpy(mem[i].wu,nwu);strcpy(mem[i].dz,ndz);} i++; } fclose(fp);if((fp=fopen(“c: elephone.txt”,“w”))==NULL){ printf(“不能打开文件n”); exit(0);} n=i; for(i=0;i fprintf(fp,“%s %s %s %sn”,mem[i].name,mem[i].tel,mem[i].wu,mem[i].dz); fclose(fp);} void main(){ int choose; while(1) { printf(“--------------------电话簿管理系统--------------------n”); printf(“------------------------n”); printf(“ 1:添加一个新号码n”); printf(“ 2:删除一个号码n”); printf(“ 3:显示所有保存的号码n”); printf(“ 4:修改号码n”); printf(“ 5:排序n”); printf(“ 6:查询n”); printf(“ 0:退出n”); printf(“------------------------n”); printf(“请输入0-6选择功能n”); scanf(“%d”,&choose);getchar(); if(choose!=0) switch(choose) { case 1:add();break; case 2:del();break; case 3:dis();break; case 4:mod();break; case 5:sor();break; case 6:/*que();break*/; } else exit(0); } }第二篇:学生成绩管理系统毕业论文C语言
第三篇:C语言程序设计学生通讯录管理系统
第四篇:C语言药房管理系统
第五篇:c语言 电话簿管理系统