java程序设计课程介绍

java程序设计课程介绍,第1张

Java程序设计与Web应用程序设计哪门课简单

java程序设计主要讲解java的基础知识,它是一种语言性的课程。

web应用设计则是一种方向性的课程,这个web的设计你可以使用asp,也可以使用jsp,如果是通过jsp来进行web开发的话,需要java的知识作为基础。

因此,如果你有asp的相关知识的话,可以不学习java直接学习web应用程序设计,如果没有的话,建议你先学习java程序设计,然后再学习web应用程序设计。

java程序设计的内容简介

本书讲解了copyJava语言的基本知识及程序设计的基本方法,使读者掌握面向对象程序设计的基本概念,从而具有利用Java语言进行程序设计的能力,为将来从事软件开发,特别是Web应用系统开发打下良好基础。全书共分10章,从内容上大致分为三个部分:第一部分为第1章~第3章,介绍Java程序设计的基础知识,包括Java语言概述、Java语言基础以及算法与程序控制结构。第二部分为第4章~第6章,介绍Java面向对象程序设计的基本方法与技术,这是Java的核心与特色内容,包括类与对象、封装、继承与多态以及异常处理与输入/输出。第三部分为第7章~第10章,介绍Java的实际应用,包括多线程、网络程序设计、数据库应用以及图形用户界面开发技术。

本书内容讲解详细,程序代码均经过调试,案例实用。

本书适合作为高等院校计算机程序设计课程的教材,也可作为具有一定程序设计基础和经验的读者的参考用书。

《JAVA程序设计》结课设计

你应该问一些技术上的问题,而不是让别人帮你做作业

JAVA程序设计课程讲什么内容

《Java程序设计》课程是使用Java语言进行应用程序设计的课程。课程的主要目标有三:一、掌握Java语言的语法,能够较为深入理解Java语言机制,掌握Java语言面向对象的特点。 二、掌握JavaSE中基本的API,掌握在 、线程、输入输出、文本处理、图形用户界面、网络等方面的应用。三、能够编写有一定规模的应用程序,养成良好的编程习惯。 本课程要对Java语言的一些机制会详细讲解,所以具有系统性。本课程还注重实践性,要讲Java语言在文本、文件、窗体界面、图形、数据库、多线程、并行编程方面的应用。还会讲到编好代码的经验与技巧,包括面向对象的思想、软件开发工具的使用等。 在教学中,采用教师讲授、学生自测、学生讨论、编程实践相结合的方法。

java程序设计的内容简介

本书采用任务驱动教学模式,通过任务的实施,使读者在读程序、版学知识、写程序的过程中,权逐渐掌握面向对象的Java程序设计思想和技能。本书共分12个单元,主要包括Java程序设计过程、基本语法规则、面向对象技术、数组与字符串、异常处理、GUI编程、输入/输出处理、多线程编程以及基础网络编程等内容。

本书适合作为高等职业院校计算机相关专业“Java程序设计”或者“面向对象程序设计”课程的教材,也可作为相关技术人员学习Java的参考用书。

JAVA程序设计课程主讲老师是谁

JAVA程序设计主讲老师是北京大学信息科学技术学院教师,在程序设计方面有多年的项目开发经验和教学经验,任教育部计算机教指委分委专家组成员。出版的教材包括《Java程序设计》(曾获第六届全国高校出版社优秀畅销书奖)、《C#程序设计教程》、《VB程序设计》、《Visual C++NET程序设计》等。在北京大学开设多门程序设计课程,课程内容以系统知识与实践应用相结合,注重培养对知识体系的深入理解,在与实际工作生活相结合的应用实践中分析问题、解决问题的能力。

JAVA程序设计课程成绩管理系统

第一步先设计表结构,这种练习的项目,建立用mysql数据库,安装方便,而且不大版;第二步按需权求写查询统计SQL,这一步很关键,SQL写好了,结果也就出来了,最后一步,将结果写入文本和在控制台输出。只要思路清晰,这个不难的,有不懂的可以问我。

《JAVA程序设计》课程设计

1 package studypart02;

2 import javautilCalendar;

3 import javaawt;

4 import javaxswing;

5 import javaawtevent;

6 import javalangThread;

7 public class Clock extends JFrame implements ComponentListener,

8 ItemListener,Runnable{

9 Thread timer;

10 private JComboBox bobox_color;

11 public void start(){

12 if(timer==null)

13 timer=new Thread(this,"ShowTime");

14 timerstart();

15 }

16 public void run(){

17 while(true){

18 try{

19 timersleep(1000);

20 }catch(InterruptedException e){}

21 repaint();

22 }

23 }

24 public void stop(){

25 timerstop();

26 }

27 public Clock(){

28 super("Clock");

29 thissetSize(600,600);

30 thissetDefaultCloseOperation(EXIT_ON_CLOSE);

31 thissetLayout(new FlowLayout());

32

33 thissetVisible(true);

34 }

35 public void paint(Graphics g){

36 Calendar cal=CalendargetInstance();

37 int year=calget(CalendarYEAR);

38 int month=calget(CalendarMONTH);

39 int day=calget(CalendarDATE);

40 int hour=calget(CalendarHOUR);

41 int minute=calget(CalendarMINUTE);

42 int second=calget(CalendarSECOND);

43 int a,b;

44 a=thisgetWidth()/2;

45 for(int i=1;i<=360;i++){

46 double angle=iMathPI/180;

47 double radius=a-50;

48 int x=(int)Mathround(radiusMathsin(angle));

49 int y=(int)Mathround(radiusMathcos(angle));

50 if(i%30==0){

51 int j=i/30;

52 String str=StringvalueOf(j);

53 gsetColor(Colorblack);

54 // gfillOval(a+x,a+y,1,1);

55 gdrawString(str,a+x,a-y);

56 }

57 double radh=a-200;

58 angle=hourMathPI/30;

59 int xh=(int)Mathround(radhMathsin(angle));

60 int yh=(int)Mathround(radhMathcos(angle));

61 gsetColor(Colorred);

62 gdrawLine(a,a,a+xh,a-yh);

63 double radm=a-150;

64 angle=minuteMathPI/30;

65 int xm=(int)Mathround(radmMathsin(angle));

66 int ym=(int)Mathround(radmMathcos(angle));

67 gsetColor(Colorblue);

68 gdrawLine(a,a,a+xm,a-ym);

69 double rads=a-100;

70 angle=secondMathPI/30;

71 int xs=(int)Mathround(radsMathsin(angle));

72 int ys=(int)Mathround(radsMathcos(angle));

73 gsetColor(Coloryellow);

74 gdrawLine(a,a,a+xs,a-ys);

75 //gdrawString(calget(CalendarHOUR)+":"+calget(Calendar

76 // MINUTE)+":"+calget(CalendarSECOND));

77 }

78 }

79 public void itemStateChanged(ItemEvent e){

80 repaint();

81 }

82 public void ponentResized(ComponentEvent e){

83 repaint();

84 }

85 public void ponentMoved(ComponentEvent e){}

86 public void ponentHidden(ComponentEvent e){}

87 public void ponentShown(ComponentEvent e){}

88

89 public static void main(String[] args){

90 Clock show=new Clock();

91 showstart();

92 }

93 }

千锋JAVA课程介绍

Java语言的发展及相关技术的介绍,Java技术和平台在网络计算及电子商务中的应用介绍;Java语言的基础知识:Java语言的主要特点,设计思想,Java虚拟机,垃圾回收机制,安全性的保证机制;Java语言的基本语法规范,包括标识符、关键字、数据类型、表达式和流控制,程序基本结构;面向对象技术的基本特点,Java语言的面向对象特性,类和对象的概念,封装性、继承性、多态性,Java语言的特殊属性;Java程序的例外处理机制和方法;

Java语言的输入/输出处理机制和方法,常用的输入/输出方法,输入/输出处理的应用;

Java语言的图形用户界面设计:AWT界面设计的基本方法,常用的组件类库,图形用户界面的事件处理模型和方法,JFC介绍,Swing图形界面设计;Java Applet程序设计,Applet程序的特点,运行机制,与浏览器的集成,安全机制的使用;

多线程程序设计,进程和线程的联系和区别,多线程程序设计的一般方法,线程的生命周期,线程状态的控制,多线程的互斥和同步;Java语言的网络编程技术和应用,Socket程序设计,Client/Server程序设计;Java的Servlet和JSP(JavaServerPage)技术;

JavaBeans和RMI。

#include <stdioh>

#define MAX 200

int main()

{

int a[MAX][MAX],n;

void initmatrix(int a[][MAX]);//初始化矩阵,将所有元素赋0

void creatematrix_2k1(int a[][MAX],int n);//生成2n+1阶幻方

void creatematrix_4k(int a[][MAX],int n);//生成4n阶幻方

void creatematrix_4k2(int a[][MAX],int n);//生成4n+2阶幻方

void outputmatrix(int a[][MAX],int n);//输出n阶幻方

initmatrix(a);

printf("please input a interger number:");

scanf("%d",&n);

if(n%2) creatematrix_2k1(a,(n-1)/2);

else {if(n%4==0) creatematrix_4k(a,n/4);

else creatematrix_4k2(a,(n-2)/4);}

outputmatrix(a,n);

return 0;

}

void initmatrix(int a[][MAX])

{

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

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

a[i][j]=0;

}

void outputmatrix(int a[][MAX],int n)

{

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

{

printf("第%-3d行的数依次为:",i+1);

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

printf("%-5d",a[i][j]);

printf("\n");

}

}

void creatematrix_2k1(int a[][MAX],int n)

{

int col=-1,row=-1;

int p,q;

p=&col,q=&row;

void fillmatrix(int a[][MAX],int p,int q,int n,int i);//将i填入2n+1阶幻方中

for(int i=1;i<=((2n+1)(2n+1));i++)

fillmatrix(a,p,q,n,i);

}

void fillmatrix(int a[][MAX],int p,int q,int n,int i)

{

if(i==1)

{

a[0][n]=i;

p=0,q=n;

}

else

{

if((p==0&&q==2n)||a[(p+2n)%(2n+1)][(q+1)%(2n+1)])

{

a[(p+1)%(2n+1)][q]=i;

p=(p+1)%(2n+1);}

else{a[(p+2n)%(2n+1)][(q+1)%(2n+1)]=i;

p=(p+2n)%(2n+1),q=(q+1)%(2n+1);}

}

}

void creatematrix_4k(int a[][MAX],int n)

{

int temp;

for(int i=0;i<4n;i++)

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

a[i][j]=4ni+j+1;}

for(i=0;i<4n;i++)

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

if((i>j)&&((i-j)%4==0||(i+j+1)%4==0))

{temp=a[i][j];

a[i][j]=a[4n-1-i][4n-1-j];

a[4n-1-i][4n-1-j]=temp;}

for(i=0;i<2n;i++)

{temp=a[i][i];

a[i][i]=a[4n-1-i][4n-1-i];

a[4n-1-i][4n-1-i]=temp;}

}

void creatematrix_4k2(int a[][MAX],int n)//构造4n+2阶幻方

{

int col=-1,row=-1,i;

int exn=(2n+1)(2n+1);

int p,q;

p=&col,q=&row;

void fillmatrix_2(int a[][MAX],int p,int q,int cs, int rs,int n,int i);/将i填入以a[cs][rs]为起始的2n+1阶幻方中,用p,q返回的i-1行列值/

for(i=1;i<=exn;i++)

fillmatrix_2(a,p,q,0,0,n,i);

for(i=exn+1;i<=exn2;i++)

fillmatrix_2(a,p,q,2n+1,2n+1,n,i);

for(i=2exn+1;i<=3exn;i++)

fillmatrix_2(a,p,q,0,2n+1,n,i);

for(i=3exn+1;i<=4exn;i++)

fillmatrix_2(a,p,q,2n+1,0,n,i);

void lastswap(int a[][MAX],int n);//对4n+2阶幻方做最后的变换

lastswap(a,n);

}

void fillmatrix_2(int a[][MAX],int p,int q,int cs, int rs,int n,int i)

{

int exn=(2n+1)(2n+1);

if(i%exn==1)

{

a[cs+0][rs+n]=i;

p=0,q=n;

}

else {if((p==0&&q==2n)||a[(p+2n)%(2n+1)+cs][(q+1)%(2n+1)+rs])

{

a[(p+1)%(2n+1)+cs][q+rs]=i;

p=(p+1)%(2n+1);

}

else{

a[(p+2n)%(2n+1)+cs][(q+1)%(2n+1)+rs]=i;

p=(p+2n)%(2n+1),q=(q+1)%(2n+1);

}

}

}

void lastswap(int a[][MAX],int n)

{

int temp,i,j;

for(i=0;i<n;i++)

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

{temp=a[i][j];

a[i][j]=a[2n+1+i][j];

a[2n+1+i][j]=temp;}

for(i=1;i<=n;i++)

{temp=a[n][i];

a[n][i]=a[3n+1][i];

a[3n+1][i]=temp;}

for(i=n+1;i<2n+1;i++)

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

{temp=a[i][j];

a[i][j]=a[2n+1+i][j];

a[2n+1+i][j]=temp;}

for(i=0;i<2n+1;i++)

for(j=4n+1;j>3n+2;j--)

{temp=a[i][j];

a[i][j]=a[2n+1+i][j];

a[2n+1+i][j]=temp;}

}

求幻方的程序

#include <stdioh>

#include <stdlibh>

#define IO "%d"//和下面一行共同扩展数据成员的格式

typedef int ElemType;//同上

typedef struct LinkNode

{

ElemType data;

struct LinkNode next;

}LinkNode,Link;

Link creat();//建立带头结点的链表,并返回头指针

void print(Link);//输出链表所有结点

bool insert(Link,int ,ElemType);//向head为头指针的链表中插入元素e使之成为链表第i个元素成功返回TRUE否则FALSE

bool del(Link,int );//在head为头指针的链表中删除第i个结点,成功返回TRUE否则返回FALSE

void operate(Link);//在本程序中进行链表的插入,删除,输出 *** 作

Link creat()

{

Link head=(Link)malloc(sizeof(LinkNode));

Link pre=head,p;

int count=1;

char ch;

printf("是否终止建立链表(Y/N):");

scanf("%c",&ch);

while(ch=='n'||ch=='N')

{

p=(Link)malloc(sizeof(LinkNode));

printf("请输入第%d个结点内的数据:",count);

scanf(IO,&(p->data));

fflush(stdin);

pre->next=p;

pre=p;

printf("是否终止建立链表(Y/N):");

scanf("%c",&ch);

count++;

}

pre->next=NULL;

return head;

}

void print(Link head)

{

printf("链表目前情况为:\n");

Link p=head->next;

int count=1;

while(p)

{

printf("第%d个结点中数据为"IO" ",count,p->data);

p=p->next;

if((count++)%3==0)printf("\n");

}

if(count%3!=1)printf("\n");

}

bool insert(Link head,int i,ElemType e)

{

Link pre,p;

int k;

for(k=0,pre=head;k<i-1&&pre;k++,pre=pre->next);//寻找第i-1个元素的指针

if(k!=i-1||(!pre))return false;

p=(Link)malloc(sizeof(LinkNode));

p->data=e;

p->next=pre->next;

pre->next=p;

return true;

}

bool del(Link head,int i)

{ Link pre,p;

int k;

for(k=0,pre=head,p=head->next;k<i-1&&p;k++,pre=p,p=p->next);//寻找第i-1个元素的指针

if(k!=i-1||(!p))return false;

pre->next=p->next;

free(p);

return true;

}

void operate(Link head)

{

int n,i;

ElemType e;

do

{

printf("\n");

printf("请输入想进行何种 *** 作\n1============插入结点\n2============删除结点\n3============输出链表\n");

scanf("%d",&n);

switch(n)

{

case 1:printf("现在进行结点插入\n");

printf("请输入欲插入到何位置:");scanf("%d",&i);

printf("请输入欲插入的数据:");scanf(IO,&e);

if(insert(head,i,e))printf("插入成功!\n");else printf("插入失败!\n");

break;

case 2:printf("现在进行结点删除\n");

printf("请输入欲删除结点位置:");scanf("%d",&i);

if(del(head,i))printf("删除成功!\n");else printf("删除失败!\n");

break;

case 3:print(head);break;

default:break;

}

}while(n<4&&n>0);

}

int main()

{

Link head=creat();

operate(head);

return 0;

}

链表的 *** 作

#include <stdioh>

#include <mathh>//求积分

int main()

{

double f1(double);

double f2(double);

double f3(double);

double f4(double);

double f5(double);

double (p)(double);

double integral(double a,double b,double(p)(double));

double a,b;//记录积分区间

printf("请输入积分区间:");

scanf("%lf %lf",&a,&b);

if(a>b){double temp=a;a=b;b=temp;}//确保a<b

printf("sin(x)在[%lf,%lf]上的积分值为%lf\n",a,b,integral(a,b,sin));

printf("cos(x)在[%lf,%lf]上的积分值为%lf\n",a,b,integral(a,b,cos));

printf("exp(x)在[%lf,%lf]上的积分值为%lf\n",a,b,integral(a,b,exp));

printf("x+1在[%lf,%lf]上的积分值为%lf\n",a,b,integral(a,b,f1));

printf("2x+3在[%lf,%lf]上的积分值为%lf\n",a,b,integral(a,b,f2));

printf("exp(x)+1在[%lf,%lf]上的积分值为%lf\n",a,b,integral(a,b,f3));

printf("(1+x)^2在[%lf,%lf]上的积分值为%lf\n",a,b,integral(a,b,f4));

printf("x^3在[%lf,%lf]上的积分值为%lf\n",a,b,integral(a,b,f5));

return 0;

}

double integral(double a,double b,double(p)(double))

{

double sum=0,l=b-a,pl;//sum保存积分和,l保存积分区间的长度,pl保存积分区间细分后每个小区间的长度

int n=2,i;//n保存划分的小区间数i用作累加指针

pl=l/n;

while(pl>1e-6)

{

sum=0;

for(i=0;i<n;i++)

sum+=(p)(a+ipl)pl;

n=2;

pl/=2;

}

return sum;

}

double f1(double x)

{

return x+1;

}

double f2(double x)

{

return 2x+3;

}

double f3(double x)

{

return exp(x)+1;

}

double f4(double x)

{

return (1+x)(1+x);

}

double f5(double x)

{

return xxx;

}

求积分

都是以前写的 便宜楼主了!!

#include<timeh>

#include<stdioh>

#include<stringh>

#include<Windowsh>

#define N 20

#define M 100

struct student

{

char id[N];

char theclass[N];

char name[N];

char ontime[N];

}student[M];

int n;

void addition()

{

int i;

printf("\n请输入录入学生信息的总数:");

scanf("%d",&n);

for(i=1;i<=n;i++)

{

printf("\n\t请输入第%d个学生学号(20s):",i);

scanf("%s",student[i-1]id);

printf("\n\t请输入第%d个学生班级(20s):",i);

scanf("%s",student[i-1]theclass);

printf("\n\t请输入第%d个学生姓名(20s):",i);

scanf("%s",student[i-1]name);

printf("\n\t请输入第%d个学生上机时间(20s)(例08:02):",i);

scanf("%s",student[i-1]ontime);

printf("\n\t提示:您已成功录入第%d条信息\n",i);

}

}

void calculate()

{

int hours;

char times[30];

time_t rawtime;

struct tm timeinfo;

time ( &rawtime );

timeinfo = localtime(&rawtime );

strcpy(times,asctime(timeinfo));

printf("\t所有学生上机费用如下:\n");

for(int i=1;i<=n;i++)

{

printf("学生%d费用:",i);

if((student[i-1]ontime[3]-48)10+student[i-1]ontime[4]>(times[14]-48)10+times[15])

hours=(times[11]-48)10+times[12]-(student[i-1]ontime[0]-48)10-student[i-1]ontime[1];

else

hours=(times[11]-48)10+times[12]-(student[i-1]ontime[0]-48)10-student[i-1]ontime[1]+1;

printf("%d\n",hours);

}

}

void search()

{

int i,b,c,count;

do

{

char find[20];

printf("\n请选择查询方式:1根据学号查询;2根据班级查询;3根据姓名查询;4根据上机时间:");

scanf("%d",&b);

switch(b)

{

case 1:

count=PF_FLOATING_POINT_PRECISION_ERRATA;

printf("\n请输入学生的学号:");

scanf("%s",find);

for(i=0;i<n;i++)

{

if (strcmp(student[i]id,find)==0)

{

count++;

if(count==PF_FLOATING_POINT_EMULATED)

printf("学生学号\t学生班级\t学生姓名\t上机时间\n");

printf("%8s%15s%15s%17s",student[i]id,student[i]theclass,

student[i]name,student[i]ontime);

}

}

if(!count)

printf("提示:该生不存在");

goto A;

case 2:

count=PF_FLOATING_POINT_PRECISION_ERRATA;

printf("\n请输入学生的班级:");

scanf("%s",find);

for(i=0;i<n;i++)

{

if (strcmp(student[i]theclass,find)==0)

{

count++;

if(count==PF_FLOATING_POINT_EMULATED)

printf("学生学号\t学生班级\t学生姓名\t上机时间\n");

printf("%8s%15s%15s%17s",student[i]id,student[i]theclass,

student[i]name,student[i]ontime);

}

}

if(!count)

printf("提示:该生不存在");

goto A;

case 3:

count=PF_FLOATING_POINT_PRECISION_ERRATA;

printf("\n请输入学生的姓名:");

scanf("%s",find);

for(i=0;i<n;i++)

{

if (strcmp(student[i]name,find)==0)

{

count++;

if(count==PF_FLOATING_POINT_EMULATED)

printf("学生学号\t学生班级\t学生姓名\t上机时间\n");

printf("%8s%15s%15s%17s",student[i]id,student[i]theclass,

student[i]name,student[i]ontime);

}

}

if(!count)

printf("提示:该生不存在");

goto A;

case 4:

count=PF_FLOATING_POINT_PRECISION_ERRATA;

printf("\n请输入学生的上机时间:");

scanf("%s",find);

for(i=0;i<n;i++)

{

if (strcmp(student[i]ontime,find)==0)

{

count++;

if(count==PF_FLOATING_POINT_EMULATED)

printf("学生学号\t学生班级\t学生姓名\t上机时间\n");

printf("%8s%15s%15s%17s",student[i]id,student[i]theclass,

student[i]name,student[i]ontime);

}

}

if(!count)

printf("提示:该生不存在");

goto A;

default:printf("提示:输入错误");

}

A:printf("\n\t1继续\n\t0返回主菜单");

printf("\n\t 请输入您的选择:");

scanf("%d",&c);

}while(c);

}

void menu()

{

printf("\n\t欢迎进入机房收费管理系统!\n");

printf("\t 1录入功能 2计算功能 \n");

printf("\t 3查询功能 0-EXIT- \n");

printf("\t\n");

printf("\n\t 请输入您的选择:");

}

void main()

{

system("color 5f");

int a;

C:menu();

scanf("%d",&a);

switch(a)

{

case 0:printf("正在退出谢谢使用本系统,再见");break;

case 1:addition();goto C; /录入功能/

case 2:calculate();goto C; /浏览功能/

case 3:search();goto C; /查询功能/

}

}

看看满意不

课程设计包含课程计划、课程标准、教材。

一、课程计划

课程计划由教学科目的设置、学科顺序、课时分配、学年编制与学周安排这几个部分构成,其中教学科目的设置是课程计划要解决的首要问题。课程计划体现了国家对学校教育的统一要求,是学校组织教学工作、确定工作步调的依据,是指导教师进行教学和其他活动的依据。

2、课程标准

课程标准规定了学科的教学目的与任务,知识的范围、深度和结构,教学进度以及有关教学法的基本要求。课程标准由前言、课程目标、内容标准、实施和建议附录这五部分组成,且课程目标,即课程本身要实现的具体目标和意图,是课程计划的核心。

3、教材

教材是教学的材料。教材一般由目录、课文、习题、练习、实验、图表、注释、附录等分部分构成,其中,课文是教材的主体部分。除教科书以外,各类指导书、补充读物、工具书、挂图、图表、其他教学辅助用具、教学程序软件包、幻灯片、**片和音像磁盘等都可以是教材。

课程设计的原则:

1、整体化原则:在课程设计中,必须有一个整体的思路和规划,对时间、内容、总体目标都要有全面的规划,课与课之间应当是联系在一起的,而不是各自游离。

2、阶段性原则:对整体化的目标,应当阶段化,使得目标更加的明确具有可 *** 作性。

3、个性化原则:新课程改革后,对于学生个性的注重不容忽视,课程设计应当考虑学生的知识基础、兴趣爱好等不同的实际情况,为不同类型的学生设计不同的学习方法,让学生掌握主动性。

程序设计基础实训

项目名称:

学生学分管理

系 别: 计算机工程系

专 业: 计算机网络技术

班 级: 0922211

学生姓名:

指导教师: 韦立蓉

北 京 信 息 职 业 技 术 学 院

2010年 1 月 日

一、项目背景介绍

(概要介绍此项目设计的意义和要求)

本程序为学生学分管理系统。本程序根据现实中的问题通过c语言形式编程。本程序要求能够登记学分,显示学分查询学分,修改学分,删除学分,统计学分。

二、程序功能描述:

(描述基本程序中每个函数的功能,给处各函数流程图)

1、

登记单流程图

2、

显示学分流程图

3、

查询学分流程图

4、

修改信息流程图

5、

删除信息流程图

6、

统计信息流程图

三、设计方案介绍

(基本思想函数调用的思路介绍)

1、主流程图

2、界面设计

(界面设计,函数的定义,功能设计、,罗列出所有需要解决的问题

函数调用问题,循环问题,查找问题,修改问题,查询问题,删除问题,比较问题。

3、变量定义

序号 变量名 变量性质(局部/全局) 功能 作用范围

1 typedef 全局 定义结构体类型 整体

2 Int 全局 定义五门课类型 整体

Char 全局 定义学号班级姓名类型 整体

5、函数调用的类型

四、测试与分析

(简要介绍测试的作用及意义)

测试可以知道所编写的程序是否可行,通过实际的测试可以找出程序是否符合现实。通过测试和反复修改可以使程序更加人性化。

(一)测试列表

(以表格的形式给出,不少于10个)

测试数据或执行 *** 作 执行结果 是否正确 测试人签名

调用主菜单 显示了主菜单 正确

选择主菜单里的1 请输入学生学生信息… 正确

输出 有重复有乱码 否

查询 无 否

修改 按学号修改…… 是

按学号查询 显示了该信息 是

按班级查询 只显示里一名同学的信息 否

按学好删除 删除成功 是

须补考基础课的 所有学生信息都显示 否

可升学学生 显示了该显示的信息 是

(二)测试结果分析

(根据以下表格,如实填写并签名)

bug个数 错误类型 错误原因分析 是否修改 设计者签名

1 与count声名中的类型不匹配 少了void count() 是

2 错误 jiac 19: 表达式语法错在 main 函数中 Scanf中少了&s 是

4 错误 jiac 31: do语句中必须有while关键字在 main 函数中 没写while 是

5 错误 jiac 30: 未定义的符号's'在 main 函数中 上面没int I; 是

6 错误 1c 335: 表达式语法错在 count 函数中 Switch() 括号里没有变量 是

7

五、实训总结

(总结实训过程中的所使用的知识和已实现的功能,总结自己掌握理论知识和动手能力的程度,提出自己的不足之处及改进措施)

通过这一周的实训。我们充分运用了所学的东西编出了解决实际问题的程序。我们运用了函数的调用,循环,定义,比较,查找,删除等知识。通过实际动手,我更加深入的了解了课本上的知识。同时提高了我的动手能力。

实训中我找到了我许多的不足,以前我遇到不董的就会直接去问别人,不独自思考。试训中我学会了独自思考和团队合作。虽然我在编程当中遇到许多问题,但经过独自思考和学习解决了问题。最后编出了管理程序。

C语言学生学分管理程序代码

typedef struct student

{ char num[11],name[7],class[10];

int jichu,renwen,xuanxiu,zhuanye,shiyan;

}STU;

STU st[37];

static int n;

void menu();

void input();

void print();

void query();

void modi();

void del();

void count();

main()

{ int s;

do{

menu();

printf("\n\t\t\t\t 请选择:");

scanf("%d",&s);

switch(s)

{ case 0:break;

case 1:input();break;

case 2:print();break;

case 3:query();break;

case 4:modi();break;

case 5:del();break;

case 6:count();break;

default:printf("选择无效!");

}

}while(s!=0);

getch();

}

void menu()

{ clrscr();

printf("\t\t\t\n");

printf("\t\t\t欢迎您的使用\n");

printf("\t\t\t学生学分管理程序\n");

printf("\t\t\t 1-登记学生学分 \n");

printf("\t\t\t 2-显示学生学分 \n");

printf("\t\t\t 3-查询学生学分 \n");

printf("\t\t\t 4-修改学生学分 \n");

printf("\t\t\t 5-删除学生学分 \n");

printf("\t\t\t 6-统计学生学分 \n");

printf("\t\t\t 0-退出 \n");

printf("\t\t\t\n");

}

void input()

{ do

{ printf("请输入学生信息:学号 姓名 班级 基础课 专业课 选修课 人文课 实验课\n");

scanf("%s%s%s%d%d%d%d%d",st[n]num,st[n]name,st[n]class,&st[n]jichu,&st[n]zhuanye,&st[n]xuanxiu,&st[n]renwen,&st[n]shiyan);

n++;

printf("是否继续输入?(n-退出,任意键继续):");

}while(getche()!='n');

}

void print()

{ int i;

printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");

for(i=0;i<n;i++)

printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i]num,st[i]name,st[i]class,st[i]jichu,st[i]zhuanye,st[i]xuanxiu,st[i]renwen,st[i]shiyan);

getch();

}

void menu1()

{ clrscr();

printf("\t\t\t\n");

printf("\t\t\t查询模块\n");

printf("\t\t\t 1-按学号查询 \n");

printf("\t\t\t 2-按姓名查询 \n");

printf("\t\t\t 3-按班级查询 \n");

printf("\t\t\t 0-退出 \n");

printf("\t\t\t\n");

}

void query1()

{ char sn[11];

int i;

printf("请输入要查询的学号:");

scanf("%s",sn);

for(i=0;i<n;i++)

if(strcmp(sn,st[i]num)==0)

{printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");

printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i]num,st[i]name,st[i]class,st[i]jichu,st[i]zhuanye,st[i]xuanxiu,st[i]renwen,st[i]shiyan);

printf("\按任意键继续");

break;

}

else printf("\n对不起!没有该学号,任意键继续");

getch();

}

void query2()

{ char sn[7];

int i;

printf("请输入要查询的姓名:");

scanf("%s",sn);

for(i=0;i<n;i++)

if(strcmp(sn,st[i]name)==0)

{printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");

printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i]num,st[i]name,st[i]class,st[i]jichu,st[i]zhuanye,st[i]xuanxiu,st[i]renwen,st[i]shiyan);

printf("\按任意键继续");

break;

}else printf("\n对不起!没有该姓名,任意键继续");

getch();

}

void query3()

{ char sn[10];

int i;

printf("请输入要查询的班级:");

scanf("%s",sn);

for(i=0;i<n;i++)

if(strcmp(sn,st[i]class)==0)

{printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");

printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i]num,st[i]name,st[i]class,st[i]jichu,st[i]zhuanye,st[i]xuanxiu,st[i]renwen,st[i]shiyan);

printf("\按任意键继续");

break;

}

else printf("\n对不起!没有该班,任意键继续");

getch();

}

void query()

{ int s;

do{

menu1();

printf("\n\t\t\t\t 请选择:");

scanf("%d",&s);

switch(s)

{ case 0:break;

case 1:query1();break;

case 2:query2();break;

case 3:query3();break;

default:printf("选择无效!");

}

}while(s!=0);

getch();

}

void menu2()

{ clrscr();

printf("\t\t\t\n");

printf("\t\t\t修改模块\n");

printf("\t\t\t 1-按学号修改 \n");

printf("\t\t\t 2-按姓名修改 \n");

printf("\t\t\t 3-按班级修改 \n");

printf("\t\t\t 0-退出 \n");

printf("\t\t\t\n");

}

void modi1()

{ char sn[11];

int i;

printf("请输入要修改学分学生的学号:");

scanf("%s",sn);

for(i=0;i<n;i++)

if(strcmp(sn,st[i]num)==0)

{printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");

printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i]num,st[i]name,st[i]class,st[i]jichu,st[i]zhuanye,st[i]xuanxiu,st[i]renwen,st[i]shiyan);

{printf("请输入学生学分信息:学号 姓名 班级 基础课 专业课 选修课 人文课 实验课\n");

scanf("%s%s%s%d%d%d%d%d",st[i]num,st[i]name,st[i]class,&st[i]jichu,&st[i]zhuanye,&st[i]xuanxiu,&st[i]renwen,&st[i]shiyan);

printf("是否继续输入?(n-退出,任意键继续):");

}while(getche()!='n');

break;

}

getch();

}

void modi2()

{ char sn[7];

int i;

printf("请输入要修改学分学生的姓名:");

scanf("%s",sn);

for(i=0;i<n;i++)

if(strcmp(sn,st[i]name)==0)

{printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");

printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i]num,st[i]name,st[i]class,st[i]jichu,st[i]zhuanye,st[i]xuanxiu,st[i]renwen,st[i]shiyan);

{printf("请输入学生学分信息:学号 姓名 班级 基础课 专业课 选修课 人文课 实验课\n");

scanf("%s%s%s%d%d%d%d%d",st[i]num,st[i]name,st[i]class,&st[i]jichu,&st[i]zhuanye,&st[i]xuanxiu,&st[i]renwen,&st[i]shiyan);

printf("是否继续输入?(n-退出,任意键继续):");

}while(getche()!='n');

break;

}

getch();

}

void modi3()

{ char sn[10];

int i;

printf("请输入要修改学分学生的班级:");

scanf("%s",sn);

for(i=0;i<n;i++)

if(strcmp(sn,st[i]class)==0)

{printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");

printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i]num,st[i]name,st[i]class,st[i]jichu,st[i]zhuanye,st[i]xuanxiu,st[i]renwen,st[i]shiyan);

{printf("请输入学生学分信息:学号 姓名 班级 基础课 专业课 选修课 人文课 实验课\n");

scanf("%s%s%s%d%d%d%d%d",st[i]num,st[i]name,st[i]class,&st[i]jichu,&st[i]zhuanye,&st[i]xuanxiu,&st[i]renwen,&st[i]shiyan);

printf("是否继续输入?(n-退出,任意键继续):");

} while(getche()!='n');

break;

}

getch();

}

void modi()

{ int s;

do{

menu2();

printf("\n\t\t\t\t 请选择:");

scanf("%d",&s);

switch(s)

{ case 0:break;

case 1:modi1();break;

case 2:modi2();break;

case 3:modi3();break;

default:printf("选择无效!");

}

}while(s!=0);

getch();

}

void menu3()

{ clrscr();

printf("\t\t\t\n");

printf("\t\t\t删除模块\n");

printf("\t\t\t 1-按学号删除 \n");

printf("\t\t\t 2-按姓名删除 \n");

printf("\t\t\t 3-按班级删除 \n");

printf("\t\t\t 0-退出 \n");

printf("\t\t\t\n");

}

void del1()

{ char sn[11];

int i,j;

printf("请输入要删除学分学生的学号:");

scanf("%s",sn);

for(i=0;i<n;i++)

if(strcmp(sn,st[i]num)==0)

{printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");

printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i]num,st[i]name,st[i]class,st[i]jichu,st[i]zhuanye,st[i]xuanxiu,st[i]renwen,st[i]shiyan);

printf("\n是否删除(任意键确认,n\取消)");

if(getche()!='n');

{if(i!=n-1);

for(j=i;j<n-1;j++)

st[j]=st[j+1];

n--;

printf("\n该记录已删除");

getch();

break ;

}

}

else printf("\n对不起!没有该学号,任意键继续");

}

void del2()

{ char sn[7];

int i,j;

printf("请输入要删除学分学生的姓名:");

scanf("%s",sn);

for(i=0;i<n;i++)

if(strcmp(sn,st[i]name)==0)

{printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");

printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i]num,st[i]name,st[i]class,st[i]jichu,st[i]zhuanye,st[i]xuanxiu,st[i]renwen,st[i]shiyan);

printf("\n是否删除(任意键确认,n\取消)");

if(getche()!='n');

{if(i!=n-1);

for(j=i;j<n-1;j++)

st[j]=st[j+1];

n--;

printf("\n该记录已删除");

getch();

break ;

}

}

else printf("\n对不起!没有该学号,任意键继续");

}

void del3()

{ char sn[10];

int i,j;

printf("请输入要删除学分学生的班级:");

scanf("%s",sn);

for(i=0;i<n;i++)

if(strcmp(sn,st[i]class)==0)

{printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");

printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i]num,st[i]name,st[i]class,st[i]jichu,st[i]zhuanye,st[i]xuanxiu,st[i]renwen,st[i]shiyan);

printf("\n是否删除(任意键确认,n\取消)");

if(getche()!='n');

{if(i!=n-1);

for(j=i;j<n-1;j++)

st[j]=st[j+1];

n--;

printf("\n该记录已删除");

getch();

break ;

}

}

else printf("\n对不起!没有该学号,任意键继续");

}

void del()

{ int s;

do{

menu3();

printf("\n\t\t\t\t 请选择:");

scanf("%d",&s);

switch(s)

{ case 0:break;

case 1:del1();break;

case 2:del2();break;

case 3:del3();break;

default:printf("选择无效!");

}

}while(s!=0);

getch();

}

void menu4()

{ clrscr();

printf("\t\t\t\n");

printf("\t\t\t统计模块\n");

printf("\t\t\t 1- 可升学的学生 \n");

printf("\t\t\t 2-需补考基础课的 \n");

printf("\t\t\t 3-需补考专业课的 \n");

printf("\t\t\t 4-需补考选修课的 \n");

printf("\t\t\t 5-需补考人文课的 \n");

printf("\t\t\t 6-需补考实验课的 \n");

printf("\t\t\t 0-退出 \n");

printf("\t\t\t\n");

}

void count1()

{ int i;

printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");

for(i=0;i<n;i++)

if(st[i]jichu>=60&st[i]zhuanye>=60&st[i]xuanxiu>=60&st[i]renwen>=60&st[i]shiyan>=60)

printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i]num,st[i]name,st[i]class,st[i]jichu,st[i]zhuanye,st[i]xuanxiu,st[i]renwen,st[i]shiyan);

getch();

}

void count2()

{ int i;

printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");

for(i=0;i<n;i++)

if(st[i]jichu<60&st[i]zhuanye>=60&st[i]xuanxiu>=60&st[i]renwen>=60&st[i]shiyan>=60)

printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i]num,st[i]name,st[i]class,st[i]jichu,st[i]zhuanye,st[i]xuanxiu,st[i]renwen,st[i]shiyan);

getch();

}void count3()

{ int i;

printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");

for(i=0;i<n;i++)

if(st[i]jichu>=60&st[i]zhuanye<60&st[i]xuanxiu>=60&st[i]renwen>=60&st[i]shiyan>=60)

printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i]num,st[i]name,st[i]class,st[i]jichu,st[i]zhuanye,st[i]xuanxiu,st[i]renwen,st[i]shiyan);

getch();

}

void count4()

{ int i;

printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");

for(i=0;i<n;i++)

if(st[i]jichu>=60&st[i]zhuanye>=60&st[i]xuanxiu<60&st[i]renwen>=60&st[i]shiyan>=60)

printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i]num,st[i]name,st[i]class,st[i]jichu,st[i]zhuanye,st[i]xuanxiu,st[i]renwen,st[i]shiyan);

getch();

}

void count5()

{ int i;

printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");

for(i=0;i<n;i++)

if(st[i]jichu>=60&st[i]zhuanye>=60&st[i]xuanxiu>=60&st[i]renwen<60&st[i]shiyan>=60)

printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i]num,st[i]name,st[i]class,st[i]jichu,st[i]zhuanye,st[i]xuanxiu,st[i]renwen,st[i]shiyan);

getch();

}

void count6()

{ int i;

printf("\n序号\t学号\t 姓名\t班级\t基础课\t专业课\t选修课\t人文课\t实验课\n");

for(i=0;i<n;i++)

if(st[i]jichu>=60&st[i]zhuanye>=60&st[i]xuanxiu>=60&st[i]renwen>=60&st[i]shiyan<60)

printf("%2d %7s %7s %5s %4d\t%4d\t%4d\t%4d\t%4d\n",i+1,st[i]num,st[i]name,st[i]class,st[i]jichu,st[i]zhuanye,st[i]xuanxiu,st[i]renwen,st[i]shiyan);

getch();

}

void count()

{ int s;

do{

menu4();

printf("\n\t\t\t\t 请选择:");

scanf("%d",&s);

switch(s)

{ case 0:break;

case 1:count1();break;

case 2:count2();break;

case 3:count3();break;

case 4:count4();break;

case 5:count5();break;

case 6:count6();break;

default:printf("选择无效!");

}

}while(s!=0);

getch();

}

; 本程序通过编译,运行正确

Code Segment

Assume CS:Code,DS:Code

; -----------------------------------------

; 功能:显示指定地址(Str_Addr)的字符串

; 入口:

; Str_Addr=字符串地址(要求在数据段)

; 用法: Output Str_Addr

; 用法举例:Output PromptStr

Output MACRO Str_Addr

push dx

lea dx,Str_Addr

mov ah,9

int 21h

pop dx

EndM

; -----------------------------------------

; 功能:输出一个字符

; 入口:dl=要显示的字符

Output_Chr proc Near

push ax

mov ah,02h

int 21h

pop ax

ret

Output_Chr endp

; -----------------------------------------

; 功能:输出回车换行

Output_CTLF proc Near

push ax

push dx

mov ah,02h

mov dl,0dh

int 21h

mov dl,0ah

int 21h

pop dx

pop ax

ret

Output_CTLF endp

; -----------------------------------------

; 功能:取光标位置

; 入口:无

; 出口:DH=行号,DL=列号

GetCursor Proc Near

PUSH AX

PUSH BX

PUSH CX

XOR BX,BX

MOV AH,3

INT 10H

MOV Cursor_Row,DH

MOV Cursor_Col,DL

POP CX

POP BX

POP AX

RET

Cursor_Row DB

Cursor_Col DB

GetCursor EndP

; -----------------------------------------

; 功能:置光标位置

; 入口:Cursor_Row=行坐标; Cursor_Col: 列坐标)

SetCursor Proc Near

PUSH CX

PUSH BX

PUSH AX

MOV DH,Cursor_Row

MOV DL,Cursor_Col

XOR BX,BX

MOV AH,2

INT 10H

POP AX

POP BX

POP CX

RET

SetCursor EndP

; -----------------------------------------

; 功能:将AL中的低4位二进制数转换成十六进制显示的ASCII码

; 入口:AL

; 出口:AL=转换后的ASCII码

AL_ASCII Proc Near

cmp al,10 ;AL<10

jb @@To_ASCII ;AL<10,按数字处理

add al,7 ;AL>=10,按大写字母处理

@@To_ASCII: add al,'0' ;转换成相应的数字或大写字母

ret

AL_ASCII EndP

; -----------------------------------------

; 功能:将AL中的字节数据转换成十六进制显示的ASCII码

; 入口:AL

; 出口:AX=转换后的ASCII码

Byte_ASCII Proc Near

push cx

mov cx,4

xor ah,ah ;将AH置0

shl ax,cl ;将AX左移4位

shr al,cl ;将AL右移4位

xchg ah,al

call AL_ASCII ;调用子程序,将AL中的值转换成相应的ASCII码

xchg ah,al

call AL_ASCII

xchg ah,al

pop cx

ret

Byte_ASCII EndP

; -----------------------------------------

; 功能:将AL中的字节数据转换成十六进制显示的ASCII码,并在当前光标位置显示

; 入口:AL

; 出口:AX=转换后的ASCII码

ByteD_ASCII Proc Near

push dx

push ax

call Byte_ASCII ;将AL中的字节数转换成十六进制显示的ASCII码

cmp al,'9'

jbe $+7

mov dl,'0'

call Output_Chr ;显示一个字符

mov dl,al

call Output_Chr ;显示一个字符

mov dl,ah

call Output_Chr ;显示一个字符

mov dl,'H'

call Output_Chr ;显示一个字符

pop ax

pop dx

ret

ByteD_ASCII EndP

; -----------------------------------------

; 功能:将AX中的字数据转换成十六进制显示的ASCII码,并在当前光标位置显示

; 入口:AX

WordD_ASCII Proc Near

push dx

push ax

push ax

xchg ah,al

call Byte_ASCII ;将AL中的字节数转换成十六进制显示的ASCII码

cmp al,'9'

jbe $+7

mov dl,'0'

call Output_Chr ;显示一个字符

mov dl,al

call Output_Chr ;显示一个字符

mov dl,ah

call Output_Chr ;显示一个字符

pop ax

call Byte_ASCII ;将AL中的字节数转换成十六进制显示的ASCII码

mov dl,al

call Output_Chr ;显示一个字符

mov dl,ah

call Output_Chr ;显示一个字符

mov dl,'H'

call Output_Chr ;显示一个字符

pop ax

pop dx

ret

WordD_ASCII EndP

; -----------------------------------------

; 功能:输入内存单元的段地址或偏移地址

; 入口参数:无

; 出口参数:若直接回车(没有输入地址)或地址中含有无效字符,进位标志置位;

; 否则,进位标志清位,BX=有效地址

Input_Addr Proc Near

lea dx,Buffer ;字符串缓冲区地址

mov ah,0ah

int 21h

lea si,Buffer[1] ;实际输入的字符数地址

lodsb ;读入实际输入的字符数

test al,0ffh

jz @@Invalid

xor bx,bx ;有效地址初值

mov cl,al

xor ch,ch

@@Checking: lodsb ;读入一个字符

cmp al,'0' ;字符<'0'?

jb @@Letter ;是,判断是否字母

cmp al,'9' ;字符<='9'?

jbe @@Valid ;是,累加有效地址

@@Letter: mov ah,al

and ah,0dfh

cmp ah,'A' ;字符<'A'?

jb @@Invalid ;是,无效字符

cmp ah,'Z' ;字符<'Z'?

ja @@Invalid ;是,无效字符

@@Valid: and al,0fh

push cx

mov cx,4

shl bx,cl ;有效地址左移4位

or bl,al ;加上低4位

pop cx

loop @@Checking ;下一位

clc ;进位标志清位

ret

@@Invalid: stc ;进位标志置位

ret

Input_Addr EndP

; -----------------------------------------

Segment_Str db 'Please input a segment address(heximal): $'

Offset_Str db 13,10,'Please input a offset address(heximal): $'

Memory_Addr dd ;内存地址。偏移地址在前、段地址在后

Press_Key db 7,13,10,13,10,'Press any key to exit$'

Start: push cs

pop ds

push cs

pop es ;使数据段、附加段与代码段同段

cld

Output Segment_Str ;提示输入段地址

call GetCursor ;取光标位置

@@Segment: call SetCursor ;置光标位置

call Input_Addr ;输入地址

jc @@Segment ;若地址无效,重新输入

mov word ptr Memory_Addr[2],bx ;保存段地址

Output Offset_Str ;提示输入偏移地址

call GetCursor

@@Offset: call SetCursor

call Input_Addr

jc @@Offset

mov word ptr Memory_Addr,bx ;保存偏移地址

call Output_CTLF ;输出一个回车、换行

call Output_CTLF

mov dl,'['

call Output_Chr

mov ax,word ptr Memory_Addr[2] ;取内存单元段地址

call WordD_ASCII ;将AX中的字数据转换成十六进制显示的ASCII码,并在当前光标位置显示

mov dl,':'

call Output_Chr

mov ax,word ptr Memory_Addr ;取内存单元偏移地址

call WordD_ASCII

mov dl,']'

call Output_Chr

mov dl,'='

call Output_Chr

lds si,Memory_Addr ;装入有效地址

lodsb ;读入这个内存单元的一个字节

push cs

pop ds

call ByteD_ASCII ;将AL中的字节数据转换成十六进制显示的ASCII码

Exit_Key: Output Press_Key

mov ah,1

int 21h

Exit_Proc: mov ah,4ch ;结束程序

int 21h

Buffer db 5 ;段地址、偏移地址输入缓冲区

Code ENDS

END Start ;编译到此结束

#include<stdioh> /引用库函数/

#include<stdlibh>

#include<ctypeh>

#include<stringh>

typedef struct /定义结构体数组/

{

char num[10]; /学号/

char name[20]; /姓名/

int score; /成绩/

}Student;

Student stu[80]; /结构体数组变量/

int menu_select() /菜单函数/

{

char c;

do{

system("cls"); /运行前清屏/

printf("\t\tStudents' Grade Management System\n"); /菜单选择/

printf("\t\t | 1 Input Records |\n");

printf("\t\t | 2 Display All Records |\n");

printf("\t\t | 3 Sort |\n");

printf("\t\t | 4 Insert a Record |\n");

printf("\t\t | 5 Delete a Record |\n");

printf("\t\t | 6 Query |\n");

printf("\t\t | 7 Statistic |\n");

printf("\t\t | 8 Add Records from a Text File|\n");

printf("\t\t | 9 Write to a Text file |\n");

printf("\t\t | 0 Quit |\n");

printf("\t\t\n");

printf("\t\t\tGive your Choice(0-9):");

c=getchar(); /读入选择/

}while(c<'0'||c>'9');

return(c-'0'); /返回选择/

}

int Input(Student stud[],int n) /输入若干条记录/

{int i=0;

char sign,x[10]; /x[10]为清除多余的数据所用/

while(sign!='n'&&sign!='N') /判断/

{ printf("\t\t\tstudent's num:"); /交互输入/

scanf("\t\t\t%s",stud[n+i]num);

printf("\t\t\tstudent's name:");

scanf("\t\t\t%s",stud[n+i]name);

printf("\t\t\tstudent's score:");

scanf("\t\t\t%d",&stud[n+i]score);

gets(x); /清除多余的输入/

printf("\t\t\tany more records(Y/N)");

scanf("\t\t\t%c",&sign); /输入判断/

i++;

}

return(n+i);

}

void Display(Student stud[],int n) /显示所有记录/

{

int i;

printf("\t\t\t-----------------------------------\n"); /格式头/

printf("\t\t\tnumber name score\n");

printf("\t\t\t-----------------------------------\n");

for(i=1;i<n+1;i++) /循环输入/

{

printf("\t\t\t%-16s%-15s%d\n",stud[i-1]num,stud[i-1]name,stud[i-1]score);

if(i>1&&i%10==0) /每十个暂停/

{printf("\t\t\t-----------------------------------\n"); /格式/

printf("\t\t\t");

system("pause");

printf("\t\t\t-----------------------------------\n");

}

}

printf("\t\t\t");

system("pause");

}

void Sort_by_num(Student stud[],int n) /按学号排序/

{ int i,j,p,q,s;

char t[10];

for(i=0;i<n-1;i++) /冒泡法排序/

for(j=0;j<n-1-i;j++)

if(strcmp(stud[j]num,stud[j+1]num)>0)

{strcpy(t,stud[j+1]num);

strcpy(stud[j+1]num,stud[j]num);

strcpy(stud[j]num,t);

strcpy(t,stud[j+1]name);

strcpy(stud[j+1]name,stud[j]name);

strcpy(stud[j]name,t);

p=&stud[j+1]score;

q=&stud[j]score;

s=p;

p=q;

q=s;

}

}

int Insert_a_record(Student stud[],int n) /插入一条记录/

{char x[10]; /清除多余输入所用/

printf("\t\t\tstudent's num:"); /交互式输入/

scanf("\t\t\t%s",stud[n]num);

printf("\t\t\tstudent's name:");

scanf("\t\t\t%s",stud[n]name);

printf("\t\t\tstudent's score:");

scanf("\t\t\t%d",&stud[n]score);

gets(x);

n++;

Sort_by_num(stud,n); /调用排序函数/

printf("\t\t\tInsert Successed!\n"); /返回成功信息/

return(n);

}

int Delete_a_record(Student stud[],int n) /按姓名查找,删除一条记录/

{ char s[20];

int i=0,j;

printf("\t\t\ttell me his(her) name:"); /交互式问寻/

scanf("%s",s);

while(strcmp(stud[i]name,s)!=0&&i<n) i++; /查找判断/

if(i==n)

{ printf("\t\t\tnot find!\n"); /返回失败信息/

return(n);

}

for(j=i;j<n-1;j++) /删除 *** 作/

{

strcpy(stud[j]num,stud[j+1]num);

strcpy(stud[j]name,stud[j+1]name);

stud[j]score=stud[j+1]score;

}

printf("\t\t\tDelete Successed!\n"); /返回成功信息/

return(n-1);

}

void Query_a_record(Student stud[],int n) /查找并显示一个记录/

{ char s[20];

int i=0;

printf("\t\t\tinput his(her) name:"); /交互式输入/

scanf("\t\t\t%s",s);

while(strcmp(stud[i]name,s)!=0&&i<n) i++; /查找判断/

if(i==n)

{ printf("\t\t\tnot find!\n"); /输入失败信息/

return;

}

printf("\t\t\this(her) number:%s\n",stud[i]num); /输出该学生信息/

printf("\t\t\this(her) score:%d\n",stud[i]score);

}

void Statistic(Student stud[],int n) /新增功能,输出统计信息/

{ int i,j=0,k=0,sum=0;

float aver; /成绩平均值/

for(i=0;i<n;i++) /循环输入判断/

{

sum+=stud[i]score;

if(stud[j]score>stud[i]score) j=i;

if(stud[k]score<stud[i]score) k=i;

}

aver=10sum/n;

printf("\t\t\tthere are %d records\n",n); /总共记录数/

printf("\t\t\tthe hignest score:\n"); /最高分/

printf("\t\t\tnumber:%s name:%s score:%d\n",stud[j]num,stud[j]name,stud[j]score);

printf("\t\t\tthe lowest score:\n"); /最低分/

printf("\t\t\tnumber:%s name:%s score:%d\n",stud[k]num,stud[k]name,stud[k]score);

printf("\t\t\tthe average score is %52f\n",aver); /平均分/

}

int AddfromText(Student stud[],int n) /从文件中读入数据/

{ int i=0,num;

FILE fp; /定义文件指针/

char filename[20]; /定义文件名/

printf("\t\t\tInput the filename:");

scanf("\t\t\t%s",filename); /输入文件名/

if((fp=fopen(filename,"rb"))==NULL) /打开文件/

{ printf("\t\t\tcann't open the file\n"); /打开失败信息/

printf("\t\t\t");

system("pause");

return(n);

}

fscanf(fp,"%d",&num); /读入总记录量/

while(i<num) /循环读入数据/

{

fscanf(fp,"%s%s%d",stud[n+i]num,stud[n+i]name,&stud[n+i]score);

i++;

}

n+=num;

fclose(fp); /关闭文件/

printf("\t\t\tSuccessed!\n");

printf("\t\t\t");

system("pause");

return(n);

}

void WritetoText(Student stud[],int n) /将所有记录写入文件/

{

int i=0;

FILE fp; /定义文件指针/

char filename[20]; /定义文件名/

printf("\t\t\tWrite Records to a Text File\n"); /输入文件名/

printf("\t\t\tInput the filename:");

scanf("\t\t\t%s",filename);

if((fp=fopen(filename,"w"))==NULL) /打开文件/

{

printf("\t\t\tcann't open the file\n");

system("pause");

return;

}

fprintf(fp,"%d\n",n); /循环写入数据/

while(i<n)

{

fprintf(fp,"%-16s%-15s%d\n",stud[i]num,stud[i]name,stud[i]score);

i++;

}

fclose(fp); /关闭文件/

printf("Successed!\n"); /返回成功信息/

}

void main() /主函数/

{

int n=0;

for(;;)

{

switch(menu_select()) /选择判断/

{

case 1:

printf("\t\t\tInput Records\n"); /输入若干条记录/

n=Input(stu,n);

break;

case 2:

printf("\t\t\tDisplay All Records\n"); /显示所有记录/

Display(stu,n);

break;

case 3:

printf("\t\t\tSort\n");

Sort_by_num(stu,n); /按学号排序/

printf("\t\t\tSort Suceessed!\n");

printf("\t\t\t");

system("pause");

break;

case 4:

printf("\t\t\tInsert a Record\n");

n=Insert_a_record(stu,n); /插入一条记录/

printf("\t\t\t");

system("pause");

break;

case 5:

printf("\t\t\tDelete a Record\n");

n=Delete_a_record(stu,n); /按姓名查找,删除一条记录/

printf("\t\t\t");

system("pause");

break;

case 6:

printf("\t\t\tQuery\n");

Query_a_record(stu,n); /查找并显示一个记录/

printf("\t\t\t");

system("pause");

break;

case 7:

printf("\t\t\tStatistic\n");

Statistic(stu,n); /新增功能,输出统计信息/

printf("\t\t\t");

system("pause");

break;

case 8:

printf("\t\t\tAdd Records from a Text File\n");

n=AddfromText(stu,n); /新增功能,输出统计信息/

break;

case 9:

printf("\t\t\tWrite to a Text file\n");

WritetoText(stu,n); /循环写入数据/

printf("\t\t\t");

system("pause");

break;

case 0:

printf("\t\t\tHave a Good Luck,Bye-bye!\n"); /结束程序/

printf("\t\t\t");

system("pause");

exit(0);

}

}

}

以上就是关于java程序设计课程介绍全部的内容,包括:java程序设计课程介绍、C语言程序课程设计、c语言程序课程设计等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9452318.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存