|
|

楼主 |
发表于 2012-12-11 20:34:40
|
显示全部楼层
仰望天上的光 发表于 2012-12-11 19:59
1. 可以直接用C调用windows API显示界面,但是要涉及很多的繁杂细节,为了写这么一个小系统去学windows API ...
同感。。现在想用C#来完成编译好的C的代码- #include<stdio.h>
- #include<stdlib.h>
- #include<malloc.h>
- #define L sizeof(struct student)
- struct student //结构体
- {
- long number; //学号
- char name[10]; //姓名
- char sex; //性别
- double escore; //英语成绩
- double cscore; //C语言成绩
- student *next;
- };
- int n,people=0;
- struct student *creat() //学生录入建立链表
- {
- student *head1;
- student *p1,*p2;
- n=0;
- int i=1;
- p1=(student *)malloc(L);
- head1=p1;
- people=people+1;
- printf("正在录入第%d个学生的信息\n",people);
- printf("输入学号:");
- scanf("%ld",&p1->number);
- printf("输入姓名:");
- scanf("%s",p1->name);
- printf("输入性别(男m/女w):");
- scanf("%s",&p1->sex);
- printf("输入英语成绩:");
- scanf("%ld",&p1->escore);
- printf("输入C语言成绩:");
- scanf("%ld",&p1->cscore);
- printf("在输入学号处输入0返回主菜单\n\n");
- p2=p1;
- while(p1->number!=0)
- {
- if(n==0)
- {
- head1=p1;
- n=1;
- }
- else p2->next=p1;
- p2=p1;people=people+1;
- p1=(student *)malloc(L);
- printf("正在录入第%d个学生的信息\n",people);
- printf("输入学号:");
- scanf("%ld",&p1->number);
- if(p1->number==0) break;
- printf("输入姓名:");
- scanf("%s",p1->name);
- printf("输入性别:");
- scanf("%s",&p1->sex);
- printf("输入英语成绩:");
- scanf("%ld",&p1->escore);
- printf("输入C语言成绩:");
- scanf("%ld",&p1->cscore);
- printf("在输入学号处输入0返回主菜单\n\n");
- }
- p2->next=NULL;
- return(head1);
- }
- void input(struct student *head)//学生录入保存文件
- {
- system("cls");
- FILE *fp;
- printf("\t\t\t\t************\n");
- printf("\t\t\t\t* 录入系统 *\n");
- printf("\t\t\t\t************\n");
- struct student *p1=head;
- if((fp=fopen("c:\\xx.dat","wb+"))==NULL)
- {
- printf("文档正在被应用");
- return;
- }
- head=creat();
- p1=head;
- while(p1!=NULL)
- {
- fwrite(p1,L,1,fp);
- p1=p1->next;
- }
- fclose(fp);
- }
- void lookover(struct student *head)//浏览系统输出
- {
- system("cls");
- struct student *p1;
- p1=(student *)malloc(L);
- printf("\t\t\t\t************\n");
- printf("\t\t\t\t* 浏览系统 *\n");
- printf("\t\t\t\t************\n");
- FILE *fp;
- fp=fopen("c:\\xx.dat","rb");
- if(fp==NULL)
- {
- printf("不能打开所选文件");
- return;
- }
- rewind(fp);
- while(p1!=NULL)
- {
- fread(p1,L,1,fp);
- printf("学号: %-6ld",p1->number);
- printf("姓名: %-7s",p1->name);
- printf("性别: %-5s",&p1->sex);
- printf("英语成绩: %-6ld",p1->escore);
- printf("C语言成绩: %-7ld\n\n",p1->cscore);
- p1=p1->next;
- }
- printf("输入任意数返回主菜单");
- char a;scanf("%s",&a);
- fclose(fp);
- return;
- }
- void lookout(struct student *head)//学生查询
- {
- system("cls");
- struct student *p1;
- int flag=1;
- p1=(student *)malloc(L);
- printf("\t\t\t\t************\n");
- printf("\t\t\t\t* 查询系统 *\n");
- printf("\t\t\t\t************\n");
- FILE *fp;
- fp=fopen("c:\\xx.dat","rb");
- if(fp==NULL)
- {
- printf("不能打开所选文件");
- return;
- }
- rewind(fp);
- int number;
- printf("请输入想要查询的学号");
- scanf("%d",&number);
- printf("\n");
- while(p1!=NULL&&flag)
- {
- fread(p1,L,1,fp);
- if(p1->number==number)
- {
- printf("学号: %-5ld",p1->number);
- printf("姓名: %-4s",p1->name);
- printf("性别: %-3s",&p1->sex);
- printf("英语成绩: %-4ld",p1->escore);
- printf("C语言成绩: %-4ld\n\n",p1->cscore);
- flag=0;
- }
- else p1=p1->next;
- }
- if(p1==NULL) printf("没有找到相应信息\n");
- printf("输入任意数返回主菜单");
- char a;scanf("%s",&a);
- fclose(fp);
- return;
- }
- void cutoff(struct student *head)//学生删除 数据多的时候 从第二项到删除的前一项的数据没有
- {
- system("cls");
- struct student *p1,*p2,*h;
- int flag=1;
- p1=(student *)malloc(L);
- printf("\t\t\t\t************\n");
- printf("\t\t\t\t*删除系统 *\n");
- printf("\t\t\t\t************\n");
- FILE *fp;
- fp=fopen("c:\\xx.dat","rb+");
- if(fp==NULL)
- {
- printf("不能打开所选文件");
- return;
- }
- rewind(fp);
- int number;
- printf("请输入想要删除的学号");
- scanf("%d",&number);
- h=p1;
- p2=p1;
- while(p1!=NULL&&flag)
- {
- fread(p1,L,1,fp);
- if(p1->number==number)
- {
- if(p1==head)
- {
- head=p1->next;free(p1);
- }
- else
- {
- p2->next=p1->next;
- }
- flag=0;
- printf("删除成功\n");
- people=people-1;
- }
- else
- {
- p2=p1;p1=p1->next;
- }
- }
- if(flag) printf("没有找到可以删除的数据\n");
- fclose(fp);
- fp=fopen("c:\\xx.dat","rb+");
- if(fp==NULL)
- {
- printf("不能打开所选文件");
- return;
- }
- //fseek(fp,(count-2)*sizeof(struct student),0);//什么意思
- fseek(fp,L,0);
- while(p2!=NULL)
- {
- fwrite(p2,L,1,fp);
- p2=p2->next;
- }
- printf("输入任意数返回主菜单");
- char a;scanf("%s",&a);
- fclose(fp);
- return;
- }
- void addup(struct student *head)//统计系统输出
- {
- system("cls");
- struct student *p1;
- p1=(student *)malloc(L);
- printf("\t\t\t\t************\n");
- printf("\t\t\t\t* 统计系统 *\n");
- printf("\t\t\t\t************\n");
- FILE *fp;
- fp=fopen("c:\\xx.dat","rb");
- if(fp==NULL)
- {
- printf("不能打开所选文件");
- return;
- }
- rewind(fp);
- double epeople=0,cpeople=0,people=0;
- while(p1!=NULL)
- {
- fread(p1,L,1,fp);
- epeople=epeople+p1->escore;
- cpeople=cpeople+p1->cscore;
- p1=p1->next;
- people++;
- }
- printf("英语成绩%-6ld",epeople);
- printf("C语言%-6ld",cpeople);
- printf("输入任意数返回主菜单");
- char a;scanf("%s",&a);
- fclose(fp);
- return;
- }
- int ext()//退出
- {
- printf("\t\t\t\t************\n");
- printf("\t\t\t\t*退出系统 *\n");
- printf("\t\t\t\t************\n");
- printf("输入数字0确认退出系统");
- int i;
- scanf("%d",&i);
- if(i==0)return(0);
- else return(1);
- }
- int main()
- {
- void input(struct student *p);
- struct student *head; //定义结构体的指针
- int flag=1;char n;
- int k,a,b;
- for(k=0;k<=2;)
- {
- printf("用户名:");
- scanf("%d",&a);
- printf("密码:");
- scanf("%d",&b);
- if(a==1&&b==1)
- {
- while(flag)//教师系统
- {
- system("cls");//清屏
- printf("\t\t\t\t************\n");
- printf("\t\t\t\t* 教师系统 *\n");
- printf("\t\t\t\t************\n");
- printf("\t\t\t*****************************\n");
- printf("\t\t\t* 1----------学生录入\t*****\n");
- printf("\t\t\t* 2----------学生浏览\t*****\n");
- printf("\t\t\t* 3----------学生查询\t*****\n");
- printf("\t\t\t* 4----------学生删除\t*****\n");
- printf("\t\t\t* 5----------成绩统计\t*****\n");
- printf("\t\t\t* 0----------退出系统\t*****\n");
- printf("\t\t\t*****************************\n");
- printf("请选择(0----5)选择功能操作\n");
- scanf("%d",&n);
- switch(n)
- {
- case 1:input(head);break;
- case 2:lookover(head);break;
- case 3:lookout(head);break;
- case 4:cutoff(head);break;
- case 5:addup(head);break;
- case 0:flag=ext();k=3;break;
- }
- }
- }
- else k++;
- }
- printf("感谢使用!\n");
- return 0;
- }
复制代码 这个是学生管理系统的。想弄个可视化界面~求指导 |
|