#include <stdio.h>
#include <string.h>
#include <windows.h>
struct student
{
long int num
char name[20]
int age
char sex[4]
char b[30]
char p[15]
}
int n=0
struct student stu[100]
struct student *p
void lr()
void ll()
void cx()
void xg()
void sc()
void main()
{
int z
printf("+---------------------------+n")
printf("| 欢迎使用学生信息管理系统 |n")
printf("+---------------------------+n")
printf("提示:为保证您的操作得到保存,请按正常顺序退出系统^_^n")
do
{
printf("nttt--------------------------------n")
printf("ttt+主菜单|n")
printf("ttt--------------------------------n")
printf("ttt+[1]----录入学生信息 |n")
printf("ttt+[2]----浏览学生信息 |n")
printf("ttt+[3]----查询学生信息 |n")
printf("ttt+[4]----删除学生信息 |n")
printf("ttt+[5]----修改学生信息 |n")
printf("ttt+[0]----退出系统 |n")
printf("ttt--------------------------------n")
printf("请输入您的选择:")
scanf("%d", &z)
system("color 2f")
switch(z)
{
case 0 :break
case 1 :lr()break
case 2 :ll()break
case 3 :cx()break
case 4 :sc()break
case 5 :xg()break
default:printf("n无效选项!")
}
}
while(z!= 0)
}
void lr()
{
int y
if(n==0)
p=stu
do
{
printf("--------------------n")
printf("请输入学生的学号:")
scanf("%ld",&p->num)
printf("请输入学生的姓名:")
scanf("%s",p->name)
printf("请输入学生的年龄:")
scanf("%d",&p->age)
printf("请输入学生的性别:")
scanf("%s",p->sex)
printf("请输入学生的地址:")
scanf("%s",p->b)
printf("请输入学生的电话:")
scanf("%s",p->p)
n++
p++
printf("n1.继续输入.n0.输入完毕.n")
printf("请选择:")
scanf("%d",&y)
}
while(y==1)
printf("提示:输入完毕!你一共输入%d个n",n)
}
void ll()
{
int i,j
if(n!=0)
{ printf("学生总数:%dn", n)
printf("学号t姓名t年龄t性别t地址tt电话n")
printf("-----------------------------------------------------n")
for(i=0i<ni++)
printf("%ldt%st%dt%st%stt%sn",stu[i].num,stu[i].name,stu[i].age,stu[i].sex,stu[i].b,stu[i].p)
}
else printf("提示:无学生数据,请输入数据!")
}
void cx()
{
int c
int w,i,j=0
char name[20]
if(n!=0)
{
do{printf("n")
printf("+--------------------+n")
printf("| 按学号查询 请按 1 |n")
printf("| 按姓名查询 请按 2 |n")
printf("| 取消请按 0 |n")
printf("+--------------------+n")
printf("请输入您的选择:")
scanf("%d", &c)
switch(c)
{
case 0:break
case 1:
printf("请输入学生的学号")
scanf("%ld", &w)
printf("n")
for(i=0i<ni++)
if(stu[i].num==w)
{
printf("n学号t姓名t年龄t性别t地址tt电话n")
printf("%ldt%st%dt%st%stt%sn",stu[i].num,stu[i].name,stu[i].age,stu[i].sex,stu[i].b,stu[i].p)
j=1
}
if(j==0)
printf("提示:没有该学生记录,请核对!")
break
case 2:
printf("请输入学生的姓名:")
scanf("%s", name)
printf("n")
for(i=0i<ni++)
if(strcmp(name,stu[i].name)==0)
{
printf("n学号t姓名t年龄t性别t地址tt电话n")
j=1
printf("%ldt%st%dt%st%stt%sn",stu[i].num,stu[i].name,stu[i].age,stu[i].sex,stu[i].b,stu[i].p)
}
if(j==0)
printf("提示:没有该学生记录,请核对!")
break
default:
printf("n提示:无效选项!")
break
}
}while(c!= 0)
}else printf("提示:无学生数据,请输入数据!")
return
}
void xg()
{
long int num
int i,j,c
if(n!=0)
{
printf("请输入您要修改的学生的学号:")
scanf("%ld", &num)
printf("n")
for(i=0i<ni++)
if(stu[i].num==num)
j=i
do{
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("请输入您的选择:")
scanf("%d", &c)
printf("n")
switch(c)
{
case 0:break
case 1:printf("请输入新姓名:")
scanf("%s",stu[j].name)
break
case 2:printf("请输入新年龄:")
scanf("%d",&stu[j].age)
break
case 3:printf("请输入新性别:")
scanf("%s",stu[j].sex)
break
case 4:printf("请输入新学号:")
scanf("%ld",&stu[j].num)
break
case 5:printf("请输入新地址:")
scanf("%s",stu[j].b)
break
case 6:printf("请输入新电话:")
scanf("%s",stu[j].p)
break
default:
printf("n无效选项!")
break
}
}while(c!= 0)
}else printf("提示:无学生数据,请输入数据!")
}
void sc()
{
long int num
int i,j,e
if(n!=0)
{
printf("学号t姓名t年龄t性别t地址tt电话n")
printf("-----------------------------------------------------n")
for(i=0i<ni++)
printf("%ldt%st%dt%st%stt%sn",stu[i].num,stu[i].name,stu[i].age,stu[i].sex,stu[i].b,stu[i].p)
printf("请输入您要删除的学生的学号:")
scanf("%ld", &num)
printf("n")
for(i=0i<ni++)
if(num==stu[i].num)
j=i
if(j!=(n-1))
{
for(e=i-1e<ne++,j++)
{
stu[j].num=stu[j+1].num
strcpy(stu[j].name,stu[j+1].name)
strcpy(stu[j].sex,stu[j+1].sex)
stu[j].age=stu[j+1].age
strcpy(stu[j].b,stu[j+1].b)
strcpy(stu[j].p,stu[j+1].p)
n--p--
}
}else {n--p--}
printf("提示:删除完毕!")
}elseprintf("提示:无学生数据,请输入数据!")
}
这是我用来交作业的程序.虽然不是自己写的.传上来再说了.
等我自己的可以用了.再传...
package jettang
import java.lang.*
import java.awt.*
import java.awt.event.*
import javax.swing.*
import java.sql.*
//////////////////////////////////////////////
//主类
public class STU {
public STU() {
try {
jbInit()
} catch (Exception ex) {
ex.printStackTrace()
}
}
public static void main(String args[]) {
new Frm_Main()
}
private void jbInit() throws Exception {
}
}
//主框架,数据库
class Frm_Main implements ActionListener { //throws IOException
public static final int EXIT_ON_CLOSE = 0
public Jframe frame
public Container c
public JMenuBar menuBar
public JMenu mainMenu1
public JMenu mainMenu2
public JMenu mainMenu3
public JMenuItem subMenu1[] = new JMenuItem[5]
public JMenuItem subMenu2[] = new JMenuItem[7]
public JMenuItem subMenu3[] = new JMenuItem[2]
JButton toolBarButton[] = new JButton[8]
public JToolBar toolBar
//////////////////////////////////////////////
String strTip[] = {"姓名查询...", "添加信息...",
"删除...", "修改...", "修改确认...",
"添加确认...", "删除确认...", "关于产品信息:)"}
//////////////////////////////////////////////
// String id = new String()
String name = new String()
String sex = new String()
String age = new String()
String classid = new String()
String department = new String()
String call = new String()
//////////////////////////////////////////////
Connection con
ResultSet rs
Statement st
// ResultSetmetaData rsmd
// Vector columnHeads=new Vector()
// Vector rows = new Vector()
// Vector currentRow=new Vector()
///////////////////////////////////////////////
public JLabel classidL = new JLabel("班级")
public JLabel nameL = new JLabel("姓名")
public JLabel sexL = new JLabel("性别")
public JLabel ageL = new JLabel("年龄")
public JLabel departmentL = new JLabel("单位")
public JLabel callL = new JLabel("电话")
public JLabel tittleLabel = new JLabel()
//////////////////////////////////////////////
public JTextField classidT = new JTextField()
public JTextField nameT = new JTextField()
public JTextField sexT = new JTextField()
public JTextField ageT = new JTextField()
public JTextField departmentT = new JTextField()
public JTextField callT = new JTextField()
public Jtextarea textT = new Jtextarea()
//////////////////////////////////////////////
//////////////////////////////////////////////
public Frm_Main() {
/////////////////////////////////////////////////
frame = new Jframe("学籍管理系统V1.0")
c = frame.getContentPane()
c.setLayout(null)
menuBar = new JMenuBar()
toolBar = new JToolBar()
toolBar.setFloatable(false)
frame.setJMenuBar(menuBar)
frame.setResizable(false)
////////////////////////////////////////////////
mainMenu1 = new JMenu("管理")
String str1[] = {"添加", "删除", "查询", " ", "关闭"}
for (int i = 0i <5i++) {
if (i == 3) {
mainMenu1.addSeparator()
} else {
subMenu1[i] = new JMenuItem(str1[i])
subMenu1[i].addActionListener(this)
mainMenu1.add(subMenu1[i])
}
}
menuBar.add(mainMenu1)
/////////////////////////////////////////////////
mainMenu2 = new JMenu("操作")
String str2[] = {"查询", "添加", "删除", "修改",
"提交修改", "提交添加", "提交删除"}
for (int i = 0i <7i++) {
subMenu2[i] = new JMenuItem(str2[i])
subMenu2[i].addActionListener(this)
mainMenu2.add(subMenu2[i])
}
menuBar.add(mainMenu2)
/////////////////////////////////////////////////
mainMenu3 = new JMenu("集体查询")
String str3[] = {"按班级...", "按单位..."}
for (int i = 0i <2i++) {
subMenu3[i] = new JMenuItem(str3[i])
subMenu3[i].addActionListener(this)
mainMenu3.add(subMenu3[i])
}
menuBar.add(mainMenu3)
////////////////////////////////////////////////
String strToolBar[] = {"查询", "添加", "删除", "修改", "提交修改",
"提交添加", "提交删除", "关于"}
for (int i = 0i <8i++) {
toolBarButton[i] = new JButton(strToolBar[i])
toolBarButton[i].setToolTipText(strTip[i])
toolBarButton[i].addActionListener(this)
toolBar.add(toolBarButton[i])
}
toolBar.setLocation(0, 0)
toolBar.setSize(400, 30)
c.add(toolBar)
////////////////////////////////////////////////
classidL.setLocation(35, 40)
classidL.setSize(40, 20)
//classidL.setFont(new Font("",Font.BOLD,12))
c.add(classidL)
classidT.setLocation(90, 40)
classidT.setSize(200, 20)
//classidT.setEnabled(false)
c.add(classidT)
nameL.setLocation(35, 70)
nameL.setSize(40, 20)
c.add(nameL)
nameT.setLocation(90, 70)
nameT.setSize(200, 20)
c.add(nameT)
sexL.setLocation(35, 100)
sexL.setSize(40, 20)
c.add(sexL)
sexT.setLocation(90, 100)
sexT.setSize(200, 20)
c.add(sexT)
ageL.setLocation(35, 130)
ageL.setSize(40, 20)
c.add(ageL)
ageT.setLocation(90, 130)
ageT.setSize(200, 20)
c.add(ageT)
departmentL.setLocation(35, 160)
departmentL.setSize(40, 20)
c.add(departmentL)
departmentT.setLocation(90, 160)
departmentT.setSize(200, 20)
c.add(departmentT)
callL.setLocation(35, 190)
callL.setSize(40, 20)
c.add(callL)
callT.setLocation(90, 190)
callT.setSize(200, 20)
c.add(callT)
/////////////////////////////////////////////////
tittleLabel.setText("----------集体查询结果--------")
tittleLabel.setSize(300, 20)
tittleLabel.setLocation(10, 210)
c.add(tittleLabel)
////////////////////////////////////////////
textT.setSize(400, 300)
textT.setLocation(10, 240)
c.add(textT, 14)
///////////////////////////////////////////////
frame.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE)
frame.setSize(500, 650)
frame.setLocation(200, 200)
frame.setVisible(true)
conDB()
}
//以上是框架设计
//JDBC
public void conDB() {
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver")
} catch (ClassNotFoundException e) {
JOptionPane.showMessageDialog(null, "数据库错误")
}
try {
con = DriverManager.getConnection("jdbc:odbc:jettang", "sa", "")
st = con.createStatement()
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, "数据库连接失败")
}
}
//关闭连接
public void closeDB() {
try {
st.close()
con.close()
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, "数据库关闭失败")
}
}
//事件响应
public void actionPerformed(ActionEvent e) {
//////////////////////////////////////////////
if (e.getSource() == toolBarButton[7]) {
JOptionPane.showMessageDialog(null, "当前版本1.0,designed by qyq &wxm")
}
/////////////////////////////////////////////查询(按姓名)
if (e.getSource() == subMenu2[0] || e.getSource() == toolBarButton[0] ||
e.getSource() == subMenu1[2]) {
String idid = JOptionPane.showInputDialog("请输入学生姓名")
if (idid.trim() != "") {
String strSQL = "select * from stuinfo where name ='" + idid +
"'"
try {
rs = st.executeQuery(strSQL)
int count = 0
while (rs.next()) {
classid = rs.getString("classid")
name = rs.getString("name")
department = rs.getString("department")
sex = rs.getString("sex")
age = rs.getString("age")
call = rs.getString("call")
++count
}
if (count == 0) {
JOptionPane.showMessageDialog(null, "无此信息")
} else {
classidT.setText(classid)
nameT.setText(name)
sexT.setText(sex)
ageT.setText(age)
callT.setText(call)
departmentT.setText(department)
}
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, "查询失败")
}
}
}
/////////////////////////////////////////////关闭
if (e.getSource() == subMenu1[4]) {
frame.dispose()
closeDB()
}
/////////////////////////////////////////////添加
if (e.getSource() == subMenu1[0] || e.getSource() == subMenu2[1] ||
e.getSource() == toolBarButton[1]) {
JOptionPane.showMessageDialog(null, "请输入你添加的信息再点击提交添加键")
classidT.setEnabled(true)
classidT.setText("")
nameT.setText("")
sexT.setText("")
ageT.setText("")
callT.setText("")
departmentT.setText("")
}
/////////////////////////////////////////////提交添加
if (e.getSource() == toolBarButton[5] || e.getSource() == subMenu2[5]) {
if ((classidT.getText().trim()).equals("") ||
(nameT.getText().trim()).equals("") ||
(sexT.getText().trim()).equals("") ||
(ageT.getText().trim()).equals("") ||
(callT.getText().trim()).equals("") ||
(departmentT.getText().trim()).equals("")) {
JOptionPane.showMessageDialog(null, "请先点击添加键")
} else {
classid = classidT.getText()
name = nameT.getText()
sex = sexT.getText()
age = ageT.getText()
call = callT.getText()
department = departmentT.getText()
String strSQL =
"insert into stuinfo(classid,name,sex,age,call,department) values('" +
classid + "','" +
name + "','" + sex + "','" + age + "','" + call + "','" +
department + "')"
try {
st.executeUpdate(strSQL)
} catch (Exception exx) {
JOptionPane.showMessageDialog(null, "添加失败")
return
}
JOptionPane.showMessageDialog(null, "添加成功")
classidT.setText("")
nameT.setText("")
sexT.setText("")
ageT.setText("")
callT.setText("")
departmentT.setText("")
}
}
////////////////////////////////////////////提交修改
if (e.getSource() == subMenu2[4] || e.getSource() == toolBarButton[4]) {
if ((classidT.getText().trim()).equals("") ||
(nameT.getText().trim()).equals("") ||
(sexT.getText().trim()).equals("")
|| (ageT.getText().trim()).equals("") ||
(callT.getText().trim()).equals("") ||
(departmentT.getText().trim()).equals("")) {
JOptionPane.showMessageDialog(null, "请先点击修改键")
return
} else {
classid = classidT.getText()
name = nameT.getText()
sex = sexT.getText()
age = ageT.getText()
call = callT.getText()
department = departmentT.getText()
String strSQL = "update stuinfo set classid='" + classid +
"',sex='" + sex + "',age='" + age + "',call='" +
call + "',department='" + department + "'" +
"where name='" + name + "'"
try {
st.executeUpdate(strSQL)
} catch (Exception exx) {
JOptionPane.showMessageDialog(null, "修改失败")
return
}
JOptionPane.showMessageDialog(null, "修改成功")
classidT.setText("")
nameT.setText("")
sexT.setText("")
ageT.setText("")
callT.setText("")
departmentT.setText("")
}
}
///////////////////////////////////////////////修改
if (e.getSource() == subMenu2[3] || e.getSource() == toolBarButton[3]) {
String idid = JOptionPane.showInputDialog
("请输入你要修改的学生姓名后点击提交修改键确认")
if (idid.trim() != "") {
String strSQL = "select * from stuinfo where name ='" + idid +
"'"
try {
rs = st.executeQuery(strSQL)
int count = 0
while (rs.next()) {
classid = rs.getString("classid")
name = rs.getString("name")
department = rs.getString("department")
sex = rs.getString("sex")
age = rs.getString("age")
call = rs.getString("call")
++count
}
if (count == 0) {
JOptionPane.showMessageDialog(null, "无此信息")
} else {
classidT.setText(classid)
nameT.setText(name)
sexT.setText(sex)
ageT.setText(age)
callT.setText(call)
departmentT.setText(department)
classidT.setEnabled(false)
}
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, "修改失败")
}
}
}
/////////////////////////////////////////////////删除
if (e.getSource() == subMenu2[2] || e.getSource() == toolBarButton[2] ||
e.getSource() == subMenu1[1]) {
String idDel = JOptionPane.showInputDialog
("请输入要删除的学生姓名后点击提交删除键确认")
if (idDel.trim() != "") {
String strSQL = "select * from stuinfo where name ='" + idDel +
"'"
try {
rs = st.executeQuery(strSQL)
int count = 0
while (rs.next()) {
classid = rs.getString("classid")
name = rs.getString("name")
department = rs.getString("department")
sex = rs.getString("sex")
age = rs.getString("age")
call = rs.getString("call")
++count
}
if (count == 0) {
JOptionPane.showMessageDialog(null, "无此信息")
} else {
classidT.setText(classid)
nameT.setText(name)
sexT.setText(sex)
ageT.setText(age)
callT.setText(call)
departmentT.setText(department)
classidT.setEnabled(false)
}
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, "删除失败")
}
}
}
//////////////////////////////////////////////////提交删除
if (e.getSource() == toolBarButton[6] ||
e.getSource() == subMenu2[6]) {
if ((classidT.getText().trim()).equals("") ||
(nameT.getText().trim()).equals("") ||
(sexT.getText().trim()).equals("") ||
(ageT.getText().trim()).equals("") ||
(callT.getText().trim()).equals("") ||
(departmentT.getText().trim()).equals("")) {
JOptionPane.showMessageDialog(null, "请先点击删除键")
return
} else {
name = nameT.getText()
String strSQL = "delete from stuinfo where name='" + name +
"'"
try {
st.executeUpdate(strSQL)
} catch (Exception exx) {
JOptionPane.showMessageDialog(null, "删除失败")
return
}
JOptionPane.showMessageDialog(null, "删除成功")
classidT.setText("")
nameT.setText("")
sexT.setText("")
ageT.setText("")
callT.setText("")
departmentT.setText("")
}
}
//////////////////////////////////////////////集体查询(按班级)
if (e.getSource() == subMenu3[0]) {
classidT.setText("")
nameT.setText("")
sexT.setText("")
ageT.setText("")
callT.setText("")
departmentT.setText("")
if ((classidT.getText().trim()).equals("")) {
String idclass = JOptionPane.showInputDialog("请输入班级")
String strSQL = "select * from stuinfo where classid='" +
idclass +
"'"
try {
rs = st.executeQuery(strSQL)
displayres(rs)
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, "查询失败")
}
} else {
String idclass = classidT.getText()
String strSQL = "select * from stuinfo where classid='" +
idclass +
"'"
try {
rs = st.executeQuery(strSQL)
displayres(rs)
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, "查询失败")
}
}
}
////////////////////////////按单位
if (e.getSource() == subMenu3[1]) {
classidT.setText("")
nameT.setText("")
sexT.setText("")
ageT.setText("")
callT.setText("")
departmentT.setText("")
if ((departmentT.getText().trim()).equals("")) {
String idclass = JOptionPane.showInputDialog("请输入单位")
String strSQL = "select * from stuinfo where department='" +
idclass +
"'"
try {
rs = st.executeQuery(strSQL)
displayres(rs)
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, "查询失败")
}
} else {
String idclass = departmentT.getText()
String strSQL = "select * from stuinfo where department='" +
idclass +
"'"
try {
rs = st.executeQuery(strSQL)
displayres(rs)
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, "查询失败")
}
}
}
}
public void displayres(ResultSet rs1) throws SQLException {
//定位到达第一条记录
boolean moreRecords = rs1.next()
//如果没有记录,则提示一条消息
if (!moreRecords) {
JOptionPane.showMessageDialog(null, "无此记录")
return
}
try {
//获取数据
getNextRow(rs1)
//刷新Table
c.validate()
}
catch (SQLException sqlex) {
sqlex.printStackTrace()
}
}
public void getNextRow(ResultSet rs2) throws
SQLException {
int count = 1
while (rs2.next()) {
name = " 姓名:" + rs2.getString(1)
age = " 年龄:" + rs2.getString(2) + " 单位:"
department = rs2.getString(3) + "n"
textT.append(count + "." + name + age + department)
count++
}
}
}
这就是普通的网站后台,或ERP系统就可以实现,现在网上这方面水平比较高的就是李天生老师了,你要以去“xin3721视频教程网”,那里有很多他的视频教程,当然也有ASP+Access方面的内容。
#include <stdio.h>
struct Student
{
int num
char name[20]
float score[3]
float avg
}stus[30]
void Add()//填加学员
void List()//学员详细列表
void Asc()//显示后三名学员
void Desc()//显示前三名学员
void Display()
void main()
{
int s
while(1)
{
printf("学员管理系统:n")
printf("1、增加学员n")
printf("2、学员详细列表n")
printf("3、显示前三名n")
printf("4、显示后三名n")
printf("5、显示平均成绩n")
printf("6、退出n")
printf("请选择:")
scanf("%d",&s)
switch(s)
{
case 1:
Add()
break
case 2:
List()
break
case 3:
Desc()
Display()
break
case 4:
Asc()
Display()
break
case 5:
Display()
break
case 6:
return
break
default:
printf("选择错误!n")
break
}
}
}
void Add()
{
int i,k
float sum
char c
for(i=0i<30i++)
{
printf("请输入第%d个学员信息:n",i+1)
printf("学号:")
scanf("%d",&stus[i].num)
printf("姓名:")
fflush(stdin)
scanf("%s",stus[i].name)
printf("请输入三门课的成绩:n")
sum=0
for(k=0k<3k++)
{
printf("%d:",k+1)
scanf("%f",&stus[i].score[k])
sum+=stus[i].score[k]
}
stus[i].avg=sum/3
printf("是否继续?")
fflush(stdin)
scanf("%c",&c)
if(c=='n' || c=='N')
return
}
}
void List()
{
int i,j=0
printf("学号t姓名t成绩1t成绩2t成绩3t平均n")
for(i=0i<30i++)
{
if(stus[i].num!=0)
{
printf("%dt%st%.2ft%.2ft%.2ft%.2fn",stus[i].num,stus[i].name,stus[i].score[0],stus[i].score[1],stus[i].score[2],stus[i].avg)
}
}
}
void Asc()
{
int i,j
struct Student c
for(i=0i<30i++)
{ for(j=0j<29-ij++)
if(stus[j].avg<stus[j+1].avg)
{
c=stus[j]
stus[j]=stus[j+1]
stus[j+1]=c
}
}
}
void Desc()
{
int i,j
struct Student c
for(i=0i<30i++)
{ for(j=0j<29-ij++)
if(stus[j].avg>stus[j+1].avg)
{
c=stus[j]
stus[j]=stus[j+1]
stus[j+1]=c
}
}
}
void Display()
{
int i,d=0
printf("学号t姓名t平均n")
for(i=0i<30i++)
{
if(stus[i].num!=0)
{
printf("%dt%st%.2fn",stus[i].num,stus[i].name,stus[i].avg)
d++
}
if(d==3)
break
}
}
看看我写的这个!
正方教务软件真龘相大揭秘--高等学校的悲哀 软件行业的耻辱 作者:浙江某大学教务软件系统管理员
一、软件设计拙劣,功能实现混乱
(1) 架构不科学,流程不清晰,功能不完整;系统界面设计粗糙,功能模块划分凌乱;未能提供正式印刷的配套操作手册,概念混乱、到处说法不一,错字、病句随处可见,深得垃圾堆放之精妙,俨然未成年大猩猩之杰作。
(2) 数据库设计不合理,严重违反关系数据库设计的基本原则,大量信息重复存储,缺乏最基本的数据关联,不能实时记录数据的历史状态,严重破坏了数据的完整性、准确性、时效性与一致性,必然导致管理数据混乱,上帝也无能为力。
(3) 逻辑关联不紧密,管理控制不精确,数据处理不到位,无法保证数据的正确性与数据状态的准确性,因而不可能满足教务工作对大量数据进行精确管理的需要;这也正是多年以来不少教务管理软件纷纷退出市场的根本原因所在。
(4) 没有基于互联网为管理人员提供信息服务,大量需要远程维护、移动处理的工作无法开展。
(5) 无论是程序内部控制,还是用户操作界面,到处以固化方式实现,缺乏扩展性与灵活性,大量特殊问题无法解决,不能适应用户不断增长、不断变化的个性化要求。
(6) 无视教务管理的严肃性,公然破坏公开、公平、公正原则,提供了大量的特殊、特权管理功能,几乎所有数据(其中包括课程、教学计划、学生学籍、学生成绩、学生毕业信息等重要且敏龘感的信息)均可由操作人员无需任何理由、没有任何限制地直接增删改。 (7) 无视信息安全的基本原则,公然提供大量篡改数据的危险功能,比如系统初始化、直接使用数据库语句增删改,人为地造成大量管理漏洞;操作人员稍不注意,就会导致数据丢失和混乱、酿成教学事故。
(8) 到处提供数据导入功能,到处裸露龘底层数据表结构(即字段信息),完全依赖人的聪明与记性,由操作人员负责建立字段之间的对应关系,无法保证数据的完整性、准确性、时效性与一致性,不可避免地引起数据混乱。
(9) 没有提供教务工作需要的各种规范报表,而是将大量数据导出,依赖美国微软公司的电子表格处理软件进行随意编辑、打印,不仅增加了教务管理人员的工作量,而且由于不得不经常调整报表格式、有意或无意的人为因素介入,破坏了数据的正确性,不可避免地给教学管理工作带来重大隐患,严重损害了教务管理部门的权威性。
(10) 借助几个蹩脚的菜单名称、简陋的录入窗体,提供的所谓增强功能根本不属于教务工作范畴,如学科建设、教研教改、师资管理、人事管理、校产管理、收费管理、学生工作、宿舍管理、实验室管理等,事实上不可能正常使用,纯粹愚弄学校。 二、销售手段使尽,蒙蔽用户众多
(1) 打着浙江大学的招牌。 不少高校误以为正方是浙大的,因而提到正方随口冠以浙大,甚至不提正方单讲浙大。 事实上,正方不是浙江大学的!因为浙江大学的官方网站上公布的下属企业名单中没有正方。 不少高校误以为浙江大学学分制改革搞的好,其实并不好!究竟好在哪里?到底有多少成功的经验可以借鉴?浙江大学允许学生在校期间随意更换专业,简直是误人子弟! 如果看重名气,清华大学名气最大,最好购置清华大学研制开发的教务软件。
(2) 造谣SQL Server不安全。 不少高校误以为数据库采用Oracle就安全、采用SQL Server就不安全。 事实上,SQL Server与Oracle同属大型关系数据库管理系统,根本不存在安全与不安全一说。 教务软件的安全性涉及到两个方面:一方面是外部环境的安全性,只能依靠防火墙抵挡病毒侵袭与黑客攻击;另一方面是软件内部的安全性,这才是最为核心、最应关注的,管理控制是否安全可靠、数据处理是否智能批量,直接关系到数据的完整性、准确性与一致性。
(3) 鼓吹“完全学分制”。 故弄玄虚地将教务软件划分为多个版本(完全学年制版、学年/学分制版、过渡版、完全学分制版),没有能力提供适应学年/学分制的完整版本。 事实上,没有哪一所推行学分制的高校不是学年/学分制,根本就不存在完全学分制一说! 难道上一学期不完全、这一学期就突然完全了,2005级不完全、2006级就突然完全了? 明目张胆地愚弄高校“老系统管理老生、新系统管理新生”;实际上,老生与新生不可能截然分开,因为老生与新生在课表编排与考试安排等诸多方面都必需统一考虑、共享资源;其险恶用心昭然若揭:故意暂时拖住高校,以免过早露出马脚。
(4) 妄称终身免费服务。 实质上是陷阱、是弥天大谎,只不过是哄人高兴、骗取合同的拙劣伎俩而已;显然即将收摊,不期望再有以后了。原因很简单,谁都清楚软件需要维护、服务需要成本,没有一个供应商能够背离价值规律长期生存。
(5) 提供源代码。 声称高校可以在源代码基础上自主地进行二次开发且节省后期技术服务费用。 其实得不偿失、断不可行,因为二次开发与后期维护需要耗费大量的人力、物力与财力,而且要求相关人员技术水平高、业务能力强并保持长期稳定。 事实上,表明供应商已经在这个领域丧失信心,已经对高校不负责任了。
(6) 免费赠送根本不成型的软件。 通过免费赠送一些非教务软件,在高校选购教务软件时获得优势。 事实上,免费赠送的软件根本不成型或者根本就没有,但是没有人较真;反正合同已经签订。 当发现根本无法使用时,得到的回答却是:本来免费赠送的,能用就用、不能用不就算了。
(7) 恶意低价、有意高价。 对于认可其他供应商的高校,采用恶意低价手段,低到两万以下; 对于关系到位的高校,采用有意高价手段,高到三十万以上。
(8) 编造谎言、到处散布,恶意诬陷其他供应商。 令人遗憾的是,绝大多数高校对于正方的凭空造谣信以为真、不加证实。
回复
2楼
2012-06-14 14:19
举报 |个人企业举报垃圾信息举报
ourfocus
博导
12
三、焦头烂额修补,饮鸩止渴残喘
(1) 作为整个教务系统的底层,系统维护包括大量繁杂的设置参数,混乱不堪、触目惊心,完全依赖系统管理员的人为设置进行管理(不得不记住所有的代码),必然导 致出错频繁、隐患不断,为整个教务系统的全面崩溃埋下祸根。而且,采用不同的代码直接控制各个功能模块的处理过程、片面应付不同用户的个性化需求,事实上 根本不可能满足。
(2) 作为整个教务系统的核心,绝大多数功能模块的处理过程纯粹依赖手工、完全随心所欲(通过SQL语句直接操纵底层数据),成千上万的各种数据到处存储、互不关联,无法记录历史、缺乏时效性。
(3) 作为整个教务系统的表象,查询和统计报表是所有用户最为关心的部分。对于不同用户需要的各种报表,随时随地添加字段、修改表结构,表面上能够基本满足报表的式样,事实上大量数据要由使用人员直接填录。这正是多数用户长期以来被蒙骗的根本原因。
(4) 到处裸露数据库表结构和字段名,对数据的正确性、关联性、时效性与状态不加任何控制,以便开发人员随意修改程序、使用人员随意修改数据。这正是不少用户勉强维持、暂时没有放弃劣质软件的主要原因(事实上不得不反复修补,数据越来越混乱、修改越来越困难)。
(5) 对于用户而言,签了合同就好比打了结婚证,付了第一笔款就好比生了第一个小孩;作为濒临绝望的长期受害者,尽管系统已经千疮百孔、不可能改好,但是不少用户依然抱有一丝幻想,很难痛下决心、抛弃劣质软件。
四、技术服务艰难,全面崩溃不远
不少用户根本没有使用,深感自身管理不及浙江大学,需要准备一段时间;
许多用户刚刚开始使用,忙于通过正方提供的极不规范的电子表格收集、整理历史数据;
多数用户使用功能有限,比如仅仅使用了学籍、成绩,根本没有使用排课、排考、教材等;
部分用户使用功能较多、时间较长,陷入应用困难、问题不断、解决无望、苦不堪言的境地。
另外,正方教务用户已经被换掉的有郑州工程学院、 西安培华学院、南通医学院、内蒙古医学院、重庆三峡职业学院等;而且,由于正方教务软件存在大量致命的设计缺陷与严重的功能缺陷(交付用户的全部数据处理 程序只有一个文件JWGL.EXE),加上服务手段落后(接收用户反馈放入文件夹、任何修改均采用最原始的手工覆盖文件方式),杭州正 方电子工程有限公司的技术支持已经到了全面崩溃的边缘、已经服务不了,必然导致问题不断、数据混乱、管理失控、停止运转,越来越多的正方教务用户将被一一 换掉。因为所有用户使用的正方教务软件均患了绝症——数据越来越混乱、管理越来越失控,就像肿瘤恶性化之后,癌细胞已经扩散,外科手术无能为力。
以上就是关于跪求c语言教务管理系统源代码全部的内容,如果了解更多相关内容,可以关注,你们的支持是我们更新的动力!
版权声明:我们致力于保护作者版权,注重分享,被刊用文章【正方教务管理系统 源码】因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!;
工作时间:8:00-18:00
客服电话
电子邮件
beimuxi@protonmail.com
扫码二维码
获取最新动态